mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-13 14:24:11 +08:00
vdpasim: allow to enable a vq repeatedly
commit2424369738
upstream. Code must be resilient to enable a queue many times. At the moment the queue is resetting so it's definitely not the expected behavior. v2: set vq->ready = 0 at disable. Fixes:2c53d0f64c
("vdpasim: vDPA device simulator") Cc: stable@vger.kernel.org Signed-off-by: Eugenio Pérez <eperezma@redhat.com> Message-Id: <20220519145919.772896-1-eperezma@redhat.com> Signed-off-by: Michael S. Tsirkin <mst@redhat.com> Reviewed-by: Stefano Garzarella <sgarzare@redhat.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
ec029087df
commit
19e5aac38a
@ -473,11 +473,14 @@ static void vdpasim_set_vq_ready(struct vdpa_device *vdpa, u16 idx, bool ready)
|
||||
{
|
||||
struct vdpasim *vdpasim = vdpa_to_sim(vdpa);
|
||||
struct vdpasim_virtqueue *vq = &vdpasim->vqs[idx];
|
||||
bool old_ready;
|
||||
|
||||
spin_lock(&vdpasim->lock);
|
||||
old_ready = vq->ready;
|
||||
vq->ready = ready;
|
||||
if (vq->ready)
|
||||
if (vq->ready && !old_ready) {
|
||||
vdpasim_queue_ready(vdpasim, idx);
|
||||
}
|
||||
spin_unlock(&vdpasim->lock);
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user