All of lore.kernel.org
 help / color / mirror / Atom feed
From: Gleb Natapov <gleb@redhat.com>
To: Jan Kiszka <jan.kiszka@web.de>
Cc: Dmitry Eremin-Solenikov <dbaryshkov@gmail.com>,
	kvm@vger.kernel.org, Avi Kivity <avi@redhat.com>,
	Joerg Roedel <joerg.roedel@amd.com>,
	Alexander Graf <agraf@suse.de>,
	qemu-devel <qemu-devel@nongnu.org>
Subject: Re: [PATCH 05/15] Coalesce userspace/kernel irqchip interrupt injection logic.
Date: Sun, 19 Apr 2009 18:20:23 +0300	[thread overview]
Message-ID: <20090419152023.GC21459@redhat.com> (raw)
In-Reply-To: <49EB3DF5.6070601@web.de>

On Sun, Apr 19, 2009 at 05:06:29PM +0200, Jan Kiszka wrote:
> Jan Kiszka wrote:
> > Gleb Natapov wrote:
> >> On Sat, Apr 18, 2009 at 07:28:20PM +0300, Gleb Natapov wrote:
> >>>> So this patch may either expose a bug in the svm emulation of qemu or
> >>>> comes with a subtle regression that only triggers due to qemu's timing.
> >>>> This needs to be understood. Gleb, any progress on reproducing it on
> >>>> your side?
> >>>>
> >>> I reproduced it and I am debugging it. In my case the boot hangs on sti;hlt
> >>> sequence. Instrumentation thus far shows that at this point interrupts no longer
> >>> injected because ppr value is too big. Need to see why, but tpr handling
> >>> is not complete in qemu svm. May be this is the reason. Will know more
> >>> tomorrow.
> >>>
> >> I've looked into this and my conclusion is that if you are not going to
> >> develop SVM in qemu don't use it just yet.
> > 
> > We had a resource conflict regarding SVM capable AMD boxes and a tight
> > schedule, so we decided to pick qemu as initial development platform.
> > Turns out that this has was a bit too optimistic. :)
> > 
> >> QEMU doesn't handle exceptions
> >> during event injection properly. Actually it does not handle it at all,
> >> so if PF happens during interrupt injection interrupt is lost and, what
> >> worse, is never acked. If interrupt was high prio it blocks all other
> >> interrupts.
> >>
> >> The patch below adds exception handling during event injection. Valid
> >> flag removed from EVENTINJ only after successful injection and EVENTINJ
> >> is copied to EXITINTINFO on exit. Can you give it a try?
> > 
> > Ah, great, thanks. Will test.
> 
> I can confirm: patch below makes my kvm-in-qemu test case happy, too.
> Maybe you want to post this with changelog and signed-off to qemu-devel.
> 
Yeah, I'll reformat and submit.

--
			Gleb.

WARNING: multiple messages have this Message-ID (diff)
From: Gleb Natapov <gleb@redhat.com>
To: Jan Kiszka <jan.kiszka@web.de>
Cc: kvm@vger.kernel.org,
	Dmitry Eremin-Solenikov <dbaryshkov@gmail.com>,
	Joerg Roedel <joerg.roedel@amd.com>,
	qemu-devel <qemu-devel@nongnu.org>,
	Alexander Graf <agraf@suse.de>, Avi Kivity <avi@redhat.com>
Subject: [Qemu-devel] Re: [PATCH 05/15] Coalesce userspace/kernel irqchip interrupt injection logic.
Date: Sun, 19 Apr 2009 18:20:23 +0300	[thread overview]
Message-ID: <20090419152023.GC21459@redhat.com> (raw)
In-Reply-To: <49EB3DF5.6070601@web.de>

