Move struct HotplugEventType from file piix4.c to file qom/cpu.c, and add struct CPUNotifier for supporting PLUG and UNPLUG cpu notifier.
Signed-off-by: Chen Fan <chen.fan.f...@cn.fujitsu.com> --- hw/acpi/piix4.c | 8 ++------ include/qom/cpu.h | 10 ++++++++++ qom/cpu.c | 6 +++++- 3 files changed, 17 insertions(+), 7 deletions(-) diff --git a/hw/acpi/piix4.c b/hw/acpi/piix4.c index 0a58ff7..fa82768 100644 --- a/hw/acpi/piix4.c +++ b/hw/acpi/piix4.c @@ -669,11 +669,6 @@ static const MemoryRegionOps cpu_hotplug_ops = { }, }; -typedef enum { - PLUG, - UNPLUG, -} HotplugEventType; - static void piix4_cpu_hotplug_req(PIIX4PMState *s, CPUState *cpu, HotplugEventType action) { @@ -703,8 +698,9 @@ static void piix4_cpu_hotplug_req(PIIX4PMState *s, CPUState *cpu, static void piix4_cpu_hotplug(Notifier *n, void *opaque) { PIIX4PMState *s = container_of(n, PIIX4PMState, cpu_hotplug_notifier); + CPUNotifier *notifier = opaque; - piix4_cpu_hotplug_req(s, CPU(opaque), PLUG); + piix4_cpu_hotplug_req(s, CPU(notifier->dev), notifier->type); } static void piix4_init_cpu_status(CPUState *cpu, void *data) diff --git a/include/qom/cpu.h b/include/qom/cpu.h index fa8ec8a..c6f612d 100644 --- a/include/qom/cpu.h +++ b/include/qom/cpu.h @@ -518,6 +518,16 @@ void qemu_init_vcpu(CPUState *cpu); */ void cpu_single_step(CPUState *cpu, int enabled); +typedef enum { + PLUG, + UNPLUG, +} HotplugEventType; + +typedef struct CPUNotifier { + DeviceState *dev; + HotplugEventType type; +} CPUNotifier; + #ifdef CONFIG_SOFTMMU extern const struct VMStateDescription vmstate_cpu_common; #else diff --git a/qom/cpu.c b/qom/cpu.c index e3e75de..3439c5d 100644 --- a/qom/cpu.c +++ b/qom/cpu.c @@ -227,10 +227,14 @@ static ObjectClass *cpu_common_class_by_name(const char *cpu_model) static void cpu_common_realizefn(DeviceState *dev, Error **errp) { CPUState *cpu = CPU(dev); + CPUNotifier notifier; + + notifier.dev = dev; + notifier.type = PLUG; if (dev->hotplugged) { cpu_synchronize_post_init(cpu); - notifier_list_notify(&cpu_hotplug_notifiers, dev); + notifier_list_notify(&cpu_hotplug_notifiers, ¬ifier); cpu_resume(cpu); } } -- 1.8.1.4