All of lore.kernel.org
 help / color / mirror / Atom feed
* [Qemu-devel] [PATCH v2] ppc: spapr-rtas - implement os-term rtas call
@ 2014-06-12 12:09 Nikunj A Dadhania
  2014-06-17  9:13 ` Alexander Graf
  0 siblings, 1 reply; 15+ messages in thread
From: Nikunj A Dadhania @ 2014-06-12 12:09 UTC (permalink / raw)
  To: qemu-devel; +Cc: aik, qemu-ppc, agraf, nikunj

PAPR compliant guest calls this in absence of kdump. After
receiving this call qemu could trigger a guest dump. This guest dump
can be used to analyse using crash tool.

Signed-off-by: Nikunj A Dadhania <nikunj@linux.vnet.ibm.com>
---

v2: indentation fixes

 hw/ppc/spapr_rtas.c | 32 ++++++++++++++++++++++++++++++++
 1 file changed, 32 insertions(+)

diff --git a/hw/ppc/spapr_rtas.c b/hw/ppc/spapr_rtas.c
index ea4a2b2..f030e73 100644
--- a/hw/ppc/spapr_rtas.c
+++ b/hw/ppc/spapr_rtas.c
@@ -29,6 +29,8 @@
 #include "sysemu/char.h"
 #include "hw/qdev.h"
 #include "sysemu/device_tree.h"
+#include "qapi/qmp/qjson.h"
+#include "monitor/monitor.h"
 
 #include "hw/ppc/spapr.h"
 #include "hw/ppc/spapr_vio.h"
@@ -267,6 +269,34 @@ static void rtas_ibm_set_system_parameter(PowerPCCPU *cpu,
     rtas_st(rets, 0, ret);
 }
 
+static void rtas_ibm_os_term(PowerPCCPU *cpu,
+                             sPAPREnvironment *spapr,
+                             uint32_t token, uint32_t nargs,
+                             target_ulong args,
+                             uint32_t nret, target_ulong rets)
+{
+    target_ulong ret = 0;
+    QObject *data;
+
+    data = qobject_from_jsonf("{ 'action': %s }", "pause");
+    monitor_protocol_event(QEVENT_GUEST_PANICKED, data);
+    qobject_decref(data);
+    vm_stop(RUN_STATE_GUEST_PANICKED);
+
+    rtas_st(rets, 0, ret);
+}
+
+static void rtas_ibm_ext_os_term(PowerPCCPU *cpu,
+                                 sPAPREnvironment *spapr,
+                                 uint32_t token, uint32_t nargs,
+                                 target_ulong args,
+                                 uint32_t nret, target_ulong rets)
+{
+    target_ulong ret = 0;
+
+    rtas_st(rets, 0, ret);
+}
+
 static struct rtas_call {
     const char *name;
     spapr_rtas_fn fn;
@@ -392,6 +422,8 @@ static void core_rtas_register_types(void)
                         rtas_ibm_get_system_parameter);
     spapr_rtas_register("ibm,set-system-parameter",
                         rtas_ibm_set_system_parameter);
+    spapr_rtas_register("ibm,os-term", rtas_ibm_os_term);
+    spapr_rtas_register("ibm,extended-os-term", rtas_ibm_ext_os_term);
 }
 
 type_init(core_rtas_register_types)
-- 
1.8.3.1

^ permalink raw reply related	[flat|nested] 15+ messages in thread

* Re: [Qemu-devel] [PATCH v2] ppc: spapr-rtas - implement os-term rtas call
  2014-06-12 12:09 [Qemu-devel] [PATCH v2] ppc: spapr-rtas - implement os-term rtas call Nikunj A Dadhania
@ 2014-06-17  9:13 ` Alexander Graf
  2014-06-17  9:30   ` Nikunj A Dadhania
  0 siblings, 1 reply; 15+ messages in thread
From: Alexander Graf @ 2014-06-17  9:13 UTC (permalink / raw)
  To: Nikunj A Dadhania, qemu-devel; +Cc: aik, qemu-ppc


On 12.06.14 14:09, Nikunj A Dadhania wrote:
> PAPR compliant guest calls this in absence of kdump. After
> receiving this call qemu could trigger a guest dump. This guest dump
> can be used to analyse using crash tool.
>
> Signed-off-by: Nikunj A Dadhania <nikunj@linux.vnet.ibm.com>
> ---
>
> v2: indentation fixes
>
>   hw/ppc/spapr_rtas.c | 32 ++++++++++++++++++++++++++++++++
>   1 file changed, 32 insertions(+)
>
> diff --git a/hw/ppc/spapr_rtas.c b/hw/ppc/spapr_rtas.c
> index ea4a2b2..f030e73 100644
> --- a/hw/ppc/spapr_rtas.c
> +++ b/hw/ppc/spapr_rtas.c
> @@ -29,6 +29,8 @@
>   #include "sysemu/char.h"
>   #include "hw/qdev.h"
>   #include "sysemu/device_tree.h"
> +#include "qapi/qmp/qjson.h"
> +#include "monitor/monitor.h"
>   
>   #include "hw/ppc/spapr.h"
>   #include "hw/ppc/spapr_vio.h"
> @@ -267,6 +269,34 @@ static void rtas_ibm_set_system_parameter(PowerPCCPU *cpu,
>       rtas_st(rets, 0, ret);
>   }
>   
> +static void rtas_ibm_os_term(PowerPCCPU *cpu,
> +                             sPAPREnvironment *spapr,
> +                             uint32_t token, uint32_t nargs,
> +                             target_ulong args,
> +                             uint32_t nret, target_ulong rets)
> +{
> +    target_ulong ret = 0;
> +    QObject *data;
> +
> +    data = qobject_from_jsonf("{ 'action': %s }", "pause");
> +    monitor_protocol_event(QEVENT_GUEST_PANICKED, data);
> +    qobject_decref(data);
> +    vm_stop(RUN_STATE_GUEST_PANICKED);
> +
> +    rtas_st(rets, 0, ret);
> +}
> +
> +static void rtas_ibm_ext_os_term(PowerPCCPU *cpu,
> +                                 sPAPREnvironment *spapr,
> +                                 uint32_t token, uint32_t nargs,
> +                                 target_ulong args,
> +                                 uint32_t nret, target_ulong rets)
> +{
> +    target_ulong ret = 0;
> +
> +    rtas_st(rets, 0, ret);
> +}
> +
>   static struct rtas_call {
>       const char *name;
>       spapr_rtas_fn fn;
> @@ -392,6 +422,8 @@ static void core_rtas_register_types(void)
>                           rtas_ibm_get_system_parameter);
>       spapr_rtas_register("ibm,set-system-parameter",
>                           rtas_ibm_set_system_parameter);
> +    spapr_rtas_register("ibm,os-term", rtas_ibm_os_term);
> +    spapr_rtas_register("ibm,extended-os-term", rtas_ibm_ext_os_term);

Why do we need the extended-os-term if we don't do anything with it?


Alex


>   }
>   
>   type_init(core_rtas_register_types)

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [Qemu-devel] [PATCH v2] ppc: spapr-rtas - implement os-term rtas call
  2014-06-17  9:13 ` Alexander Graf
