diff options
author | Antonio Niño Díaz <antonio.ninodiaz@arm.com> | 2019-03-01 09:17:16 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-03-01 09:17:16 +0000 |
commit | 82842004f6854d0889840b9886ea75d2e7adb315 (patch) | |
tree | 140ca6d9925ba50180a14f8ff9db4eb5f7b1bf8c | |
parent | dbd0bcfe008c08a7377e28d947d5354846cdc349 (diff) | |
parent | 537fa859176ff86a9fc5c261384a2d8d0d8c2846 (diff) | |
download | platform_external_arm-trusted-firmware-82842004f6854d0889840b9886ea75d2e7adb315.tar.gz platform_external_arm-trusted-firmware-82842004f6854d0889840b9886ea75d2e7adb315.tar.bz2 platform_external_arm-trusted-firmware-82842004f6854d0889840b9886ea75d2e7adb315.zip |
Merge pull request #1846 from loumay-arm/lm/mpam
MPAM: enable MPAM EL2 traps
-rw-r--r-- | include/arch/aarch64/arch.h | 4 | ||||
-rw-r--r-- | lib/extensions/mpam/mpam.c | 8 |
2 files changed, 12 insertions, 0 deletions
diff --git a/include/arch/aarch64/arch.h b/include/arch/aarch64/arch.h index 1032d9ae9..e36d66d13 100644 --- a/include/arch/aarch64/arch.h +++ b/include/arch/aarch64/arch.h @@ -783,6 +783,10 @@ /* MPAM register definitions */ #define MPAM3_EL3_MPAMEN_BIT (ULL(1) << 63) +#define MPAMHCR_EL2_TRAP_MPAMIDR_EL1 (ULL(1) << 31) + +#define MPAM2_EL2_TRAPMPAM0EL1 (ULL(1) << 49) +#define MPAM2_EL2_TRAPMPAM1EL1 (ULL(1) << 48) #define MPAMIDR_HAS_HCR_BIT (ULL(1) << 17) diff --git a/lib/extensions/mpam/mpam.c b/lib/extensions/mpam/mpam.c index 016670790..e794f013b 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); + } } } |