Skip to content

Commit

Permalink
accel/tcg: Hoist tcg_tb_insert() up above tb_link_page()
Browse files Browse the repository at this point in the history
TranslationBlocks not inserted into the corresponding region
tree shall be regarded as partially initialized objects, and
needs to be finalized first before inserting into QHT.

Signed-off-by: Liren Wei <lrwei@bupt.edu.cn>
Message-Id: <f9fc263f71e11b6308d8c1fbc0dd366bf4aeb532.1625404483.git.lrwei@bupt.edu.cn>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
  • Loading branch information
Liren Wei authored and rth7680 committed Jul 9, 2021
1 parent 1797b08 commit f4cba75
Showing 1 changed file with 8 additions and 1 deletion.
9 changes: 8 additions & 1 deletion accel/tcg/translate-all.c
Expand Up @@ -1657,6 +1657,13 @@ TranslationBlock *tb_gen_code(CPUState *cpu,
return tb;
}

/*
* Insert TB into the corresponding region tree before publishing it
* through QHT. Otherwise rewinding happened in the TB might fail to
* lookup itself using host PC.
*/
tcg_tb_insert(tb);

/* check next page if needed */
virt_page2 = (pc + tb->size - 1) & TARGET_PAGE_MASK;
phys_page2 = -1;
Expand All @@ -1675,9 +1682,9 @@ TranslationBlock *tb_gen_code(CPUState *cpu,
orig_aligned -= ROUND_UP(sizeof(*tb), qemu_icache_linesize);
qatomic_set(&tcg_ctx->code_gen_ptr, (void *)orig_aligned);
tb_destroy(tb);
tcg_tb_remove(tb);
return existing_tb;
}
tcg_tb_insert(tb);
return tb;
}

Expand Down

0 comments on commit f4cba75

Please sign in to comment.