From: Richard Henderson <richard.henderson@linaro.org>
To: qemu-devel@nongnu.org
Cc: "Philippe Mathieu-Daudé" <philmd@linaro.org>
Subject: [PULL 15/34] plugins: Merge alloc_tcg_plugin_context into plugin_gen_tb_start
Date: Wed, 15 May 2024 09:52:28 +0200 [thread overview]
Message-ID: <20240515075247.68024-16-richard.henderson@linaro.org> (raw)
In-Reply-To: <20240515075247.68024-1-richard.henderson@linaro.org>
We don't need to allocate plugin context at startup,
we can wait until we actually use it.
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
---
accel/tcg/plugin-gen.c | 36 ++++++++++++++++++++----------------
tcg/tcg.c | 11 -----------
2 files changed, 20 insertions(+), 27 deletions(-)
diff --git a/accel/tcg/plugin-gen.c b/accel/tcg/plugin-gen.c
index b54494712a..54b08ffc9e 100644
--- a/accel/tcg/plugin-gen.c
+++ b/accel/tcg/plugin-gen.c
@@ -305,28 +305,32 @@ static void plugin_gen_inject(struct qemu_plugin_tb *plugin_tb)
bool plugin_gen_tb_start(CPUState *cpu, const DisasContextBase *db)
{
- bool ret = false;
+ struct qemu_plugin_tb *ptb;
- if (test_bit(QEMU_PLUGIN_EV_VCPU_TB_TRANS, cpu->plugin_state->event_mask)) {
- struct qemu_plugin_tb *ptb = tcg_ctx->plugin_tb;
-
- /* reset callbacks */
- if (ptb->cbs) {
- g_array_set_size(ptb->cbs, 0);
- }
- ptb->n = 0;
-
- ret = true;
-
- ptb->mem_helper = false;
-
- tcg_gen_plugin_cb(PLUGIN_GEN_FROM_TB);
+ if (!test_bit(QEMU_PLUGIN_EV_VCPU_TB_TRANS,
+ cpu->plugin_state->event_mask)) {
+ return false;
}
tcg_ctx->plugin_db = db;
tcg_ctx->plugin_insn = NULL;
+ ptb = tcg_ctx->plugin_tb;
- return ret;
+ if (ptb) {
+ /* Reset callbacks */
+ if (ptb->cbs) {
+ g_array_set_size(ptb->cbs, 0);
+ }
+ ptb->n = 0;
+ ptb->mem_helper = false;
+ } else {
+ ptb = g_new0(struct qemu_plugin_tb, 1);
+ tcg_ctx->plugin_tb = ptb;
+ ptb->insns = g_ptr_array_new();
+ }
+
+ tcg_gen_plugin_cb(PLUGIN_GEN_FROM_TB);
+ return true;
}
void plugin_gen_insn_start(CPUState *cpu, const DisasContextBase *db)
diff --git a/tcg/tcg.c b/tcg/tcg.c
index 71daa5d268..34e3056380 100644
--- a/tcg/tcg.c
+++ b/tcg/tcg.c
@@ -761,14 +761,6 @@ QEMU_BUILD_BUG_ON((int)(offsetof(CPUNegativeOffsetState, tlb.f[0]) -
< MIN_TLB_MASK_TABLE_OFS);
#endif
-static void alloc_tcg_plugin_context(TCGContext *s)
-{
-#ifdef CONFIG_PLUGIN
- s->plugin_tb = g_new0(struct qemu_plugin_tb, 1);
- s->plugin_tb->insns = g_ptr_array_new();
-#endif
-}
-
/*
* All TCG threads except the parent (i.e. the one that called tcg_context_init
* and registered the target's TCG globals) must register with this function
@@ -813,7 +805,6 @@ void tcg_register_thread(void)
qatomic_set(&tcg_ctxs[n], s);
if (n > 0) {
- alloc_tcg_plugin_context(s);
tcg_region_initial_alloc(s);
}
@@ -1360,8 +1351,6 @@ static void tcg_context_init(unsigned max_cpus)
indirect_reg_alloc_order[i] = tcg_target_reg_alloc_order[i];
}
- alloc_tcg_plugin_context(s);
-
tcg_ctx = s;
/*
* In user-mode we simply share the init context among threads, since we
--
2.34.1
next prev parent reply other threads:[~2024-05-15 7:53 UTC|newest]
Thread overview: 37+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-05-15 7:52 [PULL 00/34] tcg patch queue Richard Henderson
2024-05-15 7:52 ` [PULL 01/34] accel/tcg: Use vaddr in translator_ld* Richard Henderson
2024-05-15 7:52 ` [PULL 02/34] accel/tcg: Hide in_same_page outside of a target-specific context Richard Henderson
2024-05-15 7:52 ` [PULL 03/34] accel/tcg: Pass DisasContextBase to translator_fake_ldb Richard Henderson
2024-05-15 7:52 ` [PULL 04/34] accel/tcg: Reorg translator_ld* Richard Henderson
2024-05-15 7:52 ` [PULL 05/34] accel/tcg: Cap the translation block when we encounter mmio Richard Henderson
2024-05-15 7:52 ` [PULL 06/34] accel/tcg: Record mmio bytes during translation Richard Henderson
2024-05-15 7:52 ` [PULL 07/34] accel/tcg: Record when translator_fake_ldb is used Richard Henderson
2024-05-15 7:52 ` [PULL 08/34] accel/tcg: Record DisasContextBase in tcg_ctx for plugins Richard Henderson
2024-05-15 7:52 ` [PULL 09/34] plugins: Copy memory in qemu_plugin_insn_data Richard Henderson
2024-05-15 7:52 ` [PULL 10/34] accel/tcg: Implement translator_st Richard Henderson
2024-05-15 7:52 ` [PULL 11/34] plugins: Use translator_st for qemu_plugin_insn_data Richard Henderson
2024-05-15 7:52 ` [PULL 12/34] plugins: Read mem_only directly from TB cflags Richard Henderson
2024-05-15 7:52 ` [PULL 13/34] plugins: Use DisasContextBase for qemu_plugin_insn_haddr Richard Henderson
2024-05-15 7:52 ` [PULL 14/34] plugins: Use DisasContextBase for qemu_plugin_tb_vaddr Richard Henderson
2024-05-15 7:52 ` Richard Henderson [this message]
2024-05-15 7:52 ` [PULL 16/34] accel/tcg: Provide default implementation of disas_log Richard Henderson
2024-05-15 7:52 ` [PULL 17/34] accel/tcg: Return bool from TranslatorOps.disas_log Richard Henderson
2024-05-15 7:52 ` [PULL 18/34] disas: Split disas.c Richard Henderson
2024-05-15 7:52 ` [PULL 19/34] disas: Use translator_st to get disassembly data Richard Henderson
2024-05-20 11:50 ` Bernhard Beschow
2024-05-15 7:52 ` [PULL 20/34] accel/tcg: Introduce translator_fake_ld Richard Henderson
2024-05-15 7:52 ` [PULL 21/34] target/s390x: Fix translator_fake_ld length Richard Henderson
2024-05-15 7:52 ` [PULL 22/34] target/s390x: Disassemble EXECUTEd instructions Richard Henderson
2024-05-15 7:52 ` [PULL 23/34] target/hexagon: Use translator_ldl in pkt_crosses_page Richard Henderson
2024-05-15 7:52 ` [PULL 24/34] target/microblaze: Use translator_ldl Richard Henderson
2024-05-15 7:52 ` [PULL 25/34] target/i386: Use translator_ldub for everything Richard Henderson
2024-05-15 7:52 ` [PULL 26/34] target/avr: Use translator_lduw Richard Henderson
2024-05-15 7:52 ` [PULL 27/34] target/cris: Use translator_ld* in cris_fetch Richard Henderson
2024-05-15 7:52 ` [PULL 28/34] target/cris: Use cris_fetch in translate_v10.c.inc Richard Henderson
2024-05-15 7:52 ` [PULL 29/34] target/riscv: Use translator_ld* for everything Richard Henderson
2024-05-15 7:52 ` [PULL 30/34] target/rx: Use translator_ld* Richard Henderson
2024-05-15 7:52 ` [PULL 31/34] target/xtensa: Use translator_ldub in xtensa_insn_len Richard Henderson
2024-05-15 7:52 ` [PULL 32/34] target/s390x: Use translator_lduw in get_next_pc Richard Henderson
2024-05-15 7:52 ` [PULL 33/34] accel/tcg: Remove cpu_ldsb_code / cpu_ldsw_code Richard Henderson
2024-05-15 7:52 ` [PULL 34/34] tcg/loongarch64: Fill out tcg_out_{ld, st} for vector regs Richard Henderson
2024-05-15 12:59 ` [PULL 00/34] tcg patch queue Richard Henderson
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20240515075247.68024-16-richard.henderson@linaro.org \
--to=richard.henderson@linaro.org \
--cc=philmd@linaro.org \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).