Right now the code to use external providers (FPU/Altivec/FSX) is rather hacky. We just set the respective feature bit in the guest MSR when the guest requests it and declare it as good. Now, Linux wants to mess around there too, so whenever a process switch occurs, it saves the external provider state and reloads the current thread ones'. Unfortunately, we didn't tell Linux about our guest state. So Linux doesn't even get the chance to swap any of our registers around which means it ends up restoring registers from random processes - and we lose all state. This patchset makes at least FPU and Altivec work. I don't have a VSX machine to test that extension on. While at it, it also fixes some issues I've stumbled across during debug. The basic ideas on how this should work come from Benjamin Herrenschmidt. Thanks a lot for giving input on this one (and all the other times)! Alexander Graf (6): KVM: PPC: Export __giveup_vsx KVM: PPC: Add helper functions to call real mode loaders KVM: PPC: Add support for FPU/Altivec/VSX KVM: PPC: Fix initial GPR settings KVM: PPC: Keep SRR1 flags around in shadow_msr KVM: PPC: Move Shadow MSR calculation to function arch/powerpc/include/asm/kvm_book3s.h | 4 +- arch/powerpc/include/asm/kvm_host.h | 15 ++- arch/powerpc/include/asm/kvm_ppc.h | 10 +- arch/powerpc/kernel/asm-offsets.c | 1 + arch/powerpc/kernel/ppc_ksyms.c | 1 + arch/powerpc/kvm/book3s.c | 223 +++++++++++++++++++++++++++++-- arch/powerpc/kvm/book3s_64_exports.c | 7 + arch/powerpc/kvm/book3s_64_interrupts.S | 2 +- arch/powerpc/kvm/book3s_64_rmhandlers.S | 34 +++++ 9 files changed, 280 insertions(+), 17 deletions(-) -- 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