On Mon, May 13, 2019 at 10:42:31AM +0200, Cédric Le Goater wrote: > Hello, > > This is the v4 of the QEMU/KVM patchset. > > The first patches introduce the XIVE KVM device, state synchronization > and migration support under KVM. The second part of the patchset > modifies the XICS and XIVE interrupt models to add KVM support to the > 'dual' IRQ backend. Ok, I've applied this to my tree, and I'm prepping for a pull request right now. > > GitHub trees available here : > > QEMU sPAPR: > > https://github.com/legoater/qemu/commits/xive-next > > Linux/KVM: > > https://github.com/legoater/linux/commits/xive-5.1 > > Thanks, > > C. > > Changes since v3: > > - updates of the kvm headers are synced with commit 0caecf5b0019 > (kvm-ppc-next-5.2-1) in branch kvm-ppc-next. will conflict with > kvm-arm. > - added usage of xive_end_qaddr() helper > - removed KVM_DESTROY_DEVICE control. KVM device is destroyed when > the fd is closed. > - update in kvmppc_xive_source_reset_one() > - introduced a 'init' boolean under ICSState > - removed extra spapr_irq_init_device() in spapr_irq_init_xive() > - reworked slightly the code sequence in xics_kvm_init() creating the > presenters and connecting them to the KVM XICS device. > > Changes since v2: > > - update linux headers to 5.1-rc1 > - rebased on new naming scheme > - rebased on new configuration system > - replaced error_report_err() by warn_report_err() > - added an assert() in spapr_xive_end_to_target() > - moved xive_end_is_valid() check out of kvmppc_xive_set_queue_config() > - dealt with MASKED EAS > - reworked ESB memory operations > - improved KVM_XIVE_EQ_ALWAYS_NOTIFY handling > - removed the capture of the OS CAM line value from KVM > - merged in the handling of pending interrupts while the VM is stopped. > - did an update in ics_set_kvm_state_one() > - removed spapr_ics_create() > - introduced a spapr_irq_init_device() helper > - reworked test on single initialization of the emulated IRQ device > > Changes since v1: > > - Reworked most of the KVM interface > - Reworked *All* hcalls which are now handled at the QEMU level, > possibly extended with a KVM device ioctl when required. > - TIMA and ESB special mapping done on the KVM device fd. > - Tested on nested > - Implemented the device fallback mode when a kernel_irqchip is not > available and not required. Useful on nested to use XIVE. > - Fix device hotplug when VM is stopped (Is this necessary ?) > > > Cédric Le Goater (14): > linux-headers: update linux headers to kvm-ppc-next-5.2-1 > spapr/xive: add KVM support > spapr/xive: add hcall support when under KVM > spapr/xive: add state synchronization with KVM > spapr/xive: introduce a VM state change handler > spapr/xive: add migration support for KVM > spapr/xive: activate KVM support > sysbus: add a sysbus_mmio_unmap() helper > spapr: introduce routines to delete the KVM IRQ device > spapr: check for the activation of the KVM IRQ device > spapr/irq: introduce a spapr_irq_init_device() helper > spapr/irq: initialize the IRQ device only once > ppc/xics: fix irq priority in ics_set_irq_type() > spapr/irq: add KVM support to the 'dual' machine > > include/hw/ppc/spapr_irq.h | 2 + > include/hw/ppc/spapr_xive.h | 39 ++ > include/hw/ppc/xics.h | 1 + > include/hw/ppc/xics_spapr.h | 1 + > include/hw/ppc/xive.h | 14 + > include/hw/sysbus.h | 1 + > linux-headers/asm-powerpc/kvm.h | 46 ++ > linux-headers/linux/kvm.h | 3 + > target/ppc/kvm_ppc.h | 6 + > hw/core/sysbus.c | 10 + > hw/intc/spapr_xive.c | 172 ++++++- > hw/intc/spapr_xive_kvm.c | 827 ++++++++++++++++++++++++++++++++ > hw/intc/xics.c | 10 +- > hw/intc/xics_kvm.c | 113 ++++- > hw/intc/xics_spapr.c | 7 + > hw/intc/xive.c | 44 +- > hw/ppc/spapr_irq.c | 140 ++++-- > target/ppc/kvm.c | 7 + > hw/intc/Makefile.objs | 1 + > hw/ppc/Kconfig | 5 + > 20 files changed, 1384 insertions(+), 65 deletions(-) > create mode 100644 hw/intc/spapr_xive_kvm.c > -- David Gibson | I'll have my music baroque, and my code david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_ _other_ | _way_ _around_! http://www.ozlabs.org/~dgibson