--- 2.4/arch/i386/kernel/pci-irq.c Sat Nov 3 19:51:08 2001 +++ build-2.4/arch/i386/kernel/pci-irq.c Sun Nov 4 15:09:40 2001 @@ -629,6 +629,18 @@ if (dev2->irq && dev2->irq != irq) { printk(KERN_INFO "IRQ routing conflict for %s, have irq %d, want irq %d\n", dev2->slot_name, dev2->irq, irq); + if (!strcmp(msg, "Found")) { + /* ok, the bios lied. Try to recover */ + if (r->set && (dev->class >> 8) != PCI_CLASS_DISPLAY_VGA) { + printk(KERN_ERR "trying set.\n"); + if (r->set(pirq_router_dev, dev2, pirq, dev2->irq)) { + printk(KERN_ERR "set succedded.\n"); + eisa_set_level_irq(dev2->irq); + } else { + printk(KERN_ERR "set failed.\n"); + } + } + } continue; } dev2->irq = irq;