Messages in this thread | | | Date | Thu, 25 Nov 2010 10:04:35 +0100 | From | Sascha Hauer <> | Subject | Re: [PATCH] dmaengine: imx-sdma: fix bug in buffer descriptor initialization |
| |
On Mon, Nov 22, 2010 at 06:35:18PM +0100, Anatolij Gustschin wrote: > Currently while submitting scatterlists with more than one SG > entry the DMA buffer address from the first SG entry is inserted > into all initialized DMA buffer descriptors. This is due to the > typo in the for_each_sg() loop where the scatterlist pointer is > used for obtaining the DMA buffer address and _not_ the SG list > iterator. > > As a result all received data will be written only into the first > DMA buffer while reading. While writing the data from the first > DMA buffer is send to the device multiple times. This caused > the filesystem destruction on the MMC card when using DMA in > mxcmmc driver. > > Signed-off-by: Anatolij Gustschin <agust@denx.de> > Cc: Dan Williams <dan.j.williams@intel.com> > Cc: Sascha Hauer <s.hauer@pengutronix.de>
Acked-by: Sascha Hauer <s.hauer@pengutronix.de>
> --- > drivers/dma/imx-sdma.c | 2 +- > 1 files changed, 1 insertions(+), 1 deletions(-) > > diff --git a/drivers/dma/imx-sdma.c b/drivers/dma/imx-sdma.c > index 0834323..13d6447 100644 > --- a/drivers/dma/imx-sdma.c > +++ b/drivers/dma/imx-sdma.c > @@ -951,7 +951,7 @@ static struct dma_async_tx_descriptor *sdma_prep_slave_sg( > struct sdma_buffer_descriptor *bd = &sdmac->bd[i]; > int param; > > - bd->buffer_addr = sgl->dma_address; > + bd->buffer_addr = sg->dma_address; > > count = sg->length; > > -- > 1.7.1 > >
-- Pengutronix e.K. | | Industrial Linux Solutions | http://www.pengutronix.de/ | Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0 | Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 |
| |