[Skiboot] [PATCH] opal/xstop: Use nvram option to enable/disable sw checkstop.

Balbir Singh bsingharora at gmail.com
Mon Dec 18 13:07:58 AEDT 2017


On Sun, Dec 17, 2017 at 11:14 PM, Mahesh J Salgaonkar
<mahesh at linux.vnet.ibm.com> wrote:
> From: Mahesh Salgaonkar <mahesh at linux.vnet.ibm.com>
>
> Add a mechanism to enable/disable sw checkstop by looking at nvram option
> opal-sw-xstop=<enable/disable>.
>
> For now this patch disables the sw checkstop trigger unless explicitly
> enabled through nvram option 'opal-sw-xstop=enable' for p9. This will allow
> an opportunity to get host kernel in panic path or xmon for unrecoverable
> HMIs or MCE, to be able to debug the issue effectively.
>
> To enable sw checkstop in opal issue following command:
>
> # nvram -p ibm,skiboot --update-config opal-sw-xstop=enable
>
> NOTE: This is a workaround patch to disable sw checkstop by default to gain
> control in host kernel for better checkstop debugging. Once we have most of
> the checkstop issues stabilized/resolved, revisit this patch to enable sw
> checkstop by default for p9.
>
> For p8 platform it will remain enabled by default unless explicitly disabled.
>
> To disable sw checkstop on p8 issue following command:
>
> # nvram -p ibm,skiboot --update-config opal-sw-xstop=disable
>
> Signed-off-by: Mahesh Salgaonkar <mahesh at linux.vnet.ibm.com>
> ---
>  hw/xscom.c |   26 ++++++++++++++++++++++++++
>  1 file changed, 26 insertions(+)
>
> diff --git a/hw/xscom.c b/hw/xscom.c
> index de5a27e..7b530a9 100644
> --- a/hw/xscom.c
> +++ b/hw/xscom.c
> @@ -24,6 +24,7 @@
>  #include <errorlog.h>
>  #include <opal-api.h>
>  #include <timebase.h>
> +#include <nvram.h>
>
>  /* Mask of bits to clear in HMER before an access */
>  #define HMER_CLR_MASK  (~(SPR_HMER_XSCOM_FAIL | \
> @@ -827,6 +828,31 @@ int64_t xscom_trigger_xstop(void)
>  {
>         int rc = OPAL_UNSUPPORTED;
>
> +       /*
> +        * Workaround until we iron out all checkstop issues at present.
> +        *
> +        * For p9:
> +        * By default do not trigger sw checkstop unless explicitly enabled
> +        * through nvram option 'opal-sw-xstop=enable'.
> +        *
> +        * For p8:
> +        * Keep it enabled by default unless explicitly disabled.
> +        *
> +        * NOTE: Once all checkstop issues are resolved/stabilized reverse
> +        * the logic to enable sw checkstop by default on p9.
> +        */
> +       switch (proc_gen) {
> +       case proc_gen_p8:
> +               if (nvram_query_eq("opal-sw-xstop", "disable"))
> +                       return rc;
> +               break;
> +       case proc_gen_p9:
> +       default:
> +               if (!nvram_query_eq("opal-sw-xstop", "enable"))
> +                       return rc;
> +               break;
> +       }

Can we get a prlog to indicate that we did not checkstop? I think it
will be useful
when we debug. Ideally the OS will crash/reboot and tell us from the stack

> +
>         if (xstop_xscom.addr)
>                 rc = xscom_writeme(xstop_xscom.addr,
>                                 PPC_BIT(xstop_xscom.fir_bit));
>

Reviewed-by: Balbir Singh <bsingharora at gmail.com>


More information about the Skiboot mailing list