#9180: PANIC: unable to find irq routing for PCI 1:0:1 -----------------------------+----------------------------- Reporter: Joshua | Owner: mmlr Type: bug | Status: in-progress Priority: normal | Milestone: R1 Component: System/Kernel | Version: R1/Development Resolution: | Keywords: pci irq routing Blocked By: | Blocking: 7665 Has a Patch: 0 | Platform: x86 -----------------------------+----------------------------- Changes (by mmlr): * owner: axeld => mmlr * status: new => in-progress Comment: One thing is for certain: The error should actually propagate upwards and cause the IO-APIC not to be used. I'm going to fix this later on, though it will probably cause a regression for you until the root cause is fixed. I've noticed that both of the machines, the one here and the one in #9165 are of the Pentium 4 era. These are still relatively "early" in ACPI terms and may not really do things like it is done for current hardware. At least having the PCI Express bus separately is not so common on current implementations AFAICT. It is theoretically possible to map the separate PCIe roots to PCI busses, but it requires the use of the _BBN field and comparing it to the BIOS set bus number on the PCI host bridge. This is at least inconvenient for Haiku, as the PCI module already sets up the busses and by that overwrites the BIOS configured bus numbers before the interrupt routing is determined. So to implement this mapping one would have to store these original values somehow in the PCI module and expose a way to get at them. In current hardware implementations the PCIe host bridges are usually enumerated as PCI devices under the normal PCI root (this is the case here as well from a PCI point of view) and then the ACPI tables simply follow that and put the PCIe root as a device node on the PCI parent. This way a simple 1:1 mapping while enumerating both busses can be done. This is what is currently implemented in Haiku. A possibly better approach to this whole mess and back and forth with PCI would be to make the PCI module responsible for the whole interrupt routing mechanism. This would make sense as what is currently done is really just PCI interrupt routing, not any kind of other interrupt routing (as there aren't any other interrupt sources that use this kind of routing on x86). So putting it in the PCI module would make sense. It would reduce the knowledge and redundancy the kernel has about PCI for this task at least, which would be much cleaner. -- Ticket URL: <http://dev.haiku-os.org/ticket/9180#comment:4> Haiku <http://dev.haiku-os.org> Haiku - the operating system.