diff options
| author | Anthony Liguori <aliguori@us.ibm.com> | 2012-07-18 14:44:43 -0500 |
|---|---|---|
| committer | Anthony Liguori <aliguori@us.ibm.com> | 2012-07-18 14:44:43 -0500 |
| commit | 09f06a6c603ce64284287d32f6ffadaaa5064850 (patch) | |
| tree | 176bbc325a87eb4961ec8605e75d326746e7c9bb /kvm-all.c | |
| parent | 513e6bde4fa551c293e7d346e27b618b57a4087a (diff) | |
| parent | 15b2bd1847239fe0b4a1041b69a631741d2e273a (diff) | |
| download | focaccia-qemu-09f06a6c603ce64284287d32f6ffadaaa5064850.tar.gz focaccia-qemu-09f06a6c603ce64284287d32f6ffadaaa5064850.zip | |
Merge remote-tracking branch 'qemu-kvm/uq/master' into staging
* qemu-kvm/uq/master: virtio: move common irqfd handling out of virtio-pci virtio: move common ioeventfd handling out of virtio-pci event_notifier: add event_notifier_set_handler memory: pass EventNotifier, not eventfd ivshmem: wrap ivshmem_del_eventfd loops with transaction ivshmem: use EventNotifier and memory API event_notifier: add event_notifier_init_fd event_notifier: remove event_notifier_test event_notifier: add event_notifier_set apic: Defer interrupt updates to VCPU thread apic: Reevaluate pending interrupts on LVT_LINT0 changes apic: Resolve potential endless loop around apic_update_irq kvm: expose tsc deadline timer feature to guest kvm_pv_eoi: add flag support kvm: Don't abort on kvm_irqchip_add_msi_route()
Diffstat (limited to 'kvm-all.c')
| -rw-r--r-- | kvm-all.c | 31 |
1 files changed, 24 insertions, 7 deletions
diff --git a/kvm-all.c b/kvm-all.c index 1016ca49b1..2148b20bdb 100644 --- a/kvm-all.c +++ b/kvm-all.c @@ -32,6 +32,7 @@ #include "bswap.h" #include "memory.h" #include "exec-memory.h" +#include "event_notifier.h" /* This check must be after config-host.h is included */ #ifdef CONFIG_EVENTFD @@ -800,23 +801,29 @@ static void kvm_io_ioeventfd_del(MemoryRegionSection *section, static void kvm_eventfd_add(MemoryListener *listener, MemoryRegionSection *section, - bool match_data, uint64_t data, int fd) + bool match_data, uint64_t data, + EventNotifier *e) { if (section->address_space == get_system_memory()) { - kvm_mem_ioeventfd_add(section, match_data, data, fd); + kvm_mem_ioeventfd_add(section, match_data, data, + event_notifier_get_fd(e)); } else { - kvm_io_ioeventfd_add(section, match_data, data, fd); + kvm_io_ioeventfd_add(section, match_data, data, + event_notifier_get_fd(e)); } } static void kvm_eventfd_del(MemoryListener *listener, MemoryRegionSection *section, - bool match_data, uint64_t data, int fd) + bool match_data, uint64_t data, + EventNotifier *e) { if (section->address_space == get_system_memory()) { - kvm_mem_ioeventfd_del(section, match_data, data, fd); + kvm_mem_ioeventfd_del(section, match_data, data, + event_notifier_get_fd(e)); } else { - kvm_io_ioeventfd_del(section, match_data, data, fd); + kvm_io_ioeventfd_del(section, match_data, data, + event_notifier_get_fd(e)); } } @@ -1142,7 +1149,7 @@ int kvm_irqchip_send_msi(KVMState *s, MSIMessage msg) int kvm_irqchip_add_msi_route(KVMState *s, MSIMessage msg) { - abort(); + return -ENOSYS; } static int kvm_irqchip_assign_irqfd(KVMState *s, int fd, int virq, bool assign) @@ -1156,11 +1163,21 @@ int kvm_irqchip_add_irqfd(KVMState *s, int fd, int virq) return kvm_irqchip_assign_irqfd(s, fd, virq, true); } +int kvm_irqchip_add_irq_notifier(KVMState *s, EventNotifier *n, int virq) +{ + return kvm_irqchip_add_irqfd(s, event_notifier_get_fd(n), virq); +} + int kvm_irqchip_remove_irqfd(KVMState *s, int fd, int virq) { return kvm_irqchip_assign_irqfd(s, fd, virq, false); } +int kvm_irqchip_remove_irq_notifier(KVMState *s, EventNotifier *n, int virq) +{ + return kvm_irqchip_remove_irqfd(s, event_notifier_get_fd(n), virq); +} + static int kvm_irqchip_create(KVMState *s) { QemuOptsList *list = qemu_find_opts("machine"); |