[parisc-linux-cvs] linux-2.6 willy

Grant Grundler grundler at parisc-linux.org
Sun Jan 2 13:08:09 MST 2005


On Sat, Jan 01, 2005 at 04:02:33PM +0000, Matthew Wilcox wrote:
> Right, you disable an interrupt, not an interrupt handler.

IMHO - this is wrong by design. It means one driver can mess
with the behavior of another driver. e.g. shutting down one NIC
could disable the interrupt for another NIC.

> The generic
> IRQ code supports nested disable/enable calls, precisely because of this.

nesting disable/enable device IRQ makes no sense to me. 
The code path should know if a particular IRQ is disabled (or not)
or if it needs to be disabled.  I differentiate device IRQ code path
from disabling the CPU interrupts (e.g. spinlock_irqsave())
because the device IRQ's are typically much more expensive
to enable/disable.

> Our code does the wrong thing, which is one of the reasons I'm looking
> to get rid of it.

ok. Just keep in mind the trade-offs.

> > Ditto for mask/unmask calls
> > that have been recently removed.
> 
> I determined they weren't necessary -- in my latest development tree,

I agree - basically no drivers used mask/unmask. And we don't need it under
parisc since we don't support nested interrupts anyway.

> I deleted the enable/disable_irq calls that I replaced them with in the
> current tree.  Haven't booted that change yet, but it's worth noting that
> dino has *never* masked/unmasked irqs; only wax/lasi/asp do.

And the others probably don't need to either.
But I'm not as familiar with them.

> Eventually, I hope to be able to create kernel/irq/iosapic.c and
> share it between ia64, parisc and i386, but that's a fair way off yet.

I originally had that as a goal but I'm not sure anymore it's worth it.
Sharing code is good for some things but not everything.

thanks,
grant


More information about the parisc-linux-cvs mailing list