]> git.ipfire.org Git - thirdparty/qemu.git/commitdiff
target/loongarch: Add PMU register dump support in KVM
authorBibo Mao <maobibo@loongson.cn>
Thu, 30 Oct 2025 08:17:24 +0000 (16:17 +0800)
committerBibo Mao <maobibo@loongson.cn>
Mon, 12 Jan 2026 06:44:38 +0000 (14:44 +0800)
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>
Reviewed-by: Song Gao <gaosong@loongson.cn>
target/loongarch/cpu.c
target/loongarch/csr.c

index 67ad9c3b792b4b3d33e9ce3bff5c771805fc2c9a..b65394852669e2f5b7cc8d287f441f405ca97077 100644 (file)
@@ -129,6 +129,11 @@ static void loongarch_la464_init_csr(DeviceState *dev)
         set_csr_flag(LOONGARCH_CSR_MERRERA, CSRFL_UNUSED);
         set_csr_flag(LOONGARCH_CSR_MERRSAVE, CSRFL_UNUSED);
         set_csr_flag(LOONGARCH_CSR_CTAG, CSRFL_UNUSED);
+
+        for (i = env->perf_event_num; i < MAX_PERF_EVENTS; i++) {
+            set_csr_flag(LOONGARCH_CSR_PERFCTRL(i), CSRFL_UNUSED);
+            set_csr_flag(LOONGARCH_CSR_PERFCNTR(i), CSRFL_UNUSED);
+        }
     }
 #endif
 }
index f973780bba367e17fc2292a813ff58ad67b9d134..332a1396cc21aaa99f628e2c73908a6d5af0e595 100644 (file)
@@ -94,6 +94,38 @@ static CSRInfo csr_info[] = {
     CSR_OFF_ARRAY(DMW, 1),
     CSR_OFF_ARRAY(DMW, 2),
     CSR_OFF_ARRAY(DMW, 3),
+    CSR_OFF_ARRAY(PERFCTRL, 0),
+    CSR_OFF_ARRAY(PERFCNTR, 0),
+    CSR_OFF_ARRAY(PERFCTRL, 1),
+    CSR_OFF_ARRAY(PERFCNTR, 1),
+    CSR_OFF_ARRAY(PERFCTRL, 2),
+    CSR_OFF_ARRAY(PERFCNTR, 2),
+    CSR_OFF_ARRAY(PERFCTRL, 3),
+    CSR_OFF_ARRAY(PERFCNTR, 3),
+    CSR_OFF_ARRAY(PERFCTRL, 4),
+    CSR_OFF_ARRAY(PERFCNTR, 4),
+    CSR_OFF_ARRAY(PERFCTRL, 5),
+    CSR_OFF_ARRAY(PERFCNTR, 5),
+    CSR_OFF_ARRAY(PERFCTRL, 6),
+    CSR_OFF_ARRAY(PERFCNTR, 6),
+    CSR_OFF_ARRAY(PERFCTRL, 7),
+    CSR_OFF_ARRAY(PERFCNTR, 7),
+    CSR_OFF_ARRAY(PERFCTRL, 8),
+    CSR_OFF_ARRAY(PERFCNTR, 8),
+    CSR_OFF_ARRAY(PERFCTRL, 9),
+    CSR_OFF_ARRAY(PERFCNTR, 9),
+    CSR_OFF_ARRAY(PERFCTRL, 10),
+    CSR_OFF_ARRAY(PERFCNTR, 10),
+    CSR_OFF_ARRAY(PERFCTRL, 11),
+    CSR_OFF_ARRAY(PERFCNTR, 11),
+    CSR_OFF_ARRAY(PERFCTRL, 12),
+    CSR_OFF_ARRAY(PERFCNTR, 12),
+    CSR_OFF_ARRAY(PERFCTRL, 13),
+    CSR_OFF_ARRAY(PERFCNTR, 13),
+    CSR_OFF_ARRAY(PERFCTRL, 14),
+    CSR_OFF_ARRAY(PERFCNTR, 14),
+    CSR_OFF_ARRAY(PERFCTRL, 15),
+    CSR_OFF_ARRAY(PERFCNTR, 15),
     CSR_OFF(DBG),
     CSR_OFF(DERA),
     CSR_OFF(DSAVE),