[PATCH] arm: Improve MMC performance on Versatile Express

Linus Walleij linus.ml.walleij at gmail.com
Tue Feb 1 09:29:06 EST 2011


2011/1/21 Russell King - ARM Linux <linux at arm.linux.org.uk>:
> On Fri, Jan 21, 2011 at 05:20:57PM -0500, Nicolas Pitre wrote:
>> The only solution in that case is to give top priority to the FIFO IRQ
>> and never disable IRQs when in interrupt context, except for that FIFO
>> servicing handler which should keep IRQs masked out throughout.  In any
>> case this would certainly be only a hack for badly misdesigned hardware.
>
> Not possible anymore.  The kernel's IRQ handling has changed such that
> generic code now ensures that IRQs are disabled irrespective of the
> IRQF_DISABLED flag.  All IRQ handlers are called with IRQs disabled,
> and they remain that way until they call local_irq_enable().

Then the only way of assuring low latency on this one IRQ would
be to convert the IRQ handlers for all the *other* hardware in the
Vexpress to request_threaded_irq(), and that's what the RealTime
folks do all the time I believe.

[Pawel Moll]
> (...) so far the only time when problem happens is the timeout caused
> by ISP1761 handler.

Have you considered switching the ISP1761 handler to
request_threaded_irq() with IRQF_ONESHOT | IRQF_NO_SUSPEND
so it runs in process context with that IRQ masked off, until completion?

Linus Walleij



More information about the linux-arm-kernel mailing list