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

Mark Rutland mark.rutland at arm.com
Fri May 21 10:10:54 PDT 2021


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 at arm.com>

Thanks!

Mark.



More information about the linux-arm-kernel mailing list