On Fri, 26 Mar 2010, Peter Zijlstra wrote:
quoted text > On Fri, 2010-03-26 at 09:59 +0000, Alan Cox wrote:
> > > As long as it's rare (which it is) i dont see a problem: you can enable
> > > interrupts in the handler by using local_irq_enable(), like the IDE PIO
> > > drivers do. That way it's documented a bit better as well, because it shows
> > > the precise source of the latency, with a big comment explaining it, etc.
> >
> > I don't think it's as rare as you think particularly in embedded, and the
> > moment you start explicitly using local_irq_enable() you've simply moved
> > the underlying problem back and made it far harder to grep for.
>
> We've got local_irq_enable_in_hardirq() which should be used and can
> easily be grep'ed for.
>
> But yes, I would much prefer to simply convert these known slow handlers
> to threaded interrupts.
Can't do that. The smc91x has a very small internal buffer which has to
be emptied using PIO. Threaded interrupts simply have too high
latencies for overruns not to occur. That's why the RX path is entirely
done in hardirq context while the TX path is done in softirq context.
Nicolas
--
unsubscribe notice To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to
majordomo@vger.kernel.org
More majordomo info at
http://vger.kernel.org/majordomo-info.html
Please read the FAQ at
http://www.tux.org/lkml/
Messages in current thread:
Re: [patch 0/2] Run interrupt handlers always with interru ... , Nicolas Pitre , (Fri Mar 26, 5:00 am)