Multiple PCI devices on the same IRQ: kernel or driver?

Mark Martin
Mon Nov 30 14:36:53 1998

I recently purchased a Netgear FA310TX card and have been having the
same problem as Erik Beck, namely my BIOS insists on putting all of my
PCI devices on IRQ 10 and does not give me any control over the
situation.  Consequently, whenever I try to bring the interface up, I am
greeted with the error message

SIOCSIFFLAGS: Resource temporarily unavailable

There has been a fair amount of traffic on the mailing list about Erik's
problem.  Erik indicated that he had been advised that sharing an IRQ
under Linux was "not a good idea".  Jon Lewis suggested that the kernel
does a poor job of IRQ sharing but suggested hacking the tulip driver. 
David ( implicated the kernel when he mentioned
that he has no trouble sharing an IRQ and credited the development
kernels that he runs.

I read through the mailing list archive and found that Bruce Benson also
had this problem in December of 1997 with the same machine that I have
(a gw2k P-5 133).  I exchanged email with Bruce and he stated that the
driver is the source of the problem rather than the kernel.  He
suggested that I try rearranging the cards on the bus, loading the
necessary modules in different orders, or using different compiler
switches when compiling the modules.

I have tried several of the suggestions I got from Bruce or managed to
glean from reading through the archives but without success.  The other
devices on my PCI bus are my video card and the hard drive controller
board I'm booting from so I am somewhat limited in terms of loading the
appropriate modules in different orders.  I would follow Erik and simply
purchase an ISA card but money is an issue and it's a shame to abandon a
brand new piece of hardware.

What I was hoping is that someone could clarify this situation for me. 
Does the problem lie with the kernel or with the tulip driver?  The fact
that the other two devices on my PCI bus work fine seems to suggest that
the problem lies with the driver.  If so, could someone point me in the
right direction toward implementing Jon's hack?  I've done a lot of
coding but I've never hacked a linux device driver and don't know where
to start.

Any insights or suggestions would be greatly appreciated.



 Mark A. Martin
 Dept of Applied Mathematics
 University of Washington
 Box 352420
 Seattle, WA 98195-2420