Paolo, Please do a second pull from my kvm-ppc-next branch. The main thing here is a new implementation of the in-kernel XICS interrupt controller emulation for POWER9 machines, from Ben Herrenschmidt. POWER9 has a new interrupt controller called XIVE (eXternal Interrupt Virtualization Engine) which is able to deliver interrupts directly to guest virtual CPUs in hardware without hypervisor intervention. With this new code, the guest still sees the old XICS interface but performance is better because the XICS emulation in the host uses the XIVE directly rather than going through a XICS emulation in firmware. The series that implements this was committed to the topic/xive branch in the powerpc tree by Michael Ellerman, and I have merged that into my kvm-ppc-next branch. I would like this to go into 4.12. I know this pull request is somewhat late, but that is mostly because I had 3 weeks vacation this month. I have tested this on POWER9 and also tested that it doesn't break other platforms such as POWER8. The only other thing apart from that is a trivial warning fix. Thanks, Paul. The following changes since commit bd17117bb2af60d4bc44e0f9c859e800a3d99722: Merge tag 'kvm-s390-next-4.12-2' of git://git.kernel.org/pub/scm/linux/kernel/git/kvms390/linux into HEAD (2017-04-21 12:47:47 +0200) are available in the git repository at: git://git.kernel.org/pub/scm/linux/kernel/git/paulus/powerpc kvm-ppc-next for you to fetch changes up to fb7dcf723dd2cb1d5d8f2f49c3023130938848e3: Merge remote-tracking branch 'remotes/powerpc/topic/xive' into kvm-ppc-next (2017-04-28 08:23:16 +1000) ---------------------------------------------------------------- Benjamin Herrenschmidt (11): powerpc/powernv: Add XIVE related definitions to opal-api.h powerpc: Add more PPC bit conversion macros powerpc: Add optional smp_ops->prepare_cpu SMP callback powerpc/smp: Remove migrate_irq() custom implementation powerpc/xive: Native exploitation of the XIVE interrupt controller powerpc/kvm: Massage order of #include powerpc/kvm: Make kvmppc_xics_create_icp static powerpc/kvm: Remove obsolete kvm_vm_ioctl_xics_irq declaration powerpc: Consolidate variants of real-mode MMIOs powerpc: Fixup LPCR:PECE and HEIC setting on POWER9 KVM: PPC: Book3S HV: Native usage of the XIVE interrupt controller Denis Kirjanov (1): KVM: PPC: Book3S HV: Avoid preemptibility warning in module initialization Nicholas Piggin (1): powerpc/64s: Revert setting of LPCR[LPES] on POWER9 Paul Mackerras (1): Merge remote-tracking branch 'remotes/powerpc/topic/xive' into kvm-ppc-next arch/powerpc/include/asm/bitops.h | 8 + arch/powerpc/include/asm/io.h | 98 +- arch/powerpc/include/asm/kvm_book3s_asm.h | 4 +- arch/powerpc/include/asm/kvm_host.h | 28 +- arch/powerpc/include/asm/kvm_ppc.h | 84 +- arch/powerpc/include/asm/opal-api.h | 74 +- arch/powerpc/include/asm/opal.h | 36 + arch/powerpc/include/asm/reg.h | 1 + arch/powerpc/include/asm/smp.h | 2 +- arch/powerpc/include/asm/xive-regs.h | 97 ++ arch/powerpc/include/asm/xive.h | 162 ++ arch/powerpc/include/asm/xmon.h | 2 + arch/powerpc/kernel/asm-offsets.c | 10 + arch/powerpc/kernel/cpu_setup_power.S | 15 +- arch/powerpc/kernel/irq.c | 40 - arch/powerpc/kernel/smp.c | 19 +- arch/powerpc/kvm/Kconfig | 5 + arch/powerpc/kvm/Makefile | 4 +- arch/powerpc/kvm/book3s.c | 83 +- arch/powerpc/kvm/book3s_hv.c | 69 +- arch/powerpc/kvm/book3s_hv_builtin.c | 132 +- arch/powerpc/kvm/book3s_hv_rm_xics.c | 14 +- arch/powerpc/kvm/book3s_hv_rm_xive.c | 47 + arch/powerpc/kvm/book3s_hv_rmhandlers.S | 62 +- arch/powerpc/kvm/book3s_rtas.c | 21 +- arch/powerpc/kvm/book3s_xics.c | 37 +- arch/powerpc/kvm/book3s_xics.h | 7 + arch/powerpc/kvm/book3s_xive.c | 1893 ++++++++++++++++++++++++ arch/powerpc/kvm/book3s_xive.h | 256 ++++ arch/powerpc/kvm/book3s_xive_template.c | 503 +++++++ arch/powerpc/kvm/irq.h | 1 + arch/powerpc/kvm/powerpc.c | 17 +- arch/powerpc/platforms/Kconfig.cputype | 1 + arch/powerpc/platforms/powernv/Kconfig | 1 + arch/powerpc/platforms/powernv/opal-wrappers.S | 15 + arch/powerpc/platforms/powernv/opal.c | 1 + arch/powerpc/platforms/powernv/rng.c | 2 +- arch/powerpc/platforms/powernv/setup.c | 15 +- arch/powerpc/platforms/powernv/smp.c | 39 +- arch/powerpc/sysdev/Kconfig | 1 + arch/powerpc/sysdev/Makefile | 1 + arch/powerpc/sysdev/xics/icp-native.c | 8 +- arch/powerpc/sysdev/xive/Kconfig | 11 + arch/powerpc/sysdev/xive/Makefile | 4 + arch/powerpc/sysdev/xive/common.c | 1432 ++++++++++++++++++ arch/powerpc/sysdev/xive/native.c | 715 +++++++++ arch/powerpc/sysdev/xive/xive-internal.h | 62 + arch/powerpc/xmon/xmon.c | 94 +- include/linux/kvm_host.h | 1 - virt/kvm/kvm_main.c | 4 - 50 files changed, 6014 insertions(+), 224 deletions(-) create mode 100644 arch/powerpc/include/asm/xive-regs.h create mode 100644 arch/powerpc/include/asm/xive.h create mode 100644 arch/powerpc/kvm/book3s_hv_rm_xive.c create mode 100644 arch/powerpc/kvm/book3s_xive.c create mode 100644 arch/powerpc/kvm/book3s_xive.h create mode 100644 arch/powerpc/kvm/book3s_xive_template.c create mode 100644 arch/powerpc/sysdev/xive/Kconfig create mode 100644 arch/powerpc/sysdev/xive/Makefile create mode 100644 arch/powerpc/sysdev/xive/common.c create mode 100644 arch/powerpc/sysdev/xive/native.c create mode 100644 arch/powerpc/sysdev/xive/xive-internal.h