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.