audk/MdeModulePkg/Bus/Pci/PciBusDxe
Joseph Shifflett 25a2664625 MdeModulePkg: exit pci function loops early if device is not multi-function
When looping through all PCI functions, code should not look for functions
1-7 if function 0 is not present or if function 0 indicates the device is
not multifunction.  Prior to this fix the code would use stale data in a
buffer to determine if a device is multifunction even if function 0 is not
present.  This fixes a code bug and provides very small performance
improvements.

PCI 2.3 Specification states: They [multifunction devices] are also
required to always implement function 0 in the device. Implementing other
functions is optional and may be assigned in any order.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Joseph Shifflett <joseph.shifflett@hpe.com>
Reviewed-by: Ruiyu Ni <ruiyu.ni@intel.com>

git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@18574 6f19259b-4bc3-4df7-8a09-765794883524
2015-10-06 20:55:31 +00:00
..
ComponentName.c Fix the comments to follow UEFI Spec regarding how to check an EFI_HANDLE is valid/invalid. 2011-07-06 03:55:36 +00:00
ComponentName.h Fix the comments to follow UEFI Spec regarding how to check an EFI_HANDLE is valid/invalid. 2011-07-06 03:55:36 +00:00
PciBus.c MdeModulePkg/PciBusDxe: Remove unused variable assignment 2015-05-28 01:55:15 +00:00
PciBus.h Dispatch the UEFI option rom returned from PciPlatform/PciOverride protocol. 2015-01-20 06:45:01 +00:00
PciBusDxe.inf MdeModulePkg: list ARM and AARCH64 as valid architectures for some modules 2015-02-23 16:05:50 +00:00
PciBusDxe.uni MdeModulePkg: Convert non DOS format files to DOS format and remove unused module UNI files. 2014-09-03 08:39:12 +00:00
PciBusDxeExtra.uni MdeModulePkg: INF/DEC file updates to EDK II packages 2014-08-28 06:53:43 +00:00
PciCommand.c MdeModulePkg: Enhance PCI capability looking up logic to avoid hang 2015-09-15 08:38:16 +00:00
PciCommand.h Update the copyright notice format 2010-04-24 09:49:11 +00:00
PciDeviceSupport.c Dispatch the UEFI option rom returned from PciPlatform/PciOverride protocol. 2015-01-20 06:45:01 +00:00
PciDeviceSupport.h Update the copyright notice format 2010-04-24 09:49:11 +00:00
PciDriverOverride.c Update the copyright notice format 2010-04-24 09:49:11 +00:00
PciDriverOverride.h Update the copyright notice format 2010-04-24 09:49:11 +00:00
PciEnumerator.c MdeModulePkg: exit pci function loops early if device is not multi-function 2015-10-06 20:55:31 +00:00
PciEnumerator.h Update the copyright notice format 2010-04-24 09:49:11 +00:00
PciEnumeratorSupport.c MdeModulePkg: exit pci function loops early if device is not multi-function 2015-10-06 20:55:31 +00:00
PciEnumeratorSupport.h Fix bugs in the PCI bus driver to support SR-IOV. 2010-07-13 01:58:47 +00:00
PciHotPlugSupport.c The PCI HotPlug Init Protocol returns a list of Root HPC, but it is possible that some HPCs in the list are not found during PCI enumeration. In this case, the PCI HotPlug Init Protocol.InitializeRootHpc() will not be called for the un-found HPCs. However, in AllRootHPCInitialized(), all reported HPCs are checked to see if it has been initialized, so TIME_OUT happens. 2010-11-22 07:16:02 +00:00
PciHotPlugSupport.h The PCI HotPlug Init Protocol returns a list of Root HPC, but it is possible that some HPCs in the list are not found during PCI enumeration. In this case, the PCI HotPlug Init Protocol.InitializeRootHpc() will not be called for the un-found HPCs. However, in AllRootHPCInitialized(), all reported HPCs are checked to see if it has been initialized, so TIME_OUT happens. 2010-11-22 07:16:02 +00:00
PciIo.c MdeModulePkg/PciBus: Simplify an complex if statement to pass VS2015 2015-07-29 11:11:56 +00:00
PciIo.h Update the copyright notice format 2010-04-24 09:49:11 +00:00
PciLib.c MdeModulePkg: exit pci function loops early if device is not multi-function 2015-10-06 20:55:31 +00:00
PciLib.h MdeModulePkg PciBusDxe: The PCI Bus Driver is updated to support multiple PCI bus ranges for a PCI root bridge. 2011-10-28 09:59:40 +00:00
PciOptionRomSupport.c Dispatch the UEFI option rom returned from PciPlatform/PciOverride protocol. 2015-01-20 06:45:01 +00:00
PciOptionRomSupport.h Dispatch the UEFI option rom returned from PciPlatform/PciOverride protocol. 2015-01-20 06:45:01 +00:00
PciPowerManagement.c MdeModulePkg PciBusDxe and DuetPkg PciBusNoEnumerationDxe: Update ResetPowerManagementFeature() to clear 4 related R/W bits in the PMCSR register, leaving other bits preserved. 2012-04-12 01:49:27 +00:00
PciPowerManagement.h Update the copyright notice format 2010-04-24 09:49:11 +00:00
PciResourceSupport.c Fix the bug which incorrectly programs the 64bit base address register in the PCI to PCI bridge. 2013-04-27 02:03:58 +00:00
PciResourceSupport.h Print resource allocation/bar programming when PciBus driver does PCI BUS enumeration. 2011-08-04 09:08:09 +00:00
PciRomTable.c Update the copyright notice format 2010-04-24 09:49:11 +00:00
PciRomTable.h Update the copyright notice format 2010-04-24 09:49:11 +00:00