PMU is supported in KVM mode. With info registers command, PMU CSR
registers should be dumped also. And it is not necessary in TCG mode.
Signed-off-by: Bibo Mao <maobibo@loongson.cn>
---
target/loongarch/cpu.c | 14 +++++++++++++-
target/loongarch/csr.c | 8 ++++++++
2 files changed, 21 insertions(+), 1 deletion(-)
diff --git a/target/loongarch/cpu.c b/target/loongarch/cpu.c
index 86490e0f72..deb7b0bcb9 100644
--- a/target/loongarch/cpu.c
+++ b/target/loongarch/cpu.c
@@ -129,6 +129,17 @@ static void loongarch_la464_init_csr(Object *obj)
set_csr_flag(LOONGARCH_CSR_MERRERA, CSRFL_UNUSED);
set_csr_flag(LOONGARCH_CSR_MERRSAVE, CSRFL_UNUSED);
set_csr_flag(LOONGARCH_CSR_CTAG, CSRFL_UNUSED);
+
+ if (cpu->pmu != ON_OFF_AUTO_ON) {
+ set_csr_flag(LOONGARCH_CSR_PERFCTRL0, CSRFL_UNUSED);
+ set_csr_flag(LOONGARCH_CSR_PERFCNTR0, CSRFL_UNUSED);
+ set_csr_flag(LOONGARCH_CSR_PERFCTRL1, CSRFL_UNUSED);
+ set_csr_flag(LOONGARCH_CSR_PERFCNTR1, CSRFL_UNUSED);
+ set_csr_flag(LOONGARCH_CSR_PERFCTRL2, CSRFL_UNUSED);
+ set_csr_flag(LOONGARCH_CSR_PERFCNTR2, CSRFL_UNUSED);
+ set_csr_flag(LOONGARCH_CSR_PERFCTRL3, CSRFL_UNUSED);
+ set_csr_flag(LOONGARCH_CSR_PERFCNTR3, CSRFL_UNUSED);
+ }
}
#endif
}
@@ -346,8 +357,9 @@ static void loongarch_la464_initfn(Object *obj)
env->CSR_PRCFG3 = FIELD_DP64(env->CSR_PRCFG3, CSR_PRCFG3, STLB_SETS, 8);
cpu->msgint = ON_OFF_AUTO_OFF;
- loongarch_la464_init_csr(obj);
loongarch_cpu_post_init(obj);
+ /* Some features with OnOffAuto type is detected after cpu_post_init */
+ loongarch_la464_init_csr(obj);
}
static void loongarch_la132_initfn(Object *obj)
diff --git a/target/loongarch/csr.c b/target/loongarch/csr.c
index f973780bba..8574e5bc0a 100644
--- a/target/loongarch/csr.c
+++ b/target/loongarch/csr.c
@@ -94,6 +94,14 @@ static CSRInfo csr_info[] = {
CSR_OFF_ARRAY(DMW, 1),
CSR_OFF_ARRAY(DMW, 2),
CSR_OFF_ARRAY(DMW, 3),
+ CSR_OFF(PERFCTRL0),
+ CSR_OFF(PERFCNTR0),
+ CSR_OFF(PERFCTRL1),
+ CSR_OFF(PERFCNTR1),
+ CSR_OFF(PERFCTRL2),
+ CSR_OFF(PERFCNTR2),
+ CSR_OFF(PERFCTRL3),
+ CSR_OFF(PERFCNTR3),
CSR_OFF(DBG),
CSR_OFF(DERA),
CSR_OFF(DSAVE),
--
2.39.3