]> git.baikalelectronics.ru Git - arm-tf.git/commit
fix(mpam): run-time checks for mpam save/restore routines
authorRohit Mathew <rohit.mathew@arm.com>
Fri, 11 Nov 2022 18:45:11 +0000 (18:45 +0000)
committerRohit Mathew <rohit.mathew@arm.com>
Mon, 23 Jan 2023 10:57:25 +0000 (10:57 +0000)
commited804406bf2ee04bde1c17683cec6f679ea1e160
treeb2b503223474408837d1ab4de0398993458d876a
parent982f8e1997523cb24e207f205b841d53b466035a
fix(mpam): run-time checks for mpam save/restore routines

With "ENABLE_MPAM_FOR_LOWER_ELS" and "CTX_INCLUDE_EL2_REGS" build
options enabled, MPAM EL2 registers would be saved/restored as part of
context management. Context save/restore routines as of now would
proceed to access all of MPAM EL2 registers without any runtime checks.
MPAM specification states that MPAMHCR_EL2 should only be accessed if
MPAMIDR_EL1.HAS_HCR is "1". Likewise, MPAMIDR_EL1.VPMR_MAX has to be
probed to obtain the maximum supported MPAMVPM<x>_EL2 before accessing
corresponding MPAMVPM<x>_EL2 registers. Since runtime checks are not
being made, an exception would be raised if the platform under test
doesn't support one of the registers. On Neoverse reference design
platforms, an exception is being raised while MPAMVPM2_EL2 or above are
accessed. Neoverse reference design platforms support only registers
till MPAMVPM1_EL2 at this point.

To resolve this, add sufficient runtime checks in MPAM EL2 context
save/restore routines. As part of the new save/restore routines,
MPAMIDR_EL1.HAS_HCR and MPAMIDR_EL1.VPMR_MAX are probed for the right
set of registers to be saved and restored.

CC: Davidson Kumaresan <davidson.kumaresan@arm.com>
Signed-off-by: Rohit Mathew <rohit.mathew@arm.com>
Change-Id: I2e3affd23091023b287b2bd5057a4a549037b611
include/arch/aarch64/arch.h
lib/el3_runtime/aarch64/context.S