target-i386: Add x86_cpu_unrealizefn()
First remove VCPU from exec loop and only then remove lapic. Signed-off-by: Chen Fan <chen.fan.fnst@cn.fujitsu.com> Signed-off-by: Gu Zheng <guz.fnst@cn.fujitsu.com> Signed-off-by: Zhu Guihua <zhugh.fnst@cn.fujitsu.com> Signed-off-by: Igor Mammedov <imammedo@redhat.com> Reviewed-by: Eduardo Habkost <ehabkost@redhat.com> Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
This commit is contained in:
parent
f6e984443f
commit
c884776e9d
@ -3114,6 +3114,21 @@ out:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void x86_cpu_unrealizefn(DeviceState *dev, Error **errp)
|
||||||
|
{
|
||||||
|
X86CPU *cpu = X86_CPU(dev);
|
||||||
|
|
||||||
|
#ifndef CONFIG_USER_ONLY
|
||||||
|
cpu_remove_sync(CPU(dev));
|
||||||
|
qemu_unregister_reset(x86_cpu_machine_reset_cb, dev);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
if (cpu->apic_state) {
|
||||||
|
object_unparent(OBJECT(cpu->apic_state));
|
||||||
|
cpu->apic_state = NULL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
typedef struct BitProperty {
|
typedef struct BitProperty {
|
||||||
uint32_t *ptr;
|
uint32_t *ptr;
|
||||||
uint32_t mask;
|
uint32_t mask;
|
||||||
@ -3360,6 +3375,7 @@ static void x86_cpu_common_class_init(ObjectClass *oc, void *data)
|
|||||||
|
|
||||||
xcc->parent_realize = dc->realize;
|
xcc->parent_realize = dc->realize;
|
||||||
dc->realize = x86_cpu_realizefn;
|
dc->realize = x86_cpu_realizefn;
|
||||||
|
dc->unrealize = x86_cpu_unrealizefn;
|
||||||
dc->props = x86_cpu_properties;
|
dc->props = x86_cpu_properties;
|
||||||
|
|
||||||
xcc->parent_reset = cc->reset;
|
xcc->parent_reset = cc->reset;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user