mirror of
https://github.com/ARM-software/arm-trusted-firmware.git
synced 2025-04-17 01:54:22 +00:00
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>
This commit is contained in:
parent
1baa28bb2d
commit
537fa85917
2 changed files with 12 additions and 0 deletions
|
@ -782,6 +782,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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue