[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH 14/23] plugins: fix order of init/idle/resume callback
From: |
Alex Bennée |
Subject: |
[PATCH 14/23] plugins: fix order of init/idle/resume callback |
Date: |
Fri, 16 Feb 2024 16:30:16 +0000 |
From: Pierrick Bouvier <pierrick.bouvier@linaro.org>
We found that vcpu_init_hook was called *after* idle callback.
vcpu_init is called from cpu_realize_fn, while idle/resume cb are called
from qemu_wait_io_event (in vcpu thread).
This change ensures we only call idle and resume cb only once a plugin
was init for a given vcpu.
Next change in the series will run vcpu_init asynchronously, which will
make it run *after* resume callback as well. So we fix this now.
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
Message-Id: <20240213094009.150349-4-pierrick.bouvier@linaro.org>
Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
---
plugins/core.c | 9 +++++++--
1 file changed, 7 insertions(+), 2 deletions(-)
diff --git a/plugins/core.c b/plugins/core.c
index caa66311351..2392bbb8889 100644
--- a/plugins/core.c
+++ b/plugins/core.c
@@ -391,12 +391,17 @@ void qemu_plugin_vcpu_syscall_ret(CPUState *cpu, int64_t
num, int64_t ret)
void qemu_plugin_vcpu_idle_cb(CPUState *cpu)
{
- plugin_vcpu_cb__simple(cpu, QEMU_PLUGIN_EV_VCPU_IDLE);
+ /* idle and resume cb may be called before init, ignore in this case */
+ if (cpu->cpu_index < plugin.num_vcpus) {
+ plugin_vcpu_cb__simple(cpu, QEMU_PLUGIN_EV_VCPU_IDLE);
+ }
}
void qemu_plugin_vcpu_resume_cb(CPUState *cpu)
{
- plugin_vcpu_cb__simple(cpu, QEMU_PLUGIN_EV_VCPU_RESUME);
+ if (cpu->cpu_index < plugin.num_vcpus) {
+ plugin_vcpu_cb__simple(cpu, QEMU_PLUGIN_EV_VCPU_RESUME);
+ }
}
void qemu_plugin_register_vcpu_idle_cb(qemu_plugin_id_t id,
--
2.39.2
- Re: [PATCH 18/23] plugins: add an API to read registers, (continued)
- Re: [PATCH 18/23] plugins: add an API to read registers, Alex Bennée, 2024/02/22
- Re: [PATCH 18/23] plugins: add an API to read registers, Akihiko Odaki, 2024/02/22
- Re: [PATCH 18/23] plugins: add an API to read registers, Alex Bennée, 2024/02/22
- Re: [PATCH 18/23] plugins: add an API to read registers, Akihiko Odaki, 2024/02/23
- Re: [PATCH 18/23] plugins: add an API to read registers, Alex Bennée, 2024/02/23
- Re: [PATCH 18/23] plugins: add an API to read registers, Alex Bennée, 2024/02/23
[PATCH 19/23] contrib/plugins: fix imatch, Alex Bennée, 2024/02/16
[PATCH 17/23] gdbstub: expose api to find registers, Alex Bennée, 2024/02/16
[PATCH 21/23] docs/devel: lift example and plugin API sections up, Alex Bennée, 2024/02/16
[PATCH 15/23] cpu: call plugin init hook asynchronously, Alex Bennée, 2024/02/16
[PATCH 14/23] plugins: fix order of init/idle/resume callback,
Alex Bennée <=
[PATCH 16/23] plugins: Use different helpers when reading registers, Alex Bennée, 2024/02/16