search for: vhost_vdpa_unsetup_vq_irq

Displaying 12 results from an estimated 12 matches for "vhost_vdpa_unsetup_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...