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

Joey Gouly
2021-05-21T17:04:34Z

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