diff --git a/MdeModulePkg/Bus/Pci/PciBusDxe/PciEnumeratorSupport.c b/MdeModulePkg/Bus/Pci/PciBusDxe/PciEnumeratorSupport.c index ed7f2d4ac6..9251388bc2 100644 --- a/MdeModulePkg/Bus/Pci/PciBusDxe/PciEnumeratorSupport.c +++ b/MdeModulePkg/Bus/Pci/PciBusDxe/PciEnumeratorSupport.c @@ -2115,6 +2115,27 @@ AuthenticatePciDevice ( return EFI_SUCCESS; } +/** + Checks if PCI device is Root Bridge. + + @param PciIoDevice Instance of PCI device + + @retval TRUE Device is Root Bridge + @retval FALSE Device is not Root Bridge + +**/ +BOOLEAN +IsRootBridge ( + IN PCI_IO_DEVICE *PciIoDevice + ) +{ + if (PciIoDevice->Parent == NULL) { + return TRUE; + } else { + return FALSE; + } +} + /** Create and initialize general PCI I/O device instance for PCI device/bridge device/hotplug bridge device. @@ -2217,7 +2238,10 @@ CreatePciIoDevice ( return NULL; } - if (PcdGetBool (PcdAriSupport)) { + // + // Check if device's parent is not Root Bridge + // + if (PcdGetBool (PcdAriSupport) && !IsRootBridge (Bridge)) { // // Check if the device is an ARI device. //