From 2a77028057a41cf2a62855c9459cd67f4a603220 Mon Sep 17 00:00:00 2001 From: Michael Lotz Date: Sun, 2 Oct 2011 21:25:15 +0000 Subject: [PATCH] Relax ensure_all_functions_matched() to assume no interrupt use when a device has no routing information but wasn't configured by the BIOS either. The function will now only panic if a device that was previously configured would not be so anymore after enabling the IO-APIC. Fixes #7971. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42795 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/system/kernel/arch/x86/irq_routing_table.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/system/kernel/arch/x86/irq_routing_table.cpp b/src/system/kernel/arch/x86/irq_routing_table.cpp index 4775649595..a9e46c7336 100644 --- a/src/system/kernel/arch/x86/irq_routing_table.cpp +++ b/src/system/kernel/arch/x86/irq_routing_table.cpp @@ -550,6 +550,14 @@ ensure_all_functions_matched(pci_module_info* pci, uint8 bus, } if (!matched) { + if (pci->read_pci_config(bus, device, function, + PCI_interrupt_line, 1) == 0) { + dprintf("assuming no interrupt use on PCI device" + " %u:%u:%u (bios irq 0, no routing information)\n", + bus, device, function); + continue; + } + panic("unable to find irq routing for PCI %u:%u:%u", bus, device, function); return B_ERROR;