kvm.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
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 10:59:07 +0300	[thread overview]
Message-ID: <4BEE544B.50405@redhat.com> (raw)
In-Reply-To: <F7406BC6-90A8-43B9-A57F-6B9350B6D356-l3A5Bk7waGM@public.gmane.org>

On 05/15/2010 09:21 AM, Alexander Graf wrote:
>
>> 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.
>>      
> Hrm right. On PPC we trap on every MSR change, so we get notified when interrupts are enabled again. But isn't that what VINTR intercepts are there for? Just add the  lowest active TPR value to the KVM_INTERRUPT ioctl and then wait until the guest is ready to take it.
>    

Yes, and we do that when using in-kernel-irqchip.  With userspace apic, 
the tpr is maintained in userspace and the kernel has no visibility into it.

We could have changed moved the tpr/ppr into the kernel for userspace 
irqchip, but there's not much point now.

>>> 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?
>>      
> Yes, it is :). At least with qemu we're 100% sure we're not in VCPU_RUN when an interrupt gets injected, as the injection happens in kvm_arch_pre_run.
>    

That means you never inject an interrupt from the iothread (or from a 
different vcpu thread)?

If that's the case we might make it part of the API and require the 
ioctl to be issued from the vcpu thread.  We'd still be left with the 
s390 exception.

-- 
Do not meddle in the internals of kernels, for they are subtle and quick to panic.

  parent reply	other threads:[~2010-05-15  7:59 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
     [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 [this message]
     [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=4BEE544B.50405@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).