2.0.30 + ncr53c8xx + 3c59x + IRQ sharing trouble

Alexander Kjeldaas (astor@guardian.no)
Tue, 9 Sep 1997 15:45:44 +0200 (MET DST)


I've got 2.0.30 (+ipsec) running on an intel plato motherboard. I've got
one 3com 595 card and one ncr 810 card sharing IRQ 15. The 595 card fails
the following test (from 3c59x.c):

/* Use the now-standard shared IRQ implementation. */
if (request_irq(dev->irq, &vortex_interrupt, SA_SHIRQ,
vp->product_name, dev)) {
return -EAGAIN;
}

The result is that the card gets stuck in 100Mb mode something the rest
of the network doesn't appreciate.

I have solved the problem by not using a shared irq, but the trouble is
that there are no indications from the kernel or driver that this might be
a problem, so it is non-obvious that this is a shared-IRQ problem.

[Another non-obvious thing with this motherboard is that the BIOS doesn't
support configuring the IRQs of the slots individually, so switching from
a shared irq to two different irqs involves releasing another irq and
_booting with one of the cards removed_ to force the BIOS to "forget" the
IRQ.]

It would be preferable that the kernel would figure this out and if
nothing else, print a warning. I have another pentium running exactly the
same kernel with no problems, so I suspect there is a buggy motherboard or
chipset somewhere. If this is so, maybe request_irq could print a warning
if it knows that the chipset is buggy and it doesn't have a free exclusive
IRQ.

astor