Hi Jason, this series switches the RDMA core to opencode the special case of devices bypassing the DMA mapping in the RDMA ULPs. The virt ops have caused a bit of trouble due to the P2P code node working with them due to the fact that we'd do two dma mapping iterations for a single I/O, but also are a bit of layering violation and lead to more code than necessary. Tested with nvme-rdma over rxe. Diffstat: b/drivers/infiniband/core/device.c | 41 +++++++------- b/drivers/infiniband/core/rw.c | 2 b/drivers/infiniband/sw/rdmavt/Kconfig | 3 - b/drivers/infiniband/sw/rdmavt/mr.c | 6 -- b/drivers/infiniband/sw/rdmavt/vt.c | 8 -- b/drivers/infiniband/sw/rxe/Kconfig | 2 b/drivers/infiniband/sw/rxe/rxe_verbs.c | 7 -- b/drivers/infiniband/sw/rxe/rxe_verbs.h | 1 b/drivers/infiniband/sw/siw/Kconfig | 1 b/drivers/infiniband/sw/siw/siw.h | 1 b/drivers/infiniband/sw/siw/siw_main.c | 7 -- b/drivers/pci/p2pdma.c | 25 --------- b/include/linux/dma-mapping.h | 2 b/include/rdma/ib_verbs.h | 88 ++++++++++++++------------------ b/kernel/dma/Kconfig | 5 - b/kernel/dma/Makefile | 1 kernel/dma/virt.c | 61 ---------------------- 17 files changed, 66 insertions(+), 195 deletions(-)