NCR53C815 vs Tulip: sharing IRQ fails

Gerard Roudier groudier@club-internet.fr
Mon Mar 22 16:51:06 1999


On Mon, 22 Mar 1999, Donald Becker wrote:

> On Mon, 22 Mar 1999, Hardware Stuff wrote:
> 
> > I have a system that's not short on IRQs, but in which the BIOS
> > insists on giving the DTC 3130B NCR53C815 and the D-Link DFE500-Tx
> > 21040 the same IRQ.  The NCR53C815 reports obtaining a shared IRQ and
> > functions fine, while it's impossible to ifconfig the Tulip.  It's an
> > i386 2.0.36 kernel with the latest patches for the NCR.
> > 
> > I'm be happy if I could force either card to a different IRQ, but
> > nothing has worked yet.  Has anyone had this setup working?
> 
> Read the instructions in
>    http://cesdis.gsfc.nasa.gov/linux/misc/irq-conflict.html
> for info on how to fix the SCSI driver -- it's using the wrong flags for
> requesting the interrupt.

What wrong flags?
It is Linux not having provided the right set of flags for request_irq() 
that confused for a long time IRQ sharing on PCI. A PCI device driver just
wants to tell the kernel the IRQ is from a PCI device and so must be
shared. It is what SA_SHIRQ is telling the kernel. The fact that the
SA_INTERRUPT used at the same time may disallow sharing a shareable IRQ
when all involved drivers aren't using it the same way has been a kernel
bug or just some useless feature that made shit. 

Sun Feb  14:00 1999 Gerard Roudier (groudier@club-internet.fr)
	* revision 3.1g
        ...
	- Allow to tune request_irq() flags from the boot command line using 
	  ncr53c8xx=irqm:??, as follows:
	  a) If bit 0x10 is set in irqm, SA_SHIRQ flag is not used.
	  b) If bit 0x20 is set in irqm, SA_INTERRUPT flag is not used.
	  By default the driver uses both SA_SHIRQ and SA_INTERRUPT.
	  Option 'ncr53c8xx=irqm:0x20' may be used when an IRQ is shared by 
	  a 53C8XX adapter and a network board.
        ...

Btw, this is also described in the README.ncr53c8xx file.

Latest patch against 2.0.36 is the bundle ncr53c8xx+sym53c8xx with
ncr53c8xx version 3.2 that supports the tuning of SA_* flags from the boot
command line. 

Gérard.