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