[PATCH] powerpc: Fix dma_map_sg() cache flushing on non coherent platforms

STALE6466d

2 messages, 2 authors, 2008-12-01 · open the first message on its own page

[PATCH] powerpc: Fix dma_map_sg() cache flushing on non coherent platforms

From: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Date: 2008-12-01 04:53:40

On PowerPC 4xx or other non cache coherent platforms, we lost the
appropriate cache flushing in dma_map_sg() when merging the 32
and 64-bit DMA code.

Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
---

Oops .. nobody spotted that when Becky patches went in !

Paul: This is a 2.6.28 regression and should be merged asap

 arch/powerpc/kernel/dma.c |    1 +
 1 file changed, 1 insertion(+)
--- linux-work.orig/arch/powerpc/kernel/dma.c	2008-12-01 15:44:55.000000000 +1100
+++ linux-work/arch/powerpc/kernel/dma.c	2008-12-01 15:45:13.000000000 +1100
@@ -75,6 +75,7 @@ static int dma_direct_map_sg(struct devi
 	for_each_sg(sgl, sg, nents, i) {
 		sg->dma_address = sg_phys(sg) + get_dma_direct_offset(dev);
 		sg->dma_length = sg->length;
+		__dma_sync_page(sg_page(sg), sg->offset, sg->length, direction);
 	}
 
 	return nents;

Re: [PATCH] powerpc: Fix dma_map_sg() cache flushing on non coherent platforms

From: Becky Bruce <hidden>
Date: 2008-12-01 16:23:37

On Nov 30, 2008, at 10:53 PM, Benjamin Herrenschmidt wrote:
On PowerPC 4xx or other non cache coherent platforms, we lost the
appropriate cache flushing in dma_map_sg() when merging the 32
and 64-bit DMA code.

Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Acked-by: Becky Bruce <redacted>

Sins of omission are always the hardest to catch.....  My apologies,  
and thanks!

-B
quoted hunk
---

Oops .. nobody spotted that when Becky patches went in !

Paul: This is a 2.6.28 regression and should be merged asap

arch/powerpc/kernel/dma.c |    1 +
1 file changed, 1 insertion(+)
--- linux-work.orig/arch/powerpc/kernel/dma.c	2008-12-01  
15:44:55.000000000 +1100
+++ linux-work/arch/powerpc/kernel/dma.c	2008-12-01  
15:45:13.000000000 +1100
@@ -75,6 +75,7 @@ static int dma_direct_map_sg(struct devi
	for_each_sg(sgl, sg, nents, i) {
		sg->dma_address = sg_phys(sg) + get_dma_direct_offset(dev);
		sg->dma_length = sg->length;
+		__dma_sync_page(sg_page(sg), sg->offset, sg->length, direction);
	}

	return nents;
_______________________________________________
Linuxppc-dev mailing list
Linuxppc-dev@ozlabs.org
https://ozlabs.org/mailman/listinfo/linuxppc-dev
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help