All of lore.kernel.org
 help / color / mirror / Atom feed
From: Lai Jiangshan <laijs@cn.fujitsu.com>
To: Avi Kivity <avi@redhat.com>
Cc: Jan Kiszka <jan.kiszka@web.de>,
	Kenji Kaneshige <kaneshige.kenji@jp.fujitsu.com>,
	KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>,
	"kvm@vger.kernel.org" <kvm@vger.kernel.org>,
	"qemu-devel@nongnu.org" <qemu-devel@nongnu.org>,
	seabios@seabios.org
Subject: Re:  [PATCH] qemu: Fix inject-nmi
Date: Mon, 10 Oct 2011 14:06:01 +0800	[thread overview]
Message-ID: <4E928B49.7090102@cn.fujitsu.com> (raw)
In-Reply-To: <4E8035F9.9080908@redhat.com>

On 09/26/2011 04:21 PM, Avi Kivity wrote:
> On 09/25/2011 08:22 PM, Jan Kiszka wrote:
>> On 2011-09-25 16:07, Avi Kivity wrote:
>> >  On 09/23/2011 12:31 PM, Lai Jiangshan wrote:
>> >>  >   Moreover: wrong indention.
>> >>  >
>> >>  >   You know that this won't work for qemu-kvm with in-kernel irqchip? You
>> >>  >   may want to provide a patch for that tree, emulating the unavailable
>> >>  >   LINT1 injection via testing the APIC configration and then raising an
>> >>  >   NMI as before if it is accepted.
>> >>  >
>> >>
>> >>  It works in my box but the NMI is not injected through the in-kernel
>> >>  irqchip,
>> >>  I will implement it as you suggested.
>> >
>> >  Somewhat hacky; isn't it better to test LINT1 in the kernel (and
>> >  redefine the KVM_NMI ioctl as "toggle LINT1")?
>>
>> KVM_NMI is required for user space IRQ chip as well.
> 
> We could define KVM_NMI as edging the core NMI input if !irqchip_in_kernel, and toggling LINT1 otherwise.  Hardly nice though.
> 
> The current KVM_NMI with irqchip_in_kernel is not meaningful, since it doesn't obey the rules of any NMI source.
> 
>> Introducing some KVM_SET_LINT1 is an option though. But emulating it for
>> the NMI button on older kernels sounds worthwhile nevertheless.
>>
> 
> Perhaps this is the best option to avoid confusion.
> 

(add cc: seabios@seabios.org)

Hi, All,

When I was implementing KVM_SET_LINT1, I found many places of
the qemu-kvm code need to be changed, and it became nasty.

And as Avi said KVM_NMI with irqchip_in_kernel is not meaningful,
so KVM_NMI is not used anymore when KVM_SET_LINT1 & irqchip_in_kernel,
it is dead.

Now, we redefine KVM_NMI with more proper meaning, when irqchip_in_kernel,
it is kernel/kvm's responsibility to simulate the NMI-injection and set LINT1.
When !irqchip_in_kernel, it is userspace's responsibility.

It results more real simulation and results simpler code,
and it don't need to add new ioctl interface,
and it can make use of existing KVM_NMI.

Thanks,
Lai

WARNING: multiple messages have this Message-ID (diff)
From: Lai Jiangshan <laijs@cn.fujitsu.com>
To: Avi Kivity <avi@redhat.com>
Cc: "kvm@vger.kernel.org" <kvm@vger.kernel.org>,
	seabios@seabios.org,
	"qemu-devel@nongnu.org" <qemu-devel@nongnu.org>,
	Jan Kiszka <jan.kiszka@web.de>,
	Kenji Kaneshige <kaneshige.kenji@jp.fujitsu.com>,
	KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
Subject: Re: [Qemu-devel] [PATCH] qemu: Fix inject-nmi
Date: Mon, 10 Oct 2011 14:06:01 +0800	[thread overview]
Message-ID: <4E928B49.7090102@cn.fujitsu.com> (raw)
In-Reply-To: <4E8035F9.9080908@redhat.com>

