diff options
author | Andre Przywara <andre.przywara@arm.com> | 2022-11-17 17:30:43 +0000 |
---|---|---|
committer | Andre Przywara <andre.przywara@arm.com> | 2023-03-22 13:33:22 +0000 |
commit | b8f03d29e172af7bd576eafbce9d485a9f626e2e (patch) | |
tree | b40c972d2a8c0a188db3528ccbe73f8e73fbe230 /common | |
parent | 4f5ef849c184313a2ba124ff0dd0b1545ddee217 (diff) | |
download | arm-trusted-firmware-b8f03d29e172af7bd576eafbce9d485a9f626e2e.tar.gz |
refactor(cpufeat): enable FEAT_ECV for FEAT_STATE_CHECKED
At the moment we only support FEAT_ECV to be either unconditionally
compiled in, or to be not supported at all.
Add support for runtime detection (ENABLE_FEAT_ECV=2), by splitting
is_feat_ecv_present() into an ID register reading function and a second
function to report the support status. That function considers both
build time settings and runtime information (if needed), and is used
before we access the CNTPOFF_EL2 system register.
Also move the context saving code from assembly to C, and use the new
is_feat_ecv_supported() function to guard its execution.
Change the FVP platform default to the now supported dynamic option (=2),
so the right decision can be made by the code at runtime.
Change-Id: I4acd5384929f1902b62a87ae073aafa1472cd66b
Signed-off-by: Andre Przywara <andre.przywara@arm.com>
Diffstat (limited to 'common')
-rw-r--r-- | common/feat_detect.c | 15 |
1 files changed, 1 insertions, 14 deletions
diff --git a/common/feat_detect.c b/common/feat_detect.c index c51da966c..2f64deb51 100644 --- a/common/feat_detect.c +++ b/common/feat_detect.c @@ -164,19 +164,6 @@ static void read_feat_amuv1p1(void) #endif } -/******************************************************* - * Feature : FEAT_ECV (Enhanced Counter Virtualization) - ******************************************************/ -static void read_feat_ecv(void) -{ -#if (ENABLE_FEAT_ECV == FEAT_STATE_ALWAYS) - unsigned int ecv = get_armv8_6_ecv_support(); - - feat_detect_panic(((ecv == ID_AA64MMFR0_EL1_ECV_SUPPORTED) || - (ecv == ID_AA64MMFR0_EL1_ECV_SELF_SYNCH)), "ECV"); -#endif -} - /*********************************************************** * Feature : FEAT_TWED (Delayed Trapping of WFE Instruction) **********************************************************/ @@ -269,7 +256,7 @@ void detect_arch_features(void) /* v8.6 features */ read_feat_amuv1p1(); check_feature(ENABLE_FEAT_FGT, read_feat_fgt_id_field(), "FGT", 1, 1); - read_feat_ecv(); + check_feature(ENABLE_FEAT_ECV, read_feat_ecv_id_field(), "ECV", 1, 2); read_feat_twed(); /* v8.7 features */ |