arm-trusted-firmware/lib
Okash Khawaja 04c7303b9c feat(cpus): make cache ops conditional
When a core is in debug recovery mode its caches are not invalidated
upon reset, so the L1 and L2 cache contents from before reset are
observable after reset. Similarly, debug recovery mode of DynamIQ
cluster ensures that contents of the shared L3 cache are also not
invalidated upon transition to On mode.

Booting cores in debug recovery mode means booting with caches disabled
and preserving the caches until a point where software can dump the
caches and retrieve their contents. TF-A however unconditionally cleans
and invalidates caches at multiple points during boot. This can lead to
memory corruption as well as loss of cache contents to be used for
debugging.

This patch fixes this by calling a platform hook before performing CMOs
in helper routines in cache_helpers.S. The platform hook plat_can_cmo is
an assembly routine which must not clobber x2 and x3, and avoid using
stack. The whole checking is conditional upon `CONDITIONAL_CMO` which
can be set at compile time.

Signed-off-by: Okash Khawaja <okash@google.com>
Change-Id: I172e999e4acd0f872c24056e647cc947ee54b193
2022-11-10 12:14:05 +00:00
..
aarch32 feat(cpus): make cache ops conditional 2022-11-10 12:14:05 +00:00
aarch64 feat(cpus): make cache ops conditional 2022-11-10 12:14:05 +00:00
bl_aux_params fix: libc: use long for 64-bit types on aarch64 2021-11-08 14:41:17 +00:00
compiler-rt feat(compiler-rt): update compiler-rt source files 2022-10-24 16:49:32 +01:00
coreboot Update in coreboot_get_memory_type API to include size as well 2020-10-16 02:23:35 +05:30
cpus Merge changes I7d3a97df,I5935b4bc,I9a325c5b,Ie29bd3a5,Iebb90cf2 into integration 2022-10-27 19:21:46 +02:00
debugfs DebugFS: Check channel index before calling clone function 2021-01-21 15:25:23 +00:00
el3_runtime Merge "build(changelog): add new scope for Performance Monitor Extensions" into integration 2022-10-10 11:49:13 +02:00
extensions fix(sme): add missing ISBs 2022-10-13 13:51:05 +01:00
fconf refactor(libc): clean up dependencies in libc 2022-09-22 13:23:49 +02:00
gpt_rme fix(gpt): correct the GPC enable sequence 2022-08-25 00:22:01 -04:00
libc refactor(console): move putchar() to console driver 2022-10-04 09:30:48 +02:00
libfdt feat(libfdt): upgrade libfdt source files 2022-10-19 14:07:46 +01:00
locks fix(bakery_lock): add __unused for clang 2022-04-08 18:17:43 +01:00
mpmm fix(errata): workaround for Cortex-A510 erratum 2250311 2022-02-24 23:30:41 +02:00
optee refactor(libc): clean up dependencies in libc 2022-09-22 13:23:49 +02:00
pmf Sanitise includes across codebase 2019-01-04 10:43:17 +00:00
psa fix(psa): add missing semicolon 2022-10-11 14:52:16 +02:00
psci refactor(psci): unify psci_is_last_on_cpu and psci_is_last_on_cpu_safe 2022-09-29 16:37:34 +01:00
romlib Use abspath to dereference $BUILD_BASE 2020-08-04 18:02:02 +01:00
semihosting fix(semihosting): fix seek call failure check 2022-09-28 11:53:42 +01:00
stack_protector Disable stack protection explicitly 2019-10-20 14:59:09 -04:00
utils MISRA cleanup in mem_region and semihosting files 2020-08-07 19:11:23 -05:00
xlat_mpu refactor(fvp_r): remove unused files and clean up makefiles 2021-10-29 09:43:19 -05:00
xlat_tables chore: fvp_r: Initial No-EL3 and MPU Implementation 2021-09-30 17:05:59 +01:00
xlat_tables_v2 feat(spmc): prevent read only xlat tables with the EL3 SPMC 2022-04-13 09:44:52 +01:00
zlib feat(zlib): update zlib source files 2022-10-24 16:49:32 +01:00