KVM: PPC: Book3S HV: Native usage of the XIVE interrupt controller
authorBenjamin Herrenschmidt <benh@kernel.crashing.org>
Wed, 5 Apr 2017 07:54:56 +0000 (17:54 +1000)
committerMichael Ellerman <mpe@ellerman.id.au>
Thu, 27 Apr 2017 11:37:29 +0000 (21:37 +1000)
commit5af50993850a48ba749b122173d789ea90976c72
tree3c5f1707c434f1a6271b69d27231ba799e5fd4ed
parent8bf8f2e8c786f37991bd27332c75edcc524d2232
KVM: PPC: Book3S HV: Native usage of the XIVE interrupt controller

This patch makes KVM capable of using the XIVE interrupt controller
to provide the standard PAPR "XICS" style hypercalls. It is necessary
for proper operations when the host uses XIVE natively.

This has been lightly tested on an actual system, including PCI
pass-through with a TG3 device.

Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
[mpe: Cleanup pr_xxx(), unsplit pr_xxx() strings, etc., fix build
 failures by adding KVM_XIVE which depends on KVM_XICS and XIVE, and
 adding empty stubs for the kvm_xive_xxx() routines, fixup subject,
 integrate fixes from Paul for building PR=y HV=n]
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
26 files changed:
arch/powerpc/include/asm/kvm_book3s_asm.h
arch/powerpc/include/asm/kvm_host.h
arch/powerpc/include/asm/kvm_ppc.h
arch/powerpc/include/asm/xive.h
arch/powerpc/kernel/asm-offsets.c
arch/powerpc/kvm/Kconfig
arch/powerpc/kvm/Makefile
arch/powerpc/kvm/book3s.c
arch/powerpc/kvm/book3s_hv.c
arch/powerpc/kvm/book3s_hv_builtin.c
arch/powerpc/kvm/book3s_hv_rm_xics.c
arch/powerpc/kvm/book3s_hv_rm_xive.c [new file with mode: 0644]
arch/powerpc/kvm/book3s_hv_rmhandlers.S
arch/powerpc/kvm/book3s_rtas.c
arch/powerpc/kvm/book3s_xics.c
arch/powerpc/kvm/book3s_xics.h
arch/powerpc/kvm/book3s_xive.c [new file with mode: 0644]
arch/powerpc/kvm/book3s_xive.h [new file with mode: 0644]
arch/powerpc/kvm/book3s_xive_template.c [new file with mode: 0644]
arch/powerpc/kvm/irq.h
arch/powerpc/kvm/powerpc.c
arch/powerpc/platforms/powernv/opal.c
arch/powerpc/sysdev/xive/common.c
arch/powerpc/sysdev/xive/native.c
include/linux/kvm_host.h
virt/kvm/kvm_main.c