Re: [PATCH v2 12/19] arm64: entry: improve bad_mode()

Mark Rutland
2021-05-21T17:12:41Z

On Fri, May 21, 2021 at 06:02:21PM +0100, Joey Gouly wrote:
> On Wed, May 19, 2021 at 01:38:55PM +0100, Mark Rutland wrote:
> > Our use of bad_mode() has a few rough edges:
> >
> > * AArch64 doesn't use the term "mode", and refers to "Execution
> > states", "Exception levels", and "Selected stack pointer".
> >
> > * We log the exception type (SYNC/IRQ/FIQ/SError), but not the actual
> > "mode" (though this can be deocded from the SPSR value).

Whoops, I meant s/deocded/decoded/ here too.

I guess I'm not winning the spelling bee this year.

> > * We use bad_mode() as a second-level handler for unexpected synchronous
> > exceptions, where the "mode" is legitimate, but the specific exception
> > is not.
> >
> > * We dump the ESR value, but call this "code", and so it's not clear to
> > all readers that this is the ESR.
> >
> > ... and all of this can be someqhat opaque to those who aren't extremely
> > familiar with the code.
> typo: someqhat -> somewhat
>
> >
> > Let's make this a bit clearer by having bad_mode() log "Unhandled
> > ${TYPE} exception" rather than "Bad mode in ${TYPE} handler", using
> > "ESR" rather than "code", and having the final panic() log "Unhandled
> > exception" rather than "Bad mode".
> >
> > In future we'd like to log the specific architectural vector rather than
> > just the type of exception, so we also split the core of basd_mode() out
> typo: basd_mode -> bad_mode
>
> > into a helper called __panic_unhandled(), which takes the vector as a
> > string argument.
> >
>
> Reviewed-by: Joey Gouly <joey.gouly@arm.com>

Thanks!

Mark.