__dma_flush_area(page_address(page), size);
  }
  
- #ifdef CONFIG_IOMMU_DMA
- static int __swiotlb_get_sgtable_page(struct sg_table *sgt,
-                                     struct page *page, size_t size)
- {
-       int ret = sg_alloc_table(sgt, 1, GFP_KERNEL);
- 
-       if (!ret)
-               sg_set_page(sgt->sgl, page, PAGE_ALIGN(size), 0);
- 
-       return ret;
- }
- 
- static int __swiotlb_mmap_pfn(struct vm_area_struct *vma,
-                             unsigned long pfn, size_t size)
- {
-       int ret = -ENXIO;
-       unsigned long nr_vma_pages = vma_pages(vma);
-       unsigned long nr_pages = PAGE_ALIGN(size) >> PAGE_SHIFT;
-       unsigned long off = vma->vm_pgoff;
- 
-       if (off < nr_pages && nr_vma_pages <= (nr_pages - off)) {
-               ret = remap_pfn_range(vma, vma->vm_start,
-                                     pfn + off,
-                                     vma->vm_end - vma->vm_start,
-                                     vma->vm_page_prot);
-       }
- 
-       return ret;
- }
- #endif /* CONFIG_IOMMU_DMA */
- 
  static int __init arm64_dma_init(void)
  {
 -      WARN_TAINT(ARCH_DMA_MINALIGN < cache_line_size(),
 -                 TAINT_CPU_OUT_OF_SPEC,
 -                 "ARCH_DMA_MINALIGN smaller than CTR_EL0.CWG (%d < %d)",
 -                 ARCH_DMA_MINALIGN, cache_line_size());
        return dma_atomic_pool_init(GFP_DMA32, __pgprot(PROT_NORMAL_NC));
  }
  arch_initcall(arm64_dma_init);
  void arch_setup_dma_ops(struct device *dev, u64 dma_base, u64 size,
                        const struct iommu_ops *iommu, bool coherent)
  {
 +      int cls = cache_line_size_of_cpu();
 +
 +      WARN_TAINT(!coherent && cls > ARCH_DMA_MINALIGN,
 +                 TAINT_CPU_OUT_OF_SPEC,
 +                 "%s %s: ARCH_DMA_MINALIGN smaller than CTR_EL0.CWG (%d < %d)",
 +                 dev_driver_string(dev), dev_name(dev),
 +                 ARCH_DMA_MINALIGN, cls);
 +
        dev->dma_coherent = coherent;
-       __iommu_setup_dma_ops(dev, dma_base, size, iommu);
+       if (iommu)
+               iommu_setup_dma_ops(dev, dma_base, size);
  
  #ifdef CONFIG_XEN
        if (xen_initial_domain())