[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