On Fri, Dec 21, 2018 at 10:45:49AM +0100, Christoph Hellwig wrote: > The following changes since commit c9d76d0655c06b8c1f944e46c4fd9e9cf4b331c0: > > dma-mapping: fix return type of dma_set_max_seg_size() (2018-11-27 08:39:52 > +0100)
And that actually is the first commit already in the tree, sorry. Updated git-request-pull output attached: The following changes since commit ef78e5ec9214376c5cb989f5da70b02d0c117b66: ia64: export node_distance function (2018-11-26 18:30:40 -0800) are available in the Git repository at: git://git.infradead.org/users/hch/dma-mapping.git tags/dma-mapping-4.21 for you to fetch changes up to 8b1cce9f5832a8eda17d37a3c49fb7dd2d650f46: dma-mapping: fix inverted logic in dma_supported (2018-12-20 17:47:55 +0100) ---------------------------------------------------------------- DMA mapping updates for Linux 4.21 A huge update this time, but a lot of that is just consolidating or removing code: - provide a common DMA_MAPPING_ERROR definition and avoid indirect calls for dma_map_* error checking - use direct calls for the DMA direct mapping case, avoiding huge retpoline overhead for high performance workloads - merge the swiotlb dma_map_ops into dma-direct - provide a generic remapping DMA consistent allocator for architectures that have devices that perform DMA that is not cache coherent. Based on the existing arm64 implementation and also used for csky now. - improve the dma-debug infrastructure, including dynamic allocation of entries (Robin Murphy) - default to providing chaining scatterlist everywhere, with opt-outs for the few architectures (alpha, parisc, most arm32 variants) that can't cope with it - misc sparc32 dma-related cleanups - remove the dma_mark_clean arch hook used by swiotlb on ia64 and replace it with the generic noncoherent infrastructure - fix the return type of dma_set_max_seg_size (Niklas Söderlund) - move the dummy dma ops for not DMA capable devices from arm64 to common code (Robin Murphy) - ensure dma_alloc_coherent returns zeroed memory to avoid kernel data leaks through userspace. We already did this for most common architectures, but this ensures we do it everywhere. dma_zalloc_coherent has been deprecated and can hopefully be removed after -rc1 with a coccinelle script. ---------------------------------------------------------------- Christoph Hellwig (60): dma-direct: provide page based alloc/free helpers dma-direct: reject highmem pages from dma_alloc_from_contiguous dma-mapping: move the remap helpers to a separate file dma-mapping: move the arm64 noncoherent alloc/free support to common code dma-mapping: support highmem in the generic remap allocator dma-remap: support DMA_ATTR_NO_KERNEL_MAPPING csky: don't select DMA_NONCOHERENT_OPS csky: don't use GFP_DMA in atomic_pool_init csky: use the generic remapping dma alloc implementation dma-mapping: provide a generic DMA_MAPPING_ERROR dma-direct: remove the mapping_error dma_map_ops method arm: remove the mapping_error dma_map_ops method powerpc/iommu: remove the mapping_error dma_map_ops method mips/jazz: remove the mapping_error dma_map_ops method s390: remove the mapping_error dma_map_ops method sparc: remove the mapping_error dma_map_ops method parisc/ccio: remove the mapping_error dma_map_ops method parisc/sba_iommu: remove the mapping_error dma_map_ops method arm64: remove the dummy_dma_ops mapping_error method alpha: remove the mapping_error dma_map_ops method ia64/sba_iommu: improve internal map_page users ia64/sba_iommu: remove the mapping_error dma_map_ops method ia64/sn: remove the mapping_error dma_map_ops method x86/amd_gart: remove the mapping_error dma_map_ops method x86/calgary: remove the mapping_error dma_map_ops method iommu: remove the mapping_error dma_map_ops method iommu/intel: small map_page cleanup iommu/vt-d: remove the mapping_error dma_map_ops method iommu/dma-iommu: remove the mapping_error dma_map_ops method xen-swiotlb: remove the mapping_error dma_map_ops method dma-mapping: remove the mapping_error dma_map_ops method dma-mapping: return an error code from dma_mapping_error arch: switch the default on ARCH_HAS_SG_CHAIN sparc: remove not needed sbus_dma_ops methods sparc: factor the dma coherent mapping into helper sparc: remove the sparc32_dma_ops indirection sparc: remove not required includes from dma-mapping.h sparc: move the leon PCI memory space comment to <asm/leon.h> sparc: merge 32-bit and 64-bit version of pci.h sparc: use DT node full_name in sparc_dma_alloc_resource dma-mapping: remove a pointless memset in dma_atomic_pool_init dma-mapping: simplify the dma_sync_single_range_for_{cpu,device} implementation dma-mapping: merge dma_unmap_page_attrs and dma_unmap_single_attrs dma-mapping: move dma_get_required_mask to kernel/dma dma-mapping: move various slow path functions out of line dma-mapping: move dma_cache_sync out of line dma-mapping: always build the direct mapping code swiotlb: remove SWIOTLB_MAP_ERROR swiotlb: remove dma_mark_clean dma-direct: improve addressability error reporting dma-direct: use dma_direct_map_page to implement dma_direct_map_sg dma-direct: merge swiotlb_dma_ops into the dma_direct code vmd: use the proper dma_* APIs instead of direct methods calls dma-mapping: bypass indirect calls for dma-direct ia64: only select ARCH_HAS_DMA_COHERENT_TO_PFN if swiotlb is enabled arm64: default to the direct mapping in get_arch_dma_ops sparc/io-unit: fix ->map_sg return value sparc/iommu: fix ->map_sg return value dma-mapping: zero memory returned from dma_alloc_* dma-mapping: deprecate dma_zalloc_coherent Marek Szyprowski (1): dma-mapping: fix lack of DMA address assignment in generic remap allocator Nathan Chancellor (1): PCI: Remove unused attr variable in pci_dma_configure Niklas Söderlund (1): dma-mapping: fix return type of dma_set_max_seg_size() Robin Murphy (9): dma-debug: Expose nr_total_entries in debugfs dma-debug: Use pr_fmt() dma-debug: Dynamically expand the dma_debug_entry pool dma-debug: Make leak-like behaviour apparent x86/dma/amd-gart: Stop resizing dma_debug_entry pool dma/debug: Remove dma_debug_resize_entries() dma-debug: Batch dma_debug_entry allocation dma-mapping: factor out dummy DMA ops ACPI / scan: Refactor _CCA enforcement Thierry Reding (1): dma-mapping: fix inverted logic in dma_supported Documentation/DMA-API.txt | 29 +- .../features/io/sg-chain/arch-support.txt | 33 -- Documentation/x86/x86_64/boot-options.txt | 5 +- arch/alpha/Kconfig | 2 +- arch/alpha/include/asm/dma-mapping.h | 2 +- arch/alpha/kernel/pci_iommu.c | 16 +- arch/arc/Kconfig | 2 - arch/arc/mm/cache.c | 2 +- arch/arc/mm/dma.c | 2 +- arch/arm/Kconfig | 4 +- arch/arm/common/dmabounce.c | 12 +- arch/arm/include/asm/dma-iommu.h | 2 - arch/arm/include/asm/dma-mapping.h | 2 +- arch/arm/mm/dma-mapping-nommu.c | 14 +- arch/arm/mm/dma-mapping.c | 39 +-- arch/arm64/Kconfig | 3 +- arch/arm64/include/asm/dma-mapping.h | 8 +- arch/arm64/mm/dma-mapping.c | 286 +---------------- arch/c6x/Kconfig | 1 - arch/c6x/mm/dma-coherent.c | 5 +- arch/csky/Kconfig | 3 +- arch/csky/mm/dma-mapping.c | 142 +-------- arch/h8300/Kconfig | 1 - arch/hexagon/Kconfig | 1 - arch/ia64/Kconfig | 4 +- arch/ia64/hp/common/hwsw_iommu.c | 2 +- arch/ia64/hp/common/sba_iommu.c | 87 ++--- arch/ia64/kernel/dma-mapping.c | 21 +- arch/ia64/mm/init.c | 19 +- arch/ia64/sn/pci/pci_dma.c | 8 +- arch/m68k/Kconfig | 1 - arch/m68k/kernel/dma.c | 2 +- arch/microblaze/Kconfig | 1 - arch/microblaze/mm/consistent.c | 2 +- arch/mips/Kconfig | 1 - arch/mips/include/asm/dma-mapping.h | 4 +- arch/mips/include/asm/jazzdma.h | 6 - arch/mips/jazz/jazzdma.c | 16 +- arch/nds32/Kconfig | 1 - arch/nios2/Kconfig | 1 - arch/openrisc/Kconfig | 1 - arch/openrisc/kernel/dma.c | 2 +- arch/parisc/Kconfig | 2 +- arch/parisc/kernel/pci-dma.c | 4 +- arch/parisc/kernel/setup.c | 4 - arch/powerpc/Kconfig | 1 - arch/powerpc/include/asm/dma-mapping.h | 1 - arch/powerpc/include/asm/iommu.h | 4 - arch/powerpc/kernel/dma-iommu.c | 6 - arch/powerpc/kernel/dma-swiotlb.c | 17 +- arch/powerpc/kernel/iommu.c | 28 +- arch/powerpc/platforms/cell/iommu.c | 1 - arch/powerpc/platforms/pseries/vio.c | 3 +- arch/riscv/Kconfig | 1 - arch/riscv/include/asm/dma-mapping.h | 15 - arch/s390/Kconfig | 2 - arch/s390/pci/pci_dma.c | 20 +- arch/sh/Kconfig | 1 - arch/sparc/Kconfig | 2 - arch/sparc/include/asm/dma-mapping.h | 8 +- arch/sparc/include/asm/dma.h | 48 +-- arch/sparc/include/asm/leon.h | 9 + arch/sparc/include/asm/pci.h | 53 +++- arch/sparc/include/asm/pci_32.h | 41 --- arch/sparc/include/asm/pci_64.h | 52 --- arch/sparc/kernel/iommu.c | 12 +- arch/sparc/kernel/iommu_common.h | 2 - arch/sparc/kernel/ioport.c | 243 +++----------- arch/sparc/kernel/pci_sun4v.c | 14 +- arch/sparc/mm/io-unit.c | 80 +++-- arch/sparc/mm/iommu.c | 160 ++++++---- arch/unicore32/Kconfig | 1 - arch/x86/Kconfig | 2 - arch/x86/kernel/amd_gart_64.c | 63 +--- arch/x86/kernel/pci-calgary_64.c | 30 +- arch/x86/kernel/pci-dma.c | 2 +- arch/x86/kernel/pci-swiotlb.c | 4 +- arch/x86/mm/mem_encrypt.c | 7 - arch/x86/pci/sta2x11-fixup.c | 1 - arch/xtensa/Kconfig | 3 +- arch/xtensa/kernel/pci-dma.c | 2 +- drivers/acpi/scan.c | 5 + drivers/base/platform.c | 34 +- drivers/gpu/drm/vmwgfx/vmwgfx_drv.c | 2 +- drivers/iommu/amd_iommu.c | 31 +- drivers/iommu/dma-iommu.c | 23 +- drivers/iommu/intel-iommu.c | 26 +- drivers/misc/mic/host/mic_boot.c | 2 +- drivers/parisc/ccio-dma.c | 10 +- drivers/parisc/sba_iommu.c | 10 +- drivers/pci/controller/vmd.c | 48 +-- drivers/pci/pci-driver.c | 4 +- drivers/xen/swiotlb-xen.c | 36 +-- include/asm-generic/dma-mapping.h | 2 +- include/linux/dma-debug.h | 34 -- include/linux/dma-direct.h | 19 +- include/linux/dma-iommu.h | 1 - include/linux/dma-mapping.h | 350 +++++++++------------ include/linux/dma-noncoherent.h | 7 +- include/linux/scatterlist.h | 6 +- include/linux/swiotlb.h | 77 ++--- kernel/dma/Kconfig | 14 +- kernel/dma/Makefile | 5 +- kernel/dma/debug.c | 259 ++++++--------- kernel/dma/direct.c | 222 +++++++------ kernel/dma/dummy.c | 39 +++ kernel/dma/mapping.c | 223 +++++++++---- kernel/dma/remap.c | 256 +++++++++++++++ kernel/dma/swiotlb.c | 253 +-------------- kernel/dma/virt.c | 2 +- lib/Kconfig | 2 +- lib/scatterlist.c | 2 +- 112 files changed, 1408 insertions(+), 2340 deletions(-) delete mode 100644 Documentation/features/io/sg-chain/arch-support.txt delete mode 100644 arch/riscv/include/asm/dma-mapping.h delete mode 100644 arch/sparc/include/asm/pci_32.h delete mode 100644 arch/sparc/include/asm/pci_64.h create mode 100644 kernel/dma/dummy.c create mode 100644 kernel/dma/remap.c