KVM: Add architecture-defined TLB flush support
authorMario Smarduch <m.smarduch@samsung.com>
Thu, 15 Jan 2015 23:58:52 +0000 (15:58 -0800)
committerChristoffer Dall <christoffer.dall@linaro.org>
Fri, 16 Jan 2015 13:40:14 +0000 (14:40 +0100)
Allow architectures to override the generic kvm_flush_remote_tlbs()
function via HAVE_KVM_ARCH_TLB_FLUSH_ALL. ARMv7 will need this to
provide its own TLB flush interface.

Reviewed-by: Christoffer Dall <christoffer.dall@linaro.org>
Reviewed-by: Marc Zyngier <marc.zyngier@arm.com>
Reviewed-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Mario Smarduch <m.smarduch@samsung.com>
virt/kvm/Kconfig
virt/kvm/kvm_main.c

index fc0c5e603eb42e7404d6060e81e4c20fa0003f39..3796a2132a06fc6cdbd56b5bebce49201d2e0e16 100644 (file)
@@ -37,3 +37,6 @@ config HAVE_KVM_CPU_RELAX_INTERCEPT
 
 config KVM_VFIO
        bool
+
+config HAVE_KVM_ARCH_TLB_FLUSH_ALL
+       bool
index 167e8c14b14380e835ddaa4e1c9f458e537da2fa..d03bd22558014e7d211f05a672baf56bc422607a 100644 (file)
@@ -176,6 +176,7 @@ bool kvm_make_all_cpus_request(struct kvm *kvm, unsigned int req)
        return called;
 }
 
+#ifndef CONFIG_HAVE_KVM_ARCH_TLB_FLUSH_ALL
 void kvm_flush_remote_tlbs(struct kvm *kvm)
 {
        long dirty_count = kvm->tlbs_dirty;
@@ -186,6 +187,7 @@ void kvm_flush_remote_tlbs(struct kvm *kvm)
        cmpxchg(&kvm->tlbs_dirty, dirty_count, 0);
 }
 EXPORT_SYMBOL_GPL(kvm_flush_remote_tlbs);
+#endif
 
 void kvm_reload_remote_mmus(struct kvm *kvm)
 {