From: Wen Congyang <wency@cn.fujitsu.com>
To: Anthony Liguori <anthony@codemonkey.ws>
Cc: minyard@acm.org, Gleb Natapov <gleb@redhat.com>,
Jan Kiszka <jan.kiszka@siemens.com>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
qemu-devel <qemu-devel@nongnu.org>, Avi Kivity <avi@redhat.com>,
kvm list <kvm@vger.kernel.org>,
Corey Minyard <tcminyard@gmail.com>,
KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
Subject: Re: [PATCH 0/2 v3] kvm: notify host when guest panicked
Date: Thu, 22 Mar 2012 09:05:12 +0800 [thread overview]
Message-ID: <4F6A7AC8.5080604@cn.fujitsu.com> (raw)
In-Reply-To: <4F6A29C6.2070708@redhat.com>
At 03/22/2012 03:19 AM, Anthony Liguori Wrote:
> On 03/21/2012 11:25 AM, Avi Kivity wrote:
>> On 03/21/2012 06:18 PM, Corey Minyard wrote:
>>>
>>>> Look at drivers/char/ipmi/ipmi_msghandler.c. It has code to send panic
>>>> event over IMPI. The code is pretty complex. Of course if we a going to
>>>> implement something more complex than simple hypercall for panic
>>>> notification we better do something more interesting with it than just
>>>> saying "panic happened", like sending stack traces on all cpus for
>>>> instance.
>>>
>>> I doubt that's the best example, unfortunately. The IPMI event log
>>> has limited space and it has to be send a little piece at a time since
>>> each log entry is 14 bytes. It just prints the panic string, nothing
>>> else. Not that it isn't useful, it has saved my butt before.
>>>
>>> You have lots of interesting options with paravirtualization. You
>>> could, for instance, create a console driver that delivered all
>>> console output efficiently through a hypercall. That would be really
>>> easy. Or, as you mention, a custom way to deliver panic information.
>>> Collecting information like stack traces would be harder to
>>> accomplish, as I don't think there is currently a way to get it except
>>> by sending it to printk.
>>
>> That already exists; virtio-console (or serial console emulation) can do
>> the job.
>
> I think the use case here is pretty straight forward: if the guest finds
> itself in bad place, it wants to indicate that to the host.
>
> We shouldn't rely on any device drivers or complex code. It should be
> as close to a single instruction as possible that can run even if
> interrupts are disabled.
>
> An out instruction fits this very well. I think a simple protocol like:
This solution is more simple than using virtio-serial.
>
> inl PORT -> returns a magic number indicating the presence of qemucalls
I donot understantd this instruction's purpose.
> inl PORT+1 -> returns a bitmap of supported features
Hmm, we can execute this instruction when guest starts. If the userspace
does not process panicked event, there is no need to notify it.
>
> outl PORT+1 -> data reg1
> outl PORT+2 -> data reg2
> outl PORT+N -> data regN
We can get the register value from vmcs. So there is no need to tell
the register value to the host.
If we decide to avoid touching hypervisor, I agree with this solution.
Thanks
Wen Congyang
>
> outl PORT -> qemucall of index value with arguments 1..N
>
> Regards,
>
> Anthony Liguori
>
>>
>> In fact the feature can be implemented 100% host side by searching for a
>> panic string signature in the console logs.
>>
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at http://www.tux.org/lkml/
>
WARNING: multiple messages have this Message-ID (diff)
From: Wen Congyang <wency@cn.fujitsu.com>
To: Anthony Liguori <anthony@codemonkey.ws>
Cc: Avi Kivity <avi@redhat.com>,
minyard@acm.org, Gleb Natapov <gleb@redhat.com>,
Jan Kiszka <jan.kiszka@siemens.com>,
qemu-devel <qemu-devel@nongnu.org>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
kvm list <kvm@vger.kernel.org>,
Corey Minyard <tcminyard@gmail.com>,
KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
Subject: Re: [Qemu-devel] [PATCH 0/2 v3] kvm: notify host when guest panicked
Date: Thu, 22 Mar 2012 09:05:12 +0800 [thread overview]
Message-ID: <4F6A7AC8.5080604@cn.fujitsu.com> (raw)
In-Reply-To: <4F6A29C6.2070708@redhat.com>
At 03/22/2012 03:19 AM, Anthony Liguori Wrote:
> On 03/21/2012 11:25 AM, Avi Kivity wrote:
>> On 03/21/2012 06:18 PM, Corey Minyard wrote:
>>>
>>>> Look at drivers/char/ipmi/ipmi_msghandler.c. It has code to send panic
>>>> event over IMPI. The code is pretty complex. Of course if we a going to
>>>> implement something more complex than simple hypercall for panic
>>>> notification we better do something more interesting with it than just
>>>> saying "panic happened", like sending stack traces on all cpus for
>>>> instance.
>>>
>>> I doubt that's the best example, unfortunately. The IPMI event log
>>> has limited space and it has to be send a little piece at a time since
>>> each log entry is 14 bytes. It just prints the panic string, nothing
>>> else. Not that it isn't useful, it has saved my butt before.
>>>
>>> You have lots of interesting options with paravirtualization. You
>>> could, for instance, create a console driver that delivered all
>>> console output efficiently through a hypercall. That would be really
>>> easy. Or, as you mention, a custom way to deliver panic information.
>>> Collecting information like stack traces would be harder to
>>> accomplish, as I don't think there is currently a way to get it except
>>> by sending it to printk.
>>
>> That already exists; virtio-console (or serial console emulation) can do
>> the job.
>
> I think the use case here is pretty straight forward: if the guest finds
> itself in bad place, it wants to indicate that to the host.
>
> We shouldn't rely on any device drivers or complex code. It should be
> as close to a single instruction as possible that can run even if
> interrupts are disabled.
>
> An out instruction fits this very well. I think a simple protocol like:
This solution is more simple than using virtio-serial.
>
> inl PORT -> returns a magic number indicating the presence of qemucalls
I donot understantd this instruction's purpose.
> inl PORT+1 -> returns a bitmap of supported features
Hmm, we can execute this instruction when guest starts. If the userspace
does not process panicked event, there is no need to notify it.
>
> outl PORT+1 -> data reg1
> outl PORT+2 -> data reg2
> outl PORT+N -> data regN
We can get the register value from vmcs. So there is no need to tell
the register value to the host.
If we decide to avoid touching hypervisor, I agree with this solution.
Thanks
Wen Congyang
>
> outl PORT -> qemucall of index value with arguments 1..N
>
> Regards,
>
> Anthony Liguori
>
>>
>> In fact the feature can be implemented 100% host side by searching for a
>> panic string signature in the console logs.
>>
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at http://www.tux.org/lkml/
>
next prev parent reply other threads:[~2012-03-22 1:05 UTC|newest]
Thread overview: 114+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-03-08 7:57 [PATCH 0/2 v3] kvm: notify host when guest panicked Wen Congyang
2012-03-08 8:02 ` [PATCH 1/2 " Wen Congyang
2012-03-08 8:04 ` [PATCH 2/2 v3] kvm: set exit_reason to KVM_EXIT_GUEST_PANICKED " Wen Congyang
2012-03-08 8:06 ` [PATCH 1/2 v3] update linux-headers Wen Congyang
2012-03-08 8:07 ` [PATCH 2/2 v3] deal with guest panicked event Wen Congyang
2012-03-08 10:08 ` Jan Kiszka
2012-03-08 10:11 ` Wen Congyang
2012-03-08 10:15 ` [RESEND][PATCH " Wen Congyang
2012-03-08 11:28 ` Avi Kivity
2012-03-08 11:36 ` Daniel P. Berrange
2012-03-08 11:52 ` Avi Kivity
2012-03-08 11:56 ` Daniel P. Berrange
2012-03-08 11:56 ` Daniel P. Berrange
2012-03-09 22:22 ` Marcelo Tosatti
2012-03-21 19:01 ` [Qemu-devel] " Anthony Liguori
2012-03-12 1:46 ` Wen Congyang
2012-03-12 1:46 ` Wen Congyang
2012-03-08 11:13 ` [PATCH 0/2 v3] kvm: notify host when guest panicked Avi Kivity
2012-03-08 11:13 ` Avi Kivity
2012-03-09 1:21 ` Wen Congyang
2012-03-09 1:21 ` Wen Congyang
2012-03-12 9:04 ` Wen Congyang
2012-03-12 10:33 ` Avi Kivity
2012-03-13 6:44 ` Wen Congyang
2012-03-13 8:54 ` Avi Kivity
2012-03-13 9:18 ` Daniel P. Berrange
2012-03-13 10:47 ` Avi Kivity
2012-03-13 10:47 ` Avi Kivity
2012-03-14 8:29 ` Wen Congyang
2012-03-14 8:29 ` Wen Congyang
2012-03-14 9:24 ` Avi Kivity
2012-03-14 9:53 ` Wen Congyang
2012-03-14 10:07 ` Avi Kivity
2012-03-14 10:26 ` Wen Congyang
2012-03-14 10:29 ` Avi Kivity
2012-03-14 10:46 ` Gleb Natapov
2012-03-14 10:48 ` Avi Kivity
2012-03-14 11:11 ` Wen Congyang
2012-03-14 11:11 ` Wen Congyang
2012-03-14 13:07 ` Avi Kivity
2012-03-14 13:13 ` Avi Kivity
2012-03-14 13:14 ` Gleb Natapov
2012-03-14 13:16 ` Avi Kivity
2012-03-14 13:25 ` Gleb Natapov
2012-03-14 18:46 ` Eric Northup
2012-03-15 7:01 ` Wen Congyang
2012-03-15 7:01 ` Wen Congyang
2012-03-15 10:39 ` Gleb Natapov
2012-03-15 11:25 ` Jan Kiszka
2012-03-15 11:46 ` Avi Kivity
2012-03-16 8:05 ` Wen Congyang
2012-03-21 19:12 ` [Qemu-devel] " Anthony Liguori
2012-03-22 8:34 ` Wen Congyang
2012-03-14 18:47 ` Eric Northup
2012-03-14 18:47 ` Eric Northup
2012-03-14 10:37 ` Amit Shah
2012-03-14 10:37 ` Amit Shah
2012-03-14 10:52 ` Wen Congyang
2012-03-14 10:52 ` Gleb Natapov
2012-03-14 10:57 ` Wen Congyang
2012-03-14 10:58 ` Gleb Natapov
2012-03-14 11:13 ` Wen Congyang
2012-03-14 11:13 ` Wen Congyang
2012-03-14 10:52 ` Avi Kivity
2012-03-14 10:58 ` Wen Congyang
2012-03-14 10:59 ` Daniel P. Berrange
2012-03-14 11:06 ` Wen Congyang
2012-03-14 11:11 ` Gleb Natapov
2012-03-14 11:17 ` Daniel P. Berrange
2012-03-14 10:59 ` Gleb Natapov
2012-03-14 10:57 ` Amit Shah
2012-03-14 9:51 ` Amit Shah
2012-03-14 10:04 ` Wen Congyang
2012-03-14 10:08 ` Avi Kivity
2012-03-14 10:08 ` Avi Kivity
2012-03-14 10:40 ` Amit Shah
2012-03-14 10:42 ` Gleb Natapov
2012-03-14 10:57 ` Daniel P. Berrange
2012-03-14 10:57 ` Daniel P. Berrange
2012-03-14 11:01 ` Wen Congyang
2012-03-14 11:01 ` Wen Congyang
2012-03-21 19:04 ` [Qemu-devel] " Anthony Liguori
2012-03-22 7:33 ` Gleb Natapov
2012-03-12 10:31 ` Avi Kivity
2012-03-19 7:33 ` Wen Congyang
2012-03-20 9:59 ` Wen Congyang
2012-03-20 15:45 ` Gleb Natapov
2012-03-21 0:56 ` Wen Congyang
2012-03-21 9:11 ` Gleb Natapov
2012-03-21 9:35 ` Wen Congyang
2012-03-21 9:35 ` Wen Congyang
2012-03-21 9:42 ` Gleb Natapov
2012-03-21 16:18 ` Corey Minyard
2012-03-21 16:24 ` Gleb Natapov
2012-03-21 16:24 ` Gleb Natapov
2012-03-21 16:25 ` Avi Kivity
2012-03-21 17:04 ` Daniel P. Berrange
2012-03-21 17:34 ` Avi Kivity
2012-03-21 18:17 ` Jan Kiszka
2012-03-21 18:17 ` Jan Kiszka
2012-03-21 19:19 ` [Qemu-devel] " Anthony Liguori
2012-03-22 1:05 ` Wen Congyang [this message]
2012-03-22 1:05 ` Wen Congyang
2012-03-22 7:31 ` Gleb Natapov
2012-03-22 7:44 ` Wen Congyang
2012-03-22 8:36 ` Gleb Natapov
2012-03-22 8:36 ` [Qemu-devel] " Gleb Natapov
2012-03-22 7:28 ` Gleb Natapov
2012-03-22 7:28 ` [Qemu-devel] " Gleb Natapov
2012-03-22 7:40 ` Wen Congyang
2012-04-17 3:14 ` Wen Congyang
2012-04-02 10:05 ` Wen Congyang
2012-04-02 10:54 ` Amit Shah
2012-04-02 10:54 ` Amit Shah
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=4F6A7AC8.5080604@cn.fujitsu.com \
--to=wency@cn.fujitsu.com \
--cc=anthony@codemonkey.ws \
--cc=avi@redhat.com \
--cc=gleb@redhat.com \
--cc=jan.kiszka@siemens.com \
--cc=kamezawa.hiroyu@jp.fujitsu.com \
--cc=kvm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=minyard@acm.org \
--cc=qemu-devel@nongnu.org \
--cc=tcminyard@gmail.com \
/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.