On Sun, Apr 19, 2009 at 05:06:29PM +0200, Jan Kiszka wrote:
> Jan Kiszka wrote:
> > Gleb Natapov wrote:
> >> On Sat, Apr 18, 2009 at 07:28:20PM +0300, Gleb Natapov wrote:
> >>>> So this patch may either expose a bug in the svm emulation of qemu or
> >>>> comes with a subtle regression that only triggers due to qemu's timing.
> >>>> This needs to be understood. Gleb, any progress on reproducing it on
> >>>> your side?
> >>>>
> >>> I reproduced it and I am debugging it. In my case the boot hangs on sti;hlt
> >>> sequence. Instrumentation thus far shows that at this point interrupts no longer
> >>> injected because ppr value is too big. Need to see why, but tpr handling
> >>> is not complete in qemu svm. May be this is the reason. Will know more
> >>> tomorrow.
> >>>
> >> I've looked into this and my conclusion is that if you are not going to
> >> develop SVM in qemu don't use it just yet.
> > 
> > We had a resource conflict regarding SVM capable AMD boxes and a tight
> > schedule, so we decided to pick qemu as initial development platform.
> > Turns out that this has was a bit too optimistic. :)
> > 
> >> QEMU doesn't handle exceptions
> >> during event injection properly. Actually it does not handle it at all,
> >> so if PF happens during interrupt injection interrupt is lost and, what
> >> worse, is never acked. If interrupt was high prio it blocks all other
> >> interrupts.
> >>
> >> The patch below adds exception handling during event injection. Valid
> >> flag removed from EVENTINJ only after successful injection and EVENTINJ
> >> is copied to EXITINTINFO on exit. Can you give it a try?
> > 
> > Ah, great, thanks. Will test.
> 
> I can confirm: patch below makes my kvm-in-qemu test case happy, too.
> Maybe you want to post this with changelog and signed-off to qemu-devel.
> 
Yeah, I'll reformat and submit.

--
			Gleb.

  reply	other threads:[~2009-04-19 15:20 UTC|newest]

