[PATCH] mtd: pxa3xx-nand: handle PIO in threaded interrupt
ezequiel.garcia at free-electrons.com
Wed Feb 18 03:42:55 PST 2015
On 02/17/2015 05:06 PM, 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>
> drivers/mtd/nand/pxa3xx_nand.c | 23 ++++++++++++++++++++---
> 1 file changed, 20 insertions(+), 3 deletions(-)
> diff --git a/drivers/mtd/nand/pxa3xx_nand.c b/drivers/mtd/nand/pxa3xx_nand.c
> index 96b0b1d..237c92c 100644
> --- a/drivers/mtd/nand/pxa3xx_nand.c
> +++ b/drivers/mtd/nand/pxa3xx_nand.c
> @@ -569,11 +569,25 @@ static void start_data_dma(struct pxa3xx_nand_info *info)
> +static irqreturn_t pxa3xx_nand_irq_thread(int irq, void *data)
> + struct pxa3xx_nand_info *info = data;
> + handle_data_pio(info);
> + info->state = STATE_CMD_DONE;
Are you sure you need to set the state here?
Ezequiel García, Free Electrons
Embedded Linux, Kernel and Android Engineering
More information about the linux-mtd