ARM: 6535/1: V6 MPCore v6_dma_inv_range and v6_dma_flush_range RWFO fix
authorValentine Barshak <vbarshak@mvista.com>
Mon, 13 Dec 2010 23:03:16 +0000 (00:03 +0100)
committerRussell King <rmk+kernel@arm.linux.org.uk>
Tue, 14 Dec 2010 22:23:34 +0000 (22:23 +0000)
commit85b093bcc5322baa811a03ec73de0909c157f181
treea403ad0cfc2c8d6dbeebc85d5332922410d2347c
parent593c252a731389ffdd00d4cb2d20192c47aa18c1
ARM: 6535/1: V6 MPCore v6_dma_inv_range and v6_dma_flush_range RWFO fix

Cache ownership must be acquired by reading/writing data from the
cache line to make cache operation have the desired effect on the
SMP MPCore CPU. However, the ownership is never acquired in the
v6_dma_inv_range function when cleaning the first line and
flushing the last one, in case the address is not aligned
to D_CACHE_LINE_SIZE boundary.
Fix this by reading/writing data if needed, before performing
cache operations.
While at it, fix v6_dma_flush_range to prevent RWFO outside
the buffer.

Cc: stable@kernel.org
Signed-off-by: Valentine Barshak <vbarshak@mvista.com>
Signed-off-by: George G. Davis <gdavis@mvista.com>
Acked-by: Catalin Marinas <catalin.marinas@arm.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
arch/arm/mm/cache-v6.S