On Tue, Aug 18, 2026 at 11:14 PM Alexander Graf <[email protected]> wrote:
>
> virtqueue_map_need_sync(), virtqueue_map_sync_single_range_for_cpu() and
> virtqueue_map_sync_single_range_for_device() are exported, but no driver
> in the tree calls them. They are the only path into the sync members of
> struct virtio_map_ops, so whoever implements that struct next has to
> decide what those members do with no caller to learn it from.
>
> Remove the three functions, their prototypes and their exports, and the
> DMA sync shims that the virtio userspace harness kept for them. With
> this, virtio_ring no longer exports a way to sync a mapping.
>
> Suggested-by: Michael S. Tsirkin <[email protected]>

Acked-by: Eugenio Pérez <[email protected]>

Thanks!

> Assisted-by: Kiro:claude-opus-5 checkpatch
> Signed-off-by: Alexander Graf <[email protected]>
> ---
>  drivers/virtio/virtio_ring.c     | 89 --------------------------------
>  include/linux/virtio.h           |  8 ---
>  tools/virtio/linux/dma-mapping.h |  7 ---
>  3 files changed, 104 deletions(-)
>
> diff --git a/drivers/virtio/virtio_ring.c b/drivers/virtio/virtio_ring.c
> index b438dc2ce1b8..ea8e774b6d8e 100644
> --- a/drivers/virtio/virtio_ring.c
> +++ b/drivers/virtio/virtio_ring.c
> @@ -3890,94 +3890,5 @@ int virtqueue_map_mapping_error(const struct virtqueue 
> *_vq, dma_addr_t addr)
>  }
>  EXPORT_SYMBOL_GPL(virtqueue_map_mapping_error);
>
> -/**
> - * virtqueue_map_need_sync - check a dma address needs sync
> - * @_vq: the struct virtqueue we're talking about.
> - * @addr: DMA address
> - *
> - * Check if the dma address mapped by the virtqueue_map_* APIs needs to be
> - * synchronized
> - *
> - * return bool
> - */
> -bool virtqueue_map_need_sync(const struct virtqueue *_vq, dma_addr_t addr)
> -{
> -       const struct vring_virtqueue *vq = to_vvq(_vq);
> -       struct virtio_device *vdev = _vq->vdev;
> -
> -       if (!vq->use_map_api)
> -               return false;
> -
> -       if (vdev->map)
> -               return vdev->map->need_sync(vq->map, addr);
> -       else
> -               return dma_need_sync(vring_dma_dev(vq), addr);
> -}
> -EXPORT_SYMBOL_GPL(virtqueue_map_need_sync);
> -
> -/**
> - * virtqueue_map_sync_single_range_for_cpu - map sync for cpu
> - * @_vq: the struct virtqueue we're talking about.
> - * @addr: DMA address
> - * @offset: DMA address offset
> - * @size: buf size for sync
> - * @dir: DMA direction
> - *
> - * Before calling this function, use virtqueue_map_need_sync() to confirm 
> that
> - * the DMA address really needs to be synchronized
> - *
> - */
> -void virtqueue_map_sync_single_range_for_cpu(const struct virtqueue *_vq,
> -                                            dma_addr_t addr,
> -                                            unsigned long offset, size_t 
> size,
> -                                            enum dma_data_direction dir)
> -{
> -       const struct vring_virtqueue *vq = to_vvq(_vq);
> -       struct virtio_device *vdev = _vq->vdev;
> -
> -       if (!vq->use_map_api)
> -               return;
> -
> -       if (vdev->map)
> -               vdev->map->sync_single_for_cpu(vq->map,
> -                                              addr + offset, size, dir);
> -       else
> -               dma_sync_single_range_for_cpu(vring_dma_dev(vq),
> -                                             addr, offset, size, dir);
> -}
> -EXPORT_SYMBOL_GPL(virtqueue_map_sync_single_range_for_cpu);
> -
> -/**
> - * virtqueue_map_sync_single_range_for_device - map sync for device
> - * @_vq: the struct virtqueue we're talking about.
> - * @addr: DMA address
> - * @offset: DMA address offset
> - * @size: buf size for sync
> - * @dir: DMA direction
> - *
> - * Before calling this function, use virtqueue_map_need_sync() to confirm 
> that
> - * the DMA address really needs to be synchronized
> - */
> -void virtqueue_map_sync_single_range_for_device(const struct virtqueue *_vq,
> -                                               dma_addr_t addr,
> -                                               unsigned long offset, size_t 
> size,
> -                                               enum dma_data_direction dir)
> -{
> -       const struct vring_virtqueue *vq = to_vvq(_vq);
> -       struct virtio_device *vdev = _vq->vdev;
> -
> -       if (!vq->use_map_api)
> -               return;
> -
> -       if (vdev->map)
> -               vdev->map->sync_single_for_device(vq->map,
> -                                                 addr + offset,
> -                                                 size, dir);
> -       else
> -               dma_sync_single_range_for_device(vring_dma_dev(vq), addr,
> -                                                offset, size, dir);
> -}
> -EXPORT_SYMBOL_GPL(virtqueue_map_sync_single_range_for_device);
> -
>  MODULE_DESCRIPTION("Virtio ring implementation");
>  MODULE_LICENSE("GPL");
> diff --git a/include/linux/virtio.h b/include/linux/virtio.h
> index 93e573c56563..3122fc52a7c3 100644
> --- a/include/linux/virtio.h
> +++ b/include/linux/virtio.h
> @@ -312,14 +312,6 @@ void virtqueue_unmap_single_attrs(const struct virtqueue 
> *_vq, dma_addr_t addr,
>                                       unsigned long attrs);
>  int virtqueue_map_mapping_error(const struct virtqueue *_vq, dma_addr_t 
> addr);
>
> -bool virtqueue_map_need_sync(const struct virtqueue *_vq, dma_addr_t addr);
> -void virtqueue_map_sync_single_range_for_cpu(const struct virtqueue *_vq, 
> dma_addr_t addr,
> -                                            unsigned long offset, size_t 
> size,
> -                                            enum dma_data_direction dir);
> -void virtqueue_map_sync_single_range_for_device(const struct virtqueue *_vq, 
> dma_addr_t addr,
> -                                               unsigned long offset, size_t 
> size,
> -                                               enum dma_data_direction dir);
> -
>  #ifdef CONFIG_VIRTIO_DEBUG
>  void virtio_debug_device_init(struct virtio_device *dev);
>  void virtio_debug_device_exit(struct virtio_device *dev);
> diff --git a/tools/virtio/linux/dma-mapping.h 
> b/tools/virtio/linux/dma-mapping.h
> index b9fc5e8338e3..eae160ce7142 100644
> --- a/tools/virtio/linux/dma-mapping.h
> +++ b/tools/virtio/linux/dma-mapping.h
> @@ -36,16 +36,9 @@ enum dma_data_direction {
>
>  #define sg_dma_address(sg) (0)
>  #define sg_dma_len(sg) (0)
> -#define dma_need_sync(v, a) (0)
>  #define dma_unmap_single_attrs(d, a, s, r, t) do { \
>         (void)(d); (void)(a); (void)(s); (void)(r); (void)(t); \
>  } while (0)
> -#define dma_sync_single_range_for_cpu(d, a, o, s, r) do { \
> -       (void)(d); (void)(a); (void)(o); (void)(s); (void)(r); \
> -} while (0)
> -#define dma_sync_single_range_for_device(d, a, o, s, r) do { \
> -       (void)(d); (void)(a); (void)(o); (void)(s); (void)(r); \
> -} while (0)
>  #define dma_max_mapping_size(...) SIZE_MAX
>
>  /*
>


Reply via email to