On 09/26/2011 04:21 PM, Avi Kivity wrote:
> On 09/25/2011 08:22 PM, Jan Kiszka wrote:
>> On 2011-09-25 16:07, Avi Kivity wrote:
>> >  On 09/23/2011 12:31 PM, Lai Jiangshan wrote:
>> >>  >   Moreover: wrong indention.
>> >>  >
>> >>  >   You know that this won't work for qemu-kvm with in-kernel irqchip? You
>> >>  >   may want to provide a patch for that tree, emulating the unavailable
>> >>  >   LINT1 injection via testing the APIC configration and then raising an
>> >>  >   NMI as before if it is accepted.
>> >>  >
>> >>
>> >>  It works in my box but the NMI is not injected through the in-kernel
>> >>  irqchip,
>> >>  I will implement it as you suggested.
>> >
>> >  Somewhat hacky; isn't it better to test LINT1 in the kernel (and
>> >  redefine the KVM_NMI ioctl as "toggle LINT1")?
>>
>> KVM_NMI is required for user space IRQ chip as well.
> 
> We could define KVM_NMI as edging the core NMI input if !irqchip_in_kernel, and toggling LINT1 otherwise.  Hardly nice though.
> 
> The current KVM_NMI with irqchip_in_kernel is not meaningful, since it doesn't obey the rules of any NMI source.
> 
>> Introducing some KVM_SET_LINT1 is an option though. But emulating it for
>> the NMI button on older kernels sounds worthwhile nevertheless.
>>
> 
> Perhaps this is the best option to avoid confusion.
> 

(add cc: seabios@seabios.org)

Hi, All,

When I was implementing KVM_SET_LINT1, I found many places of
the qemu-kvm code need to be changed, and it became nasty.

And as Avi said KVM_NMI with irqchip_in_kernel is not meaningful,
so KVM_NMI is not used anymore when KVM_SET_LINT1 & irqchip_in_kernel,
it is dead.

Now, we redefine KVM_NMI with more proper meaning, when irqchip_in_kernel,
it is kernel/kvm's responsibility to simulate the NMI-injection and set LINT1.
When !irqchip_in_kernel, it is userspace's responsibility.

It results more real simulation and results simpler code,
and it don't need to add new ioctl interface,
and it can make use of existing KVM_NMI.

Thanks,
Lai

  reply	other threads:[~2011-10-10  6:04 UTC|newest]

