[ltp] cardbus irq delivery in recent 2.6 kernels?

Eric Jorgensen linux-thinkpad@linux-thinkpad.org
Wed, 21 Jun 2006 22:46:22 -0600


   I can't seem to get my prism54 fullmac wireless nic working in my
X21. This is slightly infuriating because it worked perfectly before my
old harddrive died. 

   The error messages I get from it all point to irq issues, according
to the prism54 development forums. 

   Basically, if i plug in a 16 bit pcmcia card, it gets assigned an
actually free irq, and works perfectly. If i plug in a 32 bit cardbus
card, it gets assigned the same irq as the cardbus bridge (and sound
chip) and in the case of the prism54 card, fails to work at all. 

   Tellingly, every time the prism54 card fails to work, the kernel
reports a spurious interrupt on irq 15. 

   I've tried pci=noacpi, pci=routeirq, and pci=biosirq with no actual
success. pci=biosirq gets the two slots onto different interrupts, but
the cardbus card still always gets assigned the same IRQ as the bridge. 

   Fiddling with the pci irq assignments in bios is tricky. It often
results in bios complaining that it was unable to assign an irq for some
board resource and insisting that i fix it. 

   Best case scenario, the kernel notices my configuration, and
mostly ignores it, like this: 

ACPI: Using PIC for interrupt routing
ACPI: PCI Interrupt Link [LNKA] (IRQs 9 11) *3
ACPI: PCI Interrupt Link [LNKB] (IRQs 9 11) *5 
ACPI: PCI Interrupt Link [LNKC] (IRQs 9 *11) 
ACPI: PCI Interrupt Link [LNKD] (IRQs *9 11)

   What this is telling me here is that it knows i wanted A on irq 3 and
B on irq 5, it's giving them either 9 or 11 anyway. I guess it must know
best, eh? 

   I'm running 2.6.17.1 (and 2.6.16.9) on debian/etch. 

   Anybody got any ideas? I've about run out.