summaryrefslogtreecommitdiffstats
path: root/MdeModulePkg/Bus/Pci/PciBusDxe/PciEnumeratorSupport.c
diff options
context:
space:
mode:
Diffstat (limited to 'MdeModulePkg/Bus/Pci/PciBusDxe/PciEnumeratorSupport.c')
-rw-r--r--MdeModulePkg/Bus/Pci/PciBusDxe/PciEnumeratorSupport.c26
1 files changed, 25 insertions, 1 deletions
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
@@ -2116,6 +2116,27 @@ AuthenticatePciDevice (
}
/**
+ 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.
//