This patch is also uploaded in the following Repo, for review:- https://github.com/ashrafj/edk2-staging/commit/9e42cc3c6e100c46a65f6e5926686d5f4d9fa58a
thanks Ashraf > -----Original Message----- > From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of Javeed, > Ashraf > Sent: Friday, November 1, 2019 8:40 PM > To: devel@edk2.groups.io > Cc: Wang, Jian J <jian.j.w...@intel.com>; Wu, Hao A <hao.a...@intel.com>; > Ni, Ray <ray...@intel.com> > Subject: [edk2-devel] [edk2-staging/UEFI_PCI_ENHANCE-2 PATCH 06/12] > PciBusDxe: Integration of setup for PCI feature enumeration > > BZ: https://bugzilla.tianocore.org/show_bug.cgi?id=2194 > > The code changes are made to integrate the setup infrastructure for the PCI > feature enumeration, in the last phase of the PCI Bus driver, after its > registration > and its option ROM loading phase is complete. > > Signed-off-by: Ashraf Javeed <ashraf.jav...@intel.com> > Cc: Jian J Wang <jian.j.w...@intel.com> > Cc: Hao A Wu <hao.a...@intel.com> > Cc: Ray Ni <ray...@intel.com> > --- > MdeModulePkg/Bus/Pci/PciBusDxe/PciDeviceSupport.c | 11 +++++++++++ > MdeModulePkg/Bus/Pci/PciBusDxe/PciFeatureSupport.c | 15 ++++++++++++++- > MdeModulePkg/Bus/Pci/PciBusDxe/PciFeatureSupport.h | 11 +++++++++++ > 3 files changed, 36 insertions(+), 1 deletion(-) > > diff --git a/MdeModulePkg/Bus/Pci/PciBusDxe/PciDeviceSupport.c > b/MdeModulePkg/Bus/Pci/PciBusDxe/PciDeviceSupport.c > index 33a0e94..b839102 100644 > --- a/MdeModulePkg/Bus/Pci/PciBusDxe/PciDeviceSupport.c > +++ b/MdeModulePkg/Bus/Pci/PciBusDxe/PciDeviceSupport.c > @@ -8,6 +8,7 @@ SPDX-License-Identifier: BSD-2-Clause-Patent **/ > > #include "PciBus.h" > +#include "PciFeatureSupport.h" > > // > // This device structure is serviced as a header. > @@ -170,6 +171,8 @@ DestroyRootBridgeByHandle ( > > if (Temp->Handle == Controller) { > > + DestroyRootBridgePciFeaturesConfigCompletionList (Temp); > + > RemoveEntryList (CurrentLink); > > DestroyPciDeviceTree (Temp); > @@ -818,6 +821,14 @@ StartPciDevicesOnBridge ( > if (EFI_ERROR (Status) == EFI_NOT_FOUND) { > return Status; > } else { > + if (CheckOtherPciFeaturesPcd ()) { > + // > + // the late configuration of PCI features > + // > + Status = EnumerateOtherPciFeatures ( > + RootBridge > + ); > + } > // > // finally start those PCI bridge port devices only > // > diff --git a/MdeModulePkg/Bus/Pci/PciBusDxe/PciFeatureSupport.c > b/MdeModulePkg/Bus/Pci/PciBusDxe/PciFeatureSupport.c > index ab0e096..9e6671d 100644 > --- a/MdeModulePkg/Bus/Pci/PciBusDxe/PciFeatureSupport.c > +++ b/MdeModulePkg/Bus/Pci/PciBusDxe/PciFeatureSupport.c > @@ -25,6 +25,19 @@ PRIMARY_ROOT_PORT_NODE > *mPrimaryRootPortList; > **/ > PCI_FEATURE_CONFIGURATION_COMPLETION_LIST > *mPciFeaturesConfigurationCompletionList = NULL; > > +/** > + Main routine to indicate platform selection of any of the other PCI > +features > + to be configured by this driver > + > + @retval TRUE platform has selected the other PCI features to be > configured > + FALSE platform has not selected any of the other PCI features > +**/ > +BOOLEAN > +CheckOtherPciFeaturesPcd ( > + ) > +{ > + return PcdGet32 (PcdOtherPciFeatures) ? TRUE : FALSE; } > > /** > Main routine to indicate whether the platform has selected the > Max_Payload_Size @@ -699,7 +712,7 @@ ProgramDevicePciFeatures ( > IN PCI_IO_DEVICE *PciDevice > ) > { > - EFI_STATUS Status; > + EFI_STATUS Status = EFI_SUCCESS; > > return Status; > } > diff --git a/MdeModulePkg/Bus/Pci/PciBusDxe/PciFeatureSupport.h > b/MdeModulePkg/Bus/Pci/PciBusDxe/PciFeatureSupport.h > index b06c140..f92d008 100644 > --- a/MdeModulePkg/Bus/Pci/PciBusDxe/PciFeatureSupport.h > +++ b/MdeModulePkg/Bus/Pci/PciBusDxe/PciFeatureSupport.h > @@ -138,6 +138,17 @@ typedef enum { > }PCI_FEATURE_CONFIGURATION_PHASE; > > > +/** > + Main routine to indicate platform selection of any of the other PCI > +features > + to be configured by this driver > + > + @retval TRUE platform has selected the other PCI features to be > configured > + FALSE platform has not selected any of the other PCI features > +**/ > +BOOLEAN > +CheckOtherPciFeaturesPcd ( > + ); > + > /** > Enumerate all the nodes of the specified root bridge or PCI-PCI Bridge, to > configure the other PCI features. > -- > 2.21.0.windows.1 > > > -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#50506): https://edk2.groups.io/g/devel/message/50506 Mute This Topic: https://groups.io/mt/55159915/21656 Group Owner: devel+ow...@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-