Re: linux-kernel-digest V1 #824

Leonard N. Zubkoff (lnz@dandelion.com)
Mon, 7 Apr 1997 11:59:52 -0700


Date: Sat, 05 Apr 1997 23:22:33 -0500
From: "David C. Davies" <davies@ultranet.com>

> The SCSI drivers registers the IRQ with the SA_INTERRUPT flag,
> the network driver without this flag, so the IRQ can not be
> shared.

This problem has been known for a year or so ... PCMCIA needs shared fast and
slow interrupts.

A solution is available by reworking the existing fast/slow irq handlers, e.g.:

1. Walk the interrupt list for the signalled irq for FAST interrupts (irqs disabled)
2. enable irqs
3. if slow_irq_flag is set return (as for current fast irqs)
4. set a slow_irq_flag
5. walk the interrupt list for slow irqs
6. clear the slow_interrupt_flag
7. return (via signal handler code as for normal slow interrupts)

We need to also make sure that each interrupt handler indicates whether it
actually processed an interrupt or not. Otherwise, we will pay the full
overhead of slow interrupts whenever fast and slow interrupts use a shared IRQ.

Leonard