fix(realm): fix PMU save/restore registers
Remove pmxevcntr_el0 and pmxevtyper_el0 registers
from saving/restoring as aliases for pmevcntrN_el0
and pmevtyperN_el0, selected by pmselr_el0.sel.
Change-Id: I3def527c46d53c3203f7c3ebc565a2aaf282309c
Signed-off-by: AlexeiFedorov <Alexei.Fedorov@arm.com>
diff --git a/include/runtime_services/host_realm_managment/host_realm_pmu.h b/include/runtime_services/host_realm_managment/host_realm_pmu.h
index 66bd385..c7f5fab 100644
--- a/include/runtime_services/host_realm_managment/host_realm_pmu.h
+++ b/include/runtime_services/host_realm_managment/host_realm_pmu.h
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2023, Arm Limited. All rights reserved.
+ * Copyright (c) 2023-2025, Arm Limited. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*
@@ -36,8 +36,6 @@
unsigned long pmevcntr_el0[MAX_COUNTERS];
unsigned long pmevtyper_el0[MAX_COUNTERS];
unsigned long pmselr_el0;
- unsigned long pmxevcntr_el0;
- unsigned long pmxevtyper_el0;
} __aligned(64);
void host_set_pmu_state(struct pmu_registers *pmu_ptr);
diff --git a/tftf/tests/runtime_services/host_realm_managment/host_pmuv3.c b/tftf/tests/runtime_services/host_realm_managment/host_pmuv3.c
index 04c56a2..31965be 100644
--- a/tftf/tests/runtime_services/host_realm_managment/host_pmuv3.c
+++ b/tftf/tests/runtime_services/host_realm_managment/host_pmuv3.c
@@ -163,22 +163,6 @@
pmu_ptr->pmselr_el0 = val;
write_pmselr_el0(val);
-
- /*
- * When PMSELR_EL0.SEL is greater than or equal to the number of
- * accessible event counters, then reads and writes of PMXEVCNTR_EL0
- * are CONSTRAINED UNPREDICTABLE.
- *
- * When PMSELR_EL0.SEL is not 31 and is greater than or equal to the
- * number of accessible event counters, then reads and writes of
- * PMXEVTYPER_EL0 are CONSTRAINED UNPREDICTABLE.
- */
- if (val < num_cnts) {
- pmu_ptr->pmxevcntr_el0 = read_pmxevcntr_el0();
- pmu_ptr->pmxevtyper_el0 = read_pmxevtyper_el0();
- } else if (val == 31UL) {
- pmu_ptr->pmxevtyper_el0 = read_pmxevtyper_el0();
- }
}
bool host_check_pmu_state(struct pmu_registers *pmu_ptr)
@@ -198,13 +182,6 @@
CHECK_PMREG(pmuserenr_el0);
CHECK_PMREG(pmselr_el0);
- if (pmu_ptr->pmselr_el0 < num_cnts) {
- CHECK_PMREG(pmxevcntr_el0);
- CHECK_PMREG(pmxevtyper_el0);
- } else if (pmu_ptr->pmselr_el0 == 31UL) {
- CHECK_PMREG(pmxevtyper_el0);
- }
-
/* Check number of event counters implemented */
if (num_cnts != 0UL) {
switch (--num_cnts) {