Peter Maydell <peter.mayd...@linaro.org> writes:
> On Thu, 15 Apr 2021 at 17:25, Alex Bennée <alex.ben...@linaro.org> wrote: >> >> By definition a single instruction is capable of being an IO >> instruction. This avoids a problem of triggering a cpu_io_recompile on >> a non-recorded translation which then fails because it expects >> tcg_tb_lookup() to succeed unconditionally. The normal use case >> requires a TB to be able to resolve machine state. >> >> The other users of tcg_tb_lookup() are able to tolerate a missing TB >> if the machine state has been resolved by other means - which in the >> single-shot case is always true because machine state is synced at the >> start of a block. >> >> Reported-by: Peter Maydell <peter.mayd...@linaro.org> >> Signed-off-by: Alex Bennée <alex.ben...@linaro.org> >> --- >> accel/tcg/translate-all.c | 2 +- >> 1 file changed, 1 insertion(+), 1 deletion(-) >> >> diff --git a/accel/tcg/translate-all.c b/accel/tcg/translate-all.c >> index ba6ab09790..b12d0898d0 100644 >> --- a/accel/tcg/translate-all.c >> +++ b/accel/tcg/translate-all.c >> @@ -1863,7 +1863,7 @@ TranslationBlock *tb_gen_code(CPUState *cpu, >> >> if (phys_pc == -1) { >> /* Generate a one-shot TB with 1 insn in it */ >> - cflags = (cflags & ~CF_COUNT_MASK) | 1; >> + cflags = (cflags & ~CF_COUNT_MASK) | CF_LAST_IO | 1; >> } >> >> max_insns = cflags & CF_COUNT_MASK; >> -- > > Reviewed-by: Peter Maydell <peter.mayd...@linaro.org> Are you going to apply this directly or do you want it through a tree? > > thanks > -- PMM -- Alex Bennée