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

Joey Gouly joey.gouly at arm.com
Fri May 21 10:02:21 PDT 2021


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).
> 
> * 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>



More information about the linux-arm-kernel mailing list