From: Avi Kivity <avi-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
To: Alexander Graf <agraf-l3A5Bk7waGM@public.gmane.org>
Cc: Marcelo Tosatti
<mtosatti-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>,
"kvm-u79uwXL29TY76Z2rM5mHXA@public.gmane.org"
<kvm-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
"kvm-ia64-u79uwXL29TY76Z2rM5mHXA@public.gmane.org"
<kvm-ia64-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
"kvm-ppc-u79uwXL29TY76Z2rM5mHXA@public.gmane.org"
<kvm-ppc-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
"carsteno-tA70FqPdS9bQT0dZR+AlfA@public.gmane.org"
<carsteno-tA70FqPdS9bQT0dZR+AlfA@public.gmane.org>
Subject: Re: [PATCH 0/7] Consolidate vcpu ioctl locking
Date: Sat, 15 May 2010 09:16:54 +0300 [thread overview]
Message-ID: <4BEE3C56.2070007@redhat.com> (raw)
In-Reply-To: <B2627FBE-BB5E-45E2-8E67-E5859B6380A5-l3A5Bk7waGM@public.gmane.org>
On 05/13/2010 10:49 PM, Alexander Graf wrote:
>
> Am 13.05.2010 um 14:29 schrieb Avi Kivity <avi-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>:
>
>> On 05/13/2010 03:18 PM, Alexander Graf wrote:
>>>
>>>> [PATCH 0/7] Consolidate vcpu ioctl locking
>>>>
>>>> In general, all vcpu ioctls need to take the vcpu mutex, but each
>>>> one does it
>>>> (or not) individually. This is cumbersome and error prone.
>>>>
>>>> This patchset moves all locking to a central place. This is
>>>> complicated
>>>> by the fact that ppc's KVM_INTERRUPT and s390's KVM_S390_INTERRUPT
>>>> break
>>>> the convention and need to run unlocked.
>>>>
>>> Why is the x86 non-kernel-pic path different?
>>>
>>
>> Userspace issues the ioctl from a vcpu thread.
>>
>> It has to, btw, since whether an interrupt can be injected or not
>> depends on vcpu-synchronous registers: eflags.if and tpr/cr8.
>
> On ppc we don't have a tpr, but eflags.if is basically the same as
> msr.ee.
>
> The major difference apparently is that on ppc we KVM_INTERRUPT pulls
> the interrupt line. On vcpu_run we then check whether msr.ee is set
> and if so, trigger the interrupt.
>
> I wonder why we don't do the same for x86. The current limitation on
> userspace checking eflags and the tpr seems cumbersome.
On x86 eflags.if is freely changeable by the guest, so if we want to
queue an interrupt we have to IPI the vcpu to force it out of guest
mode, so we can inspect eflags. This means the vcpu thread has to be
interrupted one way or another.
The tpr (really ppr) is even more problematic as it is maintained in
userspace, not in the kernel (for non-kernel-irqchip). It could in
theory be inspected by another thread, but we wouldn't gain anything by
it due to the requirement to IPI.
> void kvmppc_book3s_queue_irqprio(struct kvm_vcpu *vcpu, unsigned int vec)
> {
> vcpu->stat.queue_intr++;
>
> set_bit(kvmppc_book3s_vec2irqprio(vec),
> &vcpu->arch.pending_exceptions);
> #ifdef EXIT_DEBUG
> printk(KERN_INFO "Queueing interrupt %x\n", vec);
> #endif
> }
Isn't this missing an IPI if the vcpu is in guest mode?
--
Do not meddle in the internals of kernels, for they are subtle and quick to panic.
next prev parent reply other threads:[~2010-05-15 6:16 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-05-13 11:17 [PATCH 0/7] Consolidate vcpu ioctl locking Avi Kivity
2010-05-13 11:17 ` [PATCH 1/7] KVM: PPC: Add missing vcpu_load()/vcpu_put() in vcpu ioctls Avi Kivity
2010-05-13 11:17 ` [PATCH 3/7] KVM: move vcpu locking to dispatcher for generic " Avi Kivity
2010-05-15 0:03 ` Marcelo Tosatti
[not found] ` <20100515000316.GD2502-I4X2Mt4zSy4@public.gmane.org>
2010-05-16 11:22 ` Avi Kivity
[not found] ` <1273749459-622-1-git-send-email-avi-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2010-05-13 11:17 ` [PATCH 2/7] KVM: x86: Add missing locking to arch specific " Avi Kivity
2010-05-13 11:17 ` [PATCH 4/7] KVM: x86: Lock arch specific vcpu ioctls centrally Avi Kivity
2010-05-13 11:17 ` [PATCH 5/7] KVM: s390: Centrally lock arch specific vcpu ioctls Avi Kivity
2010-05-13 11:17 ` [PATCH 6/7] KVM: PPC: Centralize locking of " Avi Kivity
2010-05-13 11:57 ` [PATCH 0/7] Consolidate vcpu ioctl locking Alexander Graf
2010-05-13 12:01 ` Avi Kivity
2010-05-13 12:03 ` Avi Kivity
[not found] ` <4BEBEA7E.80202-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2010-05-13 12:03 ` Avi Kivity
[not found] ` <4BEBEAAE.9030502-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2010-05-13 12:18 ` Alexander Graf
[not found] ` <24423079-CDE0-4DEA-BC73-3B6976BE0CA6-l3A5Bk7waGM@public.gmane.org>
2010-05-13 12:29 ` Avi Kivity
2010-05-13 19:49 ` Alexander Graf
[not found] ` <B2627FBE-BB5E-45E2-8E67-E5859B6380A5-l3A5Bk7waGM@public.gmane.org>
2010-05-15 6:16 ` Avi Kivity [this message]
[not found] ` <4BEE3C56.2070007-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2010-05-15 6:21 ` Alexander Graf
[not found] ` <F7406BC6-90A8-43B9-A57F-6B9350B6D356-l3A5Bk7waGM@public.gmane.org>
2010-05-15 7:59 ` Avi Kivity
[not found] ` <4BEE544B.50405-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2010-05-15 8:26 ` Alexander Graf
[not found] ` <20442124-2400-4273-A256-6846017D3141-l3A5Bk7waGM@public.gmane.org>
2010-05-15 17:30 ` Avi Kivity
[not found] ` <4BEEDA37.2080209-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2010-05-16 1:00 ` Alexander Graf
[not found] ` <6BE91F3A-C60C-47C0-9EA4-E5F5971B09C2-l3A5Bk7waGM@public.gmane.org>
2010-05-16 8:23 ` Avi Kivity
[not found] ` <4BEFAB6D.9000904-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2010-05-16 9:01 ` Alexander Graf
[not found] ` <DE2111D3-1AC9-45A3-A2BE-B6D012ECCAFE-l3A5Bk7waGM@public.gmane.org>
2010-05-16 9:09 ` Avi Kivity
[not found] ` <4BEFB666.50107-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2010-05-16 9:35 ` Alexander Graf
[not found] ` <04ED5A08-BE13-4C60-B152-EA5541975779-l3A5Bk7waGM@public.gmane.org>
2010-05-16 9:47 ` Avi Kivity
[not found] ` <4BEFBF42.6020208-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2010-05-16 10:19 ` Alexander Graf
2010-05-21 7:35 ` Carsten Otte
2010-05-13 11:17 ` [PATCH 7/7] KVM: Consolidate arch specific " Avi Kivity
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=4BEE3C56.2070007@redhat.com \
--to=avi-h+wxahxf7alqt0dzr+alfa@public.gmane.org \
--cc=agraf-l3A5Bk7waGM@public.gmane.org \
--cc=carsteno-tA70FqPdS9bQT0dZR+AlfA@public.gmane.org \
--cc=kvm-ia64-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=kvm-ppc-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=kvm-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=mtosatti-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).