arm-trusted-firmware/lib/extensions/mpam/mpam.c
Zelalem Aweke fd5da7a847 refactor(mpam): remove initialization of EL2 registers when EL2 is used
The patch removes initialization of MPAM EL2 registers when an EL2
software exists. The patch assumes the EL2 software will perform
the necessary initializations of the registers.

Signed-off-by: Zelalem Aweke <zelalem.aweke@arm.com>
Change-Id: I5bed81bc22f417bc3e3cbbcd860a8553cd4307cd
2022-04-12 17:41:51 +02:00

39 lines
787 B
C

/*
* Copyright (c) 2018-2022, ARM Limited and Contributors. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*/
#include <stdbool.h>
#include <arch.h>
#include <arch_features.h>
#include <arch_helpers.h>
#include <lib/extensions/mpam.h>
void mpam_enable(bool el2_unused)
{
/* Check if MPAM is implemented */
if (get_mpam_version() == 0U) {
return;
}
/*
* Enable MPAM, and disable trapping to EL3 when lower ELs access their
* own MPAM registers.
*/
write_mpam3_el3(MPAM3_EL3_MPAMEN_BIT);
/*
* If EL2 is implemented but unused, disable trapping to EL2 when lower
* ELs access their own MPAM registers.
*/
if (el2_unused) {
write_mpam2_el2(0ULL);
if ((read_mpamidr_el1() & MPAMIDR_HAS_HCR_BIT) != 0U) {
write_mpamhcr_el2(0ULL);
}
}
}