forked from Minki/linux
KVM: PPC: E500: Fix clear_tlb_refs
Our mapping code assumes that TLB0 entries are always mapped. However, after calling clear_tlb_refs() this is no longer the case. Map them dynamically if we find an entry unmapped in TLB0. Signed-off-by: Alexander Graf <agraf@suse.de>
This commit is contained in:
parent
cf1c5ca473
commit
2bb890f5ee
@ -1039,8 +1039,12 @@ void kvmppc_mmu_map(struct kvm_vcpu *vcpu, u64 eaddr, gpa_t gpaddr,
|
||||
sesel = 0; /* unused */
|
||||
priv = &vcpu_e500->gtlb_priv[tlbsel][esel];
|
||||
|
||||
kvmppc_e500_setup_stlbe(vcpu, gtlbe, BOOK3E_PAGESZ_4K,
|
||||
&priv->ref, eaddr, &stlbe);
|
||||
/* Only triggers after clear_tlb_refs */
|
||||
if (unlikely(!(priv->ref.flags & E500_TLB_VALID)))
|
||||
kvmppc_e500_tlb0_map(vcpu_e500, esel, &stlbe);
|
||||
else
|
||||
kvmppc_e500_setup_stlbe(vcpu, gtlbe, BOOK3E_PAGESZ_4K,
|
||||
&priv->ref, eaddr, &stlbe);
|
||||
break;
|
||||
|
||||
case 1: {
|
||||
|
Loading…
Reference in New Issue
Block a user