This allows to drop routes created by kvm_irqchip_add_irq/msi_route again. Signed-off-by: Jan Kiszka <jan.kiszka@xxxxxxxxxxx> --- kvm-all.c | 8 ++++---- kvm-stub.c | 4 ++++ kvm.h | 1 + 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/kvm-all.c b/kvm-all.c index f45b852..e3ffc91 100644 --- a/kvm-all.c +++ b/kvm-all.c @@ -955,19 +955,19 @@ int kvm_irqchip_commit_routes(KVMState *s) return kvm_vm_ioctl(s, KVM_SET_GSI_ROUTING, s->irq_routes); } -static void kvm_release_gsi(KVMState *s, int gsi) +void kvm_irqchip_release_virq(KVMState *s, int virq) { struct kvm_irq_routing_entry *e; int i; for (i = 0; i < s->irq_routes->nr; i++) { e = &s->irq_routes->entries[i]; - if (e->gsi == gsi) { + if (e->gsi == virq) { s->irq_routes->nr--; *e = s->irq_routes->entries[s->irq_routes->nr]; } } - clear_gsi(s, gsi); + clear_gsi(s, virq); } static unsigned int kvm_hash_msi(uint32_t data) @@ -984,7 +984,7 @@ static void kvm_flush_dynamic_msi_routes(KVMState *s) for (hash = 0; hash < KVM_MSI_HASHTAB_SIZE; hash++) { QTAILQ_FOREACH_SAFE(route, &s->msi_hashtab[hash], entry, next) { - kvm_release_gsi(s, route->kroute.gsi); + kvm_irqchip_release_virq(s, route->kroute.gsi); QTAILQ_REMOVE(&s->msi_hashtab[hash], route, entry); g_free(route); } diff --git a/kvm-stub.c b/kvm-stub.c index db3a7dc..ec351d9 100644 --- a/kvm-stub.c +++ b/kvm-stub.c @@ -136,3 +136,7 @@ int kvm_irqchip_add_msi_route(KVMState *s, MSIMessage msg) { return -ENOSYS; } + +void kvm_irqchip_release_virq(KVMState *s, int virq) +{ +} diff --git a/kvm.h b/kvm.h index 67df1f1..1779e73 100644 --- a/kvm.h +++ b/kvm.h @@ -215,4 +215,5 @@ int kvm_set_ioeventfd_mmio(int fd, uint32_t adr, uint32_t val, bool assign, int kvm_set_ioeventfd_pio_word(int fd, uint16_t adr, uint16_t val, bool assign); int kvm_irqchip_add_msi_route(KVMState *s, MSIMessage msg); +void kvm_irqchip_release_virq(KVMState *s, int virq); #endif -- 1.7.3.4 -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html