aboutsummaryrefslogtreecommitdiffstats
path: root/arch/mips/kvm/mips.c
diff options
context:
space:
mode:
authorPaolo Bonzini <pbonzini@redhat.com>2021-04-02 11:44:56 +0200
committerPaolo Bonzini <pbonzini@redhat.com>2021-04-17 08:31:05 -0400
commit566a0beef52c83f13b67aef02b2bc0aa63c0e0d6 (patch)
tree7dc2f804a74501b36a838c648e785773cb4a25ed /arch/mips/kvm/mips.c
parentKVM: MIPS: rework flush_shadow_* callbacks into one that prepares the flush (diff)
downloadlinux-dev-566a0beef52c83f13b67aef02b2bc0aa63c0e0d6.tar.xz
linux-dev-566a0beef52c83f13b67aef02b2bc0aa63c0e0d6.zip
KVM: MIPS: let generic code call prepare_flush_shadow
Since all calls to kvm_flush_remote_tlbs must be preceded by kvm_mips_callbacks->prepare_flush_shadow, repurpose kvm_arch_flush_remote_tlb to invoke it. This makes it possible to use the TLB flushing mechanism provided by the generic MMU notifier code. Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Diffstat (limited to 'arch/mips/kvm/mips.c')
-rw-r--r--arch/mips/kvm/mips.c11
1 files changed, 6 insertions, 5 deletions
diff --git a/arch/mips/kvm/mips.c b/arch/mips/kvm/mips.c
index 867b8de0fc07..4a22ba70c943 100644
--- a/arch/mips/kvm/mips.c
+++ b/arch/mips/kvm/mips.c
@@ -204,9 +204,6 @@ void kvm_arch_flush_shadow_all(struct kvm *kvm)
{
/* Flush whole GPA */
kvm_mips_flush_gpa_pt(kvm, 0, ~0);
-
- /* Let implementation do the rest */
- kvm_mips_callbacks->prepare_flush_shadow(kvm);
kvm_flush_remote_tlbs(kvm);
}
@@ -995,11 +992,15 @@ void kvm_arch_sync_dirty_log(struct kvm *kvm, struct kvm_memory_slot *memslot)
}
+int kvm_arch_flush_remote_tlb(struct kvm *kvm)
+{
+ kvm_mips_callbacks->prepare_flush_shadow(kvm);
+ return 1;
+}
+
void kvm_arch_flush_remote_tlbs_memslot(struct kvm *kvm,
const struct kvm_memory_slot *memslot)
{
- /* Let implementation handle TLB/GVA invalidation */
- kvm_mips_callbacks->prepare_flush_shadow(kvm);
kvm_flush_remote_tlbs(kvm);
}