diff --git a/arch/arm64/kvm/hyp/nvhe/tlb.c b/arch/arm64/kvm/hyp/nvhe/tlb.c index 35092e154614..692bd7f881f1 100644 --- a/arch/arm64/kvm/hyp/nvhe/tlb.c +++ b/arch/arm64/kvm/hyp/nvhe/tlb.c @@ -32,13 +32,19 @@ static void enter_vmid_context(struct kvm_s2_mmu *mmu, * to do. */ if (vcpu) { + /* We're in guest context */ if (mmu == vcpu->arch.hw_mmu || WARN_ON(mmu != host_s2_mmu)) return; - } else if (mmu == host_s2_mmu) { - return; + + cxt->mmu = vcpu->arch.hw_mmu; + } else { + /* We're in host context */ + if (mmu == host_s2_mmu) + return; + + cxt->mmu = host_s2_mmu; } - cxt->mmu = mmu; if (cpus_have_final_cap(ARM64_WORKAROUND_SPECULATIVE_AT)) { u64 val;