Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1632063

Re: [PATCH v2 5/9] KVM: perform a wake_up in kvm_make_all_cpus_request

From Paolo Bonzini <pbonzini@redhat.com>
Newsgroups linux.kernel
Subject Re: [PATCH v2 5/9] KVM: perform a wake_up in kvm_make_all_cpus_request
Date 2017-04-27 14:20 +0200
Message-ID <tAQyR-tm-3@gated-at.bofh.it> (permalink)
References <tABTb-7dC-3@gated-at.bofh.it> <tABTc-7dC-29@gated-at.bofh.it> <tAQpc-ol-27@gated-at.bofh.it>
Organization linux.* mail to news gateway

Show all headers | View raw



On 27/04/2017 14:06, Cornelia Huck wrote:
> On Wed, 26 Apr 2017 22:32:23 +0200
> Radim Krčmář <rkrcmar@redhat.com> wrote:
> 
>> We want to have kvm_make_all_cpus_request() to be an optmized version of
>>
>>   kvm_for_each_vcpu(i, vcpu, kvm) {
>>     kvm_make_request(vcpu, request);
>>     kvm_vcpu_kick(vcpu);
>>   }
>>
>> and kvm_vcpu_kick() wakes up the target vcpu.  We know which requests do
>> not need the wake up and use it to optimize the loop.
>>
>> Thanks to that, this patch doesn't change the behavior of current users
>> (the all don't need the wake up) and only prepares for future where the
> 
> s/the all/they all/
> 
>> wake up is going to be needed.
>>
>> I think that most requests do not need the wake up, so we would flip the
>> bit then.
>>
>> kvm_vcpu_kick() will get this condition after it is merged with
>> kvm_make_request() because we currently don't know which request is being
>> kicked.
> 
> I find this sentence confusing: not all kicks are directly related to
> requests.

I agree, it is backwards.  Changing to "Later on, kvm_make_request()
will take care of kicking too, using this bit to make the decision
whether to kick or not".

Paolo
>>
>> Signed-off-by: Radim Krčmář <rkrcmar@redhat.com>
>> ---
>>  virt/kvm/kvm_main.c | 3 +++
>>  1 file changed, 3 insertions(+)
>>
>> diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c
>> index e5d52b46b531..3772f7dcc72d 100644
>> --- a/virt/kvm/kvm_main.c
>> +++ b/virt/kvm/kvm_main.c
>> @@ -186,6 +186,9 @@ bool kvm_make_all_cpus_request(struct kvm *kvm, unsigned int req)
>>  		/* Set ->requests bit before we read ->mode. */
>>  		smp_mb__after_atomic();
>>
>> +		if (!(req & KVM_REQUEST_NO_WAKEUP))
>> +			kvm_vcpu_wake_up(vcpu);
>> +
>>  		if (cpus != NULL && cpu != -1 && cpu != me &&
>>  		      kvm_vcpu_exiting_guest_mode(vcpu) != OUTSIDE_GUEST_MODE)
>>  			cpumask_set_cpu(cpu, cpus);
> 
> The code change looks good to me.
> 

Back to linux.kernel | Previous | NextPrevious in thread | Next in thread | Find similar | Unroll thread


Thread

[PATCH v2 0/9] KVM: towards maintainable kvm_make_all_cpus_request() Radim Krčmář <rkrcmar@redhat.com> - 2017-04-26 22:40 +0200
  [PATCH v2 5/9] KVM: perform a wake_up in kvm_make_all_cpus_request Radim Krčmář <rkrcmar@redhat.com> - 2017-04-26 22:40 +0200
    Re: [PATCH v2 5/9] KVM: perform a wake_up in  kvm_make_all_cpus_request Andrew Jones <drjones@redhat.com> - 2017-04-27 13:40 +0200
    Re: [PATCH v2 5/9] KVM: perform a wake_up in  kvm_make_all_cpus_request Cornelia Huck <cornelia.huck@de.ibm.com> - 2017-04-27 14:10 +0200
      Re: [PATCH v2 5/9] KVM: perform a wake_up in  kvm_make_all_cpus_request Paolo Bonzini <pbonzini@redhat.com> - 2017-04-27 14:20 +0200
  [PATCH v2 1/9] KVM: add kvm_{test,clear}_request to replace {test,clear}_bit Radim Krčmář <rkrcmar@redhat.com> - 2017-04-26 22:40 +0200
    Re: [PATCH v2 1/9] KVM: add kvm_{test,clear}_request to replace  {test,clear}_bit Cornelia Huck <cornelia.huck@de.ibm.com> - 2017-04-27 13:40 +0200
    Re: [PATCH v2 1/9] KVM: add kvm_{test,clear}_request to replace  {test,clear}_bit Andrew Jones <drjones@redhat.com> - 2017-04-27 13:40 +0200

csiph-web