Problem initializing PCI boards where IRQ has to be guessed

From: Marty Leisner
Date: Thu Sep 30 2004 - 15:29:10 EST


I had this problem in 2.4.27...the same code is in 2.6.8.1

If the bios doesn't assign an interrupt, the guessing algorithm is
able to work only in a very special case (when the mask is one bit).

In 2.4.27 (I have lxr.linux.no for 2.4.26, its the same in
2.6.8.1)

933 if (!irq) {
934 DBG(" ... failed\n");
935 if (newirq && mask == (1 << newirq)) {
936 msg = "Guessed";
937 irq = newirq;
938 } else
939 return 0;

In 2.4.27 I have:
@@ -942,7 +939,8 @@

if (!irq) {
DBG(" ... failed\n");
- - if (newirq && mask == (1 << newirq)) {
+ if (newirq && (mask & (1 << newirq))) {
+ /* newirq is a routable interrupt */
msg = "Guessed";
irq = newirq;
} else



marty mleisner@xxxxxxxxxxxxxxxx
Don't confuse education with schooling.
Milton Friedman to Yogi Berra


-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/