Displaying 12 results from an estimated 12 matches for "vhost_vdpa_unsetup_vq_irq".
Did you mean:
vhost_vdpa_setup_vq_irq
2020 Aug 05
0
[PATCH V5 4/6] vhost_vdpa: implement IRQ offloading in vhost_vdpa
...t;>>> +??? vq->call_ctx.producer.irq = irq;
>>>>> +??? ret = irq_bypass_register_producer(&vq->call_ctx.producer);
>>>>> +??? spin_unlock(&vq->call_ctx.ctx_lock);
>>>>> +}
>>>>> +
>>>>> +static void vhost_vdpa_unsetup_vq_irq(struct vhost_vdpa *v, u16 qid)
>>>>> +{
>>>>> +??? struct vhost_virtqueue *vq = &v->vqs[qid];
>>>>> +
>>>>> +??? spin_lock(&vq->call_ctx.ctx_lock);
>>>>> + irq_bypass_unregister_producer(&vq->call_ctx.pr...
2020 Aug 04
0
[PATCH V5 4/6] vhost_vdpa: implement IRQ offloading in vhost_vdpa
...ock);
> + return;
> + }
> +
> + vq->call_ctx.producer.token = vq->call_ctx.ctx;
> + vq->call_ctx.producer.irq = irq;
> + ret = irq_bypass_register_producer(&vq->call_ctx.producer);
> + spin_unlock(&vq->call_ctx.ctx_lock);
> +}
> +
> +static void vhost_vdpa_unsetup_vq_irq(struct vhost_vdpa *v, u16 qid)
> +{
> + struct vhost_virtqueue *vq = &v->vqs[qid];
> +
> + spin_lock(&vq->call_ctx.ctx_lock);
> + irq_bypass_unregister_producer(&vq->call_ctx.producer);
Any reason for not checking vq->call_ctx.producer.irq as below here?
&...
2020 Aug 04
0
[PATCH V5 4/6] vhost_vdpa: implement IRQ offloading in vhost_vdpa
...ctx.producer.token = vq->call_ctx.ctx;
> +??? vq->call_ctx.producer.irq = irq;
> +??? ret = irq_bypass_register_producer(&vq->call_ctx.producer);
> +??? spin_unlock(&vq->call_ctx.ctx_lock);
> +}
> +
> +static void vhost_vdpa_unsetup_vq_irq(struct vhost_vdpa *v, u16 qid)
> +{
> +??? struct vhost_virtqueue *vq = &v->vqs[qid];
> +
> +??? spin_lock(&vq->call_ctx.ctx_lock);
> +??? irq_bypass_unregister_producer(&vq->call_ctx.producer);
>
>
>
> A...
2020 Aug 05
0
[PATCH V5 4/6] vhost_vdpa: implement IRQ offloading in vhost_vdpa
...ctx.producer.token = vq->call_ctx.ctx;
>>> +??? vq->call_ctx.producer.irq = irq;
>>> +??? ret = irq_bypass_register_producer(&vq->call_ctx.producer);
>>> +??? spin_unlock(&vq->call_ctx.ctx_lock);
>>> +}
>>> +
>>> +static void vhost_vdpa_unsetup_vq_irq(struct vhost_vdpa *v, u16 qid)
>>> +{
>>> +??? struct vhost_virtqueue *vq = &v->vqs[qid];
>>> +
>>> +??? spin_lock(&vq->call_ctx.ctx_lock);
>>> + irq_bypass_unregister_producer(&vq->call_ctx.producer);
>>
>>
>> Any...
2020 Jul 17
0
[PATCH V2 4/6] vhost_vdpa: implement IRQ offloading in vhost_vdpa
...vhost_vdpq_update_vq_irq().
> +
> + vq->call_ctx.producer.token = vq->call_ctx.ctx;
> + vq->call_ctx.producer.irq = irq;
> + ret = irq_bypass_register_producer(&vq->call_ctx.producer);
> + spin_unlock(&vq->call_ctx.ctx_lock);
> +}
> +
> +static void vhost_vdpa_unsetup_vq_irq(struct vdpa_device *dev, int qid)
> +{
> + struct vhost_vdpa *v = vdpa_get_drvdata(dev);
> + struct vhost_virtqueue *vq = &v->vqs[qid];
> +
> + spin_lock(&vq->call_ctx.ctx_lock);
> + irq_bypass_unregister_producer(&vq->call_ctx.producer);
> + spin_unlock(&a...
2020 Jul 28
0
[PATCH V4 4/6] vhost_vdpa: implement IRQ offloading in vhost_vdpa
...ock);
> + return;
> + }
> +
> + vq->call_ctx.producer.token = vq->call_ctx.ctx;
> + vq->call_ctx.producer.irq = irq;
> + ret = irq_bypass_register_producer(&vq->call_ctx.producer);
> + spin_unlock(&vq->call_ctx.ctx_lock);
> +}
> +
> +static void vhost_vdpa_unsetup_vq_irq(struct vhost_vdpa *v, int qid)
> +{
> + struct vhost_virtqueue *vq = &v->vqs[qid];
> +
> + spin_lock(&vq->call_ctx.ctx_lock);
> + irq_bypass_unregister_producer(&vq->call_ctx.producer);
> + spin_unlock(&vq->call_ctx.ctx_lock);
> +}
> +
> +stati...
2020 Aug 05
0
[PATCH 2/2] vhost_vdpa: unified set_vq_irq() and update_vq_irq()
...gt;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
> - * p...
2020 Sep 09
0
[PATCH] vhost_vdpa: remove unnecessary spin_lock in vhost_vring_call
...t; return;
> - }
>
> vq->call_ctx.producer.token = vq->call_ctx.ctx;
> vq->call_ctx.producer.irq = irq;
> ret = irq_bypass_register_producer(&vq->call_ctx.producer);
> - spin_unlock(&vq->call_ctx.ctx_lock);
> }
>
> static void vhost_vdpa_unsetup_vq_irq(struct vhost_vdpa *v, u16 qid)
> {
> struct vhost_virtqueue *vq = &v->vqs[qid];
>
> - spin_lock(&vq->call_ctx.ctx_lock);
> irq_bypass_unregister_producer(&vq->call_ctx.producer);
> - spin_unlock(&vq->call_ctx.ctx_lock);
> }
>
>...
2020 Jul 13
0
[PATCH 3/7] vhost_vdpa: implement IRQ offloading functions in vhost_vdpa
...ikely(ret))
> + vq_err(vq,
> + "irq bypass producer (token %p registration fails: %d\n",
> + vq->call_ctx.producer.token, ret);
Not sure this deserves a vq_err(), irq will be relayed through eventfd
if irq bypass manager can't work.
> +}
> +
> +static void vhost_vdpa_unsetup_vq_irq(struct vdpa_device *dev, int qid)
> +{
> + struct vhost_vdpa *v = vdpa_get_drvdata(dev);
> + struct vhost_virtqueue *vq = &v->vqs[qid];
> +
> + spin_lock(&vq->call_ctx.ctx_lock);
> + irq_bypass_unregister_producer(&vq->call_ctx.producer);
> + spin_unlock(&a...
2020 Jul 15
0
[PATCH 3/7] vhost_vdpa: implement IRQ offloading functions in vhost_vdpa
...gt;>> eventfd if irq bypass manager can't work.
>>> OK, I see vq_err() will eventfd_signal err_ctx than just print a
>>> message, will remove all vq_err().
>>>>
>>>>
>>>>> +}
>>>>> +
>>>>> +static void vhost_vdpa_unsetup_vq_irq(struct vdpa_device *dev,
>>>>> int qid)
>>>>> +{
>>>>> +??? struct vhost_vdpa *v = vdpa_get_drvdata(dev);
>>>>> +??? struct vhost_virtqueue *vq = &v->vqs[qid];
>>>>> +
>>>>> +??? spin_lock(&vq->...
2020 Jul 15
0
[PATCH 3/7] vhost_vdpa: implement IRQ offloading functions in vhost_vdpa
...ure this deserves a vq_err(), irq will be relayed through
>> eventfd if irq bypass manager can't work.
> OK, I see vq_err() will eventfd_signal err_ctx than just print a
> message, will remove all vq_err().
>>
>>
>>> +}
>>> +
>>> +static void vhost_vdpa_unsetup_vq_irq(struct vdpa_device *dev, int
>>> qid)
>>> +{
>>> +??? struct vhost_vdpa *v = vdpa_get_drvdata(dev);
>>> +??? struct vhost_virtqueue *vq = &v->vqs[qid];
>>> +
>>> +??? spin_lock(&vq->call_ctx.ctx_lock);
>>> + irq_bypass_un...
2020 Jul 13
0
[PATCH 4/7] vDPA: implement IRQ offloading helpers in vDPA core
...; --- a/drivers/vhost/vdpa.c
> +++ b/drivers/vhost/vdpa.c
> @@ -1020,6 +1020,8 @@ static void vhost_vdpa_remove(struct vdpa_device *vdpa)
> },
> .probe = vhost_vdpa_probe,
> .remove = vhost_vdpa_remove,
> + .setup_vq_irq = vhost_vdpa_setup_vq_irq,
> + .unsetup_vq_irq = vhost_vdpa_unsetup_vq_irq,
> };
>
> static int __init vhost_vdpa_init(void)
> diff --git a/include/linux/vdpa.h b/include/linux/vdpa.h
> index 239db79..9f9b245 100644
> --- a/include/linux/vdpa.h
> +++ b/include/linux/vdpa.h
> @@ -220,17 +220,28 @@ struct vdpa_device *__vdpa_alloc_device(struc...