2008-06-06 15:55:53

by Ben Dooks

[permalink] [raw]
Subject: [patch 05/15] MMC: Fix S3C24XX IRQ enable during PIO transfers From: Roman Moracik <[email protected]>

Fix Bug #677 - I/O errors on heavy microSD writes for 2.6.22.x.

Signed-off-by: Ben Dooks <[email protected]>

Index: linux-2.6.26-rc5-q/drivers/mmc/host/s3cmci.c
===================================================================
--- linux-2.6.26-rc5-q.orig/drivers/mmc/host/s3cmci.c 2008-06-06 15:46:01.000000000 +0100
+++ linux-2.6.26-rc5-q/drivers/mmc/host/s3cmci.c 2008-06-06 15:46:03.000000000 +0100
@@ -313,6 +313,7 @@ static void pio_tasklet(unsigned long da
{
struct s3cmci_host *host = (struct s3cmci_host *) data;

+ disable_irq(host->irq);

if (host->pio_active == XFER_WRITE)
do_pio_write(host);
@@ -331,9 +332,9 @@ static void pio_tasklet(unsigned long da
host->mrq->data->error = MMC_ERR_DMA;
}

- disable_irq(host->irq);
finalize_request(host);
- }
+ } else
+ enable_irq(host->irq);
}

/*

--
Ben ([email protected], http://www.fluff.org/)

'a smiley only costs 4 bytes'


2008-06-14 16:21:17

by Pierre Ossman

[permalink] [raw]
Subject: Re: [patch 05/15] MMC: Fix S3C24XX IRQ enable during PIO transfers From: Roman Moracik <[email protected]>

On Fri, 06 Jun 2008 16:51:22 +0100
Ben Dooks <[email protected]> wrote:

> Fix Bug #677 - I/O errors on heavy microSD writes for 2.6.22.x.
>
> Signed-off-by: Ben Dooks <[email protected]>
>
> Index: linux-2.6.26-rc5-q/drivers/mmc/host/s3cmci.c
> ===================================================================
> --- linux-2.6.26-rc5-q.orig/drivers/mmc/host/s3cmci.c 2008-06-06 15:46:01.000000000 +0100
> +++ linux-2.6.26-rc5-q/drivers/mmc/host/s3cmci.c 2008-06-06 15:46:03.000000000 +0100
> @@ -313,6 +313,7 @@ static void pio_tasklet(unsigned long da
> {
> struct s3cmci_host *host = (struct s3cmci_host *) data;
>
> + disable_irq(host->irq);
>

This seems harsh. Can't you just fiddle with the interrupt mask of this
specific device?


Attachments:
signature.asc (197.00 B)