|
@@ -308,15 +308,11 @@ static inline void unmap_single(struct device *dev, dma_addr_t dma_addr,
|
|
|
memcpy(ptr, buf->safe, size);
|
|
|
|
|
|
/*
|
|
|
- * DMA buffers must have the same cache properties
|
|
|
- * as if they were really used for DMA - which means
|
|
|
- * data must be written back to RAM. Note that
|
|
|
- * we don't use dmac_flush_range() here for the
|
|
|
- * bidirectional case because we know the cache
|
|
|
- * lines will be coherent with the data written.
|
|
|
+ * Since we may have written to a page cache page,
|
|
|
+ * we need to ensure that the data will be coherent
|
|
|
+ * with user mappings.
|
|
|
*/
|
|
|
- dmac_clean_range(ptr, ptr + size);
|
|
|
- outer_clean_range(__pa(ptr), __pa(ptr) + size);
|
|
|
+ __cpuc_flush_kernel_dcache_area(ptr, size);
|
|
|
}
|
|
|
free_safe_buffer(dev->archdata.dmabounce, buf);
|
|
|
}
|