@samitouri / QOSamiQemu / commits / cc2b30223c

accel/accel-irq: add generic commit_route_changes

A generic accel_irqchip_commit_route_changes() fn has been introduced for usage in the MSHV accelerator. The respective kvm_ fn can be removed since we handle the commit op in a generic way. Signed-off-by: Magnus Kulke <magnuskulke@linux.microsoft.com> Link: https://lore.kernel.org/r/20260417105618.3621-7-magnuskulke@linux.microsoft.com Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>

Magnus Kulke committed Apr 17, 2026 at 12:55 UTC cc2b30223cd1bd0c05dca10554fae6626511ddd5
5 files changed +7 -19
accel/accel-irq.c
+3 -7
@@ -45,13 +45,9 @@ int accel_irqchip_update_msi_route(int vector, MSIMessage msg, PCIDevice *dev)
45
46 void accel_irqchip_commit_route_changes(AccelRouteChange *c)
47 {
48 -#ifdef CONFIG_MSHV_IS_POSSIBLE
49 - if (mshv_msi_via_irqfd_enabled()) {
50 - mshv_irqchip_commit_routes();
51 - }
52 -#endif
53 - if (kvm_enabled()) {
54 - kvm_irqchip_commit_route_changes(c);
48 + if (c->changes) {
49 + accel_irqchip_commit_routes();
50 + c->changes = 0;
51 }
52 }
53
hw/misc/ivshmem-pci.c
+1 -1
@@ -436,7 +436,7 @@ static void ivshmem_add_kvm_msi_virq(IVShmemState *s, int vector,
436 error_setg(errp, "kvm_irqchip_add_msi_route failed");
437 return;
438 }
439 - kvm_irqchip_commit_route_changes(&c);
439 + accel_irqchip_commit_route_changes(&c);
440
441 s->msi_vectors[vector].virq = ret;
442 s->msi_vectors[vector].pdev = pdev;
hw/vfio/pci.c
+2 -2
@@ -691,7 +691,7 @@ static int vfio_msix_vector_do_use(PCIDevice *pdev, unsigned int nr,
691 } else {
692 vfio_route_change = accel_irqchip_begin_route_changes();
693 vfio_pci_add_kvm_msi_virq(vdev, vector, nr, true);
694 - kvm_irqchip_commit_route_changes(&vfio_route_change);
694 + accel_irqchip_commit_route_changes(&vfio_route_change);
695 vfio_connect_kvm_msi_virq(vector, nr);
696 }
697 }
@@ -800,7 +800,7 @@ void vfio_pci_commit_kvm_msi_virq_batch(VFIOPCIDevice *vdev)
800 assert(vdev->defer_kvm_irq_routing);
801 vdev->defer_kvm_irq_routing = false;
802
803 - kvm_irqchip_commit_route_changes(&vfio_route_change);
803 + accel_irqchip_commit_route_changes(&vfio_route_change);
804
805 for (i = 0; i < vdev->nr_vectors; i++) {
806 vfio_connect_kvm_msi_virq(&vdev->msi_vectors[i], i);
include/system/kvm.h
-8
@@ -476,14 +476,6 @@ int kvm_irqchip_update_msi_route(KVMState *s, int virq, MSIMessage msg,
476 PCIDevice *dev);
477 void kvm_irqchip_commit_routes(KVMState *s);
478
479 -static inline void kvm_irqchip_commit_route_changes(AccelRouteChange *c)
480 -{
481 - if (c->changes) {
482 - kvm_irqchip_commit_routes(KVM_STATE(c->accel));
483 - c->changes = 0;
484 - }
485 -}
486 -
479 int kvm_irqchip_get_virq(KVMState *s);
480 void kvm_irqchip_release_virq(KVMState *s, int virq);
481
target/i386/kvm/kvm.c
+1 -1
@@ -6690,7 +6690,7 @@ void kvm_arch_init_irq_routing(KVMState *s)
6690 exit(1);
6691 }
6692 }
6693 - kvm_irqchip_commit_route_changes(&c);
6693 + accel_irqchip_commit_route_changes(&c);
6694 }
6695 }
6696