This has a lot more implemented, things tidied up, and more things split out. It's also implemented on top of powerpc next and kvm next which have a few prerequisite patches (mainly removing EXSLB). I've got a bunch more things after this including implementing HPT guests with radix host in the "new" path -- whether we ever actually want to do that, or port the legacy path up to C, or just leave it to maintenance mode, I was just testing the waters there and making sure I wasn't doing something fundamentally incompatible with hash. I won't post anything further than this for now because I think it's a good start and gets the total asm code for KVM entry and exit down to about 160 lines plus the shim for the legacy paths. So would like to concentrate on getting this in before juggling things around too much or adding new things. Thanks, Nick Nicholas Piggin (13): powerpc/64s: Remove KVM handler support from CBE_RAS interrupts powerpc/64s: remove KVM SKIP test from instruction breakpoint handler KVM: PPC: Book3S HV: Ensure MSR[ME] is always set in guest MSR KVM: PPC: Book3S 64: remove unused kvmppc_h_protect argument KVM: PPC: Book3S 64: move KVM interrupt entry to a common entry point KVM: PPC: Book3S 64: Move GUEST_MODE_SKIP test into KVM KVM: PPC: Book3S 64: add hcall interrupt handler KVM: PPC: Book3S HV: Move hcall early register setup to KVM KVM: PPC: Book3S HV: Move interrupt early register setup to KVM KVM: PPC: Book3S HV: move bad_host_intr check to HV handler KVM: PPC: Book3S HV: Minimise hcall handler calling convention differences KVM: PPC: Book3S HV: Move radix MMU switching together in the P9 path KVM: PPC: Book3S HV: Implement the rest of the P9 entry/exit handling in C arch/powerpc/include/asm/asm-prototypes.h | 3 +- arch/powerpc/include/asm/exception-64s.h | 13 + arch/powerpc/include/asm/kvm_asm.h | 3 +- arch/powerpc/include/asm/kvm_book3s_64.h | 2 + arch/powerpc/include/asm/kvm_ppc.h | 5 +- arch/powerpc/kernel/exceptions-64s.S | 257 +++---------------- arch/powerpc/kernel/security.c | 5 +- arch/powerpc/kvm/Makefile | 6 + arch/powerpc/kvm/book3s_64_entry.S | 295 ++++++++++++++++++++++ arch/powerpc/kvm/book3s_hv.c | 69 +++-- arch/powerpc/kvm/book3s_hv_builtin.c | 7 + arch/powerpc/kvm/book3s_hv_interrupt.c | 208 +++++++++++++++ arch/powerpc/kvm/book3s_hv_rm_mmu.c | 3 +- arch/powerpc/kvm/book3s_hv_rmhandlers.S | 125 +-------- arch/powerpc/kvm/book3s_segment.S | 7 + arch/powerpc/kvm/book3s_xive.c | 32 +++ 16 files changed, 670 insertions(+), 370 deletions(-) create mode 100644 arch/powerpc/kvm/book3s_64_entry.S create mode 100644 arch/powerpc/kvm/book3s_hv_interrupt.c -- 2.23.0