On Wed, Feb 19, 2025 at 09:52:35AM +0800, oenhan@gmail.com wrote:
> From: Huaitong Han <hanht2@chinatelecom.cn>
>
> The vring call fd is set even when the guest does not use MSIX (e.g., virtio
> PMD). This results in unnecessary CPU overhead for handling virtio interrupts.
> The previous patch only optimized the condition when query_queue_notifier was
> enabled and the vector was unset. However, if query_queue_notifier is disabled,
> the vring call FD should also be unset to avoid this inefficiency.
>
> Fixes: 96a3d98d2c ("vhost: don't set vring call if no vector")
>
> Reported-by: Zhiyuan Yuan <yuanzhiyuan@chinatelecom.cn>
> Signed-off-by: Huaitong Han <hanht2@chinatelecom.cn>
Fails make check:
https://gitlab.com/mstredhat/qemu/-/jobs/9201935243
how was this tested? Pls include data on testing in the commit log.
> ---
> v2: - add Fixes tag
> - cc qemu-stable@nongnu.org
>
> hw/virtio/vhost.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/hw/virtio/vhost.c b/hw/virtio/vhost.c
> index 6aa72fd434..d17e7cc6fe 100644
> --- a/hw/virtio/vhost.c
> +++ b/hw/virtio/vhost.c
> @@ -1342,8 +1342,8 @@ int vhost_virtqueue_start(struct vhost_dev *dev,
> }
>
> if (k->query_guest_notifiers &&
> - k->query_guest_notifiers(qbus->parent) &&
> - virtio_queue_vector(vdev, idx) == VIRTIO_NO_VECTOR) {
> + (!k->query_guest_notifiers(qbus->parent) ||
> + virtio_queue_vector(vdev, idx) == VIRTIO_NO_VECTOR)) {
> file.fd = -1;
> r = dev->vhost_ops->vhost_set_vring_call(dev, &file);
> if (r) {
> --
> 2.43.5