Message ID | 20230630052235.1934154-12-clg@redhat.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | [PULL,01/16] migration: Add switchover ack capability | expand |
30.06.2023 08:22, Cédric Le Goater wrote: > From: Shameer Kolothum <shameerali.kolothum.thodi@huawei.com> > > 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") Is it -stable material? Thanks, /mjt
diff --git a/hw/vfio/pci.c b/hw/vfio/pci.c index 73874a94de12..8fb2c53a63bf 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++) {