On Mon, Jan 08, 2018 at 12:01:16PM -0700, Jason Gunthorpe wrote:
> So I very much disagree about where to place that workaround -
> RDMA code is exactly the right place.
But why? RDMA is using core code to do this. It uses dma_ops in struct
device and it uses normal dma_map SG. How is it RDMA's problem that
some PCI drivers provide strange DMA ops?
Because RDMA uses the dma_virt_ops to pretend a device does DMA when
in fact it doesn't - at least not for the exact data mapped, or
as far as I can tell often not all - e.g. the QIB/HFI devices
might do mmio access for data mapped.
This whole problem only exist because a few RDMA HCA drivers lie
with the help of the RDMA core.