Changes in V2: - test DRIVER_OK instead of FEATURES_OK - post singly, and add RB and acks - Steve On 2/9/2024 5:30 PM, Steve Sistare wrote: > vdpasim_do_reset sets running to true, which is wrong, as it allows > vdpasim_kick_vq to post work requests before the device has been > configured. To fix, do not set running until VIRTIO_CONFIG_S_DRIVER_OK > is set. > > Fixes: 0c89e2a3a9d0 ("vdpa_sim: Implement suspend vdpa op") > Signed-off-by: Steve Sistare <steven.sistare@xxxxxxxxxx> > Reviewed-by: Eugenio Pérez <eperezma@xxxxxxxxxx> > Acked-by: Jason Wang <jasowang@xxxxxxxxxx> > --- > drivers/vdpa/vdpa_sim/vdpa_sim.c | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/drivers/vdpa/vdpa_sim/vdpa_sim.c b/drivers/vdpa/vdpa_sim/vdpa_sim.c > index be2925d0d283..18584ce70bf0 100644 > --- a/drivers/vdpa/vdpa_sim/vdpa_sim.c > +++ b/drivers/vdpa/vdpa_sim/vdpa_sim.c > @@ -160,7 +160,7 @@ static void vdpasim_do_reset(struct vdpasim *vdpasim, u32 flags) > } > } > > - vdpasim->running = true; > + vdpasim->running = false; > spin_unlock(&vdpasim->iommu_lock); > > vdpasim->features = 0; > @@ -483,6 +483,7 @@ static void vdpasim_set_status(struct vdpa_device *vdpa, u8 status) > > mutex_lock(&vdpasim->mutex); > vdpasim->status = status; > + vdpasim->running = (status & VIRTIO_CONFIG_S_DRIVER_OK) != 0; > mutex_unlock(&vdpasim->mutex); > } >