From: Philippe Mathieu-Daudé Date: Tue, 16 Dec 2025 17:44:43 +0000 (+0100) Subject: hw/arm: Avoid address_space_stl_notdirty() when generating bootloader X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=3800f80624747bc1a4e0ae7f488175c7f3d2ac57;p=thirdparty%2Fqemu.git hw/arm: Avoid address_space_stl_notdirty() when generating bootloader When using the '-kernel' command line option, a bootloader is emitted, calling address_space_stl_notdirty(). The _notdirty() variant is supposed to /not/ mark the updated CODE page as dirty, to not re-translate it. However this code is only used with the '-kernel' CLI option after the machine is created and /before/ the vCPUs run, and *only* during the first (cold) reset; not during following (hot) resets. The optimisation is totally not justified, since we haven't translated any guest code yet. Replace by the normal address_space_stl() helper. Suggested-by: Richard Henderson Signed-off-by: Philippe Mathieu-Daudé Reviewed-by: Pierrick Bouvier Reviewed-by: Richard Henderson Message-Id: <20251224151351.86733-4-philmd@linaro.org> --- diff --git a/hw/arm/aspeed.c b/hw/arm/aspeed.c index 6199d2d2d7..a3db3406c5 100644 --- a/hw/arm/aspeed.c +++ b/hw/arm/aspeed.c @@ -77,8 +77,8 @@ static void aspeed_reset_secondary(ARMCPU *cpu, CPUState *cs = CPU(cpu); /* info->smp_bootreg_addr */ - address_space_stl_notdirty(as, AST_SMP_MBOX_FIELD_GOSIGN, 0, - MEMTXATTRS_UNSPECIFIED, NULL); + address_space_stl(as, AST_SMP_MBOX_FIELD_GOSIGN, 0, + MEMTXATTRS_UNSPECIFIED, NULL); cpu_set_pc(cs, info->smp_loader_start); } diff --git a/hw/arm/boot.c b/hw/arm/boot.c index d87bcb5b88..0ba3adaf81 100644 --- a/hw/arm/boot.c +++ b/hw/arm/boot.c @@ -266,8 +266,8 @@ static void default_reset_secondary(ARMCPU *cpu, AddressSpace *as = arm_boot_address_space(cpu, info); CPUState *cs = CPU(cpu); - address_space_stl_notdirty(as, info->smp_bootreg_addr, - 0, MEMTXATTRS_UNSPECIFIED, NULL); + address_space_stl(as, info->smp_bootreg_addr, + 0, MEMTXATTRS_UNSPECIFIED, NULL); cpu_set_pc(cs, info->smp_loader_start); } @@ -277,8 +277,8 @@ static inline bool have_dtb(const struct arm_boot_info *info) } #define WRITE_WORD(p, value) do { \ - address_space_stl_notdirty(as, p, value, \ - MEMTXATTRS_UNSPECIFIED, NULL); \ + address_space_stl(as, p, value, \ + MEMTXATTRS_UNSPECIFIED, NULL); \ p += 4; \ } while (0)