浏览代码

KVM: ppc: e500: Fix the bug that mas0 update to wrong value when read TLB entry

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>
Liu Yu 16 年之前
父节点
当前提交
bc35cbc85c
共有 1 个文件被更改,包括 1 次插入1 次删除
  1. 1 1
      arch/powerpc/kvm/e500_tlb.c

+ 1 - 1
arch/powerpc/kvm/e500_tlb.c

@@ -448,7 +448,7 @@ int kvmppc_e500_emul_tlbre(struct kvm_vcpu *vcpu)
 	esel = get_tlb_esel(vcpu_e500, tlbsel);
 	esel = get_tlb_esel(vcpu_e500, tlbsel);
 
 
 	gtlbe = &vcpu_e500->guest_tlb[tlbsel][esel];
 	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->mas0 |= MAS0_NV(vcpu_e500->guest_tlb_nv[tlbsel]);
 	vcpu_e500->mas1 = gtlbe->mas1;
 	vcpu_e500->mas1 = gtlbe->mas1;
 	vcpu_e500->mas2 = gtlbe->mas2;
 	vcpu_e500->mas2 = gtlbe->mas2;