On Thu, Aug 14, 2025 at 6:42 PM Michael S. Tsirkin <m...@redhat.com> wrote: > > On Thu, Aug 14, 2025 at 11:36:22AM +0800, Jason Wang wrote: > > > > diff --git a/include/linux/virtio.h b/include/linux/virtio.h > > > > index addbc209275a..37029df94aaf 100644 > > > > --- a/include/linux/virtio.h > > > > +++ b/include/linux/virtio.h > > > > @@ -40,6 +40,13 @@ struct virtqueue { > > > > void *priv; > > > > }; > > > > > > > > +union vring_mapping_token { > > > > + /* Device that performs DMA */ > > > > + struct device *dma_dev; > > > > + /* Transport specific token used for doing map */ > > > > + void *opaque; > > > > > > Please just declare whatever structure you want it to be. > > > > It's an opaque one and so > > > > 1) the virtio core knows nothing about that because it could be > > transport or device specific > > 2) no assumption of the type and usage, it just receive it from the > > transport and pass it back when doing the mapping > > > > It should work like page->private etc. > > > > Does this make sense? > > > > Thanks > > I fully expect most devices simply to use DMA here and no weird > tricks. vduse is the weird one, but I don't see us making it > grow much beyond that. > > So I think for now we can just make it vduse_iova_domain *.
It requires exporting VDUSE's internal data structure to the virtio layer which is a kind of layer violation. And the iova domain will be soon replaced by virtqueue group in Eungeio's series that support multiple address spaces > If we see > it's getting out of hand with too many types, we can think of solutions. Considering we've already at it, I think it's better to have a solution now if it's not complicated: I can think of two kind of solutions: 1) Stick to the current void * pointer which is simple and straightforward 2) Eugenio's suggestion of having a virtio_map_head and let the transport/device get the container struct which is the real token. E.g struct vduse_iova_domain { struct virtio_map_head map; ...... }; If you don't like void *, can we go fo 2)? Thanks > > -- > MST >