... >> >diff --git a/drivers/infiniband/sw/siw/siw_main.c >> >b/drivers/infiniband/sw/siw/siw_main.c >> >index d862bec84376..0362d57b4db8 100644 >> >--- a/drivers/infiniband/sw/siw/siw_main.c >> >+++ b/drivers/infiniband/sw/siw/siw_main.c >> >@@ -69,7 +69,7 @@ static int siw_device_register(struct siw_device >> >*sdev, const char *name) >> > >> > sdev->vendor_part_id = dev_id++; >> > >> >- rv = ib_register_device(base_dev, name); >> >+ rv = ib_register_device(base_dev, name, NULL); >> > if (rv) { >> > pr_warn("siw: device registration error %d\n", rv); >> > return rv; >> >@@ -386,6 +386,8 @@ static struct siw_device >> >*siw_device_create(struct net_device *netdev) >> > base_dev->dev.dma_parms = &sdev->dma_parms; >> > sdev->dma_parms = (struct device_dma_parameters) >> > { .max_segment_size = SZ_2G }; >> >+ dma_coerce_mask_and_coherent(&base_dev->dev, >> >+ dma_get_required_mask(&base_dev->dev)); >> >> Leon, can you please help me to understand this >> additional logic? Do we need to setup the DMA device >> for (software) RDMA devices which rely on dma_virt_ops >> in the end, or better leave it untouched? > >The logic that driver is responsible to give right DMA device, >so yes, you are setting here mask from dma_virt_ops, as RXE did. > Thanks Leon! I wonder how this was working w/o that before! Many thanks, Bernard.