[PATCH v2 5/5] KVM: optimize kvm_make_all_cpus_request

From: Radim KrÄmÃÅ
Date: Fri Feb 24 2017 - 14:51:35 EST


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@xxxxxxxxxx>
---
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 0ee1df3bfcb8..eaab32349664 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