lkml.org 
[lkml]   [2022]   [Jun]   [7]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.18 857/879] vdpasim: allow to enable a vq repeatedly
    Date
    From: Eugenio Pérez <eperezma@redhat.com>

    commit 242436973831aa97e8ce19533c6c912ea8def31b 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: 2c53d0f64c06 ("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>
    ---
    drivers/vdpa/vdpa_sim/vdpa_sim.c | 5 ++++-
    1 file changed, 4 insertions(+), 1 deletion(-)

    --- a/drivers/vdpa/vdpa_sim/vdpa_sim.c
    +++ b/drivers/vdpa/vdpa_sim/vdpa_sim.c
    @@ -353,11 +353,14 @@ static void vdpasim_set_vq_ready(struct
    {
    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);
    }


    \
     
     \ /
      Last update: 2022-06-08 04:48    [W:2.357 / U:0.020 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site