Index: arch/i386/kernel/pci-i386.h =================================================================== RCS file: /cvsroot/gkernel/linux_2_4/arch/i386/kernel/pci-i386.h,v retrieving revision 1.1.1.2 retrieving revision 1.1.1.2.292.1 diff -u -r1.1.1.2 -r1.1.1.2.292.1 --- arch/i386/kernel/pci-i386.h 2000/10/22 20:05:16 1.1.1.2 +++ arch/i386/kernel/pci-i386.h 2001/06/05 03:28:58 1.1.1.2.292.1 @@ -4,7 +4,7 @@ * (c) 1999 Martin Mares */ -#undef DEBUG +#define DEBUG 1 #ifdef DEBUG #define DBG(x...) printk(x) Index: arch/i386/kernel/pci-irq.c =================================================================== RCS file: /cvsroot/gkernel/linux_2_4/arch/i386/kernel/pci-irq.c,v retrieving revision 1.1.1.60 diff -u -r1.1.1.60 pci-irq.c --- arch/i386/kernel/pci-irq.c 2001/06/05 02:40:23 1.1.1.60 +++ arch/i386/kernel/pci-irq.c 2001/06/08 07:50:29 @@ -552,9 +552,6 @@ irq = pirq & 0xf; DBG(" -> hardcoded IRQ %d\n", irq); msg = "Hardcoded"; - } else if (r->get && (irq = r->get(pirq_router_dev, dev, pirq))) { - DBG(" -> got IRQ %d\n", irq); - msg = "Found"; } 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)) { @@ -564,6 +561,10 @@ irq = newirq; } } + if (!msg && r->get && (irq = r->get(pirq_router_dev, dev, pirq))) { + DBG(" -> got IRQ %d\n", irq); + msg = "Found"; + } if (!irq) { DBG(" ... failed\n"); @@ -587,13 +588,14 @@ if (info->irq[pin].link == pirq) { /* We refuse to override the dev->irq information. Give a warning! */ if (dev2->irq && dev2->irq != irq) { - printk(KERN_INFO "IRQ routing conflict in pirq table for device %s\n", dev2->slot_name); + printk(KERN_INFO "IRQ routing conflict for %s, have irq %d, want irq %d\n", + dev2->slot_name, dev2->irq, irq); continue; } dev2->irq = irq; pirq_penalty[irq]++; if (dev != dev2) - printk(KERN_INFO "PCI: The same IRQ used for device %s\n", dev2->slot_name); + printk(KERN_INFO "PCI: Sharing IRQ %d with %s\n", irq, dev2->slot_name); } } return 1;