arm64: suspend: PSCI suspend finisher success isn't an error
cpu_suspend() calls the PSCI function to put the CPU into a powedown
state that loses the current context. cpu_suspend() will also put
all the pieces back together when the CPU returns via the cold path.
cpu_suspend() anticipates that any return from the PSCI 'finisher'
function is an error. This isn't so. 5.4.5 "Caller responsibilities"
of DEN0022E describes how firmware may downgrade a powerdown state
to a standby state, and return to the next instruction with a
return code of 'success'.
cpu_suspend() returns an error to its caller in this case, which
results in the PSCI checker reporting pages of:
| psci_checker: Failed to suspend CPU 0: error -1 (requested state 3, cycle 6)
Convert errors from the PSCI finisher to linux errno values, and
allow them to be returned from cpu_suspend().
This prevents such an occurance from being treated as an error.
Signed-off-by:
James Morse <james.morse@arm.com>
Loading
Please register or sign in to comment