The ASSERT() in SetPciIntLine() assumes that Device 0 on "the" root bus
corresponds to the PCI host bridge (00:00). This used to be true, but
because we're going to have extra root buses (with nonzero bus numbers),
soon this assumption may no longer hold. Check for the zero root bus
number explicitly.

Cc: Jordan Justen <jordan.l.jus...@intel.com>
Cc: Gabriel Somlo <so...@cmu.edu>
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Laszlo Ersek <ler...@redhat.com>
Acked-by: Gabriel Somlo <so...@cmu.edu>
Regression-tested-by: Gabriel Somlo <so...@cmu.edu>
---
 OvmfPkg/Library/PlatformBdsLib/BdsPlatform.c | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)

diff --git a/OvmfPkg/Library/PlatformBdsLib/BdsPlatform.c 
b/OvmfPkg/Library/PlatformBdsLib/BdsPlatform.c
index fdae6b1..243db44 100644
--- a/OvmfPkg/Library/PlatformBdsLib/BdsPlatform.c
+++ b/OvmfPkg/Library/PlatformBdsLib/BdsPlatform.c
@@ -754,6 +754,7 @@ SetPciIntLine (
   UINTN                     Idx;
   UINT8                     IrqLine;
   EFI_STATUS                Status;
+  UINT32                    RootBusNumber;
 
   Status = EFI_SUCCESS;
 
@@ -763,6 +764,13 @@ SetPciIntLine (
     ASSERT (DevPathNode != NULL);
     DevPath = DevPathNode;
 
+    RootBusNumber = 0;
+    if (DevicePathType (DevPathNode) == ACPI_DEVICE_PATH &&
+        DevicePathSubType (DevPathNode) == ACPI_DP &&
+        ((ACPI_HID_DEVICE_PATH *)DevPathNode)->HID == EISA_PNP_ID(0x0A03)) {
+      RootBusNumber = ((ACPI_HID_DEVICE_PATH *)DevPathNode)->UID;
+    }
+
     //
     // Compute index into PciHostIrqs[] table by walking
     // the device path and adding up all device numbers
@@ -794,7 +802,7 @@ SetPciIntLine (
     if (EFI_ERROR (Status)) {
       return Status;
     }
-    if (RootSlot == 0) {
+    if (RootBusNumber == 0 && RootSlot == 0) {
       DEBUG((
         EFI_D_ERROR,
         "%a: PCI host bridge (00:00.0) should have no interrupts!\n",
-- 
1.8.3.1



------------------------------------------------------------------------------
Don't Limit Your Business. Reach for the Cloud.
GigeNET's Cloud Solutions provide you with the tools and support that
you need to offload your IT needs and focus on growing your business.
Configured For All Businesses. Start Your Cloud Today.
https://www.gigenetcloud.com/
_______________________________________________
edk2-devel mailing list
edk2-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/edk2-devel

Reply via email to