aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAntonio Niño Díaz <antonio.ninodiaz@arm.com>2019-03-01 09:17:16 +0000
committerGitHub <noreply@github.com>2019-03-01 09:17:16 +0000
commit82842004f6854d0889840b9886ea75d2e7adb315 (patch)
tree140ca6d9925ba50180a14f8ff9db4eb5f7b1bf8c
parentdbd0bcfe008c08a7377e28d947d5354846cdc349 (diff)
parent537fa859176ff86a9fc5c261384a2d8d0d8c2846 (diff)
downloadplatform_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.h4
-rw-r--r--lib/extensions/mpam/mpam.c8
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);
+ }
}
}