Hi Claudio, On 30/11/23 13:48, Claudio Fontana wrote:
Hi Philippe, took a quick look with grep -R can_do_io and this seems to be in include/hw/core/cpu.h as well as cpu-common.c, maybe there is more meat to address to fully solve this? Before we had stuff for reset in cpu-common.c under a if (tcg_enabled()) { } but now we have cpu_exec_reset_hold(), should the implementation for tcg of cpu_exec_reset_hold() do that (and potentially other tcg-specific non-arch-specific cpu variables we might need)?
Later we eventually get there: diff --git a/accel/tcg/tcg-accel-ops.c b/accel/tcg/tcg-accel-ops.c index 9b038b1af5..e2c5cf97dc 100644 --- a/accel/tcg/tcg-accel-ops.c +++ b/accel/tcg/tcg-accel-ops.c @@ -89,6 +89,9 @@ static void tcg_cpu_reset_hold(CPUState *cpu) cpu->accel->icount_extra = 0; cpu->accel->mem_io_pc = 0; + + qatomic_set(&cpu->neg.icount_decr.u32, 0); + cpu->neg.can_do_io = true; } My branch is huge, I'm trying to split it, maybe I shouldn't have sent this single non-TCG patch out of it. I'll Cc you.
If can_do_io is TCG-specific, maybe the whole field existence / visibility can be conditioned on TCG actually being at least compiled-in? This might help find problems of the field being used in the wrong context, by virtue of getting an error when compiling with --disable-tcg for example. Ciao, Claudio