diff options
author | Paolo Bonzini <pbonzini@redhat.com> | 2020-10-03 11:07:59 +0200 |
---|---|---|
committer | Paolo Bonzini <pbonzini@redhat.com> | 2020-10-03 11:07:59 +0200 |
commit | e2e1a1c86bf32a8d7458b9024f518cf2434414c8 (patch) | |
tree | 8ba4d0c48ebca8c643051058197e85c8f0a615dd | |
parent | KVM: VMX: update PFEC_MASK/PFEC_MATCH together with PF intercept (diff) | |
parent | KVM: arm64: Restore missing ISB on nVHE __tlb_switch_to_guest (diff) | |
download | linux-e2e1a1c86bf32a8d7458b9024f518cf2434414c8.tar.xz linux-e2e1a1c86bf32a8d7458b9024f518cf2434414c8.zip |
Merge tag 'kvmarm-fixes-5.9-3' of git://git.kernel.org/pub/scm/linux/kernel/git/kvmarm/kvmarm into kvm-master
KVM/arm64 fixes for 5.9, take #3
- Fix synchronization of VTTBR update on TLB invalidation for nVHE systems
-rw-r--r-- | arch/arm64/kvm/hyp/nvhe/tlb.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/arch/arm64/kvm/hyp/nvhe/tlb.c b/arch/arm64/kvm/hyp/nvhe/tlb.c index 69eae608d670..b15d65a42042 100644 --- a/arch/arm64/kvm/hyp/nvhe/tlb.c +++ b/arch/arm64/kvm/hyp/nvhe/tlb.c @@ -31,7 +31,14 @@ static void __tlb_switch_to_guest(struct kvm_s2_mmu *mmu, isb(); } + /* + * __load_guest_stage2() includes an ISB only when the AT + * workaround is applied. Take care of the opposite condition, + * ensuring that we always have an ISB, but not two ISBs back + * to back. + */ __load_guest_stage2(mmu); + asm(ALTERNATIVE("isb", "nop", ARM64_WORKAROUND_SPECULATIVE_AT)); } static void __tlb_switch_to_host(struct tlb_inv_context *cxt) |