summaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
authorMihai Caraman <mihai.caraman@freescale.com>2012-10-11 06:13:24 +0000
committerAlexander Graf <agraf@suse.de>2012-12-06 01:34:14 +0100
commit9e2fa646936160eca525bcb80c2cce05faa9b208 (patch)
treea5eb2c919047614fd0723d2f41c6a5f58496d674 /arch
parent8823a8fd0d730612f12a87102503622c01eb2468 (diff)
downloadlinux-9e2fa646936160eca525bcb80c2cce05faa9b208.tar.gz
linux-9e2fa646936160eca525bcb80c2cce05faa9b208.tar.bz2
linux-9e2fa646936160eca525bcb80c2cce05faa9b208.zip
KVM: PPC: e500: Mask MAS2 EPN high 32-bits in 32/64 tlbwe emulation
Mask high 32 bits of MAS2's effective page number in tlbwe emulation for guests running in 32-bit mode. Signed-off-by: Mihai Caraman <mihai.caraman@freescale.com> Signed-off-by: Alexander Graf <agraf@suse.de>
Diffstat (limited to 'arch')
-rw-r--r--arch/powerpc/kvm/e500_tlb.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/arch/powerpc/kvm/e500_tlb.c b/arch/powerpc/kvm/e500_tlb.c
index 7a1472163120..cf3f18012371 100644
--- a/arch/powerpc/kvm/e500_tlb.c
+++ b/arch/powerpc/kvm/e500_tlb.c
@@ -871,6 +871,8 @@ int kvmppc_e500_emul_tlbwe(struct kvm_vcpu *vcpu)
gtlbe->mas1 = vcpu->arch.shared->mas1;
gtlbe->mas2 = vcpu->arch.shared->mas2;
+ if (!(vcpu->arch.shared->msr & MSR_CM))
+ gtlbe->mas2 &= 0xffffffffUL;
gtlbe->mas7_3 = vcpu->arch.shared->mas7_3;
trace_kvm_booke206_gtlb_write(vcpu->arch.shared->mas0, gtlbe->mas1,