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. Note that the rds changes are untested, as I could not find any simple rds test setup. Changes since v2: - simplify the INFINIBAND_VIRT_DMA dependencies - add a ib_uses_virt_dma helper - use ib_uses_virt_dma in nvmet-rdma to disable p2p for virt_dma devices - use ib_dma_max_seg_size in umem - stop using dmapool in rds Changes since v1: - disable software RDMA drivers for highmem configs - update the PCI commit logs