Re: [Qemu-devel] [PATCH v4 1/3] i386/cpu: add crash-information QOM property

2017-02-20 Thread Daniel P. Berrange
On Tue, Feb 14, 2017 at 09:25:22AM +0300, Denis V. Lunev wrote:
> From: Anton Nefedov 
> 
> Windows reports BSOD parameters through Hyper-V crash MSRs. This
> information is very useful for initial crash analysis and thus
> it would be nice to have a way to fetch it.
> 
> Signed-off-by: Anton Nefedov 
> Signed-off-by: Denis V. Lunev 
> ---
>  kvm-all.c |  1 +
>  qapi-schema.json  | 24 
>  target/i386/cpu.c | 50 ++
>  3 files changed, 75 insertions(+)
> 
> diff --git a/kvm-all.c b/kvm-all.c
> index a27c880..64f46c8 100644
> --- a/kvm-all.c
> +++ b/kvm-all.c
> @@ -2000,6 +2000,7 @@ int kvm_cpu_exec(CPUState *cpu)
>  ret = EXCP_INTERRUPT;
>  break;
>  case KVM_SYSTEM_EVENT_CRASH:
> +kvm_cpu_synchronize_state(cpu);
>  qemu_mutex_lock_iothread();
>  qemu_system_guest_panicked();
>  qemu_mutex_unlock_iothread();
> diff --git a/qapi-schema.json b/qapi-schema.json
> index cbdffdd..9cb6ac5 100644
> --- a/qapi-schema.json
> +++ b/qapi-schema.json
> @@ -5846,6 +5846,30 @@
>'data': [ 'pause', 'poweroff' ] }
>  
>  ##
> +# @GuestPanicInformation:
> +#
> +# Information about a guest panic
> +#
> +# Since: 2.9
> +##
> +{'union': 'GuestPanicInformation',
> + 'data': { 'hyper-v': 'GuestPanicInformationHyperV' } }
> +
> +##
> +# @GuestPanicInformationHyperV:
> +#
> +# Hyper-V specific guest panic information (HV crash MSRs)
> +#
> +# Since: 2.9
> +##
> +{'struct': 'GuestPanicInformationHyperV',
> + 'data': { 'arg1': 'uint64',
> +   'arg2': 'uint64',
> +   'arg3': 'uint64',
> +   'arg4': 'uint64',
> +   'arg5': 'uint64' } }

Is there any benefit in naming these fields ?  In the Linux kernel
they are filled with ip, ax, bx, cx, dx register values. I'm unclear
if that's defined standard semantics by Microsoft, and thus consistent
for all OS using this interface, or just what Linux happens to store
there ?  If they're standard, then IMHO it could be nicer to name the
QAPI fields  ip, ax, bx, cx, dx.


Regards,
Daniel
-- 
|: http://berrange.com  -o-http://www.flickr.com/photos/dberrange/ :|
|: http://libvirt.org  -o- http://virt-manager.org :|
|: http://entangle-photo.org   -o-http://search.cpan.org/~danberr/ :|



Re: [Qemu-devel] [PATCH v4 1/3] i386/cpu: add crash-information QOM property

2017-02-19 Thread Markus Armbruster
Eric Blake  writes:

> On 02/14/2017 12:25 AM, Denis V. Lunev wrote:
>> From: Anton Nefedov 
>> 
>> Windows reports BSOD parameters through Hyper-V crash MSRs. This
>> information is very useful for initial crash analysis and thus
>> it would be nice to have a way to fetch it.
>> 
>> Signed-off-by: Anton Nefedov 
>> Signed-off-by: Denis V. Lunev 
>> ---
>
>> +++ b/qapi-schema.json
>> @@ -5846,6 +5846,30 @@
>>'data': [ 'pause', 'poweroff' ] }
>>  
>>  ##
>> +# @GuestPanicInformation:
>> +#
>> +# Information about a guest panic
>> +#
>> +# Since: 2.9
>> +##
>> +{'union': 'GuestPanicInformation',
>> + 'data': { 'hyper-v': 'GuestPanicInformationHyperV' } }
>> +
>
> Markus has been trying to eliminate the addition of new "simple unions"
> - while they are syntactically shorter in the .json file, they are
> bulkier over the wire with extra {} nesting, and more verbose in the C
> code, when compared to using a flat union instead.  I won't necessarily
> hold up this patch as-is, but if we are going to avoid new simple
> unions, we have to change this before 2.9 bakes in the {} nesting (we
> can convert a simple union to a flat union without breaking QMP
> back-compat, but it's messier than if we avoid the nesting to begin with).

We should not add new simple unions.  Please have a look at my
"[PATCH 0/2] Flatten simple unions where we still can".

Message-Id: <1486569864-17005-1-git-send-email-arm...@redhat.com>
https://lists.gnu.org/archive/html/qemu-devel/2017-02/msg01689.html