]> git.baikalelectronics.ru Git - arm-tf.git/commit
feat(cpus): make cache ops conditional
authorOkash Khawaja <okash@google.com>
Fri, 4 Nov 2022 12:38:01 +0000 (12:38 +0000)
committerOkash Khawaja <okash@google.com>
Thu, 10 Nov 2022 12:14:05 +0000 (12:14 +0000)
commit04c7303b9c3d2215eebc3d59431519990abe03d0
tree8376be2fd42f449fe563f1c7503d55507dfff674
parent00bf236e32d55604bda14c2d0f9ce757e5d9292d
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
Makefile
docs/getting_started/build-options.rst
docs/getting_started/porting-guide.rst
lib/aarch32/cache_helpers.S
lib/aarch64/cache_helpers.S
make_helpers/defaults.mk