> diff --git a/drivers/iommu/dma-iommu.c b/drivers/iommu/dma-iommu.c
> index 4f0cc4a0a61f..be0214b1455c 100644
> --- a/drivers/iommu/dma-iommu.c
> +++ b/drivers/iommu/dma-iommu.c
> @@ -859,8 +859,11 @@ static dma_addr_t iommu_dma_map_page(struct device *dev, 
> struct page *page,
>  static void iommu_dma_unmap_page(struct device *dev, dma_addr_t dma_handle,
>               size_t size, enum dma_data_direction dir, unsigned long attrs)
>  {
> -     if (!(attrs & DMA_ATTR_SKIP_CPU_SYNC))
> +     if (!(attrs & DMA_ATTR_SKIP_CPU_SYNC)) {
>               iommu_dma_sync_single_for_cpu(dev, dma_handle, size, dir);
> +             attrs |= DMA_ATTR_SKIP_CPU_SYNC;
> +     }
> +
>       __iommu_dma_unmap_swiotlb(dev, dma_handle, size, dir, attrs);

I don't think this is the correct way to go.  Instead just call the
raw cache sync helper instead of iommu_dma_sync_single_for_cpu, similar
to what dma-direct does.  Same for the map side.
_______________________________________________
iommu mailing list
iommu@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/iommu

Reply via email to