]> pilppa.com Git - linux-2.6-omap-h63xx.git/commitdiff
KVM: ppc: e500: Fix the bug that mas0 update to wrong value when read TLB entry
authorLiu Yu <yu.liu@freescale.com>
Tue, 17 Mar 2009 08:57:45 +0000 (16:57 +0800)
committerAvi Kivity <avi@redhat.com>
Tue, 24 Mar 2009 09:03:14 +0000 (11:03 +0200)
Should clear and then update the next victim area here.

Guest kernel only read TLB1 when startup kernel,
this bug result in an extra 4K TLB1 mapping in guest from 0x0 to 0x0.

As the problem has no impact to bootup a guest,
we didn't notice it before.

Signed-off-by: Liu Yu <yu.liu@freescale.com>
Signed-off-by: Avi Kivity <avi@redhat.com>
arch/powerpc/kvm/e500_tlb.c

index 72386ddbd9d5a1a1d64d4b776177e77958490325..ec933209e8af2c479519c84e187bf83d2e5c5435 100644 (file)
@@ -448,7 +448,7 @@ int kvmppc_e500_emul_tlbre(struct kvm_vcpu *vcpu)
        esel = get_tlb_esel(vcpu_e500, tlbsel);
 
        gtlbe = &vcpu_e500->guest_tlb[tlbsel][esel];
-       vcpu_e500->mas0 &= MAS0_NV(0);
+       vcpu_e500->mas0 &= ~MAS0_NV(~0);
        vcpu_e500->mas0 |= MAS0_NV(vcpu_e500->guest_tlb_nv[tlbsel]);
        vcpu_e500->mas1 = gtlbe->mas1;
        vcpu_e500->mas2 = gtlbe->mas2;