diff options
Diffstat (limited to 'OvmfPkg/Library')
-rw-r--r-- | OvmfPkg/Library/PlatformBdsLib/BdsPlatform.c | 10 |
1 files changed, 9 insertions, 1 deletions
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",
|