In this revision, I'm now trying the approach of backend/frontend split-ups for the affected IRQ chips. That means we keep a single qdev device description but fork off specific logic early during device init. The backends support this by providing hooks that user space and KVM models can implement differently. The result is slightly larger and comes with the not really beautiful ioapic.kvm_gsi_base property but should otherwise meet expectations. Comments? PS: Series is still against old uq/master, therefore containing patches that took/will take different routes. Jan Kiszka (16): msi: Generalize msix_supported to msi_supported kvm: Move kvmclock into hw/kvm folder apic: Stop timer on reset apic: Introduce backend/frontend infrastructure for KVM reuse apic: Open-code timer save/restore i8259: Introduce backend/frontend infrastructure for KVM reuse ioapic: Convert to memory API ioapic: Reject non-dword accesses to IOWIN register ioapic: Introduce backend/frontend infrastructure for KVM reuse memory: Introduce memory_region_init_reservation kvm: Introduce core services for in-kernel irqchip support kvm: x86: Establish IRQ0 override control kvm: x86: Add user space part for in-kernel APIC kvm: x86: Add user space part for in-kernel i8259 kvm: x86: Add user space part for in-kernel IOAPIC kvm: Arm in-kernel irqchip support Makefile.objs | 2 +- Makefile.target | 6 +- configure | 1 + hw/apic.c | 303 ++++------------------------------------ hw/apic_common.c | 305 ++++++++++++++++++++++++++++++++++++++++ hw/apic_internal.h | 121 ++++++++++++++++ hw/i8259.c | 127 ++--------------- hw/i8259_common.c | 173 +++++++++++++++++++++++ hw/i8259_internal.h | 82 +++++++++++ hw/ioapic.c | 160 ++++------------------ hw/ioapic_common.c | 138 ++++++++++++++++++ hw/ioapic_internal.h | 106 ++++++++++++++ hw/kvm/apic.c | 129 +++++++++++++++++ hw/{kvmclock.c => kvm/clock.c} | 4 +- hw/{kvmclock.h => kvm/clock.h} | 0 hw/kvm/i8259.c | 126 +++++++++++++++++ hw/kvm/ioapic.c | 101 +++++++++++++ hw/msi.c | 8 + hw/msi.h | 2 + hw/msix.c | 9 +- hw/msix.h | 2 - hw/pc.c | 19 ++- hw/pc.h | 1 + hw/pc_piix.c | 66 ++++++++- kvm-all.c | 154 ++++++++++++++++++++ kvm-stub.c | 5 + kvm.h | 13 ++ memory.c | 36 +++++ memory.h | 16 ++ qemu-config.c | 4 + qemu-options.hx | 5 +- sysemu.h | 1 - target-i386/kvm.c | 19 +++ trace-events | 2 +- vl.c | 1 - 35 files changed, 1694 insertions(+), 553 deletions(-) create mode 100644 hw/apic_common.c create mode 100644 hw/apic_internal.h create mode 100644 hw/i8259_common.c create mode 100644 hw/i8259_internal.h create mode 100644 hw/ioapic_common.c create mode 100644 hw/ioapic_internal.h create mode 100644 hw/kvm/apic.c rename hw/{kvmclock.c => kvm/clock.c} (98%) rename hw/{kvmclock.h => kvm/clock.h} (100%) create mode 100644 hw/kvm/i8259.c create mode 100644 hw/kvm/ioapic.c -- 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