return NULL;
 }
 
-#ifdef CONFIG_DMA_REMAP
 static struct sg_table *iommu_dma_alloc_noncontiguous(struct device *dev,
                size_t size, enum dma_data_direction dir, gfp_t gfp,
                unsigned long attrs)
        sg_free_table(&sh->sgt);
        kfree(sh);
 }
-#endif /* CONFIG_DMA_REMAP */
 
 static void iommu_dma_sync_single_for_cpu(struct device *dev,
                dma_addr_t dma_handle, size_t size, enum dma_data_direction dir)
            dma_free_from_pool(dev, cpu_addr, alloc_size))
                return;
 
-       if (IS_ENABLED(CONFIG_DMA_REMAP) && is_vmalloc_addr(cpu_addr)) {
+       if (is_vmalloc_addr(cpu_addr)) {
                /*
                 * If it the address is remapped, then it's either non-coherent
                 * or highmem CMA, or an iommu_dma_alloc_remap() construction.
        if (!page)
                return NULL;
 
-       if (IS_ENABLED(CONFIG_DMA_REMAP) && (!coherent || PageHighMem(page))) {
+       if (!coherent || PageHighMem(page)) {
                pgprot_t prot = dma_pgprot(dev, PAGE_KERNEL, attrs);
 
                cpu_addr = dma_common_contiguous_remap(page, alloc_size,
 
        gfp |= __GFP_ZERO;
 
-       if (IS_ENABLED(CONFIG_DMA_REMAP) && gfpflags_allow_blocking(gfp) &&
+       if (gfpflags_allow_blocking(gfp) &&
            !(attrs & DMA_ATTR_FORCE_CONTIGUOUS)) {
                return iommu_dma_alloc_remap(dev, size, handle, gfp,
                                dma_pgprot(dev, PAGE_KERNEL, attrs), attrs);
        if (off >= nr_pages || vma_pages(vma) > nr_pages - off)
                return -ENXIO;
 
-       if (IS_ENABLED(CONFIG_DMA_REMAP) && is_vmalloc_addr(cpu_addr)) {
+       if (is_vmalloc_addr(cpu_addr)) {
                struct page **pages = dma_common_find_pages(cpu_addr);
 
                if (pages)
        struct page *page;
        int ret;
 
-       if (IS_ENABLED(CONFIG_DMA_REMAP) && is_vmalloc_addr(cpu_addr)) {
+       if (is_vmalloc_addr(cpu_addr)) {
                struct page **pages = dma_common_find_pages(cpu_addr);
 
                if (pages) {
        .free                   = iommu_dma_free,
        .alloc_pages            = dma_common_alloc_pages,
        .free_pages             = dma_common_free_pages,
-#ifdef CONFIG_DMA_REMAP
        .alloc_noncontiguous    = iommu_dma_alloc_noncontiguous,
        .free_noncontiguous     = iommu_dma_free_noncontiguous,
-#endif
        .mmap                   = iommu_dma_mmap,
        .get_sgtable            = iommu_dma_get_sgtable,
        .map_page               = iommu_dma_map_page,
 
        page = __dma_direct_alloc_pages(dev, size, gfp & ~__GFP_ZERO);
        if (!page)
                return NULL;
+
+       /*
+        * dma_alloc_contiguous can return highmem pages depending on a
+        * combination the cma= arguments and per-arch setup.  These need to be
+        * remapped to return a kernel virtual address.
+        */
        if (PageHighMem(page)) {
-               /*
-                * Depending on the cma= arguments and per-arch setup,
-                * dma_alloc_contiguous could return highmem pages.
-                * Without remapping there is no way to return them here, so
-                * log an error and fail.
-                */
-               if (!IS_ENABLED(CONFIG_DMA_REMAP)) {
-                       dev_info(dev, "Rejecting highmem page from CMA.\n");
-                       goto out_free_pages;
-               }
                remap = true;
                set_uncached = false;
        }
            dma_free_from_pool(dev, cpu_addr, PAGE_ALIGN(size)))
                return;
 
-       if (IS_ENABLED(CONFIG_DMA_REMAP) && is_vmalloc_addr(cpu_addr)) {
+       if (is_vmalloc_addr(cpu_addr)) {
                vunmap(cpu_addr);
        } else {
                if (IS_ENABLED(CONFIG_ARCH_HAS_DMA_CLEAR_UNCACHED))