Re: [PATCH 0/2 v3] kvm: notify host when guest panicked

From: Wen Congyang
Date: Wed Mar 14 2012 - 06:59:40 EST


At 03/14/2012 06:57 PM, Daniel P. Berrange Wrote:
> On Wed, Mar 14, 2012 at 03:21:14PM +0530, Amit Shah wrote:
>> On (Wed) 14 Mar 2012 [16:29:50], Wen Congyang wrote:
>>> At 03/13/2012 06:47 PM, Avi Kivity Wrote:
>>>> On 03/13/2012 11:18 AM, Daniel P. Berrange wrote:
>>>>> On Mon, Mar 12, 2012 at 12:33:33PM +0200, Avi Kivity wrote:
>>>>>> On 03/12/2012 11:04 AM, Wen Congyang wrote:
>>>>>>> Do you have any other comments about this patch?
>>>>>>>
>>>>>>
>>>>>> Not really, but I'm not 100% convinced the patch is worthwhile. It's
>>>>>> likely to only be used by Linux, which has kexec facilities, and you can
>>>>>> put talk to management via virtio-serial and describe the crash in more
>>>>>> details than a simple hypercall.
>>>>>
>>>>> As mentioned before, I don't think virtio-serial is a good fit for this.
>>>>> We want something that is simple & guaranteed always available. Using
>>>>> virtio-serial requires significant setup work on both the host and guest.
>>>>
>>>> So what? It needs to be done anyway for the guest agent.
>>>>
>>>>> Many management application won't know to make a vioserial device available
>>>>> to all guests they create.
>>>>
>>>> Then they won't know to deal with the panic event either.
>>>>
>>>>> Most administrators won't even configure kexec,
>>>>> let alone virtio serial on top of it.
>>>>
>>>> It should be done by the OS vendor, not the individual admin.
>>>>
>>>>> The hypercall requires zero host
>>>>> side config, and zero guest side config, which IMHO is what we need for
>>>>> this feature.
>>>>
>>>> If it was this one feature, yes. But we keep getting more and more
>>>> features like that and we bloat the hypervisor. There's a reason we
>>>> have a host-to-guest channel, we should use it.
>>>>
>>>
>>> I donot know how to use virtio-serial.
>>>
>>> I start vm like this:
>>> qemu ...\
>>> -device virtio-serial \
>>> -chardev socket,path=/tmp/foo,server,nowait,id=foo \
>>> -device virtserialport,chardev=foo,name=port1 ...
>>
>> This is sufficient. On the host, you can open /tmp/foo using a custom
>> program or nc (nc -U /tmp/foo). On the guest, you can just open
>> /dev/virtio-ports/port1 and read/write into it.
>>
>> See the following links for more details.
>>
>> https://fedoraproject.org/wiki/Features/VirtioSerial#How_To_Test
>> http://www.linux-kvm.org/page/Virtio-serial_API
>>
>>> You said that there are too many channels. Does it mean /tmp/foo is a channel?
>>
>> You can have several such -device virtserialport. The -device part
>> describes what the guest will see. The -chardev part ties that to the
>> host-side part of the channel.
>>
>> /tmp/foo is the host end-point for the channel, in the example above,
>> and /dev/virtio-ports/port1 is the guest-side end-point.
>
> If we do choose to use virtio-serial for panics (which I don't think
> we should), then we should not expose it in the host filesystem. The
> host side should be a virtual chardev backend internal to QEMU, in
> the same way that 'spicevmc' is handled.

Yes. But we don't decide to choose which now. I prefer to use vmcall.
It is simple and more reliable.

Thanks
Wen Congyang

>
> Regards,
> Daniel

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/