dmaenegine: edma: allow pause/resume for non-cyclic mode
Subsystems (2)
PATCH 2/3 dmaenegine: edma: allow pause/resume for non-cyclic mode
The 8250_omap serial driver relies on dmaengine_pause() actually pausing the DMA transfer. Before this patch dmaengine_pause() is a NOP for non-cylic DMA transfers. This allowed the 8250_omap driver to read DMA buffers while the DMA was still active, resulting in lost serial data.
Signed-off-by John Ogness <[email protected]>
--- drivers/dma/edma.c | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-)
drivers/dma/edma.c +1 -6
@@ -300,8 +300,7 @@ static int edma_dma_pause(struct dma_chan *chan) {struct edma_chan *echan =to_edma_chan (chan); -/* Pause/Resume only allowed with cyclic mode */ -if (!echan->edesc || !echan->edesc->cyclic) +if (!echan->edesc)return -EINVAL ;edma_pause (echan->ch_num);
@@ -312,10 +311,6 @@ static int edma_dma_resume(struct dma_chan *chan) {struct edma_chan *echan =to_edma_chan (chan); -/* Pause/Resume only allowed with cyclic mode */ -if (!echan->edesc->cyclic) -return -EINVAL ; -edma_resume (echan->ch_num);return 0 ; }
Signature · 1 line
1.7.10.4
Quoted 5 lines · John Ogness
The 8250_omap serial driver relies on
dmaengine_pause()actually pausing the DMA transfer. Before this patchdmaengine_pause()is a NOP for non-cylic DMA transfers. This allowed the 8250_omap driver to read DMA buffers while the DMA was still active, resulting in lost serial data.
Acked-by Peter Ujfalusi <[email protected]>
Quoted 31 lines
Signed-off-by John Ogness <[email protected]>--- drivers/dma/edma.c | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-)drivers/dma/edma.c +1
-6@@ -300,8 +300,7 @@ static int edma_dma_pause(struct dma_chan *chan) {struct edma_chan *echan =to_edma_chan (chan); -/* Pause/Resume only allowed with cyclic mode */ -if (!echan->edesc || !echan->edesc->cyclic) +if (!echan->edesc)return -EINVAL ;edma_pause (echan->ch_num);@@ -312,10 +311,6 @@ static int edma_dma_resume(struct dma_chan *chan) {struct edma_chan *echan =to_edma_chan (chan); -/* Pause/Resume only allowed with cyclic mode */ -if (!echan->edesc->cyclic) -return -EINVAL ; -edma_resume (echan->ch_num);return 0 ; }
Signature · 1 line
Péter