diff options
author | Louis Mayencourt <louis.mayencourt@arm.com> | 2019-02-11 11:25:50 +0000 |
---|---|---|
committer | Louis Mayencourt <louis.mayencourt@arm.com> | 2019-02-28 10:28:25 +0000 |
commit | 537fa859176ff86a9fc5c261384a2d8d0d8c2846 (patch) | |
tree | a600ce205c728442923d5a55219a9bcc2cefcfca /lib/extensions | |
parent | 1baa28bb2dc79f23c550d67604324afd222221c3 (diff) |
MPAM: enable MPAM EL2 traps
Complete the MPAM enablement in TF-A for lower ELs by enabling the EL2
traps in MPAMHCR_EL2 and MPAM2_EL2.This prevents an
MPAM-unaware-hypervisor to be restricted by an MPAM-aware-guest.
Change-Id: I47bf3f833fa22baa590f83d49cc0e3f2974e698d
Signed-off-by: Louis Mayencourt <louis.mayencourt@arm.com>
Diffstat (limited to 'lib/extensions')
-rw-r--r-- | lib/extensions/mpam/mpam.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/lib/extensions/mpam/mpam.c b/lib/extensions/mpam/mpam.c index 01667079..e794f013 100644 --- a/lib/extensions/mpam/mpam.c +++ b/lib/extensions/mpam/mpam.c @@ -31,11 +31,19 @@ void mpam_enable(bool el2_unused) /* * If EL2 is implemented but unused, disable trapping to EL2 when lower * ELs access their own MPAM registers. + * If EL2 is implemented and used, enable trapping to EL2. */ if (el2_unused) { write_mpam2_el2(0); if ((read_mpamidr_el1() & MPAMIDR_HAS_HCR_BIT) != 0U) write_mpamhcr_el2(0); + } else { + write_mpam2_el2(MPAM2_EL2_TRAPMPAM0EL1 | + MPAM2_EL2_TRAPMPAM1EL1); + + if ((read_mpamidr_el1() & MPAMIDR_HAS_HCR_BIT) != 0U) { + write_mpamhcr_el2(MPAMHCR_EL2_TRAP_MPAMIDR_EL1); + } } } |