All of lore.kernel.org
 help / color / mirror / Atom feed
From: Avi Kivity <avi@redhat.com>
To: Jan Kiszka <jan.kiszka@web.de>
Cc: Marcelo Tosatti <mtosatti@redhat.com>,
	Liu Ping Fan <pingfank@linux.vnet.ibm.com>,
	kvm <kvm@vger.kernel.org>, qemu-devel <qemu-devel@nongnu.org>,
	Alexander Graf <agraf@suse.de>,
	Anthony Liguori <anthony@codemonkey.ws>,
	Gleb Natapov <gleb@redhat.com>
Subject: Re: [Qemu-devel] [PATCH] kvm: First step to push iothread lock out of inner run loop
Date: Sun, 24 Jun 2012 17:31:18 +0300	[thread overview]
Message-ID: <4FE724B6.8010607@redhat.com> (raw)
In-Reply-To: <4FE71F44.9020800@web.de>

On 06/24/2012 05:08 PM, Jan Kiszka wrote:
> On 2012-06-24 10:49, Avi Kivity wrote:
>> On 06/23/2012 02:45 PM, Jan Kiszka wrote:
>>>
>>> Hmm, we may need the iothread lock around cpu_set_apic_tpr for
>>> !kvm_irqchip_in_kernel(). And as we are at it, apic_base manipulation
>>> can be but there as well.
>>>
>>> With in-kernel irqchip, there is no such need. Also, no one accesses
>>> eflags outside of the vcpu thread, independent of the irqchip mode.
>> 
>> In fact !kvm_irqchip_in_kernel() is broken wrt the tpr.  Interrupt
>> injection needs to be done atomically, but currently we check the tpr
>> from the injecting thread, which means the cpu thread can race with it.
>>  We need to move the check to the vcpu thread so that the guest vcpu is
>> halted.
> 
> So apic_set_irq basically needs to be deferred to vcpu context, right?
> Will have a look.

Correct. IIRC, the kernel's 0a5fff192388d2 made the problem much worse,
but did not create it.  It was either Vista or XP-64 which triggered the
problem reliably.  Copying Gleb in case he remembers more.

-- 
error compiling committee.c: too many arguments to function



WARNING: multiple messages have this Message-ID (diff)
From: Avi Kivity <avi@redhat.com>
To: Jan Kiszka <jan.kiszka@web.de>
Cc: Liu Ping Fan <pingfank@linux.vnet.ibm.com>,
	Gleb Natapov <gleb@redhat.com>, kvm <kvm@vger.kernel.org>,
	Marcelo Tosatti <mtosatti@redhat.com>,
	qemu-devel <qemu-devel@nongnu.org>,
	Alexander Graf <agraf@suse.de>,
	Anthony Liguori <anthony@codemonkey.ws>
Subject: Re: [Qemu-devel] [PATCH] kvm: First step to push iothread lock out of inner run loop
Date: Sun, 24 Jun 2012 17:31:18 +0300	[thread overview]
Message-ID: <4FE724B6.8010607@redhat.com> (raw)
In-Reply-To: <4FE71F44.9020800@web.de>

On 06/24/2012 05:08 PM, Jan Kiszka wrote:
> On 2012-06-24 10:49, Avi Kivity wrote:
>> On 06/23/2012 02:45 PM, Jan Kiszka wrote:
>>>
>>> Hmm, we may need the iothread lock around cpu_set_apic_tpr for
>>> !kvm_irqchip_in_kernel(). And as we are at it, apic_base manipulation
>>> can be but there as well.
>>>
>>> With in-kernel irqchip, there is no such need. Also, no one accesses
>>> eflags outside of the vcpu thread, independent of the irqchip mode.
>> 
>> In fact !kvm_irqchip_in_kernel() is broken wrt the tpr.  Interrupt
>> injection needs to be done atomically, but currently we check the tpr
>> from the injecting thread, which means the cpu thread can race with it.
>>  We need to move the check to the vcpu thread so that the guest vcpu is
>> halted.
> 
> So apic_set_irq basically needs to be deferred to vcpu context, right?
> Will have a look.

Correct. IIRC, the kernel's 0a5fff192388d2 made the problem much worse,
but did not create it.  It was either Vista or XP-64 which triggered the
problem reliably.  Copying Gleb in case he remembers more.

