summaryrefslogtreecommitdiffstats
path: root/arch/powerpc/kvm/booke.h
diff options
context:
space:
mode:
authorPaul Mackerras <paulus@samba.org>2013-10-15 20:43:01 +1100
committerAlexander Graf <agraf@suse.de>2014-01-09 10:14:59 +0100
commit09548fdaf32ce77a68e7f9a8a3098c1306b04858 (patch)
tree4f57c5c932068c4aae1ff0aba76dbde7614a73b3 /arch/powerpc/kvm/booke.h
parentb1f0d94c26b64e814243b736f47e7ef40d96432c (diff)
downloadop-kernel-dev-09548fdaf32ce77a68e7f9a8a3098c1306b04858.zip
op-kernel-dev-09548fdaf32ce77a68e7f9a8a3098c1306b04858.tar.gz
KVM: PPC: Use load_fp/vr_state rather than load_up_fpu/altivec
The load_up_fpu and load_up_altivec functions were never intended to be called from C, and do things like modifying the MSR value in their callers' stack frames, which are assumed to be interrupt frames. In addition, on 32-bit Book S they require the MMU to be off. This makes KVM use the new load_fp_state() and load_vr_state() functions instead of load_up_fpu/altivec. This means we can remove the assembler glue in book3s_rmhandlers.S, and potentially fixes a bug on Book E, where load_up_fpu was called directly from C. Signed-off-by: Paul Mackerras <paulus@samba.org> Signed-off-by: Alexander Graf <agraf@suse.de>
Diffstat (limited to 'arch/powerpc/kvm/booke.h')
-rw-r--r--arch/powerpc/kvm/booke.h3
1 files changed, 2 insertions, 1 deletions
diff --git a/arch/powerpc/kvm/booke.h b/arch/powerpc/kvm/booke.h
index 09bfd9b..fe59f22 100644
--- a/arch/powerpc/kvm/booke.h
+++ b/arch/powerpc/kvm/booke.h
@@ -136,7 +136,8 @@ static inline void kvmppc_load_guest_fp(struct kvm_vcpu *vcpu)
{
#ifdef CONFIG_PPC_FPU
if (vcpu->fpu_active && !(current->thread.regs->msr & MSR_FP)) {
- load_up_fpu();
+ enable_kernel_fp();
+ load_fp_state(&current->thread.fp_state);
current->thread.regs->msr |= MSR_FP;
}
#endif
OpenPOWER on IntegriCloud