Thread overview: 138+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <20110913093835.GB4265@localhost.localdomain>
     [not found] ` <20110914093441.e2bb305c.kamezawa.hiroyu@jp.fujitsu.com>
     [not found]   ` <4E705BC3.5000508@cn.fujitsu.com>
     [not found]     ` <20110915164704.9cacd407.kamezawa.hiroyu@jp.fujitsu.com>
     [not found]       ` <4E71B28F.7030201@cn.fujitsu.com>
     [not found]         ` <4E72F3BA.2000603@jp.fujitsu.com>
     [not found]           ` <4E73200A.7040908@jp.fujitsu.com>
     [not found]             ` <4E76C6AA.9080403@cn.fujitsu.com>
2011-09-22  9:50               ` [PATCH] qemu: Fix inject-nmi Lai Jiangshan
2011-09-22  9:50                 ` [Qemu-devel] " Lai Jiangshan
2011-09-22 14:51                 ` Jan Kiszka
2011-09-22 14:51                   ` [Qemu-devel] " Jan Kiszka
2011-09-23  9:31                   ` Lai Jiangshan
2011-09-23  9:31                     ` Lai Jiangshan
2011-09-23  9:35                     ` Jan Kiszka
2011-09-23  9:35                       ` Jan Kiszka
2011-09-25 14:07                     ` Avi Kivity
2011-09-25 14:07                       ` [Qemu-devel] " Avi Kivity
2011-09-25 17:22                       ` Jan Kiszka
2011-09-25 17:22                         ` [Qemu-devel] " Jan Kiszka
2011-09-26  8:21                         ` Avi Kivity
2011-09-26  8:21                           ` [Qemu-devel] " Avi Kivity
2011-10-10  6:06                           ` Lai Jiangshan [this message]
2011-10-10  6:06                             ` Lai Jiangshan
2011-10-10  6:06                           ` [PATCH] kernel/kvm: fix improper nmi emulation (was: Re: [Qemu-devel] [PATCH] qemu: Fix inject-nmi) Lai Jiangshan
2011-10-10  6:06                             ` [Qemu-devel] [PATCH] kernel/kvm: fix improper nmi emulation (was: " Lai Jiangshan
2011-10-10  6:40                             ` [PATCH] kernel/kvm: fix improper nmi emulation Jan Kiszka
2011-10-10  6:40                               ` [Qemu-devel] " Jan Kiszka
2011-10-10 10:26                             ` Avi Kivity
2011-10-10 10:26                               ` [Qemu-devel] " Avi Kivity
2011-10-11 17:00                               ` [PATCH 1/1 V2] " Lai Jiangshan
2011-10-11 17:00                                 ` [Qemu-devel] " Lai Jiangshan
2011-10-11 18:06                                 ` Jan Kiszka
2011-10-11 18:06                                   ` [Qemu-devel] " Jan Kiszka
2011-10-14  0:54                                   ` [PATCH 1/1 V3] " Lai Jiangshan
2011-10-14  0:54                                     ` [Qemu-devel] " Lai Jiangshan
2011-10-16  8:54                                     ` Avi Kivity
2011-10-16  8:54                                       ` [Qemu-devel] " Avi Kivity
2011-10-16  9:05                                       ` Jan Kiszka
2011-10-16  9:05                                         ` [Qemu-devel] " Jan Kiszka
2011-10-16  9:28                                         ` Avi Kivity
2011-10-16  9:28                                           ` [Qemu-devel] " Avi Kivity
2011-10-12  7:02                                 ` [PATCH 1/1 V2] " Kenji Kaneshige
2011-10-12  7:02                                   ` [Qemu-devel] " Kenji Kaneshige
2011-10-12  7:01                               ` [PATCH] " Kenji Kaneshige
2011-10-12  7:01                                 ` [Qemu-devel] " Kenji Kaneshige
2011-10-10  6:06                           ` [PATCH] qemu-kvm: fix improper nmi emulation (was: Re: [Qemu-devel] [PATCH] qemu: Fix inject-nmi) Lai Jiangshan
2011-10-10  6:06                             ` [Qemu-devel] [PATCH] qemu-kvm: fix improper nmi emulation (was: " Lai Jiangshan
2011-10-10  6:49                             ` [PATCH] qemu-kvm: fix improper nmi emulation Jan Kiszka
2011-10-10  6:49                               ` [Qemu-devel] " Jan Kiszka
2011-10-10  9:47                               ` Andreas Färber
2011-10-10  9:47                                 ` [Qemu-devel] " Andreas Färber
2011-10-11 17:03                               ` [PATCH 1/2 V2] qemu-kvm: Synchronize kernel headers Lai Jiangshan
2011-10-11 17:03                                 ` [Qemu-devel] " Lai Jiangshan
2011-10-11 17:03                               ` [PATCH 2/2 V2] qemu-kvm: fix improper nmi emulation Lai Jiangshan
2011-10-11 17:03                                 ` [Qemu-devel] " Lai Jiangshan
2011-10-11 18:17                                 ` Jan Kiszka
2011-10-11 18:17                                   ` [Qemu-devel] " Jan Kiszka
2011-10-14  0:53                                   ` Lai Jiangshan
2011-10-14  0:53                                     ` Lai Jiangshan
2011-10-14  5:53                                     ` Jan Kiszka
2011-10-14  5:53                                       ` Jan Kiszka
2011-10-14  6:36                                       ` [PATCH 1/1 V4] " Lai Jiangshan
2011-10-14  6:36                                         ` [Qemu-devel] " Lai Jiangshan
2011-10-14  6:49                                         ` Jan Kiszka
2011-10-14  6:49                                           ` [Qemu-devel] " Jan Kiszka
2011-10-14  7:43                                           ` Lai Jiangshan
2011-10-14  7:43                                             ` [Qemu-devel] " Lai Jiangshan
2011-10-14  8:31                                             ` Jan Kiszka
2011-10-14  8:31                                               ` [Qemu-devel] " Jan Kiszka
2011-10-14  9:03                                           ` [PATCH 1/1 V5] kernel/kvm: introduce KVM_SET_LINT1 and " Lai Jiangshan
2011-10-14  9:03                                             ` [Qemu-devel] " Lai Jiangshan
2011-10-14  9:07                                             ` Jan Kiszka
2011-10-14  9:07                                               ` [Qemu-devel] " Jan Kiszka
2011-10-14  9:27                                               ` Lai Jiangshan
2011-10-14  9:27                                                 ` Lai Jiangshan
2011-10-14  9:32                                                 ` Jan Kiszka
2011-10-14  9:32                                                   ` Jan Kiszka
2011-10-16  9:39                                             ` Avi Kivity
2011-10-16  9:39                                               ` [Qemu-devel] " Avi Kivity
2011-10-17  9:17                                               ` Lai Jiangshan
2011-10-17  9:17                                                 ` [Qemu-devel] " Lai Jiangshan
2011-10-17  9:54                                                 ` Avi Kivity
2011-10-17  9:54                                                   ` [Qemu-devel] " Avi Kivity
2011-10-17 10:21                                                   ` Jan Kiszka
2011-10-17 10:21                                                     ` [Qemu-devel] " Jan Kiszka
2011-10-17  9:40                                               ` Lai Jiangshan
2011-10-17  9:40                                                 ` [Qemu-devel] " Lai Jiangshan
2011-10-17  9:49                                                 ` Avi Kivity
2011-10-17  9:49                                                   ` [Qemu-devel] " Avi Kivity
2011-10-17 16:00                                                   ` [PATCH 1/1 V6] qemu-kvm: " Lai Jiangshan
2011-10-17 16:00                                                     ` [Qemu-devel] " Lai Jiangshan
2011-10-18 19:41                                                     ` Jan Kiszka
2011-10-18 19:41                                                       ` [Qemu-devel] " Jan Kiszka
2011-10-19  6:33                                                       ` Lai Jiangshan
2011-10-19  6:33                                                         ` [Qemu-devel] " Lai Jiangshan
2011-10-19 10:57                                                         ` Jan Kiszka
2011-10-19 10:57                                                           ` [Qemu-devel] " Jan Kiszka
2011-10-19 15:21                                                           ` [PATCH 1/1 V6] qemu: " Lai Jiangshan
2011-10-19 15:21                                                             ` [Qemu-devel] " Lai Jiangshan
2011-10-19  9:29                                                       ` [PATCH 1/1 V6] qemu-kvm: " Avi Kivity
2011-10-19  9:29                                                         ` [Qemu-devel] " Avi Kivity
2011-10-19 15:32                                                         ` Lai Jiangshan
2011-10-19 15:32                                                           ` [Qemu-devel] " Lai Jiangshan
2011-12-07 10:29                                                     ` Avi Kivity
2011-12-07 10:29                                                       ` [Qemu-devel] " Avi Kivity
2011-12-08  9:42                                                       ` Jan Kiszka
2011-12-08  9:42                                                         ` [Qemu-devel] " Jan Kiszka
2011-12-08 10:20                                                         ` Jan Kiszka
2011-12-08 10:20                                                           ` [Qemu-devel] " Jan Kiszka
2011-10-14  9:03                                           ` [PATCH 1/2 V5] qemu-kvm: Synchronize kernel headers Lai Jiangshan
2011-10-14  9:03                                             ` [Qemu-devel] " Lai Jiangshan
2011-10-14  9:03                                           ` [PATCH 2/2 V5] qemu-kvm: fix improper nmi emulation Lai Jiangshan
2011-10-14  9:03                                             ` [Qemu-devel] " Lai Jiangshan
2011-10-14  9:22                                             ` Jan Kiszka
2011-10-14  9:22                                               ` [Qemu-devel] " Jan Kiszka
2011-10-14  9:51                                           ` [PATCH 1/1 V5 tuning] kernel/kvm: introduce KVM_SET_LINT1 and " Lai Jiangshan
2011-10-14  9:51                                             ` [Qemu-devel] " Lai Jiangshan
2011-10-14 11:59                                             ` Sasha Levin
2011-10-14 11:59                                               ` [Qemu-devel] " Sasha Levin
2011-10-14 12:07                                               ` Jan Kiszka
2011-10-14 12:07                                                 ` Jan Kiszka
2011-10-16 15:01                                                 ` Lai Jiangshan
2011-10-16 15:01                                                   ` Lai Jiangshan
2011-10-14  9:51                                           ` [PATCH 1/2 V5 tuning] qemu-kvm: Synchronize kernel headers Lai Jiangshan
2011-10-14  9:51                                             ` [Qemu-devel] " Lai Jiangshan
2011-10-14  0:54                                   ` [PATCH 1/1 V3] qemu-kvm: fix improper nmi emulation Lai Jiangshan
2011-10-14  0:54                                     ` [Qemu-devel] " Lai Jiangshan
2011-10-10  6:06                           ` [PATCH 1/2] seabios: Add Local APIC NMI Structure to ACPI MADT (was: Re: [Qemu-devel] [PATCH] qemu: Fix inject-nmi) Lai Jiangshan
2011-10-10  6:06                             ` [Qemu-devel] [PATCH 1/2] seabios: Add Local APIC NMI Structure to ACPI MADT (was: " Lai Jiangshan
2011-10-28 12:08                             ` [PATCH 1/2] seabios: Add Local APIC NMI Structure to ACPI MADT Kenji Kaneshige
2011-10-28 12:08                               ` [Qemu-devel] " Kenji Kaneshige
2011-10-28 12:19                               ` Gleb Natapov
2011-10-28 12:19                                 ` [Qemu-devel] " Gleb Natapov
2011-10-28 12:48                               ` Jun Koi
2011-10-28 12:48                                 ` Jun Koi
2011-10-31  8:00                                 ` Kenji Kaneshige
2011-10-31  8:00                                   ` Kenji Kaneshige
2011-10-30 14:44                             ` Avi Kivity
2011-10-30 14:44                               ` [Qemu-devel] " Avi Kivity
2011-10-30 14:44                               ` Avi Kivity
2011-10-30 14:44                                 ` [Qemu-devel] " Avi Kivity
2011-10-10  6:06                           ` [PATCH 2/2] seabios: fix mptable nmi entry (was: Re: [Qemu-devel] [PATCH] qemu: Fix inject-nmi) Lai Jiangshan
2011-10-10  6:06                             ` [Qemu-devel] [PATCH 2/2] seabios: fix mptable nmi entry (was: " Lai Jiangshan
2011-10-30 17:52                             ` [PATCH 2/2] seabios: fix mptable nmi entry (was: Re: [Qemu-devel] " Kevin O'Connor
2011-10-30 17:52                               ` [Qemu-devel] [PATCH 2/2] seabios: fix mptable nmi entry (was: " Kevin O'Connor

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=4E928B49.7090102@cn.fujitsu.com \
    --to=laijs@cn.fujitsu.com \
    --cc=avi@redhat.com \
    --cc=jan.kiszka@web.de \
    --cc=kamezawa.hiroyu@jp.fujitsu.com \
    --cc=kaneshige.kenji@jp.fujitsu.com \
    --cc=kvm@vger.kernel.org \
    --cc=qemu-devel@nongnu.org \
    --cc=seabios@seabios.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.