On Tue, Apr 07, 2026 at 08:39:02AM -0400, Andrew Stellman wrote:
> vp_find_vqs_intx() sets up the admin virtqueue using queue_idx++
> (a sequential counter) instead of avq->vq_index (the actual transport
> queue index). The MSI-X path in vp_find_vqs_msix() correctly uses
> avq->vq_index. When the admin VQ index does not equal the next
> sequential queue_idx value, the INTx path binds the admin VQ to the
> wrong transport queue.
> 
> Use avq->vq_index to match the MSI-X path.
> 
> Signed-off-by: Andrew Stellman <[email protected]>


Cc Jiri. fixes tag?

> ---
>  drivers/virtio/virtio_pci_common.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/virtio/virtio_pci_common.c 
> b/drivers/virtio/virtio_pci_common.c
> index da97b6a..0b9d66b 100644
> --- a/drivers/virtio/virtio_pci_common.c
> +++ b/drivers/virtio/virtio_pci_common.c
> @@ -497,7 +497,7 @@ static int vp_find_vqs_intx(struct virtio_device *vdev, 
> unsigned int nvqs,
>       if (!avq_num)
>               return 0;
>       sprintf(avq->name, "avq.%u", avq->vq_index);
> -     vq = vp_setup_vq(vdev, queue_idx++, vp_modern_avq_done, avq->name,
> +     vq = vp_setup_vq(vdev, avq->vq_index, vp_modern_avq_done, avq->name,
>                        false, VIRTIO_MSI_NO_VECTOR,
>                        &vp_dev->admin_vq.info);
>       if (IS_ERR(vq)) {
> -- 
> 2.34.1


Reply via email to