Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ca57926d authored by Catalin Marinas's avatar Catalin Marinas Committed by Russell King
Browse files

ARM: 6187/1: The v6_dma_inv_range() function must preserve data on SMP



A recent patch for DMA cache maintenance on ARM11MPCore added a write
for ownership trick to the v6_dma_inv_range() function. Such operation
destroys data already present in the buffer. However, this function is
used with with dma_sync_single_for_device() which is supposed to
preserve the existing data transfered into the buffer. This patch adds a
combination of read/write for ownership to preserve the original data.

Reported-by: default avatarRonen Shitrit <rshitrit@marvell.com>
Signed-off-by: default avatarCatalin Marinas <catalin.marinas@arm.com>
Signed-off-by: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
parent a5e9d38b
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -212,7 +212,8 @@ v6_dma_inv_range:
#endif
1:
#ifdef CONFIG_SMP
	str	r0, [r0]			@ write for ownership
	ldr	r2, [r0]			@ read for ownership
	str	r2, [r0]			@ write for ownership
#endif
#ifdef HARVARD_CACHE
	mcr	p15, 0, r0, c7, c6, 1		@ invalidate D line