* [PATCH v2] plugins: fix qemu_plugin_reset
@ 2024-10-15 0:38 Pierrick Bouvier
2024-10-15 9:33 ` Robbin Ehn
2024-10-21 10:22 ` Alex Bennée
0 siblings, 2 replies; 4+ messages in thread
From: Pierrick Bouvier @ 2024-10-15 0:38 UTC (permalink / raw)
To: qemu-devel
Cc: Paolo Bonzini, alex.bennee, Richard Henderson, Pierrick Bouvier
34e5e1 refactored the plugin context initialization. After this change,
tcg_ctx->plugin_insn is not reset inconditionnally anymore, but only if
one plugin at least is active.
When uninstalling the last plugin active, we stopped reinitializing
tcg_ctx->plugin_insn, which leads to memory callbacks being emitted.
This results in an error as they don't appear in a plugin op sequence as
expected.
The correct fix is to make sure we reset plugin translation variables
after current block translation ends. This way, we can catch any
potential misuse of those after a given block, in more than fixing the
current bug.
v2: do not reset tcg_ctx->plugin_tb as it gets reused between
translations.
Fixes: https://gitlab.com/qemu-project/qemu/-/issues/2570
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
---
accel/tcg/plugin-gen.c | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/accel/tcg/plugin-gen.c b/accel/tcg/plugin-gen.c
index 2ee4c22befd..0f47bfbb489 100644
--- a/accel/tcg/plugin-gen.c
+++ b/accel/tcg/plugin-gen.c
@@ -467,4 +467,8 @@ void plugin_gen_tb_end(CPUState *cpu, size_t num_insns)
/* inject the instrumentation at the appropriate places */
plugin_gen_inject(ptb);
+
+ /* reset plugin translation state (plugin_tb is reused between blocks) */
+ tcg_ctx->plugin_db = NULL;
+ tcg_ctx->plugin_insn = NULL;
}
--
2.39.5
^ permalink raw reply related [flat|nested] 4+ messages in thread* Re: [PATCH v2] plugins: fix qemu_plugin_reset
2024-10-15 0:38 [PATCH v2] plugins: fix qemu_plugin_reset Pierrick Bouvier
@ 2024-10-15 9:33 ` Robbin Ehn
2024-10-21 10:22 ` Alex Bennée
1 sibling, 0 replies; 4+ messages in thread
From: Robbin Ehn @ 2024-10-15 9:33 UTC (permalink / raw)
To: Pierrick Bouvier
Cc: qemu-devel, Paolo Bonzini, alex.bennee, Richard Henderson
On Tue, Oct 15, 2024 at 2:38 AM Pierrick Bouvier
<pierrick.bouvier@linaro.org> wrote:
>
> 34e5e1 refactored the plugin context initialization. After this change,
> tcg_ctx->plugin_insn is not reset inconditionnally anymore, but only if
> one plugin at least is active.
>
> When uninstalling the last plugin active, we stopped reinitializing
> tcg_ctx->plugin_insn, which leads to memory callbacks being emitted.
> This results in an error as they don't appear in a plugin op sequence as
> expected.
>
> The correct fix is to make sure we reset plugin translation variables
> after current block translation ends. This way, we can catch any
> potential misuse of those after a given block, in more than fixing the
> current bug.
>
> v2: do not reset tcg_ctx->plugin_tb as it gets reused between
> translations.
>
> Fixes: https://gitlab.com/qemu-project/qemu/-/issues/2570
> Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
> Signed-off-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
> ---
> accel/tcg/plugin-gen.c | 4 ++++
> 1 file changed, 4 insertions(+)
>
> diff --git a/accel/tcg/plugin-gen.c b/accel/tcg/plugin-gen.c
> index 2ee4c22befd..0f47bfbb489 100644
> --- a/accel/tcg/plugin-gen.c
> +++ b/accel/tcg/plugin-gen.c
> @@ -467,4 +467,8 @@ void plugin_gen_tb_end(CPUState *cpu, size_t num_insns)
>
> /* inject the instrumentation at the appropriate places */
> plugin_gen_inject(ptb);
> +
> + /* reset plugin translation state (plugin_tb is reused between blocks) */
> + tcg_ctx->plugin_db = NULL;
> + tcg_ctx->plugin_insn = NULL;
> }
> --
> 2.39.5
>
>
Thanks!
Tested-by: Robbin Ehn <rehn@rivosinc.com>
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH v2] plugins: fix qemu_plugin_reset
2024-10-15 0:38 [PATCH v2] plugins: fix qemu_plugin_reset Pierrick Bouvier
2024-10-15 9:33 ` Robbin Ehn
@ 2024-10-21 10:22 ` Alex Bennée
2024-10-21 15:56 ` Pierrick Bouvier
1 sibling, 1 reply; 4+ messages in thread
From: Alex Bennée @ 2024-10-21 10:22 UTC (permalink / raw)
To: Pierrick Bouvier; +Cc: qemu-devel, Paolo Bonzini, Richard Henderson
Pierrick Bouvier <pierrick.bouvier@linaro.org> writes:
> 34e5e1 refactored the plugin context initialization. After this change,
> tcg_ctx->plugin_insn is not reset inconditionnally anymore, but only if
> one plugin at least is active.
>
> When uninstalling the last plugin active, we stopped reinitializing
> tcg_ctx->plugin_insn, which leads to memory callbacks being emitted.
> This results in an error as they don't appear in a plugin op sequence as
> expected.
>
> The correct fix is to make sure we reset plugin translation variables
> after current block translation ends. This way, we can catch any
> potential misuse of those after a given block, in more than fixing the
> current bug.
>
> v2: do not reset tcg_ctx->plugin_tb as it gets reused between
> translations.
For reference put version information bellow
---
and then the git tools will trim it out of the commit message.
Queued to plugins/next, thanks.
>
> Fixes: https://gitlab.com/qemu-project/qemu/-/issues/2570
> Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
> Signed-off-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
> ---
> accel/tcg/plugin-gen.c | 4 ++++
> 1 file changed, 4 insertions(+)
>
> diff --git a/accel/tcg/plugin-gen.c b/accel/tcg/plugin-gen.c
> index 2ee4c22befd..0f47bfbb489 100644
> --- a/accel/tcg/plugin-gen.c
> +++ b/accel/tcg/plugin-gen.c
> @@ -467,4 +467,8 @@ void plugin_gen_tb_end(CPUState *cpu, size_t num_insns)
>
> /* inject the instrumentation at the appropriate places */
> plugin_gen_inject(ptb);
> +
> + /* reset plugin translation state (plugin_tb is reused between blocks) */
> + tcg_ctx->plugin_db = NULL;
> + tcg_ctx->plugin_insn = NULL;
> }
--
Alex Bennée
Virtualisation Tech Lead @ Linaro
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH v2] plugins: fix qemu_plugin_reset
2024-10-21 10:22 ` Alex Bennée
@ 2024-10-21 15:56 ` Pierrick Bouvier
0 siblings, 0 replies; 4+ messages in thread
From: Pierrick Bouvier @ 2024-10-21 15:56 UTC (permalink / raw)
To: Alex Bennée; +Cc: qemu-devel, Paolo Bonzini, Richard Henderson
On 10/21/24 03:22, Alex Bennée wrote:
> Pierrick Bouvier <pierrick.bouvier@linaro.org> writes:
>
>> 34e5e1 refactored the plugin context initialization. After this change,
>> tcg_ctx->plugin_insn is not reset inconditionnally anymore, but only if
>> one plugin at least is active.
>>
>> When uninstalling the last plugin active, we stopped reinitializing
>> tcg_ctx->plugin_insn, which leads to memory callbacks being emitted.
>> This results in an error as they don't appear in a plugin op sequence as
>> expected.
>>
>> The correct fix is to make sure we reset plugin translation variables
>> after current block translation ends. This way, we can catch any
>> potential misuse of those after a given block, in more than fixing the
>> current bug.
>>
>> v2: do not reset tcg_ctx->plugin_tb as it gets reused between
>> translations.
>
> For reference put version information bellow
>
> ---
>
> and then the git tools will trim it out of the commit message.
>
> Queued to plugins/next, thanks.
>
Thanks, I was not sure how to deal with versioning for individual
patches 👍.
>>
>> Fixes: https://gitlab.com/qemu-project/qemu/-/issues/2570
>> Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
>> Signed-off-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
>> ---
>> accel/tcg/plugin-gen.c | 4 ++++
>> 1 file changed, 4 insertions(+)
>>
>> diff --git a/accel/tcg/plugin-gen.c b/accel/tcg/plugin-gen.c
>> index 2ee4c22befd..0f47bfbb489 100644
>> --- a/accel/tcg/plugin-gen.c
>> +++ b/accel/tcg/plugin-gen.c
>> @@ -467,4 +467,8 @@ void plugin_gen_tb_end(CPUState *cpu, size_t num_insns)
>>
>> /* inject the instrumentation at the appropriate places */
>> plugin_gen_inject(ptb);
>> +
>> + /* reset plugin translation state (plugin_tb is reused between blocks) */
>> + tcg_ctx->plugin_db = NULL;
>> + tcg_ctx->plugin_insn = NULL;
>> }
>
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2024-10-21 15:57 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-10-15 0:38 [PATCH v2] plugins: fix qemu_plugin_reset Pierrick Bouvier
2024-10-15 9:33 ` Robbin Ehn
2024-10-21 10:22 ` Alex Bennée
2024-10-21 15:56 ` Pierrick Bouvier
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).