[PATCH] mtd: pxa3xx-nand: handle PIO in threaded interrupt

Robert Jarzmik robert.jarzmik at free.fr
Wed Feb 18 09:16:17 PST 2015


Maxime Ripard <maxime.ripard at free-electrons.com> writes:

> On Tue, Feb 17, 2015 at 09:06:57PM +0100, Robert Jarzmik wrote:
>> Change the handling of the data stage in the driver : don't pump data in
>> the top-half interrupt, but rather schedule a thread for non dma cases.
>> 
>> This will enable latencies in the data pumping, especially if delays are
>> required. Moreover platform shall be more reactive as other interrupts
>> can be served while pumping data.
>> 
>> No throughput degradation was observed, at least on the zylonite
>> platform, while a slight degradation was being expected.
>> 
>> Signed-off-by: Robert Jarzmik <robert.jarzmik at free.fr>
>
> Tested-by: Maxime Ripard <maxime.ripard at free-electrons.com>
>
> On a sidenote...
Thanks.

>> @@ -1672,7 +1688,8 @@ static int alloc_nand_resource(struct platform_device *pdev)
>>  	/* initialize all interrupts to be disabled */
>>  	disable_int(info, NDSR_MASK);
>>  
>> -	ret = request_irq(irq, pxa3xx_nand_irq, 0, pdev->name, info);
>> +	ret = request_threaded_irq(irq, pxa3xx_nand_irq,
>> +				   pxa3xx_nand_irq_thread, 0, pdev->name, info);
>
> Using IRQF_ONESHOT would allow you not to do the interrupt enable /
> disable dance.
Yes, that's a very good point. Would your Tested-by still hold with this change ?

Cheers.

-- 
Robert



More information about the linux-mtd mailing list