arm-trusted-firmware/plat/arm/board
Boyan Karatotev 45c7328c0b fix(cpus): avoid SME related loss of context on powerdown
Travis' and Gelas' TRMs tell us to disable SME (set PSTATE.{ZA, SM} to
0) when we're attempting to power down. What they don't tell us is that
if this isn't done, the powerdown request will be rejected. On the
CPU_OFF path that's not a problem - we can force SVCR to 0 and be
certain the core will power off.

On the suspend to powerdown path, however, we cannot do this. The TRM
also tells us that the sequence could also be aborted on eg. GIC
interrupts. If this were to happen when we have overwritten SVCR to 0,
upon a return to the caller they would experience a loss of context. We
know that at least Linux may call into PSCI with SVCR != 0. One option
is to save the entire SME context which would be quite expensive just to
work around. Another option is to downgrade the request to a normal
suspend when SME was left on. This option is better as this is expected
to happen rarely enough to ignore the wasted power and we don't want to
burden the generic (correct) path with needless context management.

Signed-off-by: Boyan Karatotev <boyan.karatotev@arm.com>
Change-Id: I698fa8490ebf51461f6aa8bba84f9827c5c46ad4
2025-02-03 14:29:47 +00:00
..
a5ds build: remove Windows compatibility layer 2025-01-14 16:21:51 +00:00
arm_fpga perf(build): be clever about uppercasing 2024-11-08 12:27:46 +00:00
automotive_rd/platform/rd1ae feat(rd1ae): add support for OP-TEE SPMC 2024-11-14 13:56:39 +00:00
common refactor(arm): rename ARM_ROTPK_HEADER_LEN 2024-12-30 12:32:34 +01:00
corstone700 build(bl32): added check for AARCH32_SP 2023-08-24 14:22:34 -05:00
corstone1000 fix(corstone-1000): fix Makefile error reporting 2024-08-27 10:39:41 +01:00
fvp fix(cpus): avoid SME related loss of context on powerdown 2025-02-03 14:29:47 +00:00
fvp_r fix(arm): add extra hash config to validate ROTPK 2024-09-09 11:22:28 +01:00
fvp_ve feat(fvp): add flash areas for secure partition 2024-07-29 09:55:43 +01:00
juno refactor(arm): rename ARM_ROTPK_HEADER_LEN 2024-12-30 12:32:34 +01:00
morello build: remove MAKE_BUILD_STRINGS function 2024-04-29 12:47:01 +00:00
n1sdp refactor(arm): remove unused SP_MIN UART macros 2024-04-02 13:36:31 +01:00
neoverse_rd Merge "fix(rdv3): add console name to checksum calculation on RD-V3" into integration 2025-01-31 10:36:12 +01:00
tc fix(cpus): avoid SME related loss of context on powerdown 2025-02-03 14:29:47 +00:00