On 6/6/24 21:53, Philippe Mathieu-Daudé wrote:
On 6/6/24 23:14, Pierrick Bouvier wrote:
On 6/6/24 05:40, Philippe Mathieu-Daudé wrote:
cpu::plugin_state is allocated in cpu_common_initfn() when
the vCPU state is created. Release it in cpu_common_finalize()
when we are done.

Signed-off-by: Philippe Mathieu-Daudé <phi...@linaro.org>
---
   include/qemu/plugin.h | 3 +++
   hw/core/cpu-common.c  | 5 +++++
   2 files changed, 8 insertions(+)

diff --git a/include/qemu/plugin.h b/include/qemu/plugin.h
index bc5aef979e..af5f9db469 100644
--- a/include/qemu/plugin.h
+++ b/include/qemu/plugin.h
@@ -149,6 +149,9 @@ struct CPUPluginState {
   /**
    * qemu_plugin_create_vcpu_state: allocate plugin state
+ *
+ * The returned data must be released with g_free()
+ * when no longer required.
    */
   CPUPluginState *qemu_plugin_create_vcpu_state(void);
diff --git a/hw/core/cpu-common.c b/hw/core/cpu-common.c
index bf1a7b8892..cd15402552 100644
--- a/hw/core/cpu-common.c
+++ b/hw/core/cpu-common.c
@@ -283,6 +283,11 @@ static void cpu_common_finalize(Object *obj)
   {
       CPUState *cpu = CPU(obj);
+#ifdef CONFIG_PLUGIN
+    if (tcg_enabled()) {
+        g_free(cpu->plugin_state);
+    }
+#endif
       g_array_free(cpu->gdb_regs, TRUE);
       qemu_lockcnt_destroy(&cpu->in_ioctl_lock);
       qemu_mutex_destroy(&cpu->work_mutex);

To ensure I get it right, order of cpu init/deinit is:
- init
- realize
- unrealize
- finalize
Is that correct?

Yes, this is valid for all QDev (CPU is based on it).

+ init: allocate state, expose configurable properties
. user configure properties
+ realize: consume properties to tune the object
+ reset: set default values
. object is used
+ unrealize: undo stuff from realize because the object
    might be realized again (unplug - plug)
+ finalize: release resources

See
https://lore.kernel.org/qemu-devel/20240209123226.32576-1-phi...@linaro.org/

Reviewed-by: Pierrick Bouvier <pierrick.bouv...@linaro.org>

Thanks!

Thanks, it definitely have its place in the official documentation, if you feel like adding it.

Reply via email to