From: Richard Henderson Date: Wed, 3 Apr 2024 05:28:20 +0000 (-1000) Subject: accel/tcg: Cap the translation block when we encounter mmio X-Git-Tag: pull-vmclock-20250108~320^2~29 X-Git-Url: https://www.infradead.org/git/?a=commitdiff_plain;h=ddfa9f11766c532209d4ce848c12761d28730338;p=users%2Fdwmw2%2Fqemu.git accel/tcg: Cap the translation block when we encounter mmio Do not allow translation to proceed beyond one insn with mmio, as we will not be caching the TranslationBlock. Reviewed-by: Philippe Mathieu-Daudé Signed-off-by: Richard Henderson --- diff --git a/accel/tcg/translator.c b/accel/tcg/translator.c index 0848026935..18138c61e1 100644 --- a/accel/tcg/translator.c +++ b/accel/tcg/translator.c @@ -240,6 +240,8 @@ static bool translator_ld(CPUArchState *env, DisasContextBase *db, /* Use slow path if first page is MMIO. */ if (unlikely(tb_page_addr0(tb) == -1)) { + /* We capped translation with first page MMIO in tb_gen_code. */ + tcg_debug_assert(db->max_insns == 1); return false; } @@ -288,6 +290,8 @@ static bool translator_ld(CPUArchState *env, DisasContextBase *db, if (unlikely(new_page1 == -1)) { tb_unlock_pages(tb); tb_set_page_addr0(tb, -1); + /* Require that this be the final insn. */ + db->max_insns = db->num_insns; return false; }