On Wed, Aug 05, 2020 at 07:38:32PM +0800, Zhu Lingshan wrote:
> This commit merge vhost_vdpa_update_vq_irq() logics into
> vhost_vdpa_setup_vq_irq(), so that code are unified.
> 
> In vhost_vdpa_setup_vq_irq(), added checks for the existence
> for get_vq_irq().
> 
> Signed-off-by: Zhu Lingshan <lingshan....@intel.com>

which commit should I squash this into?

commit f8e695e9dbd88464bc3d1f01769229dedf8f30d6
Author: Zhu Lingshan <lingshan....@intel.com>
Date:   Fri Jul 31 14:55:31 2020 +0800

    vhost_vdpa: implement IRQ offloading in vhost_vdpa
    

this one?

> ---
>  drivers/vhost/vdpa.c | 28 ++++++----------------------
>  1 file changed, 6 insertions(+), 22 deletions(-)
> 
> diff --git a/drivers/vhost/vdpa.c b/drivers/vhost/vdpa.c
> index 26f166a8192e..044e1f54582a 100644
> --- a/drivers/vhost/vdpa.c
> +++ b/drivers/vhost/vdpa.c
> @@ -122,8 +122,12 @@ static void vhost_vdpa_setup_vq_irq(struct vhost_vdpa 
> *v, u16 qid)
>       struct vdpa_device *vdpa = v->vdpa;
>       int ret, irq;
>  
> -     spin_lock(&vq->call_ctx.ctx_lock);
> +     if (!ops->get_vq_irq)
> +             return;
> +
>       irq = ops->get_vq_irq(vdpa, qid);
> +     spin_lock(&vq->call_ctx.ctx_lock);
> +     irq_bypass_unregister_producer(&vq->call_ctx.producer);
>       if (!vq->call_ctx.ctx || irq < 0) {
>               spin_unlock(&vq->call_ctx.ctx_lock);
>               return;
> @@ -144,26 +148,6 @@ static void vhost_vdpa_unsetup_vq_irq(struct vhost_vdpa 
> *v, u16 qid)
>       spin_unlock(&vq->call_ctx.ctx_lock);
>  }
>  
> -static void vhost_vdpa_update_vq_irq(struct vhost_virtqueue *vq)
> -{
> -     spin_lock(&vq->call_ctx.ctx_lock);
> -     /*
> -      * if it has a non-zero irq, means there is a
> -      * previsouly registered irq_bypass_producer,
> -      * we should update it when ctx (its token)
> -      * changes.
> -      */
> -     if (!vq->call_ctx.producer.irq) {
> -             spin_unlock(&vq->call_ctx.ctx_lock);
> -             return;
> -     }
> -
> -     irq_bypass_unregister_producer(&vq->call_ctx.producer);
> -     vq->call_ctx.producer.token = vq->call_ctx.ctx;
> -     irq_bypass_register_producer(&vq->call_ctx.producer);
> -     spin_unlock(&vq->call_ctx.ctx_lock);
> -}
> -
>  static void vhost_vdpa_reset(struct vhost_vdpa *v)
>  {
>       struct vdpa_device *vdpa = v->vdpa;
> @@ -452,7 +436,7 @@ static long vhost_vdpa_vring_ioctl(struct vhost_vdpa *v, 
> unsigned int cmd,
>                       cb.private = NULL;
>               }
>               ops->set_vq_cb(vdpa, idx, &cb);
> -             vhost_vdpa_update_vq_irq(vq);
> +             vhost_vdpa_setup_vq_irq(v, idx);
>               break;
>  
>       case VHOST_SET_VRING_NUM:
> -- 
> 2.18.4

Reply via email to