mirror of https://github.com/acidanthera/audk.git
OvmfPkg: PlatformBdsLib: refine PCI host bridge assertion
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.justen@intel.com> Cc: Gabriel Somlo <somlo@cmu.edu> Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Laszlo Ersek <lersek@redhat.com> Acked-by: Gabriel Somlo <somlo@cmu.edu> Regression-tested-by: Gabriel Somlo <somlo@cmu.edu> Reviewed-by: Jordan Justen <jordan.l.justen@intel.com> git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@17953 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
parent
fcd1e5de52
commit
7730ad6e5d
|
@ -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",
|
||||
|
|
Loading…
Reference in New Issue