[PATCH 0/6] KVM: PPC: FPU/Altivec/VSX bringup

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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-ppc" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [KVM Development]     [KVM ARM]     [KVM ia64]     [Linux Virtualization]     [Linux USB Devel]     [Linux Video]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Big List of Linux Books]

  Powered by Linux