FVP_Base_AEMv8A platform: Fix cache maintenance operations
authorAlexei Fedorov <Alexei.Fedorov@arm.com>
Mon, 29 Jul 2019 16:22:53 +0000 (17:22 +0100)
committerPaul Beesley <paul.beesley@arm.com>
Fri, 16 Aug 2019 11:30:37 +0000 (11:30 +0000)
commitef430ff495aaf1c4bb5142570761351c6fe4b402
tree8be601b9ec40b0c19ec57aadb40818e7228cea24
parent300df53b9ada2ebe2d170748850975afe4858fee
FVP_Base_AEMv8A platform: Fix cache maintenance operations

This patch fixes FVP_Base_AEMv8A model hang issue with
ARMv8.4+ with cache modelling enabled configuration.
Incorrect L1 cache flush operation to PoU, using CLIDR_EL1
LoUIS field, which is required by the architecture to be
zero for ARMv8.4-A with ARMv8.4-S2FWB feature is replaced
with L1 to L2 and L2 to L3 (if L3 is present) cache flushes.
FVP_Base_AEMv8A model can be configured with L3 enabled by
setting `cluster0.l3cache-size` and `cluster1.l3cache-size`
to non-zero values, and presence of L3 is checked in
`aem_generic_core_pwr_dwn` function by reading
CLIDR_EL1.Ctype3 field value.

Change-Id: If3de3d4eb5ed409e5b4ccdbc2fe6d5a01894a9af
Signed-off-by: Alexei Fedorov <Alexei.Fedorov@arm.com>
include/arch/aarch64/arch.h
lib/cpus/aarch64/aem_generic.S