On Wed, Jan 28, 2026 at 8:45 PM Eugenio Pérez <[email protected]> wrote: > > The vduse_vdpa_set_vq_ready can be called in the lifetime of the device > well after initial setup, and the device can read it afterwards. > > Ensure that reads and writes to vq->ready are SMP safe so that the > caller can trust that virtqueue kicks and calls behave as expected > immediately after the operation returns. > > Signed-off-by: Eugenio Pérez <[email protected]> > --- > drivers/vdpa/vdpa_user/vduse_dev.c | 34 +++++++++++++++++++++++------- > 1 file changed, 26 insertions(+), 8 deletions(-) > > diff --git a/drivers/vdpa/vdpa_user/vduse_dev.c > b/drivers/vdpa/vdpa_user/vduse_dev.c > index 73d1d517dc6c..a4963aaf9332 100644 > --- a/drivers/vdpa/vdpa_user/vduse_dev.c > +++ b/drivers/vdpa/vdpa_user/vduse_dev.c > @@ -460,6 +460,24 @@ static __poll_t vduse_dev_poll(struct file *file, > poll_table *wait) > return mask; > } > > +static bool vduse_vq_get_ready(const struct vduse_virtqueue *vq) > +{ > + /* > + * Paired with vduse_vq_set_ready smp_store, as the driver may modify > + * it while the VDUSE instance is reading it. > + */ > + return smp_load_acquire(&vq->ready); > +} > + > +static void vduse_vq_set_ready(struct vduse_virtqueue *vq, bool ready) > +{ > + /* > + * Paired with vduse_vq_get_ready smp_load, as the driver may modify > + * it while the VDUSE instance is reading it. > + */ > + smp_store_release(&vq->ready, ready);
Assuming this is not used in the datapath, I wonder if we can simply use vq_lock mutex. Thanks

