From: Avi Kivity <avi.kivity@gmail.com>
To: "Paolo Bonzini" <pbonzini@redhat.com>,
"Radim Krčmář" <rkrcmar@redhat.com>,
linux-kernel@vger.kernel.org
Cc: kvm@vger.kernel.org
Subject: Re: [PATCH v2 4/5] KVM: add KVM_USER_EXIT vcpu ioctl for userspace exit
Date: Tue, 18 Aug 2015 21:30:26 +0300 [thread overview]
Message-ID: <55D379C2.9020608@gmail.com> (raw)
In-Reply-To: <55D1DE8F.4050806@redhat.com>
On 08/17/2015 04:15 PM, Paolo Bonzini wrote:
>
> On 16/08/2015 13:27, Avi Kivity wrote:
>> On 08/05/2015 07:33 PM, Radim Krčmář wrote:
>>> The guest can use KVM_USER_EXIT instead of a signal-based exiting to
>>> userspace. Availability depends on KVM_CAP_USER_EXIT.
>>> Only x86 is implemented so far.
>>>
>>> Signed-off-by: Radim Krčmář <rkrcmar@redhat.com>
>>> ---
>>> v2:
>>> * use vcpu ioctl instead of vm one [4/5]
>>> * shrink kvm_user_exit from 64 to 32 bytes [4/5]
>>>
>>> Documentation/virtual/kvm/api.txt | 30 ++++++++++++++++++++++++++++++
>>> arch/x86/kvm/x86.c | 24 ++++++++++++++++++++++++
>>> include/uapi/linux/kvm.h | 7 +++++++
>>> virt/kvm/kvm_main.c | 5 +++--
>>> 4 files changed, 64 insertions(+), 2 deletions(-)
>>>
>>> diff --git a/Documentation/virtual/kvm/api.txt
>>> b/Documentation/virtual/kvm/api.txt
>>> index 3c714d43a717..c5844f0b8e7c 100644
>>> --- a/Documentation/virtual/kvm/api.txt
>>> +++ b/Documentation/virtual/kvm/api.txt
>>> @@ -3020,6 +3020,36 @@ Returns: 0 on success, -1 on error
>>> Queues an SMI on the thread's vcpu.
>>> +
>>> +4.97 KVM_USER_EXIT
>>> +
>>> +Capability: KVM_CAP_USER_EXIT
>>> +Architectures: x86
>>> +Type: vcpu ioctl
>>> +Parameters: struct kvm_user_exit (in)
>>> +Returns: 0 on success,
>>> + -EFAULT if the parameter couldn't be read,
>>> + -EINVAL if 'reserved' is not zeroed,
>>> +
>>> +struct kvm_user_exit {
>>> + __u8 reserved[32];
>>> +};
>>> +
>>> +The ioctl is asynchronous to VCPU execution and can be issued from
>>> all threads.
>>> +format
>> This breaks an invariant of vcpu ioctls, and also forces a cacheline
>> bounce when we fget() the vcpu fd.
> KVM_USER_EXIT in practice should be so rare (at least with in-kernel
> LAPIC) that I don't think this matters. KVM_USER_EXIT is relatively
> uninteresting, it only exists to provide an alternative to signals that
> doesn't require expensive atomics on each and every KVM_RUN. :(
Ah, so the idea is to remove the cost of changing the signal mask?
Yes, although it looks like a thread-local operation, it takes a
process-wide lock.
I expect most user wakeups are via irqfd, so indeed the performance of
KVM_USER_EXIT is uninteresting.
next prev parent reply other threads:[~2015-08-18 18:30 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-08-05 16:32 [PATCH v2 0/5] KVM: optimize userspace exits with a new ioctl Radim Krčmář
2015-08-05 16:32 ` [PATCH v2 1/5] KVM: add kvm_has_request wrapper Radim Krčmář
2015-08-12 19:57 ` Christian Borntraeger
2015-08-13 9:11 ` Radim Krčmář
2015-08-13 9:29 ` Paolo Bonzini
2015-08-13 10:03 ` Christian Borntraeger
2015-08-14 8:42 ` Radim Krčmář
2015-08-05 16:32 ` [PATCH v2 2/5] KVM: add KVM_REQ_EXIT request for userspace exit Radim Krčmář
2015-08-05 16:32 ` [PATCH v2 3/5] KVM: x86: add request_exits debug counter Radim Krčmář
2015-08-05 16:33 ` [PATCH v2 4/5] KVM: add KVM_USER_EXIT vcpu ioctl for userspace exit Radim Krčmář
2015-08-05 16:36 ` Paolo Bonzini
2015-08-06 13:44 ` Radim Krčmář
2015-08-06 13:52 ` Paolo Bonzini
2015-08-06 17:21 ` Radim Krčmář
2015-08-16 20:27 ` Avi Kivity
2015-08-17 13:15 ` Paolo Bonzini
2015-08-18 18:30 ` Avi Kivity [this message]
2015-08-18 19:57 ` Paolo Bonzini
2015-08-19 6:43 ` Avi Kivity
2015-08-05 16:33 ` [PATCH v2 5/5] KVM: refactor asynchronous vcpu ioctl dispatch Radim Krčmář
2015-08-12 20:03 ` Christian Borntraeger
2015-08-13 8:53 ` Radim Krčmář
2015-08-13 9:29 ` Paolo Bonzini
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=55D379C2.9020608@gmail.com \
--to=avi.kivity@gmail.com \
--cc=kvm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=pbonzini@redhat.com \
--cc=rkrcmar@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.