diff --git a/OvmfPkg/Library/PlatformBdsLib/BdsPlatform.c b/OvmfPkg/Library/PlatformBdsLib/BdsPlatform.c index fdae6b1cdc..243db44de7 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",