Hi Linus, As promised yesterday, the patch series done by Bart is now ready to go.  I've prepared for you two options: 1) Take my merge branch.  I took your master from this morning and merged in my original branch for this work, fixing up merge conflicts in the merge commit and then adding one new commit because the bnxt_re driver was not in mainline when Bart did his work and so it was missed.  This code can be found at: git://git.kernel.org/pub/scm/linux/kernel/git/dledford/rdma.git tags/for-linus or 2) Take the original series as is and perform the fixups yourself (they really aren't hard, and I detailed what they were in the log portion of my merge commit in the above branch).  It can be found at:  git://git.kernel.org/pub/scm/linux/kernel/git/dledford/rdma.git tags/for-next-dma_ops I just completed the merge, so it hasn't been through 0day or linux- next (it has passed local build tests though).  The original branch has been through 0day, but I don't think it went through linux-next as I don't think Stephen pulls my for-next-* tags, just the base for-next tag (I've email him to see if we can change that, but haven't heard back yet). I'll include the boilerplate that git request-pull spits out from option #1.  For option #2 it's identical minus my two commits. The following changes since commit f1ef09fde17f9b77ca1435a5b53a28b203afb81c:   Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ebiederm/user-namespace (2017-02-23 20:33:51 -0800) are available in the git repository at:   git://git.kernel.org/pub/scm/linux/kernel/git/dledford/rdma.git tags/for-linus for you to fetch changes up to 87a5da90d0c69de7102a3617115e0bb21e43ebfb:   RDMA/bnxt_re: Switch from dma_device to dev.parent (2017-02-24 14:04:44 -0500) ---------------------------------------------------------------- Drop IB DMA mapping code and use core DMA code instead Bart Van Assche noted that the IB DMA mapping code was significantly similar enough to the core DMA mapping code that with a few changes it was possible to remove the IB DMA mapping code entirely and switch the RDMA stack to use the core DMA mapping code.  This resulted in a nice set of cleanups, but touched the entire tree, and so is being submitted on its own. This has been merged up to current master, and fixups for merge conflicts, as well as adding a patch for the bnxt_re driver which wasn't in mainline when Bart did his work, have been done. ---------------------------------------------------------------- Bart Van Assche (37):       treewide: Constify most dma_map_ops structures       treewide: Move dma_ops from struct dev_archdata into struct device       treewide: Consolidate set_dma_ops() implementations       treewide: Consolidate get_dma_ops() implementations       lib/dma-noop: Clarify a comment       lib/dma-noop: Only build dma_noop_ops for s390 and m32r       lib/dma-virt: Add dma_virt_ops       IB/core: Remove ib_dma_*map_single_attrs()       RDS: IB: Remove an unused structure member       IB/core: Change the type of an ib_dma_alloc_coherent() argument       IB/hf1: Remove DMA mapping code       IB/qib: Remove DMA mapping code       IB/core: Initialize ib_device.dev.parent earlier       IB/core: Use dev.parent instead of dma_device       IB/cxgb3: Set dev.parent instead of dma_device       IB/cxgb4: Set dev.parent instead of dma_device       IB/hfi1: Switch from dma_device to dev.parent       IB/hns: Switch from dma_device to dev.parent       IB/i40iw: Remove a superfluous assignment statement       IB/mlx4: Switch from dma_device to dev.parent       IB/mlx5: Switch from dma_device to dev.parent       IB/mthca: Switch from dma_device to dev.parent       IB/nes: Remove a superfluous assignment statement       IB/ocrdma: Switch from dma_device to dev.parent       IB/qedr: Switch from dma_device to dev.parent       IB/qib: Switch from dma_device to dev.parent       IB/usnic: Switch from dma_device to dev.parent       IB/vmw_pvrdma: Switch from dma_device to dev.parent       IB/rxe: Switch from dma_device to dev.parent       IB/IPoIB: Switch from dma_device to dev.parent       IB/iser: Switch from dma_device to dev.parent       IB/srp: Switch from dma_device to dev.parent       IB/srpt: Modify a debug statement       RDS: net: Switch from dma_device to dev.parent       nvme-rdma: Switch from dma_device to dev.parent       IB/core: Remove ib_device.dma_device       IB/rxe, IB/rdmavt: Use dma_virt_ops instead of duplicating it Doug Ledford (2):       Merge branch 'k.o/for-4.11-dma_ops'       RDMA/bnxt_re: Switch from dma_device to dev.parent  arch/alpha/include/asm/dma-mapping.h               |   4 +-  arch/alpha/kernel/pci-noop.c                       |   4 +-  arch/alpha/kernel/pci_iommu.c                      |   4 +-  arch/arc/include/asm/dma-mapping.h                 |   4 +-  arch/arc/mm/dma.c                                  |   2 +-  arch/arm/common/dmabounce.c                        |   2 +-  arch/arm/include/asm/device.h                      |   1 -  arch/arm/include/asm/dma-mapping.h                 |  20 +--  arch/arm/mm/dma-mapping.c                          |  22 +--  arch/arm/xen/mm.c                                  |   4 +-  arch/arm64/include/asm/device.h                    |   1 -  arch/arm64/include/asm/dma-mapping.h               |  12 +-  arch/arm64/mm/dma-mapping.c                        |  14 +-  arch/avr32/include/asm/dma-mapping.h               |   4 +-  arch/avr32/mm/dma-coherent.c                       |   2 +-  arch/blackfin/include/asm/dma-mapping.h            |   4 +-  arch/blackfin/kernel/dma-mapping.c                 |   2 +-  arch/c6x/include/asm/dma-mapping.h                 |   4 +-  arch/c6x/kernel/dma.c                              |   2 +-  arch/cris/arch-v32/drivers/pci/dma.c               |   2 +-  arch/cris/include/asm/dma-mapping.h                |   6 +-  arch/frv/include/asm/dma-mapping.h                 |   4 +-  arch/frv/mb93090-mb00/pci-dma-nommu.c              |   2 +-  arch/frv/mb93090-mb00/pci-dma.c                    |   2 +-  arch/h8300/include/asm/dma-mapping.h               |   4 +-  arch/h8300/kernel/dma.c                            |   2 +-  arch/hexagon/include/asm/dma-mapping.h             |   7 +-  arch/hexagon/kernel/dma.c                          |   4 +-  arch/ia64/hp/common/hwsw_iommu.c                   |   4 +-  arch/ia64/hp/common/sba_iommu.c                    |   4 +-  arch/ia64/include/asm/dma-mapping.h                |   7 +-  arch/ia64/include/asm/machvec.h                    |   4 +-  arch/ia64/kernel/dma-mapping.c                     |   4 +-  arch/ia64/kernel/pci-dma.c                         |  10 +-  arch/ia64/kernel/pci-swiotlb.c                     |   2 +-  arch/m32r/Kconfig                                  |   1 +  arch/m32r/include/asm/device.h                     |   1 -  arch/m32r/include/asm/dma-mapping.h                |   4 +-  arch/m68k/include/asm/dma-mapping.h                |   4 +-  arch/m68k/kernel/dma.c                             |   2 +-  arch/metag/include/asm/dma-mapping.h               |   4 +-  arch/metag/kernel/dma.c                            |   2 +-  arch/microblaze/include/asm/dma-mapping.h          |   4 +-  arch/microblaze/kernel/dma.c                       |   2 +-  arch/mips/cavium-octeon/dma-octeon.c               |   4 +-  arch/mips/include/asm/device.h                     |   5 -  arch/mips/include/asm/dma-mapping.h                |   9 +-  .../include/asm/mach-cavium-octeon/dma-coherence.h |   2 +-  arch/mips/include/asm/netlogic/common.h            |   2 +-  arch/mips/loongson64/common/dma-swiotlb.c          |   2 +-  arch/mips/mm/dma-default.c                         |   4 +-  arch/mips/netlogic/common/nlm-dma.c                |   2 +-  arch/mips/pci/pci-octeon.c                         |   2 +-  arch/mn10300/include/asm/dma-mapping.h             |   4 +-  arch/mn10300/mm/dma-alloc.c                        |   2 +-  arch/nios2/include/asm/dma-mapping.h               |   4 +-  arch/nios2/mm/dma-mapping.c                        |   2 +-  arch/openrisc/include/asm/dma-mapping.h            |   4 +-  arch/openrisc/kernel/dma.c                         |   2 +-  arch/parisc/include/asm/dma-mapping.h              |   8 +-  arch/parisc/kernel/drivers.c                       |   2 +-  arch/parisc/kernel/pci-dma.c                       |   4 +-  arch/powerpc/include/asm/device.h                  |   4 -  arch/powerpc/include/asm/dma-mapping.h             |  14 +-  arch/powerpc/include/asm/pci.h                     |   4 +-  arch/powerpc/include/asm/ps3.h                     |   2 +-  arch/powerpc/include/asm/swiotlb.h                 |   2 +-  arch/powerpc/kernel/dma-swiotlb.c                  |   2 +-  arch/powerpc/kernel/dma.c                          |   8 +-  arch/powerpc/kernel/pci-common.c                   |   6 +-  arch/powerpc/platforms/cell/iommu.c                |   6 +-  arch/powerpc/platforms/pasemi/iommu.c              |   2 +-  arch/powerpc/platforms/pasemi/setup.c              |   2 +-  arch/powerpc/platforms/powernv/npu-dma.c           |   2 +-  arch/powerpc/platforms/ps3/system-bus.c            |   8 +-  arch/powerpc/platforms/pseries/ibmebus.c           |   4 +-  arch/powerpc/platforms/pseries/vio.c               |   2 +-  arch/s390/Kconfig                                  |   1 +  arch/s390/include/asm/device.h                     |   1 -  arch/s390/include/asm/dma-mapping.h                |   6 +-  arch/s390/pci/pci.c                                |   2 +-  arch/s390/pci/pci_dma.c                            |   2 +-  arch/sh/include/asm/dma-mapping.h                  |   4 +-  arch/sh/kernel/dma-nommu.c                         |   2 +-  arch/sh/mm/consistent.c                            |   2 +-  arch/sparc/include/asm/dma-mapping.h               |  10 +-  arch/sparc/kernel/iommu.c                          |   4 +-  arch/sparc/kernel/ioport.c                         |   8 +-  arch/sparc/kernel/pci_sun4v.c                      |   2 +-  arch/tile/include/asm/device.h                     |   3 -  arch/tile/include/asm/dma-mapping.h                |  20 +--  arch/tile/kernel/pci-dma.c                         |  24 +--  arch/unicore32/include/asm/dma-mapping.h           |   4 +-  arch/unicore32/mm/dma-swiotlb.c                    |   2 +-  arch/x86/include/asm/device.h                      |   5 +-  arch/x86/include/asm/dma-mapping.h                 |  11 +-  arch/x86/include/asm/iommu.h                       |   2 +-  arch/x86/kernel/amd_gart_64.c                      |   2 +-  arch/x86/kernel/pci-calgary_64.c                   |   6 +-  arch/x86/kernel/pci-dma.c                          |   4 +-  arch/x86/kernel/pci-nommu.c                        |   2 +-  arch/x86/kernel/pci-swiotlb.c                      |   2 +-  arch/x86/pci/common.c                              |   2 +-  arch/x86/pci/sta2x11-fixup.c                       |  10 +-  arch/x86/xen/pci-swiotlb-xen.c                     |   2 +-  arch/xtensa/include/asm/device.h                   |   4 -  arch/xtensa/include/asm/dma-mapping.h              |   9 +-  arch/xtensa/kernel/pci-dma.c                       |   2 +-  drivers/infiniband/core/device.c                   |   9 +  drivers/infiniband/core/sysfs.c                    |   2 +-  drivers/infiniband/core/ucm.c                      |   2 +-  drivers/infiniband/core/user_mad.c                 |   4 +-  drivers/infiniband/core/uverbs_main.c              |   2 +-  drivers/infiniband/hw/bnxt_re/main.c               |   2 +-  drivers/infiniband/hw/cxgb3/iwch_provider.c        |   2 +-  drivers/infiniband/hw/cxgb4/provider.c             |   2 +-  drivers/infiniband/hw/hfi1/dma.c                   | 183 ----------- --------  drivers/infiniband/hw/hfi1/mad.c                   |   2 +-  drivers/infiniband/hw/hfi1/verbs.c                 |   2 +-  drivers/infiniband/hw/hns/hns_roce_main.c          |   2 +-  drivers/infiniband/hw/hns/hns_roce_qp.c            |   2 +-  drivers/infiniband/hw/i40iw/i40iw_verbs.c          |   1 -  drivers/infiniband/hw/mlx4/main.c                  |   2 +-  drivers/infiniband/hw/mlx4/mlx4_ib.h               |   2 +-  drivers/infiniband/hw/mlx4/mr.c                    |   6 +-  drivers/infiniband/hw/mlx5/main.c                  |   2 +-  drivers/infiniband/hw/mlx5/mr.c                    |   8 +-  drivers/infiniband/hw/mthca/mthca_provider.c       |   2 +-  drivers/infiniband/hw/nes/nes_verbs.c              |   1 -  drivers/infiniband/hw/ocrdma/ocrdma_main.c         |   2 +-  drivers/infiniband/hw/qedr/main.c                  |   2 +-  drivers/infiniband/hw/qib/qib_dma.c                | 169 ----------- -------  drivers/infiniband/hw/qib/qib_keys.c               |   5 +-  drivers/infiniband/hw/qib/qib_verbs.c              |   2 +-  drivers/infiniband/hw/usnic/usnic_ib_main.c        |   2 +-  drivers/infiniband/hw/vmw_pvrdma/pvrdma_main.c     |   2 +-  drivers/infiniband/sw/rdmavt/Kconfig               |   1 +  drivers/infiniband/sw/rdmavt/Makefile              |   2 +-  drivers/infiniband/sw/rdmavt/dma.c                 | 198 ----------- ----------  drivers/infiniband/sw/rdmavt/dma.h                 |  53 ------  drivers/infiniband/sw/rdmavt/mr.c                  |   8 +-  drivers/infiniband/sw/rdmavt/vt.c                  |   4 +-  drivers/infiniband/sw/rdmavt/vt.h                  |   1 -  drivers/infiniband/sw/rxe/Kconfig                  |   1 +  drivers/infiniband/sw/rxe/Makefile                 |   1 -  drivers/infiniband/sw/rxe/rxe_dma.c                | 183 ----------- --------  drivers/infiniband/sw/rxe/rxe_loc.h                |   2 -  drivers/infiniband/sw/rxe/rxe_verbs.c              |   9 +-  drivers/infiniband/ulp/ipoib/ipoib_ethtool.c       |   2 +-  drivers/infiniband/ulp/ipoib/ipoib_main.c          |   2 +-  drivers/infiniband/ulp/iser/iscsi_iser.c           |   2 +-  drivers/infiniband/ulp/srp/ib_srp.c                |   4 +-  drivers/infiniband/ulp/srpt/ib_srpt.c              |   3 +-  drivers/iommu/amd_iommu.c                          |  10 +-  drivers/misc/mic/bus/mic_bus.c                     |   4 +-  drivers/misc/mic/bus/scif_bus.c                    |   4 +-  drivers/misc/mic/bus/scif_bus.h                    |   2 +-  drivers/misc/mic/bus/vop_bus.c                     |   2 +-  drivers/misc/mic/host/mic_boot.c                   |   4 +-  drivers/nvme/host/rdma.c                           |   2 +-  drivers/parisc/ccio-dma.c                          |   2 +-  drivers/parisc/sba_iommu.c                         |   2 +-  drivers/pci/host/vmd.c                             |   2 +-  include/linux/device.h                             |   1 +  include/linux/dma-mapping.h                        |  55 +++---  include/linux/mic_bus.h                            |   2 +-  include/rdma/ib_verbs.h                            | 143 ++----------- --  include/xen/arm/hypervisor.h                       |   2 +-  lib/Kconfig                                        |  10 ++  lib/Makefile                                       |   3 +-  lib/dma-noop.c                                     |   4 +-  lib/dma-virt.c                                     |  72 ++++++++  net/rds/ib.h                                       |   8 +-  net/rds/ib_mr.h                                    |   1 -  174 files changed, 435 insertions(+), 1296 deletions(-)  delete mode 100644 drivers/infiniband/hw/hfi1/dma.c  delete mode 100644 drivers/infiniband/hw/qib/qib_dma.c  delete mode 100644 drivers/infiniband/sw/rdmavt/dma.c  delete mode 100644 drivers/infiniband/sw/rdmavt/dma.h  delete mode 100644 drivers/infiniband/sw/rxe/rxe_dma.c  create mode 100644 lib/dma-virt.c -- Doug Ledford     GPG KeyID: B826A3330E572FDD     Key fingerprint = AE6B 1BDA 122B 23B4 265B  1274 B826 A333 0E57 2FDD