Commit 411b9496ca for qemu.org
commit 411b9496ca327f333b50a6608bef75fc3f6896aa
Author: Bibo Mao <maobibo@loongson.cn>
Date: Thu Oct 30 16:17:23 2025 +0800
target/loongarch: Call function loongarch_la464_init_csr() after realized
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>
diff --git a/target/loongarch/cpu.c b/target/loongarch/cpu.c
index e01e044239..67ad9c3b79 100644
--- a/target/loongarch/cpu.c
+++ b/target/loongarch/cpu.c
@@ -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);
}