From 3f4e3571c4a11ba12531ed5fb0f291684bebb92a Mon Sep 17 00:00:00 2001 From: Xin Jiang Date: Mon, 16 Oct 2023 14:15:59 +0800 Subject: [PATCH] anolis: KVM: flush the CPU caches only when guest memory is reclaimed ANBZ: #6816 Invalidation happens from invalidate_range_start MMU notifier when any host virtual address changes. If pages mapped to the changed host virtual address are not part of guest memory, it is pointless to call kvm_arch_guest_memory_reclaimed(). Signed-off-by: yangge Signed-off-by: Xin Jiang --- virt/kvm/kvm_main.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c index b2650b45c0b4..f669eefa3301 100644 --- a/virt/kvm/kvm_main.c +++ b/virt/kvm/kvm_main.c @@ -499,7 +499,11 @@ static int kvm_mmu_notifier_invalidate_range_start(struct mmu_notifier *mn, kvm_flush_remote_tlbs(kvm); spin_unlock(&kvm->mmu_lock); - kvm_arch_guest_memory_reclaimed(kvm); + + /* we've to flush the cache before the pages can be freed */ + if (need_tlb_flush) + kvm_arch_guest_memory_reclaimed(kvm); + srcu_read_unlock(&kvm->srcu, idx); return 0; -- Gitee