Reviewed-by Zhu Lingshan <lingshan....@kernel.org>

Jason Wang <jasow...@redhat.com> 于2025年7月18日周五 17:17写道:
>
> Virtio core switches from DMA device to mapping token, let's do that
> as well for vDPA.
>
> Reviewed-by: Christoph Hellwig <h...@lst.de>
> Signed-off-by: Jason Wang <jasow...@redhat.com>
> ---
>  drivers/vdpa/alibaba/eni_vdpa.c          |  2 +-
>  drivers/vdpa/ifcvf/ifcvf_main.c          |  2 +-
>  drivers/vdpa/mlx5/core/mr.c              |  4 ++--
>  drivers/vdpa/mlx5/net/mlx5_vnet.c        |  8 ++++----
>  drivers/vdpa/octeon_ep/octep_vdpa_main.c |  2 +-
>  drivers/vdpa/pds/vdpa_dev.c              |  2 +-
>  drivers/vdpa/solidrun/snet_main.c        |  4 ++--
>  drivers/vdpa/vdpa.c                      |  2 +-
>  drivers/vdpa/vdpa_sim/vdpa_sim.c         |  2 +-
>  drivers/vdpa/vdpa_user/vduse_dev.c       |  2 +-
>  drivers/vdpa/virtio_pci/vp_vdpa.c        |  2 +-
>  drivers/vhost/vdpa.c                     |  4 ++--
>  drivers/virtio/virtio_vdpa.c             | 12 ++++++------
>  include/linux/vdpa.h                     | 12 ++++++------
>  14 files changed, 30 insertions(+), 30 deletions(-)
>
> diff --git a/drivers/vdpa/alibaba/eni_vdpa.c b/drivers/vdpa/alibaba/eni_vdpa.c
> index ad7f3447fe90..34bf726dc660 100644
> --- a/drivers/vdpa/alibaba/eni_vdpa.c
> +++ b/drivers/vdpa/alibaba/eni_vdpa.c
> @@ -496,7 +496,7 @@ static int eni_vdpa_probe(struct pci_dev *pdev, const 
> struct pci_device_id *id)
>         pci_set_master(pdev);
>         pci_set_drvdata(pdev, eni_vdpa);
>
> -       eni_vdpa->vdpa.dma_dev = &pdev->dev;
> +       eni_vdpa->vdpa.map_token = &pdev->dev;
>         eni_vdpa->queues = eni_vdpa_get_num_queues(eni_vdpa);
>
>         eni_vdpa->vring = devm_kcalloc(&pdev->dev, eni_vdpa->queues,
> diff --git a/drivers/vdpa/ifcvf/ifcvf_main.c b/drivers/vdpa/ifcvf/ifcvf_main.c
> index ccf64d7bbfaa..64d28ec97136 100644
> --- a/drivers/vdpa/ifcvf/ifcvf_main.c
> +++ b/drivers/vdpa/ifcvf/ifcvf_main.c
> @@ -713,7 +713,7 @@ static int ifcvf_vdpa_dev_add(struct vdpa_mgmt_dev *mdev, 
> const char *name,
>
>         ifcvf_mgmt_dev->adapter = adapter;
>         adapter->pdev = pdev;
> -       adapter->vdpa.dma_dev = &pdev->dev;
> +       adapter->vdpa.map_token = &pdev->dev;
>         adapter->vdpa.mdev = mdev;
>         adapter->vf = vf;
>         vdpa_dev = &adapter->vdpa;
> diff --git a/drivers/vdpa/mlx5/core/mr.c b/drivers/vdpa/mlx5/core/mr.c
> index c7a20278bc3c..9175d7441fec 100644
> --- a/drivers/vdpa/mlx5/core/mr.c
> +++ b/drivers/vdpa/mlx5/core/mr.c
> @@ -378,7 +378,7 @@ static int map_direct_mr(struct mlx5_vdpa_dev *mvdev, 
> struct mlx5_vdpa_direct_mr
>         u64 pa, offset;
>         u64 paend;
>         struct scatterlist *sg;
> -       struct device *dma = mvdev->vdev.dma_dev;
> +       struct device *dma = mvdev->vdev.map_token;
>
>         for (map = vhost_iotlb_itree_first(iotlb, mr->start, mr->end - 1);
>              map; map = vhost_iotlb_itree_next(map, mr->start, mr->end - 1)) {
> @@ -432,7 +432,7 @@ static int map_direct_mr(struct mlx5_vdpa_dev *mvdev, 
> struct mlx5_vdpa_direct_mr
>
>  static void unmap_direct_mr(struct mlx5_vdpa_dev *mvdev, struct 
> mlx5_vdpa_direct_mr *mr)
>  {
> -       struct device *dma = mvdev->vdev.dma_dev;
> +       struct device *dma = mvdev->vdev.map_token;
>
>         destroy_direct_mr(mvdev, mr);
>         dma_unmap_sg_attrs(dma, mr->sg_head.sgl, mr->nsg, DMA_BIDIRECTIONAL, 
> 0);
> diff --git a/drivers/vdpa/mlx5/net/mlx5_vnet.c 
> b/drivers/vdpa/mlx5/net/mlx5_vnet.c
> index 0ed2fc28e1ce..1c2342942200 100644
> --- a/drivers/vdpa/mlx5/net/mlx5_vnet.c
> +++ b/drivers/vdpa/mlx5/net/mlx5_vnet.c
> @@ -3395,14 +3395,14 @@ static int mlx5_vdpa_reset_map(struct vdpa_device 
> *vdev, unsigned int asid)
>         return err;
>  }
>
> -static struct device *mlx5_get_vq_dma_dev(struct vdpa_device *vdev, u16 idx)
> +static struct device *mlx5_get_vq_map_token(struct vdpa_device *vdev, u16 
> idx)
>  {
>         struct mlx5_vdpa_dev *mvdev = to_mvdev(vdev);
>
>         if (is_ctrl_vq_idx(mvdev, idx))
>                 return &vdev->dev;
>
> -       return mvdev->vdev.dma_dev;
> +       return mvdev->vdev.map_token;
>  }
>
>  static void free_irqs(struct mlx5_vdpa_net *ndev)
> @@ -3686,7 +3686,7 @@ static const struct vdpa_config_ops mlx5_vdpa_ops = {
>         .set_map = mlx5_vdpa_set_map,
>         .reset_map = mlx5_vdpa_reset_map,
>         .set_group_asid = mlx5_set_group_asid,
> -       .get_vq_dma_dev = mlx5_get_vq_dma_dev,
> +       .get_vq_map_token = mlx5_get_vq_map_token,
>         .free = mlx5_vdpa_free,
>         .suspend = mlx5_vdpa_suspend,
>         .resume = mlx5_vdpa_resume, /* Op disabled if not supported. */
> @@ -3965,7 +3965,7 @@ static int mlx5_vdpa_dev_add(struct vdpa_mgmt_dev 
> *v_mdev, const char *name,
>         }
>
>         ndev->mvdev.mlx_features = device_features;
> -       mvdev->vdev.dma_dev = &mdev->pdev->dev;
> +       mvdev->vdev.map_token = &mdev->pdev->dev;
>         err = mlx5_vdpa_alloc_resources(&ndev->mvdev);
>         if (err)
>                 goto err_alloc;
> diff --git a/drivers/vdpa/octeon_ep/octep_vdpa_main.c 
> b/drivers/vdpa/octeon_ep/octep_vdpa_main.c
> index 9b49efd24391..42a4df4613dd 100644
> --- a/drivers/vdpa/octeon_ep/octep_vdpa_main.c
> +++ b/drivers/vdpa/octeon_ep/octep_vdpa_main.c
> @@ -516,7 +516,7 @@ static int octep_vdpa_dev_add(struct vdpa_mgmt_dev *mdev, 
> const char *name,
>         }
>
>         oct_vdpa->pdev = pdev;
> -       oct_vdpa->vdpa.dma_dev = &pdev->dev;
> +       oct_vdpa->vdpa.map_token = &pdev->dev;
>         oct_vdpa->vdpa.mdev = mdev;
>         oct_vdpa->oct_hw = oct_hw;
>         vdpa_dev = &oct_vdpa->vdpa;
> diff --git a/drivers/vdpa/pds/vdpa_dev.c b/drivers/vdpa/pds/vdpa_dev.c
> index 301d95e08596..cff9c9811d8e 100644
> --- a/drivers/vdpa/pds/vdpa_dev.c
> +++ b/drivers/vdpa/pds/vdpa_dev.c
> @@ -643,7 +643,7 @@ static int pds_vdpa_dev_add(struct vdpa_mgmt_dev *mdev, 
> const char *name,
>
>         pdev = vdpa_aux->padev->vf_pdev;
>         dma_dev = &pdev->dev;
> -       pdsv->vdpa_dev.dma_dev = dma_dev;
> +       pdsv->vdpa_dev.map_token = dma_dev;
>
>         status = pds_vdpa_get_status(&pdsv->vdpa_dev);
>         if (status == 0xff) {
> diff --git a/drivers/vdpa/solidrun/snet_main.c 
> b/drivers/vdpa/solidrun/snet_main.c
> index 55ec51c17ab3..1864fd1655ea 100644
> --- a/drivers/vdpa/solidrun/snet_main.c
> +++ b/drivers/vdpa/solidrun/snet_main.c
> @@ -1052,8 +1052,8 @@ static int snet_vdpa_probe_vf(struct pci_dev *pdev)
>          */
>         snet_reserve_irq_idx(pf_irqs ? pdev_pf : pdev, snet);
>
> -       /*set DMA device*/
> -       snet->vdpa.dma_dev = &pdev->dev;
> +       /* set map token */
> +       snet->vdpa.map_token = &pdev->dev;
>
>         /* Register VDPA device */
>         ret = vdpa_register_device(&snet->vdpa, snet->cfg->vq_num);
> diff --git a/drivers/vdpa/vdpa.c b/drivers/vdpa/vdpa.c
> index 8a372b51c21a..1cc4285ebd67 100644
> --- a/drivers/vdpa/vdpa.c
> +++ b/drivers/vdpa/vdpa.c
> @@ -151,7 +151,7 @@ static void vdpa_release_dev(struct device *d)
>   * Driver should use vdpa_alloc_device() wrapper macro instead of
>   * using this directly.
>   *
> - * Return: Returns an error when parent/config/dma_dev is not set or fail to 
> get
> + * Return: Returns an error when parent/config/map_token is not set or fail 
> to get
>   *        ida.
>   */
>  struct vdpa_device *__vdpa_alloc_device(struct device *parent,
> diff --git a/drivers/vdpa/vdpa_sim/vdpa_sim.c 
> b/drivers/vdpa/vdpa_sim/vdpa_sim.c
> index c204fc8e471a..7c8e468f2f8c 100644
> --- a/drivers/vdpa/vdpa_sim/vdpa_sim.c
> +++ b/drivers/vdpa/vdpa_sim/vdpa_sim.c
> @@ -272,7 +272,7 @@ struct vdpasim *vdpasim_create(struct vdpasim_dev_attr 
> *dev_attr,
>                 vringh_set_iotlb(&vdpasim->vqs[i].vring, &vdpasim->iommu[0],
>                                  &vdpasim->iommu_lock);
>
> -       vdpasim->vdpa.dma_dev = dev;
> +       vdpasim->vdpa.map_token = dev;
>
>         return vdpasim;
>
> diff --git a/drivers/vdpa/vdpa_user/vduse_dev.c 
> b/drivers/vdpa/vdpa_user/vduse_dev.c
> index 04620bb77203..cf4e3525aac4 100644
> --- a/drivers/vdpa/vdpa_user/vduse_dev.c
> +++ b/drivers/vdpa/vdpa_user/vduse_dev.c
> @@ -2022,7 +2022,7 @@ static int vduse_dev_init_vdpa(struct vduse_dev *dev, 
> const char *name)
>                 return ret;
>         }
>         set_dma_ops(&vdev->vdpa.dev, &vduse_dev_dma_ops);
> -       vdev->vdpa.dma_dev = &vdev->vdpa.dev;
> +       vdev->vdpa.map_token = &vdev->vdpa.dev;
>         vdev->vdpa.mdev = &vduse_mgmt->mgmt_dev;
>
>         return 0;
> diff --git a/drivers/vdpa/virtio_pci/vp_vdpa.c 
> b/drivers/vdpa/virtio_pci/vp_vdpa.c
> index 8787407f75b0..6e22e95245fa 100644
> --- a/drivers/vdpa/virtio_pci/vp_vdpa.c
> +++ b/drivers/vdpa/virtio_pci/vp_vdpa.c
> @@ -520,7 +520,7 @@ static int vp_vdpa_dev_add(struct vdpa_mgmt_dev *v_mdev, 
> const char *name,
>
>         vp_vdpa_mgtdev->vp_vdpa = vp_vdpa;
>
> -       vp_vdpa->vdpa.dma_dev = &pdev->dev;
> +       vp_vdpa->vdpa.map_token = &pdev->dev;
>         vp_vdpa->queues = vp_modern_get_num_queues(mdev);
>         vp_vdpa->mdev = mdev;
>
> diff --git a/drivers/vhost/vdpa.c b/drivers/vhost/vdpa.c
> index 5a49b5a6d496..732ed118c138 100644
> --- a/drivers/vhost/vdpa.c
> +++ b/drivers/vhost/vdpa.c
> @@ -1320,7 +1320,7 @@ static int vhost_vdpa_alloc_domain(struct vhost_vdpa *v)
>  {
>         struct vdpa_device *vdpa = v->vdpa;
>         const struct vdpa_config_ops *ops = vdpa->config;
> -       struct device *dma_dev = vdpa_get_dma_dev(vdpa);
> +       struct device *dma_dev = vdpa_get_map_token(vdpa);
>         int ret;
>
>         /* Device want to do DMA by itself */
> @@ -1355,7 +1355,7 @@ static int vhost_vdpa_alloc_domain(struct vhost_vdpa *v)
>  static void vhost_vdpa_free_domain(struct vhost_vdpa *v)
>  {
>         struct vdpa_device *vdpa = v->vdpa;
> -       struct device *dma_dev = vdpa_get_dma_dev(vdpa);
> +       struct device *dma_dev = vdpa_get_map_token(vdpa);
>
>         if (v->domain) {
>                 iommu_detach_device(v->domain, dma_dev);
> diff --git a/drivers/virtio/virtio_vdpa.c b/drivers/virtio/virtio_vdpa.c
> index dbf207cd3996..7b9bc123166d 100644
> --- a/drivers/virtio/virtio_vdpa.c
> +++ b/drivers/virtio/virtio_vdpa.c
> @@ -133,7 +133,6 @@ virtio_vdpa_setup_vq(struct virtio_device *vdev, unsigned 
> int index,
>                      const char *name, bool ctx)
>  {
>         struct vdpa_device *vdpa = vd_get_vdpa(vdev);
> -       struct device *dma_dev;
>         const struct vdpa_config_ops *ops = vdpa->config;
>         bool (*notify)(struct virtqueue *vq) = virtio_vdpa_notify;
>         struct vdpa_callback cb;
> @@ -143,6 +142,7 @@ virtio_vdpa_setup_vq(struct virtio_device *vdev, unsigned 
> int index,
>         struct vdpa_vq_state state = {0};
>         u32 align, max_num, min_num = 1;
>         bool may_reduce_num = true;
> +       void *map_token;
>         int err;
>
>         if (!name)
> @@ -181,13 +181,13 @@ virtio_vdpa_setup_vq(struct virtio_device *vdev, 
> unsigned int index,
>         /* Create the vring */
>         align = ops->get_vq_align(vdpa);
>
> -       if (ops->get_vq_dma_dev)
> -               dma_dev = ops->get_vq_dma_dev(vdpa, index);
> +       if (ops->get_vq_map_token)
> +               map_token = ops->get_vq_map_token(vdpa, index);
>         else
> -               dma_dev = vdpa_get_dma_dev(vdpa);
> +               map_token = vdpa_get_map_token(vdpa);
>         vq = vring_create_virtqueue_map(index, max_num, align, vdev,
>                                         true, may_reduce_num, ctx,
> -                                       notify, callback, name, dma_dev);
> +                                       notify, callback, name, map_token);
>         if (!vq) {
>                 err = -ENOMEM;
>                 goto error_new_virtqueue;
> @@ -461,7 +461,7 @@ static int virtio_vdpa_probe(struct vdpa_device *vdpa)
>         if (!vd_dev)
>                 return -ENOMEM;
>
> -       vd_dev->vdev.dev.parent = vdpa_get_dma_dev(vdpa);
> +       vd_dev->vdev.dev.parent = vdpa_get_map_token(vdpa);
>         vd_dev->vdev.dev.release = virtio_vdpa_release_dev;
>         vd_dev->vdev.config = &virtio_vdpa_config_ops;
>         vd_dev->vdpa = vdpa;
> diff --git a/include/linux/vdpa.h b/include/linux/vdpa.h
> index 2e7a30fe6b92..352ca5609c9a 100644
> --- a/include/linux/vdpa.h
> +++ b/include/linux/vdpa.h
> @@ -70,7 +70,7 @@ struct vdpa_mgmt_dev;
>  /**
>   * struct vdpa_device - representation of a vDPA device
>   * @dev: underlying device
> - * @dma_dev: the actual device that is performing DMA
> + * @map_token: the token passed to upper layer to be used for mappping
>   * @driver_override: driver name to force a match; do not set directly,
>   *                   because core frees it; use driver_set_override() to
>   *                   set or clear it.
> @@ -87,7 +87,7 @@ struct vdpa_mgmt_dev;
>   */
>  struct vdpa_device {
>         struct device dev;
> -       struct device *dma_dev;
> +       void *map_token;
>         const char *driver_override;
>         const struct vdpa_config_ops *config;
>         struct rw_semaphore cf_lock; /* Protects get/set config */
> @@ -352,7 +352,7 @@ struct vdpa_map_file {
>   *                             @vdev: vdpa device
>   *                             @asid: address space identifier
>   *                             Returns integer: success (0) or error (< 0)
> - * @get_vq_dma_dev:            Get the dma device for a specific
> + * @get_vq_map_token:          Get the map token for a specific
>   *                             virtqueue (optional)
>   *                             @vdev: vdpa device
>   *                             @idx: virtqueue index
> @@ -436,7 +436,7 @@ struct vdpa_config_ops {
>         int (*reset_map)(struct vdpa_device *vdev, unsigned int asid);
>         int (*set_group_asid)(struct vdpa_device *vdev, unsigned int group,
>                               unsigned int asid);
> -       struct device *(*get_vq_dma_dev)(struct vdpa_device *vdev, u16 idx);
> +       struct device *(*get_vq_map_token)(struct vdpa_device *vdev, u16 idx);
>         int (*bind_mm)(struct vdpa_device *vdev, struct mm_struct *mm);
>         void (*unbind_mm)(struct vdpa_device *vdev);
>
> @@ -520,9 +520,9 @@ static inline void vdpa_set_drvdata(struct vdpa_device 
> *vdev, void *data)
>         dev_set_drvdata(&vdev->dev, data);
>  }
>
> -static inline struct device *vdpa_get_dma_dev(struct vdpa_device *vdev)
> +static inline void *vdpa_get_map_token(struct vdpa_device *vdev)
>  {
> -       return vdev->dma_dev;
> +       return vdev->map_token;
>  }
>
>  static inline int vdpa_reset(struct vdpa_device *vdev, u32 flags)
> --
> 2.47.3
>
>

Reply via email to