[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH 03/41] accel/tcg: Hoist tcg_tb_insert() up above tb_link_page()
From: |
Richard Henderson |
Subject: |
[PATCH 03/41] accel/tcg: Hoist tcg_tb_insert() up above tb_link_page() |
Date: |
Sat, 10 Jul 2021 08:31:05 -0700 |
From: Liren Wei <lrwei@bupt.edu.cn>
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>
---
accel/tcg/translate-all.c | 9 ++++++++-
1 file changed, 8 insertions(+), 1 deletion(-)
diff --git a/accel/tcg/translate-all.c b/accel/tcg/translate-all.c
index 7929a7e320..75e4d06557 100644
--- a/accel/tcg/translate-all.c
+++ b/accel/tcg/translate-all.c
@@ -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;
@@ -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;
}
--
2.25.1
- [PATCH 00/41] tcg patch queue, Richard Henderson, 2021/07/10
- [PATCH 03/41] accel/tcg: Hoist tcg_tb_insert() up above tb_link_page(),
Richard Henderson <=
- [PATCH 02/41] tcg: Avoid including 'trace-tcg.h' in target translate.c, Richard Henderson, 2021/07/10
- [PATCH 04/41] tcg: Bake tb_destroy() into tcg_region_tree, Richard Henderson, 2021/07/10
- [PATCH 01/41] tcg: Add separator in INDEX_op_call dump, Richard Henderson, 2021/07/10
- [PATCH 06/41] accel/tcg: Introduce translator_use_goto_tb, Richard Henderson, 2021/07/10
- [PATCH 05/41] tcg: Move tb_phys_invalidate_count to tb_ctx, Richard Henderson, 2021/07/10
- [PATCH 07/41] target/alpha: Remove use_exit_tb, Richard Henderson, 2021/07/10
- [PATCH 08/41] target/alpha: Remove in_superpage, Richard Henderson, 2021/07/10
- [PATCH 09/41] target/alpha: Use translator_use_goto_tb, Richard Henderson, 2021/07/10
- [PATCH 10/41] target/arm: Use DISAS_TOO_MANY for ISB and SB, Richard Henderson, 2021/07/10
- [PATCH 11/41] target/arm: Use translator_use_goto_tb for aarch64, Richard Henderson, 2021/07/10