From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:52221) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1SAR4T-0007BX-BG for qemu-devel@nongnu.org; Wed, 21 Mar 2012 15:19:46 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1SAR4M-0006u4-Ta for qemu-devel@nongnu.org; Wed, 21 Mar 2012 15:19:44 -0400 Received: from mail-ob0-f173.google.com ([209.85.214.173]:63856) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1SAR4M-0006te-Om for qemu-devel@nongnu.org; Wed, 21 Mar 2012 15:19:38 -0400 Received: by obbwd20 with SMTP id wd20so1007614obb.4 for ; Wed, 21 Mar 2012 12:19:37 -0700 (PDT) Message-ID: <4F6A29C6.2070708@redhat.com> Date: Wed, 21 Mar 2012 14:19:34 -0500 From: Anthony Liguori MIME-Version: 1.0 References: <4F58664D.1070800@cn.fujitsu.com> <4F66E14F.3040809@cn.fujitsu.com> <4F6854F4.3060703@cn.fujitsu.com> <20120320154517.GG27928@redhat.com> <4F692723.8050904@cn.fujitsu.com> <20120321091127.GO22368@redhat.com> <4F69FF48.3010200@acm.org> <4F6A00EC.3060706@redhat.com> In-Reply-To: <4F6A00EC.3060706@redhat.com> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PATCH 0/2 v3] kvm: notify host when guest panicked List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Avi Kivity Cc: minyard@acm.org, Gleb Natapov , kvm list , Jan Kiszka , "linux-kernel@vger.kernel.org" , qemu-devel , Corey Minyard , KAMEZAWA Hiroyuki 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: inl PORT -> returns a magic number indicating the presence of qemucalls inl PORT+1 -> returns a bitmap of supported features outl PORT+1 -> data reg1 outl PORT+2 -> data reg2 outl PORT+N -> data regN 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. >