On Wed, Feb 19, 2025 at 09:52:35AM +0800, oen...@gmail.com wrote:
> From: Huaitong Han <han...@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 <yuanzhiy...@chinatelecom.cn>
> Signed-off-by: Huaitong Han <han...@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-sta...@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


Reply via email to