From: Thomas Huth Date: Wed, 11 Mar 2026 21:16:29 +0000 (+0100) Subject: target/mips/cpu: Move initialization of memory region to realize function X-Git-Tag: v11.0.0-rc0~11^2~12 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=0dcaa42694aa799cabb8db2fbd06ed1ce26d7b4c;p=thirdparty%2Fqemu.git target/mips/cpu: Move initialization of memory region to realize function When introspecting the Loongson-3A4000 CPUs from the command line, QEMU currently crashes: $ ./qemu-system-mips64el -device Loongson-3A4000-mips64-cpu,help qemu-system-mips64el: ../../devel/qemu/system/physmem.c:1401: register_multipage: Assertion `num_pages' failed. Aborted (core dumped) Move the initialization of the memory regions to the realize function to fix this problem. Reported-by: Markus Armbruster Message-ID: <87y0jxzdrk.fsf@pond.sub.org> Tested-by: Markus Armbruster Signed-off-by: Thomas Huth Message-ID: <20260311211629.118608-1-thuth@redhat.com> --- diff --git a/target/mips/cpu.c b/target/mips/cpu.c index e424d115018..5f88c077dbf 100644 --- a/target/mips/cpu.c +++ b/target/mips/cpu.c @@ -460,6 +460,14 @@ static void mips_cpu_realizefn(DeviceState *dev, Error **errp) MIPSCPUClass *mcc = MIPS_CPU_GET_CLASS(dev); Error *local_err = NULL; +#ifndef CONFIG_USER_ONLY + if (mcc->cpu_def->lcsr_cpucfg2 & (1 << CPUCFG2_LCSRP)) { + memory_region_init_io(&env->iocsr.mr, OBJECT(cpu), NULL, + env, "iocsr", UINT64_MAX); + address_space_init(&env->iocsr.as, &env->iocsr.mr, "IOCSR"); + } +#endif + if (!clock_get(cpu->clock)) { #ifndef CONFIG_USER_ONLY if (!qtest_enabled()) { @@ -504,14 +512,6 @@ static void mips_cpu_initfn(Object *obj) cpu->count_div = clock_new(OBJECT(obj), "clk-div-count"); env->count_clock = clock_new(OBJECT(obj), "clk-count"); env->cpu_model = mcc->cpu_def; -#ifndef CONFIG_USER_ONLY - if (mcc->cpu_def->lcsr_cpucfg2 & (1 << CPUCFG2_LCSRP)) { - memory_region_init_io(&env->iocsr.mr, OBJECT(cpu), NULL, - env, "iocsr", UINT64_MAX); - address_space_init(&env->iocsr.as, - &env->iocsr.mr, "IOCSR"); - } -#endif } static char *mips_cpu_type_name(const char *cpu_model)