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 *. If we see it's getting out of hand with too many types, we can think of solutions. -- MST