Message ID | 20220203072735.189716-4-lingshan.zhu@intel.com (mailing list archive) |
---|---|
State | Changes Requested |
Headers | show |
Series | vDPA/ifcvf: implement shared IRQ feature | expand |
Context | Check | Description |
---|---|---|
netdev/tree_selection | success | Not a local patch |
在 2022/2/3 下午3:27, Zhu Lingshan 写道: > When irq number is negative(e.g., -EINVAL), the virtqueue > may be disabled or the virtqueues are sharing a device irq. > In such case, we should not setup irq offloading for a virtqueue. > > Signed-off-by: Zhu Lingshan <lingshan.zhu@intel.com> > --- > drivers/vhost/vdpa.c | 4 ++++ > 1 file changed, 4 insertions(+) > > diff --git a/drivers/vhost/vdpa.c b/drivers/vhost/vdpa.c > index 851539807bc9..c4fcacb0de3a 100644 > --- a/drivers/vhost/vdpa.c > +++ b/drivers/vhost/vdpa.c > @@ -96,6 +96,10 @@ static void vhost_vdpa_setup_vq_irq(struct vhost_vdpa *v, u16 qid) > if (!ops->get_vq_irq) > return; > > + irq = ops->get_vq_irq(vdpa, qid); > + if (irq < 0) > + return; > + > irq = ops->get_vq_irq(vdpa, qid); So the get_vq_irq() will be called twice? > irq_bypass_unregister_producer(&vq->call_ctx.producer); > if (!vq->call_ctx.ctx || irq < 0) We're already checked irq against 0 here. Thanks
On 2/14/2022 2:28 PM, Jason Wang wrote: > > 在 2022/2/3 下午3:27, Zhu Lingshan 写道: >> When irq number is negative(e.g., -EINVAL), the virtqueue >> may be disabled or the virtqueues are sharing a device irq. >> In such case, we should not setup irq offloading for a virtqueue. >> >> Signed-off-by: Zhu Lingshan <lingshan.zhu@intel.com> >> --- >> drivers/vhost/vdpa.c | 4 ++++ >> 1 file changed, 4 insertions(+) >> >> diff --git a/drivers/vhost/vdpa.c b/drivers/vhost/vdpa.c >> index 851539807bc9..c4fcacb0de3a 100644 >> --- a/drivers/vhost/vdpa.c >> +++ b/drivers/vhost/vdpa.c >> @@ -96,6 +96,10 @@ static void vhost_vdpa_setup_vq_irq(struct >> vhost_vdpa *v, u16 qid) >> if (!ops->get_vq_irq) >> return; >> + irq = ops->get_vq_irq(vdpa, qid); >> + if (irq < 0) >> + return; >> + >> irq = ops->get_vq_irq(vdpa, qid); > > > So the get_vq_irq() will be called twice? yes, the latter one should be removed > > >> irq_bypass_unregister_producer(&vq->call_ctx.producer); >> if (!vq->call_ctx.ctx || irq < 0) > > > We're already checked irq against 0 here. sure, will remove this Thanks! > > > Thanks > >
diff --git a/drivers/vhost/vdpa.c b/drivers/vhost/vdpa.c index 851539807bc9..c4fcacb0de3a 100644 --- a/drivers/vhost/vdpa.c +++ b/drivers/vhost/vdpa.c @@ -96,6 +96,10 @@ static void vhost_vdpa_setup_vq_irq(struct vhost_vdpa *v, u16 qid) if (!ops->get_vq_irq) return; + irq = ops->get_vq_irq(vdpa, qid); + if (irq < 0) + return; + irq = ops->get_vq_irq(vdpa, qid); irq_bypass_unregister_producer(&vq->call_ctx.producer); if (!vq->call_ctx.ctx || irq < 0)
When irq number is negative(e.g., -EINVAL), the virtqueue may be disabled or the virtqueues are sharing a device irq. In such case, we should not setup irq offloading for a virtqueue. Signed-off-by: Zhu Lingshan <lingshan.zhu@intel.com> --- drivers/vhost/vdpa.c | 4 ++++ 1 file changed, 4 insertions(+)