Kyösti Mälkki has uploaded this change for review. ( https://review.coreboot.org/c/coreboot/+/34083 )
Change subject: device/oprom: Replace uses of dev_find_slot() ......................................................................
device/oprom: Replace uses of dev_find_slot()
The call to dev_find_slot() may return PCI devices that are disabled or unaccessible, as PCI enumeration does not remove nodes from all_devices linked list.
Use PCI topology search instead.
Change-Id: I00233177e5572ca79002a7d141cda1b94b966330 Signed-off-by: Kyösti Mälkki kyosti.malkki@gmail.com --- M src/device/oprom/realmode/x86_interrupts.c M src/device/oprom/yabel/interrupt.c M src/device/oprom/yabel/io.c 3 files changed, 5 insertions(+), 5 deletions(-)
git pull ssh://review.coreboot.org:29418/coreboot refs/changes/83/34083/1
diff --git a/src/device/oprom/realmode/x86_interrupts.c b/src/device/oprom/realmode/x86_interrupts.c index 2629ab9..8e3a51e 100644 --- a/src/device/oprom/realmode/x86_interrupts.c +++ b/src/device/oprom/realmode/x86_interrupts.c @@ -174,7 +174,7 @@ devfn = X86_EBX & 0xff; bus = X86_EBX >> 8; reg = X86_EDI; - dev = dev_find_slot(bus, devfn); + dev = pcidev_path_on_bus(bus, devfn); if (!dev) { printk(BIOS_DEBUG, "0x%x: BAD DEVICE bus %d devfn 0x%x\n", func, bus, devfn); // Or are we supposed to return PCIBIOS_NODEV? diff --git a/src/device/oprom/yabel/interrupt.c b/src/device/oprom/yabel/interrupt.c index 2bc238e..338156f 100644 --- a/src/device/oprom/yabel/interrupt.c +++ b/src/device/oprom/yabel/interrupt.c @@ -409,8 +409,8 @@ if ((bus == bios_device.bus) && (devfn == bios_device.devfn)) { dev = bios_device.dev; } else if (CONFIG(YABEL_PCI_ACCESS_OTHER_DEVICES)) { - dev = dev_find_slot(bus, devfn); - DEBUG_PRINTF_INTR("%s(): function: %x: dev_find_slot() returned: %s\n", + dev = pcidev_path_on_bus(bus, devfn); + DEBUG_PRINTF_INTR("%s(): function: %x: pcidev_path_on_bus() returned: %s\n", __func__, M.x86.R_AX, dev_path(dev)); }
diff --git a/src/device/oprom/yabel/io.c b/src/device/oprom/yabel/io.c index 96c9224..94cbe8f 100644 --- a/src/device/oprom/yabel/io.c +++ b/src/device/oprom/yabel/io.c @@ -435,8 +435,8 @@ if ((bus == bios_device.bus) && (devfn == bios_device.devfn)) { dev = bios_device.dev; } else if (CONFIG(YABEL_PCI_ACCESS_OTHER_DEVICES)) { - dev = dev_find_slot(bus, devfn); - DEBUG_PRINTF_INTR("%s(): dev_find_slot() returned: %s\n", + dev = pcidev_path_on_bus(bus, devfn); + DEBUG_PRINTF_INTR("%s(): pcidev_path_on_bus() returned: %s\n", __func__, dev_path(dev)); }