Re: [patch, -rc5-mm1] locking validator: special rule: 8390.c disable_irq()

Arjan van de Ven
2006-05-31T21:56:33Z

On Wed, 2006-05-31 at 23:47 +0200, Ingo Molnar wrote:
> * Arjan van de Ven <arjan@infradead.org> wrote:
>
> > On Wed, 2006-05-31 at 17:41 -0400, Alan Cox wrote:
> > > On Wed, May 31, 2006 at 10:31:40PM +0200, Arjan van de Ven wrote:
> > > > > 8390.c knows that ei_local->page_lock can only be used by an irq
> > > > > context that it disabled -
> > > >
> > > > btw I think this is no longer correct with the irq polling stuff Alan
> > > > added to the kernel recently...
> > >
> > > We could make the misrouted IRQ logic skip all handlers on a disabled IRQ
> > > but that might actually be worse than the disease we are trying to cure by
> > > doing so.
> >
> > yeah since misrouted irqs will cause the kernel do disable irqs 'at
> > random' more or less .. for which the handlers now would become
> > unreachable which isn't good.
>
> couldnt most of these problems be avoided by tracking whether a handler
> _ever_ returned a success status? That means that irqpoll could safely
> poll handlers for which we know that they somehow arent yet matched up
> to any IRQ line?

I suspect the real solution is to have a

disable_irq_handler(irq, handler)

function which does 2 things
1) disable the irq at the hardware level
2) mark the handler as "don't call me"

it matches the semantics here; what these drivers want is 1) not get an
irq handler called and 2) not get an irq flood