]> git.ipfire.org Git - thirdparty/qemu.git/commitdiff
target/loongarch: Call function loongarch_la464_init_csr() after realized
authorBibo Mao <maobibo@loongson.cn>
Thu, 30 Oct 2025 08:17:23 +0000 (16:17 +0800)
committerBibo Mao <maobibo@loongson.cn>
Mon, 12 Jan 2026 06:43:54 +0000 (14:43 +0800)
When CPU is realized, it will check capability of host and set guest
features, such as PMU CSR register number used by VM etc. Here move
function call with loongarch_la464_init_csr() after CPU is realized.

Signed-off-by: Bibo Mao <maobibo@loongson.cn>
Reviewed-by: Song Gao <gaosong@loongson.cn>
target/loongarch/cpu.c

index e01e044239bf8119aabd9c76c3e3a2e2661e6e11..67ad9c3b792b4b3d33e9ce3bff5c771805fc2c9a 100644 (file)
@@ -106,11 +106,11 @@ bool loongarch_cpu_has_work(CPUState *cs)
 }
 #endif /* !CONFIG_USER_ONLY */
 
-static void loongarch_la464_init_csr(Object *obj)
+static void loongarch_la464_init_csr(DeviceState *dev)
 {
 #ifndef CONFIG_USER_ONLY
     static bool initialized;
-    LoongArchCPU *cpu = LOONGARCH_CPU(obj);
+    LoongArchCPU *cpu = LOONGARCH_CPU(dev);
     CPULoongArchState *env = &cpu->env;
     int i, num;
 
@@ -369,7 +369,6 @@ static void loongarch_la464_initfn(Object *obj)
 
     cpu->msgint = ON_OFF_AUTO_OFF;
     cpu->ptw = ON_OFF_AUTO_OFF;
-    loongarch_la464_init_csr(obj);
     loongarch_cpu_post_init(obj);
 }
 
@@ -524,6 +523,7 @@ static void loongarch_cpu_realizefn(DeviceState *dev, Error **errp)
 
     qemu_init_vcpu(cs);
     cpu_reset(cs);
+    loongarch_la464_init_csr(dev);
 
     lacc->parent_realize(dev, errp);
 }