diff options
Diffstat (limited to 'arch/sparc/kernel/iommu.c')
-rw-r--r-- | arch/sparc/kernel/iommu.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/arch/sparc/kernel/iommu.c b/arch/sparc/kernel/iommu.c index 852a3291db96..9df997995f6b 100644 --- a/arch/sparc/kernel/iommu.c +++ b/arch/sparc/kernel/iommu.c | |||
@@ -415,7 +415,7 @@ static void dma_4u_unmap_page(struct device *dev, dma_addr_t bus_addr, | |||
415 | ctx = (iopte_val(*base) & IOPTE_CONTEXT) >> 47UL; | 415 | ctx = (iopte_val(*base) & IOPTE_CONTEXT) >> 47UL; |
416 | 416 | ||
417 | /* Step 1: Kick data out of streaming buffers if necessary. */ | 417 | /* Step 1: Kick data out of streaming buffers if necessary. */ |
418 | if (strbuf->strbuf_enabled) | 418 | if (strbuf->strbuf_enabled && !(attrs & DMA_ATTR_SKIP_CPU_SYNC)) |
419 | strbuf_flush(strbuf, iommu, bus_addr, ctx, | 419 | strbuf_flush(strbuf, iommu, bus_addr, ctx, |
420 | npages, direction); | 420 | npages, direction); |
421 | 421 | ||
@@ -640,7 +640,7 @@ static void dma_4u_unmap_sg(struct device *dev, struct scatterlist *sglist, | |||
640 | base = iommu->page_table + entry; | 640 | base = iommu->page_table + entry; |
641 | 641 | ||
642 | dma_handle &= IO_PAGE_MASK; | 642 | dma_handle &= IO_PAGE_MASK; |
643 | if (strbuf->strbuf_enabled) | 643 | if (strbuf->strbuf_enabled && !(attrs & DMA_ATTR_SKIP_CPU_SYNC)) |
644 | strbuf_flush(strbuf, iommu, dma_handle, ctx, | 644 | strbuf_flush(strbuf, iommu, dma_handle, ctx, |
645 | npages, direction); | 645 | npages, direction); |
646 | 646 | ||