arm-trusted-firmware/plat/arm/board/fvp
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
..
aarch32
aarch64 feat(fvp): add cpu power control 2024-06-14 17:26:29 -05:00
fconf feat(rme): read DRAM information from FVP DTB 2023-01-31 14:19:48 +02:00
fdts feat(fvp): add StandaloneMm manifest in fvp 2025-01-03 14:45:00 +00:00
include feat(fvp): add StandaloneMm manifest in fvp 2025-01-03 14:45:00 +00:00
sp_min fix(tree): correct some typos 2023-05-09 15:57:12 +01:00
trp
tsp
fvp_bl1_measured_boot.c refactor(fvp): align image identifier string macros 2024-03-06 15:44:55 +01:00
fvp_bl1_setup.c
fvp_bl2_el3_setup.c
fvp_bl2_measured_boot.c refactor(fvp): align image identifier string macros 2024-03-06 15:44:55 +01:00
fvp_bl2_setup.c refactor(arm): refactor secure TL initialization 2024-12-18 14:48:23 +00:00
fvp_bl2u_setup.c
fvp_bl31_setup.c feat(arm): support FW handoff b/w BL2 & BL31 2024-04-26 09:00:12 +00:00
fvp_common.c fix(rme): add console name to checksum calculation 2024-11-15 15:59:00 +02:00
fvp_common_measured_boot.c refactor(fvp): remove leftovers from rss measured boot support 2024-04-22 15:44:38 +02:00
fvp_console.c refactor(build): distinguish BL2 as TF-A entry point and BL2 running at EL3 2023-03-15 11:43:14 +00:00
fvp_cpu_errata.mk fix(cpus): workaround for Cortex-X4 erratum 2701112 2024-03-06 16:40:59 -06:00
fvp_cpu_pwr.c feat(fvp): add cpu power control 2024-06-14 17:26:29 -05:00
fvp_def.h
fvp_drtm_addr.c feat(fvp): add plat API to validate that passed region is non-secure 2022-10-05 15:25:28 +01:00
fvp_drtm_dma_prot.c
fvp_drtm_err.c
fvp_drtm_measurement.c
fvp_drtm_stub.c
fvp_el3_spmc.c fix(el3-spmc): add datastore linker script markers 2024-02-29 14:54:37 +01:00
fvp_el3_spmc_logical_sp.c fix(el3-spm): fix LSP direct message response 2023-06-21 22:12:03 +01:00
fvp_el3_token_sign.c feat(rmmd): el3 token sign during attestation 2024-10-15 08:20:28 -07:00
fvp_err.c
fvp_gicv3.c
fvp_io_storage.c
fvp_plat_attest_token.c Merge changes from topic "draft-ffm-rats-cca-token-00" into integration 2024-09-13 16:22:46 +02:00
fvp_pm.c refactor(fvp): add support for cluster power-on 2024-10-22 13:55:05 -05:00
fvp_private.h
fvp_realm_attest_key.c refactor(fvp): change all occurrences of RSS to RSE 2024-04-22 15:44:38 +02:00
fvp_security.c fix(fvp): exclude extend memory map TZC regions 2025-01-03 14:45:00 +00:00
fvp_spmd.c feat(spmd): introduce platform handler for Group0 interrupt 2023-05-01 13:29:46 -05:00
fvp_spmd_logical_sp.c fix(spmd): coverity scan issues 2023-09-25 13:06:13 -07:00
fvp_stack_protector.c
fvp_sync_traps.c feat(fvp): emulate trapped RNDR 2022-12-21 12:59:36 +00:00
fvp_topology.c fix(fvp): don't check MPIDRs with the power controller in BL1 2024-04-11 11:20:35 +00:00
fvp_trusted_boot.c refactor(fvp): nv ctr addr static helper function 2023-06-05 11:21:51 -05:00
jmptbl.i fix(romlib): romlib build without MbedTLS 2024-12-05 17:35:57 +00:00
jmptbl_mbedtls.i fix(romlib): romlib build without MbedTLS 2024-12-05 17:35:57 +00:00
platform.mk fix(cpus): avoid SME related loss of context on powerdown 2025-02-03 14:29:47 +00:00