[PATCH 3/5] KVM: optimize kvm_make_all_cpus_request

Radim Krčmář
2017-02-16T16:04:47Z

Use __kvm_request_set to avoid repeated use of wmb().
kvm_make_all_cpus_request is also a candidate for renaming.

Signed-off-by: Radim Krčmář <rkrcmar@redhat.com>
---
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 934f135c0d23..2250920ec965 100644
--- a/virt/kvm/kvm_main.c
+++ b/virt/kvm/kvm_main.c
@@ -177,8 +177,12 @@ bool kvm_make_all_cpus_request(struct kvm *kvm, unsigned int req)
zalloc_cpumask_var(&cpus, GFP_ATOMIC);

me = get_cpu();
+
+ /* Paired with the smp_mb__after_atomic in kvm_request_test_and_clear. */
+ smp_wmb();
+
kvm_for_each_vcpu(i, vcpu, kvm) {
- kvm_request_set(req, vcpu);
+ __kvm_request_set(req, vcpu);
cpu = vcpu->cpu;

/* Set ->requests bit before we read ->mode. */
--
2.11.1