summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKyösti Mälkki <kyosti.malkki@gmail.com>2019-07-04 13:15:01 +0300
committerKyösti Mälkki <kyosti.malkki@gmail.com>2019-07-12 09:27:56 +0000
commit98d19572b175ad44a83614cdf2c57ed0ba94a733 (patch)
treef7ccc9377ee31c6ca8d139b184ed7cdfa040e930
parente2f39e23e8982a239f4ec063d823ad3414e1ba66 (diff)
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> Reviewed-on: https://review.coreboot.org/c/coreboot/+/34083 Reviewed-by: Mike Banon <mikebdp2@gmail.com> Reviewed-by: Paul Menzel <paulepanter@users.sourceforge.net> Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
-rw-r--r--src/device/oprom/realmode/x86_interrupts.c2
-rw-r--r--src/device/oprom/yabel/interrupt.c4
-rw-r--r--src/device/oprom/yabel/io.c4
3 files changed, 5 insertions, 5 deletions
diff --git a/src/device/oprom/realmode/x86_interrupts.c b/src/device/oprom/realmode/x86_interrupts.c
index 2629ab9166..8e3a51e450 100644
--- a/src/device/oprom/realmode/x86_interrupts.c
+++ b/src/device/oprom/realmode/x86_interrupts.c
@@ -174,7 +174,7 @@ int int1a_handler(void)
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 2bc238e75a..338156f8ed 100644
--- a/src/device/oprom/yabel/interrupt.c
+++ b/src/device/oprom/yabel/interrupt.c
@@ -409,8 +409,8 @@ handleInt1a(void)
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 8ae91d46e0..e8c41ce24a 100644
--- a/src/device/oprom/yabel/io.c
+++ b/src/device/oprom/yabel/io.c
@@ -435,8 +435,8 @@ pci_cfg_read(X86EMU_pioAddr addr, u8 size)
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));
}