Re: PCI IRQ routing problem in 2.4.0

From: Linus Torvalds (torvalds@transmeta.com)
Date: Mon Jan 29 2001 - 02:41:38 EST


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/



This archive was generated by hypermail 2b29 : Wed Jan 31 2001 - 21:00:32 EST