@ 2014-06-17  9:30   ` Nikunj A Dadhania
  2014-06-17  9:53     ` Alexander Graf
  0 siblings, 1 reply; 15+ messages in thread
From: Nikunj A Dadhania @ 2014-06-17  9:30 UTC (permalink / raw)
  To: Alexander Graf, qemu-devel; +Cc: aik, qemu-ppc

Alexander Graf <agraf@suse.de> writes:

> On 12.06.14 14:09, Nikunj A Dadhania wrote:
>> PAPR compliant guest calls this in absence of kdump. After
>> receiving this call qemu could trigger a guest dump. This guest dump
>> can be used to analyse using crash tool.
>>
>> Signed-off-by: Nikunj A Dadhania <nikunj@linux.vnet.ibm.com>
>> ---
>>
>> v2: indentation fixes
>>
>>   hw/ppc/spapr_rtas.c | 32 ++++++++++++++++++++++++++++++++
>>   1 file changed, 32 insertions(+)
>>
>> diff --git a/hw/ppc/spapr_rtas.c b/hw/ppc/spapr_rtas.c
>> index ea4a2b2..f030e73 100644
>> --- a/hw/ppc/spapr_rtas.c
>> +++ b/hw/ppc/spapr_rtas.c
>> @@ -29,6 +29,8 @@
>>   #include "sysemu/char.h"
>>   #include "hw/qdev.h"
>>   #include "sysemu/device_tree.h"
>> +#include "qapi/qmp/qjson.h"
>> +#include "monitor/monitor.h"
>>   
>>   #include "hw/ppc/spapr.h"
>>   #include "hw/ppc/spapr_vio.h"
>> @@ -267,6 +269,34 @@ static void rtas_ibm_set_system_parameter(PowerPCCPU *cpu,
>>       rtas_st(rets, 0, ret);
>>   }
>>   
>> +static void rtas_ibm_os_term(PowerPCCPU *cpu,
>> +                             sPAPREnvironment *spapr,
>> +                             uint32_t token, uint32_t nargs,
>> +                             target_ulong args,
>> +                             uint32_t nret, target_ulong rets)
>> +{
>> +    target_ulong ret = 0;
>> +    QObject *data;
>> +
>> +    data = qobject_from_jsonf("{ 'action': %s }", "pause");
>> +    monitor_protocol_event(QEVENT_GUEST_PANICKED, data);
>> +    qobject_decref(data);
>> +    vm_stop(RUN_STATE_GUEST_PANICKED);
>> +
>> +    rtas_st(rets, 0, ret);
>> +}
>> +
>> +static void rtas_ibm_ext_os_term(PowerPCCPU *cpu,
>> +                                 sPAPREnvironment *spapr,
>> +                                 uint32_t token, uint32_t nargs,
>> +                                 target_ulong args,
>> +                                 uint32_t nret, target_ulong rets)
>> +{
>> +    target_ulong ret = 0;
>> +
>> +    rtas_st(rets, 0, ret);
>> +}
>> +
>>   static struct rtas_call {
>>       const char *name;
>>       spapr_rtas_fn fn;
>> @@ -392,6 +422,8 @@ static void core_rtas_register_types(void)
>>                           rtas_ibm_get_system_parameter);
>>       spapr_rtas_register("ibm,set-system-parameter",
>>                           rtas_ibm_set_system_parameter);
>> +    spapr_rtas_register("ibm,os-term", rtas_ibm_os_term);
>> +    spapr_rtas_register("ibm,extended-os-term", rtas_ibm_ext_os_term);
>
> Why do we need the extended-os-term if we don't do anything with it?

Linux kernel checks for both of them because of legacy:

arch/powerpc/kernel/rtas.c:

void rtas_os_term(char *str)
{
[...]
        /*
         * Firmware with the ibm,extended-os-term property is guaranteed
         * to always return from an ibm,os-term call. Earlier versions without
         * this property may terminate the partition which we want to avoid
         * since it interferes with panic_timeout.
         */
        if (RTAS_UNKNOWN_SERVICE == rtas_token("ibm,os-term") ||
            RTAS_UNKNOWN_SERVICE == rtas_token("ibm,extended-os-term"))
                return;

[...]
}

Regards,
Nikunj

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [Qemu-devel] [PATCH v2] ppc: spapr-rtas - implement os-term rtas call
  2014-06-17  9:30   ` Nikunj A Dadhania
@ 2014-06-17  9:53     ` Alexander Graf
  2014-06-17  9:59       ` Nikunj A Dadhania
  0 siblings, 1 reply; 15+ messages in thread
From: Alexander Graf @ 2014-06-17  9:53 UTC (permalink / raw)
  To: Nikunj A Dadhania, qemu-devel; +Cc: aik, qemu-ppc


On 17.06.14 11:30, Nikunj A Dadhania wrote:
> Alexander Graf <agraf@suse.de> writes:
>
>> On 12.06.14 14:09, Nikunj A Dadhania wrote:
>>> PAPR compliant guest calls this in absence of kdump. After
>>> receiving this call qemu could trigger a guest dump. This guest dump
>>> can be used to analyse using crash tool.
>>>
>>> Signed-off-by: Nikunj A Dadhania <nikunj@linux.vnet.ibm.com>
>>> ---
>>>
>>> v2: indentation fixes
>>>
>>>    hw/ppc/spapr_rtas.c | 32 ++++++++++++++++++++++++++++++++
>>>    1 file changed, 32 insertions(+)
>>>
>>> diff --git a/hw/ppc/spapr_rtas.c b/hw/ppc/spapr_rtas.c
>>> index ea4a2b2..f030e73 100644
>>> --- a/hw/ppc/spapr_rtas.c
>>> +++ b/hw/ppc/spapr_rtas.c
>>> @@ -29,6 +29,8 @@
>>>    #include "sysemu/char.h"
>>>    #include "hw/qdev.h"
>>>    #include "sysemu/device_tree.h"
>>> +#include "qapi/qmp/qjson.h"
>>> +#include "monitor/monitor.h"
>>>    
>>>    #include "hw/ppc/spapr.h"
>>>    #include "hw/ppc/spapr_vio.h"
>>> @@ -267,6 +269,34 @@ static void rtas_ibm_set_system_parameter(PowerPCCPU *cpu,
>>>        rtas_st(rets, 0, ret);
>>>    }
>>>    
>>> +static void rtas_ibm_os_term(PowerPCCPU *cpu,
>>> +                             sPAPREnvironment *spapr,
>>> +                             uint32_t token, uint32_t nargs,
>>> +                             target_ulong args,
>>> +                             uint32_t nret, target_ulong rets)
>>> +{
>>> +    target_ulong ret = 0;
>>> +    QObject *data;
>>> +
>>> +    data = qobject_from_jsonf("{ 'action': %s }", "pause");
>>> +    monitor_protocol_event(QEVENT_GUEST_PANICKED, data);
>>> +    qobject_decref(data);
>>> +    vm_stop(RUN_STATE_GUEST_PANICKED);
>>> +
>>> +    rtas_st(rets, 0, ret);
>>> +}
>>> +
>>> +static void rtas_ibm_ext_os_term(PowerPCCPU *cpu,
>>> +                                 sPAPREnvironment *spapr,
>>> +                                 uint32_t token, uint32_t nargs,
>>> +                                 target_ulong args,
>>> +                                 uint32_t nret, target_ulong rets)
>>> +{
>>> +    target_ulong ret = 0;
>>> +
>>> +    rtas_st(rets, 0, ret);
>>> +}
>>> +
>>>    static struct rtas_call {
>>>        const char *name;
>>>        spapr_rtas_fn fn;
>>> @@ -392,6 +422,8 @@ static void core_rtas_register_types(void)
>>>                            rtas_ibm_get_system_parameter);
>>>        spapr_rtas_register("ibm,set-system-parameter",
>>>                            rtas_ibm_set_system_parameter);
>>> +    spapr_rtas_register("ibm,os-term", rtas_ibm_os_term);
>>> +    spapr_rtas_register("ibm,extended-os-term", rtas_ibm_ext_os_term);
>> Why do we need the extended-os-term if we don't do anything with it?
> Linux kernel checks for both of them because of legacy:
>
> arch/powerpc/kernel/rtas.c:
>
> void rtas_os_term(char *str)
> {
> [...]
>          /*
>           * Firmware with the ibm,extended-os-term property is guaranteed
>           * to always return from an ibm,os-term call. Earlier versions without
>           * this property may terminate the partition which we want to avoid
>           * since it interferes with panic_timeout.

But we do not return from the RTAS call, so we don't adhere to the 
extended semantics?


Alex

>           */
>          if (RTAS_UNKNOWN_SERVICE == rtas_token("ibm,os-term") ||
>              RTAS_UNKNOWN_SERVICE == rtas_token("ibm,extended-os-term"))
>                  return;
>
> [...]
> }
>
> Regards,
> Nikunj
>

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [Qemu-devel] [PATCH v2] ppc: spapr-rtas - implement os-term rtas call
  2014-06-17  9:53     ` Alexander Graf
