diff mbox

powernv/hmi: Use the "unknown" checkstop type as a fallback

Message ID 1458012409-32448-1-git-send-email-ruscur@russell.cc (mailing list archive)
State Superseded
Headers show

Commit Message

Russell Currey March 15, 2016, 3:26 a.m. UTC
The HMI code knows about three types of errors: CORE, NX and UNKNOWN.
If OPAL were to add a new type, it would not be handled at all since
there is no fallback case.  Instead of explicitly checking for UNKNOWN,
treat any checkstop type without a handler as unknown.

Signed-off-by: Russell Currey <ruscur@russell.cc>
---
 arch/powerpc/platforms/powernv/opal-hmi.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Daniel Axtens March 15, 2016, 3:41 a.m. UTC | #1
Russell Currey <ruscur@russell.cc> writes:

> The HMI code knows about three types of errors: CORE, NX and UNKNOWN.
> If OPAL were to add a new type, it would not be handled at all since
> there is no fallback case.  Instead of explicitly checking for UNKNOWN,
> treat any checkstop type without a handler as unknown.
>

Just checked the surrounding function; you're quite right.
Reviewed-by: Daniel Axtens <dja@axtens.net>

> Signed-off-by: Russell Currey <ruscur@russell.cc>
> ---
>  arch/powerpc/platforms/powernv/opal-hmi.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/arch/powerpc/platforms/powernv/opal-hmi.c b/arch/powerpc/platforms/powernv/opal-hmi.c
> index d000f4e..bff4dd1 100644
> --- a/arch/powerpc/platforms/powernv/opal-hmi.c
> +++ b/arch/powerpc/platforms/powernv/opal-hmi.c
> @@ -157,7 +157,7 @@ static void print_checkstop_reason(const char *level,
>  	case CHECKSTOP_TYPE_NX:
>  		print_nx_checkstop_reason(level, hmi_evt);
>  		break;
> -	case CHECKSTOP_TYPE_UNKNOWN:
> +	default:
>  		printk("%s	Unknown Malfunction Alert.\n", level);
>  		break;
>  	}
> -- 
> 2.7.3
>
> _______________________________________________
> Linuxppc-dev mailing list
> Linuxppc-dev@lists.ozlabs.org
> https://lists.ozlabs.org/listinfo/linuxppc-dev
Andrew Donnellan March 15, 2016, 3:56 a.m. UTC | #2
On 15/03/16 14:26, Russell Currey wrote:
> The HMI code knows about three types of errors: CORE, NX and UNKNOWN.
> If OPAL were to add a new type, it would not be handled at all since
> there is no fallback case.  Instead of explicitly checking for UNKNOWN,
> treat any checkstop type without a handler as unknown.
>
> Signed-off-by: Russell Currey <ruscur@russell.cc>

Indeed it looks like there isn't a fallback case.

Would it be useful to print xstop_type in the unknown case?

Reviewed-by: Andrew Donnellan <andrew.donnellan@au1.ibm.com>
Russell Currey March 15, 2016, 5:15 a.m. UTC | #3
On Tue, 2016-03-15 at 14:56 +1100, Andrew Donnellan wrote:
> On 15/03/16 14:26, Russell Currey wrote:
> > 
> > The HMI code knows about three types of errors: CORE, NX and UNKNOWN.
> > If OPAL were to add a new type, it would not be handled at all since
> > there is no fallback case.  Instead of explicitly checking for UNKNOWN,
> > treat any checkstop type without a handler as unknown.
> > 
> > Signed-off-by: Russell Currey <ruscur@russell.cc>
> Indeed it looks like there isn't a fallback case.
> 
> Would it be useful to print xstop_type in the unknown case?

I don't think so - if there's a new checkstop type, specific handling for
it should be implemented in the kernel, and if you're getting unknown
checkstops that are bringing down your machine you should be looking at the
OPAL firmware log anyway, which would contain details if there was
something "new".

> 
> Reviewed-by: Andrew Donnellan <andrew.donnellan@au1.ibm.com>
>
Andrew Donnellan March 15, 2016, 5:36 a.m. UTC | #4
On 15/03/16 16:15, Russell Currey wrote:
>> Would it be useful to print xstop_type in the unknown case?
>
> I don't think so - if there's a new checkstop type, specific handling for
> it should be implemented in the kernel, and if you're getting unknown
> checkstops that are bringing down your machine you should be looking at the
> OPAL firmware log anyway, which would contain details if there was
> something "new".

That's fair, would primarily help debugging in the rather corner case of 
new skiboot, old kernel, and no access to the OPAL log...
Russell Currey March 15, 2016, 5:40 a.m. UTC | #5
On Tue, 2016-03-15 at 16:36 +1100, Andrew Donnellan wrote:
> On 15/03/16 16:15, Russell Currey wrote:
> > 
> > > 
> > > Would it be useful to print xstop_type in the unknown case?
> > I don't think so - if there's a new checkstop type, specific handling
> > for
> > it should be implemented in the kernel, and if you're getting unknown
> > checkstops that are bringing down your machine you should be looking at
> > the
> > OPAL firmware log anyway, which would contain details if there was
> > something "new".
> That's fair, would primarily help debugging in the rather corner case of 
> new skiboot, old kernel, and no access to the OPAL log...
> 
I think if you don't have access to the OPAL log, finding out what number
OPAL sent isn't going to help you.
Michael Ellerman March 15, 2016, 9:28 a.m. UTC | #6
On Tue, 2016-03-15 at 16:15 +1100, Russell Currey wrote:
> On Tue, 2016-03-15 at 14:56 +1100, Andrew Donnellan wrote:
> > On 15/03/16 14:26, Russell Currey wrote:
> > >
> > > The HMI code knows about three types of errors: CORE, NX and UNKNOWN.
> > > If OPAL were to add a new type, it would not be handled at all since
> > > there is no fallback case.  Instead of explicitly checking for UNKNOWN,
> > > treat any checkstop type without a handler as unknown.
> > >
> > > Signed-off-by: Russell Currey <ruscur@russell.cc>
> > Indeed it looks like there isn't a fallback case.
> >
> > Would it be useful to print xstop_type in the unknown case?
>
> I don't think so - if there's a new checkstop type, specific handling for
> it should be implemented in the kernel, and if you're getting unknown
> checkstops that are bringing down your machine you should be looking at the
> OPAL firmware log anyway, which would contain details if there was
> something "new".

That's probably true.

But it's trivial to print it out, so I'd rather we did.

Putting it in a local would be nice, rather than saying
hmi_evt->u.xstop_error.xstop_type twice.

cheers
diff mbox

Patch

diff --git a/arch/powerpc/platforms/powernv/opal-hmi.c b/arch/powerpc/platforms/powernv/opal-hmi.c
index d000f4e..bff4dd1 100644
--- a/arch/powerpc/platforms/powernv/opal-hmi.c
+++ b/arch/powerpc/platforms/powernv/opal-hmi.c
@@ -157,7 +157,7 @@  static void print_checkstop_reason(const char *level,
 	case CHECKSTOP_TYPE_NX:
 		print_nx_checkstop_reason(level, hmi_evt);
 		break;
-	case CHECKSTOP_TYPE_UNKNOWN:
+	default:
 		printk("%s	Unknown Malfunction Alert.\n", level);
 		break;
 	}