On Fri, Jul 18, 2025 at 6:09 PM Jason Wang <jasow...@redhat.com> wrote: > > On Fri, Jul 18, 2025 at 5:37 PM Michael S. Tsirkin <m...@redhat.com> wrote: > > > > On Fri, Jul 18, 2025 at 05:16:14PM +0800, Jason Wang wrote: > > > Virtio core switches from DMA device to mapping token, let's do that > > > as well for vDPA. > > > > Pls switch to imperative mood. > > > > And add explanation about what is going on and why please. > > I think this has been explained in patch [PATCH V4 6/9] virtio: > introduce map ops in virtio core? > > """ > For the device or transport that doesn't do DMA, > they can implement their own mapping logic without the need to trick > DMA core. In this case the map_token is opaque to the virtio core that > will be passed back to the transport or device specific map > operations. For other devices, DMA API will still be used, so map > token will still be the dma device to minimize the changeset and > performance impact. > """ > > > > > At least, document what are the actual types stored here. > > It is opaque to the virtio core and will be used as a token to be > passed back when the virtio core wants to map/unmap a buffer. So it > doesn't have a type. > > > I checked and it looks like vduse actually returns struct device * here, > > too? > > It's just a token, vduse can return anything that can be used to > identify an iova domain. For example, it can return a pointer to > iova_domain which will also work. If you prefer to use iova domain, I > can change to use that in the next version. > > > So why do we need this, why lose all type safety? > > If you worry about the case that assumes map_token as dma device in > virtio core. I can keep both map_token and dma_device and make the > mutually exclusive, then: > > - when transport reports dma device, use DMA API > - when transport reports map token, use map ops > > Does this work for you?
This seems to result in a lot of unnecessary code. I wonder if the following would work: Just document the requirement in vring_create_virtqueue_map, say something like when a virtio device doesn't have a map operation, map_token must be a pointer to struct device. Please give me some advice so I can work on a new version.. Thanks > > Thanks