diff options
author | Mario Smarduch <m.smarduch@samsung.com> | 2015-01-15 18:58:52 -0500 |
---|---|---|
committer | Christoffer Dall <christoffer.dall@linaro.org> | 2015-01-16 08:40:14 -0500 |
commit | a6d5101661c88d642b1fc85657fb0c58da821aa7 (patch) | |
tree | 09c2aa154c076abf729f27818f3787692126ef94 /virt | |
parent | 924de80db9cab3e2ee53933deee7945e81808151 (diff) |
KVM: Add architecture-defined TLB flush support
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>
Diffstat (limited to 'virt')
-rw-r--r-- | virt/kvm/Kconfig | 3 | ||||
-rw-r--r-- | virt/kvm/kvm_main.c | 2 |
2 files changed, 5 insertions, 0 deletions
diff --git a/virt/kvm/Kconfig b/virt/kvm/Kconfig index fc0c5e603eb4..3796a2132a06 100644 --- a/virt/kvm/Kconfig +++ b/virt/kvm/Kconfig | |||
@@ -37,3 +37,6 @@ config HAVE_KVM_CPU_RELAX_INTERCEPT | |||
37 | 37 | ||
38 | config KVM_VFIO | 38 | config KVM_VFIO |
39 | bool | 39 | bool |
40 | |||
41 | config HAVE_KVM_ARCH_TLB_FLUSH_ALL | ||
42 | bool | ||
diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c index 167e8c14b143..d03bd2255801 100644 --- a/virt/kvm/kvm_main.c +++ b/virt/kvm/kvm_main.c | |||
@@ -176,6 +176,7 @@ bool kvm_make_all_cpus_request(struct kvm *kvm, unsigned int req) | |||
176 | return called; | 176 | return called; |
177 | } | 177 | } |
178 | 178 | ||
179 | #ifndef CONFIG_HAVE_KVM_ARCH_TLB_FLUSH_ALL | ||
179 | void kvm_flush_remote_tlbs(struct kvm *kvm) | 180 | void kvm_flush_remote_tlbs(struct kvm *kvm) |
180 | { | 181 | { |
181 | long dirty_count = kvm->tlbs_dirty; | 182 | long dirty_count = kvm->tlbs_dirty; |
@@ -186,6 +187,7 @@ void kvm_flush_remote_tlbs(struct kvm *kvm) | |||
186 | cmpxchg(&kvm->tlbs_dirty, dirty_count, 0); | 187 | cmpxchg(&kvm->tlbs_dirty, dirty_count, 0); |
187 | } | 188 | } |
188 | EXPORT_SYMBOL_GPL(kvm_flush_remote_tlbs); | 189 | EXPORT_SYMBOL_GPL(kvm_flush_remote_tlbs); |
190 | #endif | ||
189 | 191 | ||
190 | void kvm_reload_remote_mmus(struct kvm *kvm) | 192 | void kvm_reload_remote_mmus(struct kvm *kvm) |
191 | { | 193 | { |