Thread overview: 99+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-04-13  9:55 [PATCH 00/15] interrupt injection rework Gleb Natapov
2009-04-13  9:55 ` [PATCH 01/15] Make kvm_cpu_(has|get)_interrupt() work for userspace irqchip too Gleb Natapov
2009-04-13  9:55 ` [PATCH 02/15] Consolidate userspace and kernel interrupt injection for VMX Gleb Natapov
2009-04-13  9:55 ` [PATCH 03/15] Cleanup vmx_intr_assist() Gleb Natapov
2009-04-13  9:55 ` [PATCH 04/15] Use kvm_arch_interrupt_allowed() instead of checking interrupt_window_open directly Gleb Natapov
2009-04-13  9:55 ` [PATCH 05/15] Coalesce userspace/kernel irqchip interrupt injection logic Gleb Natapov
2009-04-14 14:14   ` Dmitry Eremin-Solenikov
2009-04-14 14:24     ` Gleb Natapov
2009-04-14 14:32       ` Dmitry Eremin-Solenikov
2009-04-14 14:55         ` Gleb Natapov
2009-04-14 15:38           ` Gleb Natapov
2009-04-14 19:29           ` Dmitry Eremin-Solenikov
2009-04-14 19:41             ` Gleb Natapov
2009-04-15  6:11               ` Gleb Natapov
2009-04-15  9:30               ` Dmitry Eremin-Solenikov
2009-04-15  9:39                 ` Gleb Natapov
2009-04-15 10:22                   ` Jan Kiszka
2009-04-15 10:36                     ` Gleb Natapov
2009-04-15 10:51                       ` Jan Kiszka
2009-04-15 10:57                         ` Gleb Natapov
2009-04-15  9:44                 ` Gleb Natapov
2009-04-15 11:11                   ` Dmitry Eremin-Solenikov
2009-04-15 11:26                     ` Jan Kiszka
2009-04-15 11:53                       ` Dmitry Eremin-Solenikov
2009-04-15 11:58                         ` Dmitry Eremin-Solenikov
2009-04-15 12:01                         ` Gleb Natapov
2009-04-15 12:02                           ` Dmitry Eremin-Solenikov
2009-04-15 12:03                         ` Jan Kiszka
2009-04-15 12:39                           ` Dmitry Eremin-Solenikov
2009-04-15 12:48                             ` Jan Kiszka
2009-04-14 16:10       ` Avi Kivity
2009-04-14 16:18         ` Gleb Natapov
2009-04-17 12:39   ` Jan Kiszka
2009-04-17 12:50     ` Jan Kiszka
2009-04-17 14:13   ` Dmitry Eremin-Solenikov
2009-04-18  9:16     ` Jan Kiszka
2009-04-18 16:28       ` Gleb Natapov
2009-04-19 13:57         ` Gleb Natapov
2009-04-19 14:05           ` Jan Kiszka
2009-04-19 14:05             ` [Qemu-devel] " Jan Kiszka
2009-04-19 14:28             ` Gleb Natapov
2009-04-19 14:28               ` [Qemu-devel] " Gleb Natapov
2009-04-19 15:06             ` Jan Kiszka
2009-04-19 15:06               ` [Qemu-devel] " Jan Kiszka
2009-04-19 15:20               ` Gleb Natapov [this message]
2009-04-19 15:20                 ` Gleb Natapov
2009-04-18  9:05   ` Jan Kiszka
2009-04-18 16:20     ` Gleb Natapov
2009-04-19  8:52     ` Avi Kivity
2009-04-13  9:55 ` [PATCH 06/15] Use EVENTINJ to inject interrupts Gleb Natapov
2009-04-13  9:55 ` [PATCH 07/15] Remove exception_injected() callback Gleb Natapov
2009-04-13  9:55 ` [PATCH 08/15] Remove inject_pending_vectors() callback Gleb Natapov
2009-04-13  9:55 ` [PATCH 09/15] kvm_push_irq() no longer used Gleb Natapov
2009-04-13  9:55 ` [PATCH 10/15] sync_lapic_to_cr8() should always sync cr8 to V_TPR Gleb Natapov
2009-04-13  9:55 ` [PATCH 11/15] Do not report TPR write to userspace if new value bigger or equal to a previous one Gleb Natapov
2009-04-13  9:55 ` [PATCH 12/15] Get rid of arch.interrupt_window_open & arch.nmi_window_open Gleb Natapov
2009-04-13  9:55 ` [PATCH 13/15] Add NMI injection support to SVM Gleb Natapov
2009-04-17 11:59   ` Jan Kiszka
2009-04-17 15:12   ` Dmitry Eremin-Solenikov
2009-04-19 13:11     ` Gleb Natapov
2009-04-20 12:08       ` Dmitry Eremin-Solenikov
2009-04-20 15:50       ` Jan Kiszka
2009-04-21 14:07         ` Gleb Natapov
2009-04-17 19:13   ` Dmitry Eremin-Solenikov
2009-04-17 19:53     ` Jan Kiszka
2009-04-18  9:08       ` Jan Kiszka
2009-04-17 19:55   ` Jan Kiszka
2009-04-19  8:57     ` Avi Kivity
2009-04-19  9:12       ` Jan Kiszka
2009-04-19 13:17     ` Gleb Natapov
2009-04-19 13:21       ` Avi Kivity
2009-04-19 13:24         ` Gleb Natapov
2009-04-19 13:28           ` Avi Kivity
2009-04-19 13:40             ` Gleb Natapov
2009-04-19 13:43               ` Jan Kiszka
2009-04-19 13:49                 ` Avi Kivity
2009-04-19 13:51                   ` Gleb Natapov
2009-04-19 13:59                   ` Jan Kiszka
2009-04-19 13:27       ` Jan Kiszka
2009-04-19 13:32         ` Gleb Natapov
2009-04-19 13:40           ` Jan Kiszka
2009-04-19 13:40           ` Avi Kivity
2009-04-19 13:41             ` Gleb Natapov
2009-04-19 13:43               ` Avi Kivity
2009-04-19 13:44                 ` Gleb Natapov
2009-04-19 14:07                   ` Julian Stecklina
2009-04-19 14:13                     ` Gleb Natapov
2009-04-19 14:20                       ` Avi Kivity
2009-04-19 14:29                         ` Gleb Natapov
2009-04-19 14:57                           ` Avi Kivity
2009-04-19 16:36                             ` Gleb Natapov
2009-04-13  9:55 ` [PATCH 14/15] Move interrupt injection logic to x86.c Gleb Natapov
2009-04-14  7:22   ` Gleb Natapov
2009-04-13  9:55 ` [PATCH 15/15] Get rid of get_irq() callback Gleb Natapov
2009-04-13 11:51 ` [PATCH 00/15] interrupt injection rework Avi Kivity
2009-04-14  3:20   ` Sheng Yang
2009-04-14  5:20     ` Gleb Natapov
2009-04-14 15:33 ` Joerg Roedel
2009-04-14 15:37   ` Gleb Natapov

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=20090419152023.GC21459@redhat.com \
    --to=gleb@redhat.com \
    --cc=agraf@suse.de \
    --cc=avi@redhat.com \
    --cc=dbaryshkov@gmail.com \
    --cc=jan.kiszka@web.de \
    --cc=joerg.roedel@amd.com \
    --cc=kvm@vger.kernel.org \
    --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.