In preparation for unplug, do some additional cleanup work to undo work originally done in cpu_exec_init.
This patch is based on work done by Bharata B Rao. Signed-off-by: Matthew Rosato <mjros...@linux.vnet.ibm.com> --- target-s390x/cpu.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/target-s390x/cpu.c b/target-s390x/cpu.c index 0ef67a1..060a3cc 100644 --- a/target-s390x/cpu.c +++ b/target-s390x/cpu.c @@ -261,6 +261,20 @@ static void s390_cpu_finalize(Object *obj) { #if !defined(CONFIG_USER_ONLY) S390CPU *cpu = S390_CPU(obj); + CPUState *cs = CPU(cpu); + CPUClass *cc = CPU_GET_CLASS(cs); + CPUS390XState *env = &cpu->env; + + QTAILQ_REMOVE(&cpus, cs, node); + if (cc->vmsd != NULL) { + vmstate_unregister(NULL, cc->vmsd, cs); + } +#if defined(CPU_SAVE_VERSION) + unregister_savevm(NULL, "cpu", cs->env_ptr); +#endif + if (qdev_get_vmsd(DEVICE(cs)) == NULL) { + vmstate_unregister(NULL, &vmstate_cpu_common, cs); + } qemu_unregister_reset(s390_cpu_machine_reset_cb, cpu); g_free(cpu->irqstate); -- 1.9.1