From: Shameer Kolothum Date: Tue, 13 Jun 2023 14:09:43 +0000 (+0100) Subject: vfio/pci: Call vfio_prepare_kvm_msi_virq_batch() in MSI retry path X-Git-Tag: qemu-xen-4.18.0-rc5~79 X-Git-Url: http://xenbits.xensource.com/gitweb?a=commitdiff_plain;h=383fb8c05c4a5db4b7afda11c1752a80b1e74be1;p=qemu-xen.git vfio/pci: Call vfio_prepare_kvm_msi_virq_batch() in MSI retry path When vfio_enable_vectors() returns with less than requested nr_vectors we retry with what kernel reported back. But the retry path doesn't call vfio_prepare_kvm_msi_virq_batch() and this results in, qemu-system-aarch64: vfio: Error: Failed to enable 4 MSI vectors, retry with 1 qemu-system-aarch64: ../hw/vfio/pci.c:602: vfio_commit_kvm_msi_virq_batch: Assertion `vdev->defer_kvm_irq_routing' failed Fixes: dc580d51f7dd ("vfio: defer to commit kvm irq routing when enable msi/msix") Reviewed-by: Longpeng Signed-off-by: Shameer Kolothum Reviewed-by: Cédric Le Goater Signed-off-by: Cédric Le Goater (cherry picked from commit c17408892319712c12357e5d1c6b305499c58c2a) Signed-off-by: Michael Tokarev --- diff --git a/hw/vfio/pci.c b/hw/vfio/pci.c index d5670c163e..4773cc1f2b 100644 --- a/hw/vfio/pci.c +++ b/hw/vfio/pci.c @@ -663,6 +663,8 @@ static void vfio_msi_enable(VFIOPCIDevice *vdev) vfio_disable_interrupts(vdev); + vdev->nr_vectors = msi_nr_vectors_allocated(&vdev->pdev); +retry: /* * Setting vector notifiers needs to enable route for each vector. * Deferring to commit the KVM routes once rather than per vector @@ -670,8 +672,6 @@ static void vfio_msi_enable(VFIOPCIDevice *vdev) */ vfio_prepare_kvm_msi_virq_batch(vdev); - vdev->nr_vectors = msi_nr_vectors_allocated(&vdev->pdev); -retry: vdev->msi_vectors = g_new0(VFIOMSIVector, vdev->nr_vectors); for (i = 0; i < vdev->nr_vectors; i++) {