[PATCH V2] MdeModulePkg/PciBusDxe: Enumerator to check for RCiEP before looking for RP
Bassa, Damian <damian.bassa@...>
Before trying to access parent root port to check ARI capabilities, enumerator should see if Endpoint device is not Root Complex integrated to avoid undefined parent register accesses.
Signed-off-by: Damian Bassa damian.bassa@...
Change-Id: Ib782a9d73daab9164d4189a50e06273660400695 --- .../Bus/Pci/PciBusDxe/PciEnumeratorSupport.c | 26 ++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-)
diff --git a/MdeModulePkg/Bus/Pci/PciBusDxe/PciEnumeratorSupport.c b/MdeModulePkg/Bus/Pci/PciBusDxe/PciEnumeratorSupport.c index db1b35f8ef..687d055f49 100644 --- a/MdeModulePkg/Bus/Pci/PciBusDxe/PciEnumeratorSupport.c +++ b/MdeModulePkg/Bus/Pci/PciBusDxe/PciEnumeratorSupport.c @@ -2128,6 +2128,27 @@ AuthenticatePciDevice ( return EFI_SUCCESS; } +/** + Checks if PCI device is Root Bridge + + @param Bridge Instance of PCI device + + @retval TRUE Device is Root Bridge + @return 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. @@ -2229,7 +2250,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. // --
Intel Technology Poland sp. z o.o. ul. Słowackiego 173 | 80-298 Gdańsk | Sąd Rejonowy Gdańsk Północ | VII Wydział Gospodarczy Krajowego Rejestru Sądowego - KRS 101882 | NIP 957-07-52-316 | Kapitał zakładowy 200.000 PLN.
Ta wiadomość wraz z załącznikami jest przeznaczona dla określonego adresata i może zawierać informacje poufne. W razie przypadkowego otrzymania tej wiadomości, prosimy o powiadomienie nadawcy oraz trwałe jej usunięcie; jakiekolwiek przeglądanie lub rozpowszechnianie jest zabronione.
|
|