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

Commit 7f8e3354 authored by Russell King's avatar Russell King Committed by Russell King
Browse files

[ARM] Don't call consistent_sync() for DMA coherent memory



Memory allocated by the coherent memory allocators will be marked
uncacheable, which means it's pointless calling consistent_sync()
to perform cache maintainence on this memory; it's just a waste of
CPU cycles.

Moreover, with the (subsequent) merge of outer cache support, it
actually breaks things to call consistent_sync() on anything but
direct-mapped memory.

Signed-off-by: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
parent 56660faf
Loading
Loading
Loading
Loading
+10 −3
Original line number Diff line number Diff line
@@ -281,9 +281,13 @@ map_single(struct device *dev, void *ptr, size_t size,
		ptr = buf->safe;

		dma_addr = buf->safe_dma_addr;
	}

	} else {
		/*
		 * We don't need to sync the DMA buffer since
		 * it was allocated via the coherent allocators.
		 */
		consistent_sync(ptr, size, dir);
	}

	return dma_addr;
}
@@ -397,7 +401,10 @@ sync_single(struct device *dev, dma_addr_t dma_addr, size_t size,
		default:
			BUG();
		}
		consistent_sync(buf->safe, size, dir);
		/*
		 * No need to sync the safe buffer - it was allocated
		 * via the coherent allocators.
		 */
	} else {
		consistent_sync(dma_to_virt(dev, dma_addr), size, dir);
	}