Browse Source
Merge pull request #1846 from loumay-arm/lm/mpam
MPAM: enable MPAM EL2 traps
pull/1851/head
Antonio Niño Díaz
6 years ago
committed by
GitHub
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with
12 additions and
0 deletions
-
include/arch/aarch64/arch.h
-
lib/extensions/mpam/mpam.c
|
|
@ -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) |
|
|
|
|
|
|
|
|
|
@ -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); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|