| From 963bba98e39dac79c697f124f66f7b61e9d161ff Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Tue, 22 Feb 2022 19:54:25 +0800 |
| Subject: vhost_vdpa: don't setup irq offloading when irq_num < 0 |
| |
| From: Zhu Lingshan <lingshan.zhu@intel.com> |
| |
| [ Upstream commit cce0ab2b2a39072d81f98017f7b076f3410ef740 ] |
| |
| 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> |
| Link: https://lore.kernel.org/r/20220222115428.998334-3-lingshan.zhu@intel.com |
| Signed-off-by: Michael S. Tsirkin <mst@redhat.com> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| drivers/vhost/vdpa.c | 5 ++++- |
| 1 file changed, 4 insertions(+), 1 deletion(-) |
| |
| diff --git a/drivers/vhost/vdpa.c b/drivers/vhost/vdpa.c |
| index ec5249e8c32d..05f5fd2af58f 100644 |
| --- a/drivers/vhost/vdpa.c |
| +++ b/drivers/vhost/vdpa.c |
| @@ -97,8 +97,11 @@ static void vhost_vdpa_setup_vq_irq(struct vhost_vdpa *v, u16 qid) |
| return; |
| |
| irq = ops->get_vq_irq(vdpa, qid); |
| + if (irq < 0) |
| + return; |
| + |
| irq_bypass_unregister_producer(&vq->call_ctx.producer); |
| - if (!vq->call_ctx.ctx || irq < 0) |
| + if (!vq->call_ctx.ctx) |
| return; |
| |
| vq->call_ctx.producer.token = vq->call_ctx.ctx; |
| -- |
| 2.35.1 |
| |