arm-trusted-firmware/docs
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
..
_static/css docs(threat model): add TF-A threat model 2021-04-30 17:59:22 +02:00
about docs(maintainers): update LTS maintainers 2025-01-24 11:25:51 -06:00
components docs(context-mgmt): add Root-Context documentation 2024-11-15 10:44:39 +00:00
design feat(psci): allow cores to wake up from powerdown 2025-02-03 14:29:47 +00:00
design_documents feat(docs): add DPE to RSE desing doc 2024-11-04 17:28:15 +01:00
getting_started fix(cpus): avoid SME related loss of context on powerdown 2025-02-03 14:29:47 +00:00
perf docs(juno): update PSCI instrumentation data 2024-11-15 13:16:28 +00:00
plat docs(gxl): add build instructions for booting BL31 from U-Boot SPL 2025-01-09 22:19:26 +02:00
process docs: remove reference to phabricator pages 2024-05-15 14:27:45 +02:00
resources docs: add inital lts doc 2025-01-21 08:40:34 -06:00
security_advisories chore: rename Poseidon to Neoverse V3 2024-03-26 11:27:31 -05:00
threat_model feat(docs): add RSE provided mboot backends to the threat model 2024-11-04 17:25:15 +01:00
tools fix(cot-dt2c): use processed Device Tree source file as input 2024-08-27 12:50:20 +01:00
change-log.md docs(changelog): changelog for v2.12 release 2024-11-19 18:08:58 -06:00
conf.py docs(changelog): changelog for v2.12 release 2024-11-19 18:08:58 -06:00
global_substitutions.txt feat(docs): add DPE to RSE desing doc 2024-11-04 17:28:15 +01:00
glossary.rst docs: add inital lts doc 2025-01-21 08:40:34 -06:00
index.rst feat(fwu): update the URL links for the FWU specification 2024-03-01 14:19:56 +05:30
license.rst feat(lib): introduce Hob creation library 2024-12-06 13:26:31 +00:00
Makefile build: install dependencies before doc build 2024-11-06 15:18:06 +01:00
porting-guide.rst feat(psci): allow cores to wake up from powerdown 2025-02-03 14:29:47 +00:00