@@ -34,3 +34,6 @@ config HAVE_KVM_CPU_RELAX_INTERCEPT
config KVM_VFIO
bool
+
+config HAVE_KVM_ARCH_TLB_FLUSH_ALL
+ bool
@@ -186,12 +186,16 @@ static bool make_all_cpus_request(struct kvm *kvm, unsigned int req)
void kvm_flush_remote_tlbs(struct kvm *kvm)
{
+#ifdef CONFIG_HAVE_KVM_ARCH_TLB_FLUSH_ALL
+ kvm_arch_flush_remote_tlbs(kvm);
+#else
long dirty_count = kvm->tlbs_dirty;
smp_mb();
if (make_all_cpus_request(kvm, KVM_REQ_TLB_FLUSH))
++kvm->stat.remote_tlb_flush;
cmpxchg(&kvm->tlbs_dirty, dirty_count, 0);
+#endif
}
EXPORT_SYMBOL_GPL(kvm_flush_remote_tlbs);
Add support to declare architecture specific TLB flush function, for now only ARMv7. Signed-off-by: Mario Smarduch <m.smarduch@samsung.com> --- virt/kvm/Kconfig | 3 +++ virt/kvm/kvm_main.c | 4 ++++ 2 files changed, 7 insertions(+)