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: v9.1.0-rc0~106^2~29 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=ddfa9f11766c532209d4ce848c12761d28730338;p=thirdparty%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 0848026935a..18138c61e19 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; }