|
@@ -415,7 +415,7 @@ static void dma_4u_unmap_page(struct device *dev, dma_addr_t bus_addr,
|
|
|
ctx = (iopte_val(*base) & IOPTE_CONTEXT) >> 47UL;
|
|
|
|
|
|
/* Step 1: Kick data out of streaming buffers if necessary. */
|
|
|
- if (strbuf->strbuf_enabled)
|
|
|
+ if (strbuf->strbuf_enabled && !(attrs & DMA_ATTR_SKIP_CPU_SYNC))
|
|
|
strbuf_flush(strbuf, iommu, bus_addr, ctx,
|
|
|
npages, direction);
|
|
|
|
|
@@ -640,7 +640,7 @@ static void dma_4u_unmap_sg(struct device *dev, struct scatterlist *sglist,
|
|
|
base = iommu->page_table + entry;
|
|
|
|
|
|
dma_handle &= IO_PAGE_MASK;
|
|
|
- if (strbuf->strbuf_enabled)
|
|
|
+ if (strbuf->strbuf_enabled && !(attrs & DMA_ATTR_SKIP_CPU_SYNC))
|
|
|
strbuf_flush(strbuf, iommu, dma_handle, ctx,
|
|
|
npages, direction);
|
|
|
|