@ 2014-06-17  9:59       ` Nikunj A Dadhania
  2014-06-17 10:02         ` Alexander Graf
  0 siblings, 1 reply; 15+ messages in thread
From: Nikunj A Dadhania @ 2014-06-17  9:59 UTC (permalink / raw)
  To: Alexander Graf, qemu-devel; +Cc: aik, qemu-ppc

Alexander Graf <agraf@suse.de> writes:

> On 17.06.14 11:30, Nikunj A Dadhania wrote:
>> Alexander Graf <agraf@suse.de> writes:
>>
>>> On 12.06.14 14:09, Nikunj A Dadhania wrote:
>>>> PAPR compliant guest calls this in absence of kdump. After
>>>> receiving this call qemu could trigger a guest dump. This guest dump
>>>> can be used to analyse using crash tool.
>>>>
>>>> Signed-off-by: Nikunj A Dadhania <nikunj@linux.vnet.ibm.com>
>>>> ---
>>>>
>>>> v2: indentation fixes
>>>>
>>>>    hw/ppc/spapr_rtas.c | 32 ++++++++++++++++++++++++++++++++
>>>>    1 file changed, 32 insertions(+)
>>>>
>>>> diff --git a/hw/ppc/spapr_rtas.c b/hw/ppc/spapr_rtas.c
>>>> index ea4a2b2..f030e73 100644
>>>> --- a/hw/ppc/spapr_rtas.c
>>>> +++ b/hw/ppc/spapr_rtas.c
>>>> @@ -29,6 +29,8 @@
>>>>    #include "sysemu/char.h"
>>>>    #include "hw/qdev.h"
>>>>    #include "sysemu/device_tree.h"
>>>> +#include "qapi/qmp/qjson.h"
>>>> +#include "monitor/monitor.h"
>>>>    
>>>>    #include "hw/ppc/spapr.h"
>>>>    #include "hw/ppc/spapr_vio.h"
>>>> @@ -267,6 +269,34 @@ static void rtas_ibm_set_system_parameter(PowerPCCPU *cpu,
>>>>        rtas_st(rets, 0, ret);
>>>>    }
>>>>    
>>>> +static void rtas_ibm_os_term(PowerPCCPU *cpu,
>>>> +                             sPAPREnvironment *spapr,
>>>> +                             uint32_t token, uint32_t nargs,
>>>> +                             target_ulong args,
>>>> +                             uint32_t nret, target_ulong rets)
>>>> +{
>>>> +    target_ulong ret = 0;
>>>> +    QObject *data;
>>>> +
>>>> +    data = qobject_from_jsonf("{ 'action': %s }", "pause");
>>>> +    monitor_protocol_event(QEVENT_GUEST_PANICKED, data);
>>>> +    qobject_decref(data);
>>>> +    vm_stop(RUN_STATE_GUEST_PANICKED);
>>>> +
>>>> +    rtas_st(rets, 0, ret);
>>>> +}
>>>> +
>>>> +static void rtas_ibm_ext_os_term(PowerPCCPU *cpu,
>>>> +                                 sPAPREnvironment *spapr,
>>>> +                                 uint32_t token, uint32_t nargs,
>>>> +                                 target_ulong args,
>>>> +                                 uint32_t nret, target_ulong rets)
>>>> +{
>>>> +    target_ulong ret = 0;
>>>> +
>>>> +    rtas_st(rets, 0, ret);
>>>> +}
>>>> +
>>>>    static struct rtas_call {
>>>>        const char *name;
>>>>        spapr_rtas_fn fn;
>>>> @@ -392,6 +422,8 @@ static void core_rtas_register_types(void)
>>>>                            rtas_ibm_get_system_parameter);
>>>>        spapr_rtas_register("ibm,set-system-parameter",
>>>>                            rtas_ibm_set_system_parameter);
>>>> +    spapr_rtas_register("ibm,os-term", rtas_ibm_os_term);
>>>> +    spapr_rtas_register("ibm,extended-os-term", rtas_ibm_ext_os_term);
>>> Why do we need the extended-os-term if we don't do anything with it?
>> Linux kernel checks for both of them because of legacy:
>>
>> arch/powerpc/kernel/rtas.c:
>>
>> void rtas_os_term(char *str)
>> {
>> [...]
>>          /*
>>           * Firmware with the ibm,extended-os-term property is guaranteed
>>           * to always return from an ibm,os-term call. Earlier versions without
>>           * this property may terminate the partition which we want to avoid
>>           * since it interferes with panic_timeout.
>
> But we do not return from the RTAS call, so we don't adhere to the 
> extended semantics?

But you would return without calling os-term call if
ibm,extended-os-term isnt registered. For that reason I h       ave defined a
stub.

Regards
Nikunj

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [Qemu-devel] [PATCH v2] ppc: spapr-rtas - implement os-term rtas call
  2014-06-17  9:59       ` Nikunj A Dadhania
@ 2014-06-17 10:02         ` Alexander Graf
  2014-06-17 10:19           ` Nikunj A Dadhania
  0 siblings, 1 reply; 15+ messages in thread
From: Alexander Graf @ 2014-06-17 10:02 UTC (permalink / raw)
  To: Nikunj A Dadhania, qemu-devel; +Cc: aik, qemu-ppc


On 17.06.14 11:59, Nikunj A Dadhania wrote:
> Alexander Graf <agraf@suse.de> writes:
>
>> On 17.06.14 11:30, Nikunj A Dadhania wrote:
>>> Alexander Graf <agraf@suse.de> writes:
>>>
>>>> On 12.06.14 14:09, Nikunj A Dadhania wrote:
>>>>> PAPR compliant guest calls this in absence of kdump. After
>>>>> receiving this call qemu could trigger a guest dump. This guest dump
>>>>> can be used to analyse using crash tool.
>>>>>
>>>>> Signed-off-by: Nikunj A Dadhania <nikunj@linux.vnet.ibm.com>
>>>>> ---
>>>>>
>>>>> v2: indentation fixes
>>>>>
>>>>>     hw/ppc/spapr_rtas.c | 32 ++++++++++++++++++++++++++++++++
>>>>>     1 file changed, 32 insertions(+)
>>>>>
>>>>> diff --git a/hw/ppc/spapr_rtas.c b/hw/ppc/spapr_rtas.c
>>>>> index ea4a2b2..f030e73 100644
>>>>> --- a/hw/ppc/spapr_rtas.c
>>>>> +++ b/hw/ppc/spapr_rtas.c
>>>>> @@ -29,6 +29,8 @@
>>>>>     #include "sysemu/char.h"
>>>>>     #include "hw/qdev.h"
>>>>>     #include "sysemu/device_tree.h"
>>>>> +#include "qapi/qmp/qjson.h"
>>>>> +#include "monitor/monitor.h"
>>>>>     
>>>>>     #include "hw/ppc/spapr.h"
>>>>>     #include "hw/ppc/spapr_vio.h"
>>>>> @@ -267,6 +269,34 @@ static void rtas_ibm_set_system_parameter(PowerPCCPU *cpu,
>>>>>         rtas_st(rets, 0, ret);
>>>>>     }
>>>>>     
>>>>> +static void rtas_ibm_os_term(PowerPCCPU *cpu,
>>>>> +                             sPAPREnvironment *spapr,
>>>>> +                             uint32_t token, uint32_t nargs,
>>>>> +                             target_ulong args,
>>>>> +                             uint32_t nret, target_ulong rets)
>>>>> +{
>>>>> +    target_ulong ret = 0;
>>>>> +    QObject *data;
>>>>> +
>>>>> +    data = qobject_from_jsonf("{ 'action': %s }", "pause");
>>>>> +    monitor_protocol_event(QEVENT_GUEST_PANICKED, data);
>>>>> +    qobject_decref(data);
>>>>> +    vm_stop(RUN_STATE_GUEST_PANICKED);
>>>>> +
>>>>> +    rtas_st(rets, 0, ret);
>>>>> +}
>>>>> +
>>>>> +static void rtas_ibm_ext_os_term(PowerPCCPU *cpu,
>>>>> +                                 sPAPREnvironment *spapr,
>>>>> +                                 uint32_t token, uint32_t nargs,
>>>>> +                                 target_ulong args,
>>>>> +                                 uint32_t nret, target_ulong rets)
>>>>> +{
>>>>> +    target_ulong ret = 0;
>>>>> +
>>>>> +    rtas_st(rets, 0, ret);
>>>>> +}
>>>>> +
>>>>>     static struct rtas_call {
>>>>>         const char *name;
>>>>>         spapr_rtas_fn fn;
>>>>> @@ -392,6 +422,8 @@ static void core_rtas_register_types(void)
>>>>>                             rtas_ibm_get_system_parameter);
>>>>>         spapr_rtas_register("ibm,set-system-parameter",
>>>>>                             rtas_ibm_set_system_parameter);
>>>>> +    spapr_rtas_register("ibm,os-term", rtas_ibm_os_term);
>>>>> +    spapr_rtas_register("ibm,extended-os-term", rtas_ibm_ext_os_term);
>>>> Why do we need the extended-os-term if we don't do anything with it?
>>> Linux kernel checks for both of them because of legacy:
>>>
>>> arch/powerpc/kernel/rtas.c:
>>>
>>> void rtas_os_term(char *str)
>>> {
>>> [...]
>>>           /*
>>>            * Firmware with the ibm,extended-os-term property is guaranteed
>>>            * to always return from an ibm,os-term call. Earlier versions without
>>>            * this property may terminate the partition which we want to avoid
>>>            * since it interferes with panic_timeout.
>> But we do not return from the RTAS call, so we don't adhere to the
>> extended semantics?
> But you would return without calling os-term call if
> ibm,extended-os-term isnt registered. For that reason I h       ave defined a
> stub.

I appreciate the hacker mentality, but Linux explicitly checks on 
ibm,extended-os-term to ensure that the hypervisor does not stop the VM 
when it calls ibm,os-term. However, the implementation above does stop 
the VM when the guest calls ibm,os-term.

Why was that check put into place?


Alex

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [Qemu-devel] [PATCH v2] ppc: spapr-rtas - implement os-term rtas call
  2014-06-17 10:02         ` Alexander Graf
@ 2014-06-17 10:19           ` Nikunj A Dadhania
  2014-06-25  4:36             ` Nikunj A Dadhania
  0 siblings, 1 reply; 15+ messages in thread
From: Nikunj A Dadhania @ 2014-06-17 10:19 UTC (permalink / raw)
  To: Alexander Graf, qemu-devel; +Cc: aik, qemu-ppc

Alexander Graf <agraf@suse.de> writes:

> On 17.06.14 11:59, Nikunj A Dadhania wrote:
>> Alexander Graf <agraf@suse.de> writes:
>>> On 17.06.14 11:30, Nikunj A Dadhania wrote:
>>>> Alexander Graf <agraf@suse.de> writes:

>>>>>> +    spapr_rtas_register("ibm,os-term", rtas_ibm_os_term);
>>>>>> +    spapr_rtas_register("ibm,extended-os-term", rtas_ibm_ext_os_term);
>>>>> Why do we need the extended-os-term if we don't do anything with it?
>>>> Linux kernel checks for both of them because of legacy:
>>>>
>>>> arch/powerpc/kernel/rtas.c:
>>>>
>>>> void rtas_os_term(char *str)
>>>> {
>>>> [...]
>>>>           /*
>>>>            * Firmware with the ibm,extended-os-term property is guaranteed
>>>>            * to always return from an ibm,os-term call. Earlier versions without
>>>>            * this property may terminate the partition which we want to avoid
>>>>            * since it interferes with panic_timeout.
>>> But we do not return from the RTAS call, so we don't adhere to the
>>> extended semantics?
>> But you would return without calling os-term call if
>> ibm,extended-os-term isnt registered. For that reason I h       ave defined a
>> stub.
>
> I appreciate the hacker mentality, but Linux explicitly checks on 
> ibm,extended-os-term to ensure that the hypervisor does not stop the VM 
> when it calls ibm,os-term. However, the implementation above does stop 
> the VM when the guest calls ibm,os-term.

Seems to be added to do just that:

commit e9bbc8cde0e3c33b42ddbe1b02108cb5c97275eb
Author: Anton Blanchard <anton@samba.org>
Date:   Thu Feb 18 12:11:51 2010 +0000

    powerpc/pseries: Call ibm,os-term if the ibm,extended-os-term is present
    
    We have had issues in the past with ibm,os-term initiating shutdown of a
    partition. This is confusing to the user, especially if panic_timeout is
    non zero.
    
    The temporary fix was to avoid calling ibm,os-term if a panic_timeout was set
    and since we set it on every boot we basically never call ibm,os-term.
    
    An extended version of ibm,os-term has since been implemented which gives us
    the behaviour we want:
    
      "When the platform supports extended ibm,os-term behavior, the return to the
      RTAS will always occur unless there is a kernel assisted dump active as
      initiated by an ibm,configure-kernel-dump call."
    
    This patch checks for the ibm,extended-os-term property and calls ibm,os-term
    if it exists.
    
    Signed-off-by: Anton Blanchard <anton@samba.org>
    Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>

> Why was that check put into place?


Regards
Nikunj

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [Qemu-devel] [PATCH v2] ppc: spapr-rtas - implement os-term rtas call
  2014-06-17 10:19           ` Nikunj A Dadhania
@ 2014-06-25  4:36             ` Nikunj A Dadhania
  2014-06-25 11:03               ` Alexander Graf
  0 siblings, 1 reply; 15+ messages in thread
From: Nikunj A Dadhania @ 2014-06-25  4:36 UTC (permalink / raw)
  To: Alexander Graf, qemu-devel
  Cc: qemu-ppc, Benjamin Herrenschmidt, aik, Anton Blanchard

Nikunj A Dadhania <nikunj@linux.vnet.ibm.com> writes:

> Alexander Graf <agraf@suse.de> writes:
>
>> On 17.06.14 11:59, Nikunj A Dadhania wrote:
>>> Alexander Graf <agraf@suse.de> writes:
>>>> On 17.06.14 11:30, Nikunj A Dadhania wrote:
>>>>> Alexander Graf <agraf@suse.de> writes:
>
>>>>>>> +    spapr_rtas_register("ibm,os-term", rtas_ibm_os_term);
>>>>>>> +    spapr_rtas_register("ibm,extended-os-term", rtas_ibm_ext_os_term);
>>>>>> Why do we need the extended-os-term if we don't do anything with it?
>>>>> Linux kernel checks for both of them because of legacy:
>>>>>
>>>>> arch/powerpc/kernel/rtas.c:
>>>>>
>>>>> void rtas_os_term(char *str)
>>>>> {
>>>>> [...]
>>>>>           /*
>>>>>            * Firmware with the ibm,extended-os-term property is guaranteed
>>>>>            * to always return from an ibm,os-term call. Earlier versions without
>>>>>            * this property may terminate the partition which we want to avoid
>>>>>            * since it interferes with panic_timeout.
>>>> But we do not return from the RTAS call, so we don't adhere to the
>>>> extended semantics?
>>> But you would return without calling os-term call if
>>> ibm,extended-os-term isnt registered. For that reason I h       ave defined a
>>> stub.
>>
>> I appreciate the hacker mentality, but Linux explicitly checks on 
>> ibm,extended-os-term to ensure that the hypervisor does not stop the VM 
>> when it calls ibm,os-term. However, the implementation above does stop 
>> the VM when the guest calls ibm,os-term.
>
> Seems to be added to do just that:
>
> commit e9bbc8cde0e3c33b42ddbe1b02108cb5c97275eb
> Author: Anton Blanchard <anton@samba.org>
> Date:   Thu Feb 18 12:11:51 2010 +0000
>
>     powerpc/pseries: Call ibm,os-term if the ibm,extended-os-term is present
>     
>     We have had issues in the past with ibm,os-term initiating shutdown of a
>     partition. This is confusing to the user, especially if panic_timeout is
>     non zero.
>     
>     The temporary fix was to avoid calling ibm,os-term if a panic_timeout was set
>     and since we set it on every boot we basically never call ibm,os-term.
>     
>     An extended version of ibm,os-term has since been implemented which gives us
>     the behaviour we want:
>     
>       "When the platform supports extended ibm,os-term behavior, the return to the
>       RTAS will always occur unless there is a kernel assisted dump active as
>       initiated by an ibm,configure-kernel-dump call."
>     
>     This patch checks for the ibm,extended-os-term property and calls ibm,os-term
>     if it exists.
>     
>     Signed-off-by: Anton Blanchard <anton@samba.org>
>     Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>


I was thinking of the following:

1) Return the RTAS unsupported for extended-os-term
2) A comment in the beginning of the function to suggest that this is a
   stub need for legacy of PowerVM

Please let me know your thoughts.

Regards,
Nikunj

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [Qemu-devel] [PATCH v2] ppc: spapr-rtas - implement os-term rtas call
  2014-06-25  4:36             ` Nikunj A Dadhania
@ 2014-06-25 11:03               ` Alexander Graf
  2014-06-25 11:27                 ` Nikunj A Dadhania
  0 siblings, 1 reply; 15+ messages in thread
From: Alexander Graf @ 2014-06-25 11:03 UTC (permalink / raw)
  To: Nikunj A Dadhania, qemu-devel
  Cc: qemu-ppc, Benjamin Herrenschmidt, aik, Anton Blanchard


On 25.06.14 06:36, Nikunj A Dadhania wrote:
> Nikunj A Dadhania <nikunj@linux.vnet.ibm.com> writes:
>
>> Alexander Graf <agraf@suse.de> writes:
>>
>>> On 17.06.14 11:59, Nikunj A Dadhania wrote:
>>>> Alexander Graf <agraf@suse.de> writes:
>>>>> On 17.06.14 11:30, Nikunj A Dadhania wrote:
>>>>>> Alexander Graf <agraf@suse.de> writes:
>>>>>>>> +    spapr_rtas_register("ibm,os-term", rtas_ibm_os_term);
>>>>>>>> +    spapr_rtas_register("ibm,extended-os-term", rtas_ibm_ext_os_term);
>>>>>>> Why do we need the extended-os-term if we don't do anything with it?
>>>>>> Linux kernel checks for both of them because of legacy:
>>>>>>
>>>>>> arch/powerpc/kernel/rtas.c:
>>>>>>
>>>>>> void rtas_os_term(char *str)
>>>>>> {
>>>>>> [...]
>>>>>>            /*
>>>>>>             * Firmware with the ibm,extended-os-term property is guaranteed
>>>>>>             * to always return from an ibm,os-term call. Earlier versions without
>>>>>>             * this property may terminate the partition which we want to avoid
>>>>>>             * since it interferes with panic_timeout.
>>>>> But we do not return from the RTAS call, so we don't adhere to the
>>>>> extended semantics?
>>>> But you would return without calling os-term call if
>>>> ibm,extended-os-term isnt registered. For that reason I h       ave defined a
>>>> stub.
>>> I appreciate the hacker mentality, but Linux explicitly checks on
>>> ibm,extended-os-term to ensure that the hypervisor does not stop the VM
>>> when it calls ibm,os-term. However, the implementation above does stop
>>> the VM when the guest calls ibm,os-term.
>> Seems to be added to do just that:
>>
>> commit e9bbc8cde0e3c33b42ddbe1b02108cb5c97275eb
>> Author: Anton Blanchard <anton@samba.org>
>> Date:   Thu Feb 18 12:11:51 2010 +0000
>>
>>      powerpc/pseries: Call ibm,os-term if the ibm,extended-os-term is present
>>      
>>      We have had issues in the past with ibm,os-term initiating shutdown of a
>>      partition. This is confusing to the user, especially if panic_timeout is
>>      non zero.
>>      
>>      The temporary fix was to avoid calling ibm,os-term if a panic_timeout was set
>>      and since we set it on every boot we basically never call ibm,os-term.
>>      
>>      An extended version of ibm,os-term has since been implemented which gives us
>>      the behaviour we want:
>>      
>>        "When the platform supports extended ibm,os-term behavior, the return to the
>>        RTAS will always occur unless there is a kernel assisted dump active as
>>        initiated by an ibm,configure-kernel-dump call."
>>      
>>      This patch checks for the ibm,extended-os-term property and calls ibm,os-term
>>      if it exists.
>>      
>>      Signed-off-by: Anton Blanchard <anton@samba.org>
>>      Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
>
> I was thinking of the following:
>
> 1) Return the RTAS unsupported for extended-os-term
> 2) A comment in the beginning of the function to suggest that this is a
>     stub need for legacy of PowerVM
>
> Please let me know your thoughts.

I think we need to clarify what bug Anton was trying to fix. The 
implementation you're proposing for os-term may "initiate a shutdown of 
a partition", albeit a hard stop usually. Is this what Linux is trying 
to avoid?

Did PowerVM try to inject a soft shutdown signal into the VM and this 
check is to make sure we don't get that?

I think we should make 100% sure we understand what situation the fix 
above actually tried to avoid and make sure QEMU doesn't do it.


Alex

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [Qemu-devel] [PATCH v2] ppc: spapr-rtas - implement os-term rtas call
  2014-06-25 11:03               ` Alexander Graf
@ 2014-06-25 11:27                 ` Nikunj A Dadhania
  2014-06-25 11:32                   ` Alexander Graf
  0 siblings, 1 reply; 15+ messages in thread
From: Nikunj A Dadhania @ 2014-06-25 11:27 UTC (permalink / raw)
  To: Alexander Graf, qemu-devel, Anton Blanchard
  Cc: qemu-ppc, Benjamin Herrenschmidt, aik

Alexander Graf <agraf@suse.de> writes:

> On 25.06.14 06:36, Nikunj A Dadhania wrote:
>> Nikunj A Dadhania <nikunj@linux.vnet.ibm.com> writes:
>>
>>> Alexander Graf <agraf@suse.de> writes:
>>>
>>>> On 17.06.14 11:59, Nikunj A Dadhania wrote:
>>>>> Alexander Graf <agraf@suse.de> writes:
>>>>>> On 17.06.14 11:30, Nikunj A Dadhania wrote:
>>>>>>> Alexander Graf <agraf@suse.de> writes:
>>>>>>>>> +    spapr_rtas_register("ibm,os-term", rtas_ibm_os_term);
>>>>>>>>> +    spapr_rtas_register("ibm,extended-os-term", rtas_ibm_ext_os_term);
>>>>>>>> Why do we need the extended-os-term if we don't do anything with it?
>>>>>>> Linux kernel checks for both of them because of legacy:
>>>>>>>
>>>>>>> arch/powerpc/kernel/rtas.c:
>>>>>>>
>>>>>>> void rtas_os_term(char *str)
>>>>>>> {
>>>>>>> [...]
>>>>>>>            /*
>>>>>>>             * Firmware with the ibm,extended-os-term property is guaranteed
>>>>>>>             * to always return from an ibm,os-term call. Earlier versions without
>>>>>>>             * this property may terminate the partition which we want to avoid
>>>>>>>             * since it interferes with panic_timeout.
>>>>>> But we do not return from the RTAS call, so we don't adhere to the
>>>>>> extended semantics?
>>>>> But you would return without calling os-term call if
>>>>> ibm,extended-os-term isnt registered. For that reason I h       ave defined a
>>>>> stub.
>>>> I appreciate the hacker mentality, but Linux explicitly checks on
>>>> ibm,extended-os-term to ensure that the hypervisor does not stop the VM
>>>> when it calls ibm,os-term. However, the implementation above does stop
>>>> the VM when the guest calls ibm,os-term.
>>> Seems to be added to do just that:
>>>
>>> commit e9bbc8cde0e3c33b42ddbe1b02108cb5c97275eb
>>> Author: Anton Blanchard <anton@samba.org>
>>> Date:   Thu Feb 18 12:11:51 2010 +0000
>>>
>>>      powerpc/pseries: Call ibm,os-term if the ibm,extended-os-term is present
>>>      
>>>      We have had issues in the past with ibm,os-term initiating shutdown of a
>>>      partition. This is confusing to the user, especially if panic_timeout is
>>>      non zero.
>>>      
>>>      The temporary fix was to avoid calling ibm,os-term if a panic_timeout was set
>>>      and since we set it on every boot we basically never call ibm,os-term.
>>>      
>>>      An extended version of ibm,os-term has since been implemented which gives us
>>>      the behaviour we want:
>>>      
>>>        "When the platform supports extended ibm,os-term behavior, the return to the
>>>        RTAS will always occur unless there is a kernel assisted dump active as
>>>        initiated by an ibm,configure-kernel-dump call."
>>>      
>>>      This patch checks for the ibm,extended-os-term property and calls ibm,os-term
>>>      if it exists.
>>>      
>>>      Signed-off-by: Anton Blanchard <anton@samba.org>
>>>      Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
>>
>> I was thinking of the following:
>>
>> 1) Return the RTAS unsupported for extended-os-term
>> 2) A comment in the beginning of the function to suggest that this is a
>>     stub need for legacy of PowerVM
>>
>> Please let me know your thoughts.
>
> I think we need to clarify what bug Anton was trying to fix. The
> implementation you're proposing for os-term may "initiate a shutdown
> of a partition", albeit a hard stop usually. Is this what Linux is
> trying to avoid?

Let me put down my understanding:

There are two possible way to handle kernel panic:
1) Kdump service running in guest - already working
2) Pass the kernel panic information to hypervisor - not there in Qemu
   pseries

So without kdump service running, if linux kernel hits a panic, its going
to check os-term and extended-os-term, only then its going to call
os-term.

Now for what to do in os-term is the question, at present my code is
putting that to guest paniced state(paused)

> Did PowerVM try to inject a soft shutdown signal into the VM and this 
> check is to make sure we don't get that?

In this case, isnt that implementation dependent on what we do in qemu?

> I think we should make 100% sure we understand what situation the fix 
> above actually tried to avoid and make sure QEMU doesn't do it.

Regards
Nikunj

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [Qemu-devel] [PATCH v2] ppc: spapr-rtas - implement os-term rtas call
  2014-06-25 11:27                 ` Nikunj A Dadhania
@ 2014-06-25 11:32                   ` Alexander Graf
  2014-06-26  7:55                     ` Nikunj A Dadhania
  0 siblings, 1 reply; 15+ messages in thread
From: Alexander Graf @ 2014-06-25 11:32 UTC (permalink / raw)
  To: Nikunj A Dadhania, qemu-devel, Anton Blanchard
  Cc: qemu-ppc, Benjamin Herrenschmidt, aik


On 25.06.14 13:27, Nikunj A Dadhania wrote:
> Alexander Graf <agraf@suse.de> writes:
>
>> On 25.06.14 06:36, Nikunj A Dadhania wrote:
>>> Nikunj A Dadhania <nikunj@linux.vnet.ibm.com> writes:
>>>
>>>> Alexander Graf <agraf@suse.de> writes:
>>>>
>>>>> On 17.06.14 11:59, Nikunj A Dadhania wrote:
>>>>>> Alexander Graf <agraf@suse.de> writes:
>>>>>>> On 17.06.14 11:30, Nikunj A Dadhania wrote:
>>>>>>>> Alexander Graf <agraf@suse.de> writes:
>>>>>>>>>> +    spapr_rtas_register("ibm,os-term", rtas_ibm_os_term);
>>>>>>>>>> +    spapr_rtas_register("ibm,extended-os-term", rtas_ibm_ext_os_term);
>>>>>>>>> Why do we need the extended-os-term if we don't do anything with it?
>>>>>>>> Linux kernel checks for both of them because of legacy:
>>>>>>>>
>>>>>>>> arch/powerpc/kernel/rtas.c:
>>>>>>>>
>>>>>>>> void rtas_os_term(char *str)
>>>>>>>> {
>>>>>>>> [...]
>>>>>>>>             /*
>>>>>>>>              * Firmware with the ibm,extended-os-term property is guaranteed
>>>>>>>>              * to always return from an ibm,os-term call. Earlier versions without
>>>>>>>>              * this property may terminate the partition which we want to avoid
>>>>>>>>              * since it interferes with panic_timeout.
>>>>>>> But we do not return from the RTAS call, so we don't adhere to the
>>>>>>> extended semantics?
>>>>>> But you would return without calling os-term call if
>>>>>> ibm,extended-os-term isnt registered. For that reason I h       ave defined a
>>>>>> stub.
>>>>> I appreciate the hacker mentality, but Linux explicitly checks on
>>>>> ibm,extended-os-term to ensure that the hypervisor does not stop the VM
>>>>> when it calls ibm,os-term. However, the implementation above does stop
>>>>> the VM when the guest calls ibm,os-term.
>>>> Seems to be added to do just that:
>>>>
>>>> commit e9bbc8cde0e3c33b42ddbe1b02108cb5c97275eb
>>>> Author: Anton Blanchard <anton@samba.org>
>>>> Date:   Thu Feb 18 12:11:51 2010 +0000
>>>>
>>>>       powerpc/pseries: Call ibm,os-term if the ibm,extended-os-term is present
>>>>       
>>>>       We have had issues in the past with ibm,os-term initiating shutdown of a
>>>>       partition. This is confusing to the user, especially if panic_timeout is
>>>>       non zero.
>>>>       
>>>>       The temporary fix was to avoid calling ibm,os-term if a panic_timeout was set
>>>>       and since we set it on every boot we basically never call ibm,os-term.
>>>>       
>>>>       An extended version of ibm,os-term has since been implemented which gives us
>>>>       the behaviour we want:
>>>>       
>>>>         "When the platform supports extended ibm,os-term behavior, the return to the
>>>>         RTAS will always occur unless there is a kernel assisted dump active as
>>>>         initiated by an ibm,configure-kernel-dump call."
>>>>       
>>>>       This patch checks for the ibm,extended-os-term property and calls ibm,os-term
>>>>       if it exists.
>>>>       
>>>>       Signed-off-by: Anton Blanchard <anton@samba.org>
>>>>       Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
>>> I was thinking of the following:
>>>
>>> 1) Return the RTAS unsupported for extended-os-term
>>> 2) A comment in the beginning of the function to suggest that this is a
>>>      stub need for legacy of PowerVM
>>>
>>> Please let me know your thoughts.
>> I think we need to clarify what bug Anton was trying to fix. The
>> implementation you're proposing for os-term may "initiate a shutdown
>> of a partition", albeit a hard stop usually. Is this what Linux is
>> trying to avoid?
> Let me put down my understanding:
>
> There are two possible way to handle kernel panic:
> 1) Kdump service running in guest - already working
> 2) Pass the kernel panic information to hypervisor - not there in Qemu
>     pseries
>
> So without kdump service running, if linux kernel hits a panic, its going
> to check os-term and extended-os-term, only then its going to call
> os-term.

It's checking both for a reason. Find that reason.


Alex

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [Qemu-devel] [PATCH v2] ppc: spapr-rtas - implement os-term rtas call
  2014-06-25 11:32                   ` Alexander Graf
@ 2014-06-26  7:55                     ` Nikunj A Dadhania
  2014-06-26  8:04                       ` Alexander Graf
  0 siblings, 1 reply; 15+ messages in thread
From: Nikunj A Dadhania @ 2014-06-26  7:55 UTC (permalink / raw)
  To: Alexander Graf, qemu-devel, Anton Blanchard
  Cc: aik, Benjamin Herrenschmidt, qemu-ppc

Alexander Graf <agraf@suse.de> writes:

> On 25.06.14 13:27, Nikunj A Dadhania wrote:
>> Alexander Graf <agraf@suse.de> writes:
>>
>> Let me put down my understanding:
>>
>> There are two possible way to handle kernel panic:
>> 1) Kdump service running in guest - already working
>> 2) Pass the kernel panic information to hypervisor - not there in Qemu
>>     pseries
>>
>> So without kdump service running, if linux kernel hits a panic, its going
>> to check os-term and extended-os-term, only then its going to call
>> os-term.
>
> It's checking both for a reason. Find that reason.

Here is what I figured out from PAPR:

rtas ibm,os-term, does not gaurantee a return back to the guest cpu.

If ibm,extended-os-term property is set rtas call return will always
occur.

Regards
Nikunj

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [Qemu-devel] [PATCH v2] ppc: spapr-rtas - implement os-term rtas call
  2014-06-26  7:55                     ` Nikunj A Dadhania
@ 2014-06-26  8:04                       ` Alexander Graf
  2014-06-26  9:05                         ` Nikunj A Dadhania
  0 siblings, 1 reply; 15+ messages in thread
From: Alexander Graf @ 2014-06-26  8:04 UTC (permalink / raw)
  To: Nikunj A Dadhania
  Cc: aik, Benjamin Herrenschmidt, qemu-ppc, qemu-devel, Anton Blanchard



> Am 26.06.2014 um 09:55 schrieb Nikunj A Dadhania <nikunj@linux.vnet.ibm.com>:
> 
> Alexander Graf <agraf@suse.de> writes:
> 
>>> On 25.06.14 13:27, Nikunj A Dadhania wrote:
>>> Alexander Graf <agraf@suse.de> writes:
>>> 
>>> Let me put down my understanding:
>>> 
>>> There are two possible way to handle kernel panic:
>>> 1) Kdump service running in guest - already working
>>> 2) Pass the kernel panic information to hypervisor - not there in Qemu
>>>    pseries
>>> 
>>> So without kdump service running, if linux kernel hits a panic, its going
>>> to check os-term and extended-os-term, only then its going to call
>>> os-term.
>> 
>> It's checking both for a reason. Find that reason.
> 
> Here is what I figured out from PAPR:
> 
> rtas ibm,os-term, does not gaurantee a return back to the guest cpu.
> 
> If ibm,extended-os-term property is set rtas call return will always
> occur.

With your patch it doesn't occur.

Alex

> 
> Regards
> Nikunj
> 

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [Qemu-devel] [PATCH v2] ppc: spapr-rtas - implement os-term rtas call
  2014-06-26  8:04                       ` Alexander Graf
@ 2014-06-26  9:05                         ` Nikunj A Dadhania
  2014-06-26  9:22                           ` Alexander Graf
  0 siblings, 1 reply; 15+ messages in thread
From: Nikunj A Dadhania @ 2014-06-26  9:05 UTC (permalink / raw)
  To: Alexander Graf
  Cc: aik, Benjamin Herrenschmidt, qemu-ppc, qemu-devel, Anton Blanchard

Alexander Graf <agraf@suse.de> writes:

>> Am 26.06.2014 um 09:55 schrieb Nikunj A Dadhania <nikunj@linux.vnet.ibm.com>:
>> 
>> Alexander Graf <agraf@suse.de> writes:
>> 
>>>> On 25.06.14 13:27, Nikunj A Dadhania wrote:
>>>> Alexander Graf <agraf@suse.de> writes:
>>>> 
>>>> Let me put down my understanding:
>>>> 
>>>> There are two possible way to handle kernel panic:
>>>> 1) Kdump service running in guest - already working
>>>> 2) Pass the kernel panic information to hypervisor - not there in Qemu
>>>>    pseries
>>>> 
>>>> So without kdump service running, if linux kernel hits a panic, its going
>>>> to check os-term and extended-os-term, only then its going to call
>>>> os-term.
>>> 
>>> It's checking both for a reason. Find that reason.
>> 
>> Here is what I figured out from PAPR:
>> 
>> rtas ibm,os-term, does not gaurantee a return back to the guest cpu.
>> 
>> If ibm,extended-os-term property is set rtas call return will always
>> occur.
>
> With your patch it doesn't occur.

Hmm, you are right.

+    monitor_protocol_event(QEVENT_GUEST_PANICKED, data);
+    qobject_decref(data);
+    vm_stop(RUN_STATE_GUEST_PANICKED);

So the issue here is using vm_stop. So if I do not do this I will be
returning back to the guest.

I was trying to enable:

<on_crash> coredump-restart </on_crash>
<on_crash> coredump-destroy </on_crash>

in libvirt. But anyways, when libvirt receives these event, it will
either destroy or restart the guest. So if I remove the vm_stop, there
will be a return to the guest. And depending on the libvirt domain
config a restart/destroy will take effect. Does this look ok?

Regards
Nikunj

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [Qemu-devel] [PATCH v2] ppc: spapr-rtas - implement os-term rtas call
  2014-06-26  9:05                         ` Nikunj A Dadhania
@ 2014-06-26  9:22                           ` Alexander Graf
  0 siblings, 0 replies; 15+ messages in thread
From: Alexander Graf @ 2014-06-26  9:22 UTC (permalink / raw)
  To: Nikunj A Dadhania
  Cc: aik, Benjamin Herrenschmidt, qemu-ppc, qemu-devel, Anton Blanchard


On 26.06.14 11:05, Nikunj A Dadhania wrote:
> Alexander Graf <agraf@suse.de> writes:
>
>>> Am 26.06.2014 um 09:55 schrieb Nikunj A Dadhania <nikunj@linux.vnet.ibm.com>:
>>>
>>> Alexander Graf <agraf@suse.de> writes:
>>>
>>>>> On 25.06.14 13:27, Nikunj A Dadhania wrote:
>>>>> Alexander Graf <agraf@suse.de> writes:
>>>>>
>>>>> Let me put down my understanding:
>>>>>
>>>>> There are two possible way to handle kernel panic:
>>>>> 1) Kdump service running in guest - already working
>>>>> 2) Pass the kernel panic information to hypervisor - not there in Qemu
>>>>>     pseries
>>>>>
>>>>> So without kdump service running, if linux kernel hits a panic, its going
>>>>> to check os-term and extended-os-term, only then its going to call
>>>>> os-term.
>>>> It's checking both for a reason. Find that reason.
>>> Here is what I figured out from PAPR:
>>>
>>> rtas ibm,os-term, does not gaurantee a return back to the guest cpu.
>>>
>>> If ibm,extended-os-term property is set rtas call return will always
>>> occur.
>> With your patch it doesn't occur.
> Hmm, you are right.
>
> +    monitor_protocol_event(QEVENT_GUEST_PANICKED, data);
> +    qobject_decref(data);
> +    vm_stop(RUN_STATE_GUEST_PANICKED);
>
> So the issue here is using vm_stop. So if I do not do this I will be
> returning back to the guest.
>
> I was trying to enable:
>
> <on_crash> coredump-restart </on_crash>
> <on_crash> coredump-destroy </on_crash>
>
> in libvirt. But anyways, when libvirt receives these event, it will
> either destroy or restart the guest. So if I remove the vm_stop, there
> will be a return to the guest. And depending on the libvirt domain
> config a restart/destroy will take effect. Does this look ok?

I think that's closer to what Linux expects, yes. But I'd like to have 
an ack on that approach from Ben or Anton.


Alex

^ permalink raw reply	[flat|nested] 15+ messages in thread

end of thread, other threads:[~2014-06-26  9:23 UTC | newest]

Thread overview: 15+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-06-12 12:09 [Qemu-devel] [PATCH v2] ppc: spapr-rtas - implement os-term rtas call Nikunj A Dadhania
2014-06-17  9:13 ` Alexander Graf
2014-06-17  9:30   ` Nikunj A Dadhania
2014-06-17  9:53     ` Alexander Graf
2014-06-17  9:59       ` Nikunj A Dadhania
2014-06-17 10:02         ` Alexander Graf
2014-06-17 10:19           ` Nikunj A Dadhania
2014-06-25  4:36             ` Nikunj A Dadhania
2014-06-25 11:03               ` Alexander Graf
2014-06-25 11:27                 ` Nikunj A Dadhania
2014-06-25 11:32                   ` Alexander Graf
2014-06-26  7:55                     ` Nikunj A Dadhania
2014-06-26  8:04                       ` Alexander Graf
2014-06-26  9:05                         ` Nikunj A Dadhania
2014-06-26  9:22                           ` Alexander Graf

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.