qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH v6] s390x/cpu: expose the guest crash informatio


From: Christian Borntraeger
Subject: Re: [Qemu-devel] [PATCH v6] s390x/cpu: expose the guest crash information
Date: Wed, 7 Feb 2018 14:29:21 +0100
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.5.2


On 02/07/2018 02:21 PM, David Hildenbrand wrote:
> On 07.02.2018 13:38, Christian Borntraeger wrote:
>> This patch is the s390 implementation of guest crash information,
>> similar to commit d187e08dc4 ("i386/cpu: add crash-information QOM
>> property") and the related commits. We will detect several crash
>> reasons, with the "disabled wait" being the most important one, since
>> this is used by all s390 guests as a "panic like" notification.
>>
>> Demonstrate these ways with examples as follows.
>>
>>   1. crash-information QOM property;
>>
>>   Run qemu with -qmp unix:qmp-sock,server, then use utility "qmp-shell"
>>   to execute "qom-get" command, and might get the result like,
>>
>>   (QEMU) (QEMU) qom-get path=/machine/unattached/device[0] \
>>       property=crash-information
>>   {"return": {"core": 0, "reason": "disabledwait", "psw-mask": 
>> 562956395872256, \
>>       "type": "s390", "psw-addr": 1102832}}
>>
>>   2. GUEST_PANICKED event reporting;
>>
>>   Run qemu with a socket option, and telnet or nc to that,
>>   -chardev socket,id=qmp,port=4444,host=localhost,server \
>>   -mon chardev=qmp,mode=control,pretty=on \
>>   Negotiating the mode by { "execute": "qmp_capabilities" }, and the crash
>>   information will be reported on a guest crash event like,
>>
>>   {
>>     "timestamp": {
>>         "seconds": 1518004739,
>>         "microseconds": 552563
>>     },
>>     "event": "GUEST_PANICKED",
>>     "data": {
>>         "action": "pause",
>>         "info": {
>>             "core": 0,
>>             "psw-addr": 1102832,
>>             "reason": "disabledwait",
>>             "psw-mask": 562956395872256,
>>             "type": "s390"
>>         }
>>     }
>>   }
>>
>>   3. log;
>>
>>   Run qemu with the parameters: -D <logfile> -d guest_errors, to
>>   specify the logfile and log item. The results might be,
>>
>>   Guest crashed on cpu 0: disabledwait
>>   PSW: 0x0002000180000000 0x000000000010d3f0
>>
>> Co-authored-by: Jing Liu <address@hidden>
>> Signed-off-by: Christian Borntraeger <address@hidden>
>> ---
>> V5->V6: - use qapi enum
>>      - add core id to the crash parameters
>>      - indent fixes
>>      - rework debug log message to reuse the enum string
>>      - update patch description
>>
>>  qapi/run-state.json   | 54 
>> +++++++++++++++++++++++++++++++++++++++++++++++++--
>>  target/s390x/cpu.c    | 41 ++++++++++++++++++++++++++++++++++++++
>>  target/s390x/cpu.h    |  2 ++
>>  target/s390x/helper.c |  5 ++++-
>>  target/s390x/kvm.c    | 15 +++++++-------
>>  vl.c                  | 12 ++++++++++--
>>  6 files changed, 116 insertions(+), 13 deletions(-)
>>
>> diff --git a/qapi/run-state.json b/qapi/run-state.json
>> index bca46a8785..328c86b4bb 100644
>> --- a/qapi/run-state.json
>> +++ b/qapi/run-state.json
>> @@ -320,22 +320,29 @@
>>  #
>>  # An enumeration of the guest panic information types
>>  #
>> +# @hyper-v: hyper-v guest panic information type
>> +#
>> +# @s390: s390 guest panic information type (Since: 2.12)
>> +#
>>  # Since: 2.9
>>  ##
>>  { 'enum': 'GuestPanicInformationType',
>> -  'data': [ 'hyper-v'] }
>> +  'data': [ 'hyper-v', 's390' ] }
>>  
>>  ##
>>  # @GuestPanicInformation:
>>  #
>>  # Information about a guest panic
>>  #
>> +# @type: Crash type that defines the hypervisor specific information
>> +#
>>  # Since: 2.9
>>  ##
>>  {'union': 'GuestPanicInformation',
>>   'base': {'type': 'GuestPanicInformationType'},
>>   'discriminator': 'type',
>> - 'data': { 'hyper-v': 'GuestPanicInformationHyperV' } }
>> + 'data': { 'hyper-v': 'GuestPanicInformationHyperV',
>> +           's390': 'GuestPanicInformationS390' } }
>>  
>>  ##
>>  # @GuestPanicInformationHyperV:
>> @@ -350,3 +357,46 @@
>>             'arg3': 'uint64',
>>             'arg4': 'uint64',
>>             'arg5': 'uint64' } }
>> +
>> +##
>> +# @S390CrashReason:
>> +#
>> +# Reason why the CPU is in a crashed state.
>> +#
>> +# @unknown: no crash reason was set
>> +#
>> +# @disabledwait: the CPU has entered a disabled wait state
>> +#
>> +# @extintloop: timer interrupt with new PSW enabled for timer
> 
> Is this CPU timer or CKC? Or both?

both. The kernel will give this to QEMU if one timer is going to be
delivered but the new PSW is enabled for external interrupts.




reply via email to

[Prev in Thread] Current Thread [Next in Thread]