vdpa: set dma mask for vDPA device
authorJason Wang <jasowang@redhat.com>
Thu, 19 Jan 2023 06:15:24 +0000 (14:15 +0800)
committerMichael S. Tsirkin <mst@redhat.com>
Tue, 21 Feb 2023 00:26:58 +0000 (19:26 -0500)
Setting DMA mask for vDPA device in case that there are virtqueue that
is not backed by DMA so the vDPA device could be advertised as the DMA
device that is used by DMA API for software emulated virtqueues.

Reviewed-by: Eli Cohen <elic@nvidia.com>
Tested-by: Eli Cohen <elic@nvidia.com>
Signed-off-by: Jason Wang <jasowang@redhat.com>
Message-Id: <20230119061525.75068-5-jasowang@redhat.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
drivers/vdpa/vdpa.c

index 8ef7aa1365cc52a1844101e4019d755548a75396..6821b2850bbb76f097b2aeb44c12c57783d6f9c3 100644 (file)
@@ -39,6 +39,11 @@ static int vdpa_dev_probe(struct device *d)
        u32 max_num, min_num = 1;
        int ret = 0;
 
+       d->dma_mask = &d->coherent_dma_mask;
+       ret = dma_set_mask_and_coherent(d, DMA_BIT_MASK(64));
+       if (ret)
+               return ret;
+
        max_num = ops->get_vq_num_max(vdev);
        if (ops->get_vq_num_min)
                min_num = ops->get_vq_num_min(vdev);