-- 
error compiling committee.c: too many arguments to function

  reply	other threads:[~2012-06-24 14:31 UTC|newest]

Thread overview: 56+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-06-22 22:45 [Qemu-devel] [PATCH] kvm: First step to push iothread lock out of inner run loop Jan Kiszka
2012-06-22 22:55 ` Jan Kiszka
2012-06-22 22:55   ` [Qemu-devel] " Jan Kiszka
2012-06-23  0:22   ` Marcelo Tosatti
2012-06-23  0:22     ` [Qemu-devel] " Marcelo Tosatti
2012-06-23  9:06     ` Marcelo Tosatti
2012-06-23  9:06       ` [Qemu-devel] " Marcelo Tosatti
2012-06-23 11:45       ` Jan Kiszka
2012-06-23 11:45         ` [Qemu-devel] " Jan Kiszka
2012-06-24  8:49         ` Avi Kivity
2012-06-24  8:49           ` [Qemu-devel] " Avi Kivity
2012-06-24 14:08           ` Jan Kiszka
2012-06-24 14:08             ` Jan Kiszka
2012-06-24 14:31             ` Avi Kivity [this message]
2012-06-24 14:31               ` Avi Kivity
2012-07-06 17:16             ` Jan Kiszka
2012-07-06 17:16               ` [Qemu-devel] " Jan Kiszka
2012-07-06 18:06               ` Jan Kiszka
2012-07-06 18:06                 ` [Qemu-devel] " Jan Kiszka
2012-07-08  7:49                 ` Avi Kivity
2012-07-08  7:49                   ` [Qemu-devel] " Avi Kivity
2012-06-24 13:34         ` liu ping fan
2012-06-24 13:34           ` [Qemu-devel] " liu ping fan
2012-06-24 14:08           ` Jan Kiszka
2012-06-24 14:08             ` [Qemu-devel] " Jan Kiszka
2012-06-24 14:35             ` Avi Kivity
2012-06-24 14:35               ` [Qemu-devel] " Avi Kivity
2012-06-24 14:40               ` Jan Kiszka
2012-06-24 14:40                 ` [Qemu-devel] " Jan Kiszka
2012-06-24 14:46                 ` Avi Kivity
2012-06-24 14:46                   ` [Qemu-devel] " Avi Kivity
2012-06-24 14:51                   ` Jan Kiszka
2012-06-24 14:51                     ` [Qemu-devel] " Jan Kiszka
2012-06-24 14:56                     ` Avi Kivity
2012-06-24 14:56                       ` [Qemu-devel] " Avi Kivity
2012-06-24 14:58                       ` Jan Kiszka
2012-06-24 14:58                         ` [Qemu-devel] " Jan Kiszka
2012-06-24 14:59                         ` Avi Kivity
2012-06-24 14:59                           ` [Qemu-devel] " Avi Kivity
2012-06-23  9:22     ` Jan Kiszka
2012-06-23  9:22       ` [Qemu-devel] " Jan Kiszka
2012-06-28  1:11       ` Marcelo Tosatti
2012-06-26 19:34   ` Marcelo Tosatti
2012-06-27  7:39     ` Stefan Hajnoczi
2012-06-27  7:41       ` [Qemu-devel] " Stefan Hajnoczi
2012-06-27 11:09         ` Marcelo Tosatti
2012-06-27 11:19         ` [Qemu-devel] " Marcelo Tosatti
2012-06-28  8:45           ` Stefan Hajnoczi
2012-06-27  7:54     ` Avi Kivity
2012-06-27 14:36     ` Jan Kiszka
2012-06-28 14:10     ` [Qemu-devel] " Anthony Liguori
2012-06-28 15:12       ` Avi Kivity
2012-06-29  1:29       ` Marcelo Tosatti
2012-06-29  1:45       ` [Qemu-devel] " Marcelo Tosatti
2012-06-22 22:59 ` Anthony Liguori
2012-06-23  9:11   ` Jan Kiszka

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=4FE724B6.8010607@redhat.com \
    --to=avi@redhat.com \
    --cc=agraf@suse.de \
    --cc=anthony@codemonkey.ws \
    --cc=gleb@redhat.com \
    --cc=jan.kiszka@web.de \
    --cc=kvm@vger.kernel.org \
    --cc=mtosatti@redhat.com \
    --cc=pingfank@linux.vnet.ibm.com \
    --cc=qemu-devel@nongnu.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 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.