]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
Merge remote-tracking branch 'swiotlb/linux-next'
authorStephen Rothwell <sfr@canb.auug.org.au>
Thu, 2 Sep 2021 00:40:19 +0000 (10:40 +1000)
committerStephen Rothwell <sfr@canb.auug.org.au>
Thu, 2 Sep 2021 00:40:19 +0000 (10:40 +1000)
# Conflicts:
# kernel/dma/direct.c

1  2 
arch/s390/mm/init.c
drivers/base/core.c
drivers/gpu/drm/i915/gem/i915_gem_internal.c
drivers/iommu/dma-iommu.c
drivers/xen/swiotlb-xen.c
include/linux/device.h
kernel/dma/Kconfig
kernel/dma/direct.c

Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
index 8dca4f97d12dd4b5c1c5960f95352b8d522492aa,2de33e5d302bfb24246eb0b1f645cacbe6bde219..4c6c5e0635e34d080fdfaed645f4d56b4c33fda7
@@@ -155,15 -174,10 +174,16 @@@ void *dma_direct_alloc(struct device *d
        }
  
        if (!IS_ENABLED(CONFIG_ARCH_HAS_DMA_SET_UNCACHED) &&
 -          !IS_ENABLED(CONFIG_DMA_DIRECT_REMAP) && !dev_is_dma_coherent(dev) &&
 +          !IS_ENABLED(CONFIG_DMA_DIRECT_REMAP) &&
 +          !IS_ENABLED(CONFIG_DMA_GLOBAL_POOL) &&
-           !dev_is_dma_coherent(dev))
++          !dev_is_dma_coherent(dev) &&
+           !is_swiotlb_for_alloc(dev))
                return arch_dma_alloc(dev, size, dma_handle, gfp, attrs);
  
 +      if (IS_ENABLED(CONFIG_DMA_GLOBAL_POOL) &&
 +          !dev_is_dma_coherent(dev))
 +              return dma_alloc_from_global_coherent(dev, size, dma_handle);
 +
        /*
         * Remapping or decrypting memory may block. If either is required and
         * we can't block, allocate the memory from the atomic pools.
@@@ -259,9 -278,8 +284,10 @@@ void dma_direct_free(struct device *dev
        }
  
        if (!IS_ENABLED(CONFIG_ARCH_HAS_DMA_SET_UNCACHED) &&
 -          !IS_ENABLED(CONFIG_DMA_DIRECT_REMAP) && !dev_is_dma_coherent(dev) &&
 +          !IS_ENABLED(CONFIG_DMA_DIRECT_REMAP) &&
 +          !IS_ENABLED(CONFIG_DMA_GLOBAL_POOL) &&
-           !dev_is_dma_coherent(dev)) {
++          !dev_is_dma_coherent(dev) &&
+           !is_swiotlb_for_alloc(dev)) {
                arch_dma_free(dev, size, cpu_addr, dma_addr, attrs);
                return;
        }