Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1632039
| From | Andrew Jones <drjones@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 13:40 +0200 |
| Message-ID | <tAPW9-8ku-1@gated-at.bofh.it> (permalink) |
| References | <tABTb-7dC-3@gated-at.bofh.it> <tABTc-7dC-29@gated-at.bofh.it> |
| Organization | linux.* mail to news gateway |
On Wed, Apr 26, 2017 at 10:32:23PM +0200, Radim Krčmář 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
> 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.
>
> 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);
> --
> 2.12.2
>
Reviewed-by: Andrew Jones <drjones@redhat.com>
Back to linux.kernel | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll 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