IntelSiliconPkg IntelVTdDxe: Optimize when func 0 is not implemented
IntelSiliconPkg IntelVTdDxe: Optimize when func 0 is not implemented

REF: https://bugzilla.tianocore.org/show_bug.cgi?id=1169

PCI spec:
They are also required to always implement function 0 in the device.
Implementing other functions is optional and may be assigned in any
order (i.e., a two-function device must respond to function 0 but
can choose any of the other possible function numbers (1-7) for the
second function).

This patch updates ScanPciBus() to not scan other functions if
function 0 is not implemented.

Test done:
Added debug code below in the second loop of ScanPciBus(),
compared the debug logs with and without this patch, many
non-0 unimplemented functions are skipped correctly.

  DEBUG ((
    DEBUG_INFO,
    "%a() B%02xD%02xF%02x VendorId: %04x DeviceId: %04x\n",
    __FUNCTION__,
    Bus,
    Device,
    Function,
    VendorID,
    DeviceID
    ));

Cc: Jiewen Yao <364a90bfebd1f362ebb7b48e4bf8ec010adef203@intel.com>
Cc: Rangasai V Chaganty <48f2a5e2aa7e2e6e889aacb132e7cdc48eeacb31@intel.com>
Cc: Tomson Chang <37532270c90f93ff5b283ba4184ac3566e401d43@intel.com>
Cc: Jenny Huang <161b9a28f3c51a22384444167b1c8878b7baf1b2@intel.com>
Cc: Amy Chan <7ad005c7a4a6014e2e8dc1743bd50ef6672a3a25@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.1
Signed-off-by: Star Zeng <5c6bb72efe464613af94e84c05522a361b23844a@intel.com>
Reviewed-by: Ruiyu Ni <9fa3a6894a36bca79e6a72ad65af5a5702efecd1@intel.com>
Reviewed-by: Jiewen Yao <364a90bfebd1f362ebb7b48e4bf8ec010adef203@intel.com>

MattDevo/edk2,MattDevo/edk2,MattDevo/edk2,MattDevo/edk2,MattDevo/edk2,MattDevo/edk2,MattDevo/edk2,MattDevo/edk2