Messages in this thread Patch in this message | | | Date | Sun, 28 Jan 2001 23:41:38 -0800 (PST) | From | Linus Torvalds <> | Subject | Re: PCI IRQ routing problem in 2.4.0 |
| |
On Mon, 29 Jan 2001, Robert Siemer wrote: > > Further I always see '09' in the Configuration Space at Interrupt_Line > (0x3c) for the 00:01.2 USB Controller. But 2.4.0 says: > Interrupt: pin A routed to IRQ 12 > while 2.4.0-test9 states: > Interrupt: pin A routed to IRQ 9
Ahhah!
I bet it's the code that goes through all PCI devices, and tries to find devices that have the same "pirq" (aka "link") value in the tables.
How about this patch? I bet that you'll get a message about pirq table conflicts. Does USB end up working afterwards?
Linus
---- --- v2.4.0/linux/arch/i386/kernel/pci-irq.c Wed Jan 3 20:45:26 2001 +++ linux/arch/i386/kernel/pci-irq.c Sun Jan 28 23:36:48 2001 @@ -462,18 +462,9 @@ irq = pirq & 0xf; DBG(" -> hardcoded IRQ %d\n", irq); msg = "Hardcoded"; - if (dev->irq && dev->irq != irq) { - printk("IRQ routing conflict in pirq table! Try 'pci=autoirq'\n"); - return 0; - } } else if (r->get && (irq = r->get(pirq_router_dev, dev, pirq))) { DBG(" -> got IRQ %d\n", irq); msg = "Found"; - /* We refuse to override the dev->irq information. Give a warning! */ - if (dev->irq && dev->irq != irq) { - printk("IRQ routing conflict in pirq table! Try 'pci=autoirq'\n"); - return 0; - } } else if (newirq && r->set && (dev->class >> 8) != PCI_CLASS_DISPLAY_VGA) { DBG(" -> assigning IRQ %d", newirq); if (r->set(pirq_router_dev, dev, pirq, newirq)) { @@ -504,6 +495,11 @@ if (!info) continue; if (info->irq[pin].link == pirq) { + /* We refuse to override the dev->irq information. Give a warning! */ + if (dev2->irq && dev2->irq != irq) { + printk("IRQ routing conflict in pirq table for device %s\n", dev2->slot_name); + continue; + } dev2->irq = irq; pirq_penalty[irq]++; if (dev != dev2) - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org Please read the FAQ at http://www.tux.org/lkml/
| |