Re: [PATCH] virtio_net: Enable MSI-X vector for ctrl queue
From: Jason Wang <hidden>
Date: 2021-06-21 06:22:28
Also in:
lkml, virtualization
在 2021/6/18 下午8:38, Michael S. Tsirkin 写道:
On Fri, Jun 18, 2021 at 04:26:25PM +0900, Keiichi Watanabe wrote:quoted
When we use vhost-user backend on the host, MSI-X vector should be set so that the vmm can get an irq FD and send it to the backend device process with vhost-user protocol. Since whether the vector is set for a queue is determined depending on the queue has a callback, this commit sets an empty callback for virtio-net's control queue. Signed-off-by: Keiichi Watanabe <redacted>I'm confused by this explanation. If the vmm wants to get an interrupt it can do so - why change the guest driver?
+1, it sounds like a bug in the backend or we probably need more context here. Thanks
quoted
--- drivers/net/virtio_net.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-)diff --git a/drivers/net/virtio_net.c b/drivers/net/virtio_net.c index 11f722460513..002e3695d4b3 100644 --- a/drivers/net/virtio_net.c +++ b/drivers/net/virtio_net.c@@ -2696,6 +2696,11 @@ static void virtnet_del_vqs(struct virtnet_info *vi) virtnet_free_queues(vi); } +static void virtnet_ctrlq_done(struct virtqueue *rvq) +{ + /* Do nothing */ +} + /* How large should a single buffer be so a queue full of these can fit at * least one full packet? * Logic below assumes the mergeable buffer header is used.@@ -2748,7 +2753,7 @@ static int virtnet_find_vqs(struct virtnet_info *vi) /* Parameters for control virtqueue, if any */ if (vi->has_cvq) { - callbacks[total_vqs - 1] = NULL; + callbacks[total_vqs - 1] = virtnet_ctrlq_done; names[total_vqs - 1] = "control"; }-- 2.32.0.288.g62a8d224e6-goog