On Tue, Mar 12, 2024 at 11:36 AM Xuan Zhuo <xuanzhuo@xxxxxxxxxxxxxxxxx> wrote: > > Now, the API virtqueue_set_dma_premapped just support to > enable premapped mode. > > If we allow enabling the premapped dynamically, we should > make this API to support disable the premapped mode. > > Signed-off-by: Xuan Zhuo <xuanzhuo@xxxxxxxxxxxxxxxxx> > --- > drivers/virtio/virtio_ring.c | 34 ++++++++++++++++++++++++++-------- > include/linux/virtio.h | 2 +- > 2 files changed, 27 insertions(+), 9 deletions(-) > > diff --git a/drivers/virtio/virtio_ring.c b/drivers/virtio/virtio_ring.c > index 34f4b2c0c31e..3bf69cae4965 100644 > --- a/drivers/virtio/virtio_ring.c > +++ b/drivers/virtio/virtio_ring.c > @@ -2801,6 +2801,7 @@ EXPORT_SYMBOL_GPL(virtqueue_resize); > /** > * virtqueue_set_dma_premapped - set the vring premapped mode > * @_vq: the struct virtqueue we're talking about. > + * @premapped: enable/disable the premapped mode. > * > * Enable the premapped mode of the vq. > * > @@ -2819,9 +2820,10 @@ EXPORT_SYMBOL_GPL(virtqueue_resize); > * 0: success. > * -EINVAL: vring does not use the dma api, so we can not enable premapped mode. > */ > -int virtqueue_set_dma_premapped(struct virtqueue *_vq) > +int virtqueue_set_dma_premapped(struct virtqueue *_vq, bool premapped) I think we need to document the requirement for calling this. Looking at the code, it seems it requires to stop the datapath and detach all the used buffers? Thanks