i386: use machine class ->wakeup method

Move the i386 suspend_wakeup logic out of the fallback path, and into
the new ->wakeup method.

Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
Message-Id: <20190722061752.22114-1-npiggin@gmail.com>
Acked-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
This commit is contained in:
Nicholas Piggin 2019-07-22 16:17:51 +10:00 committed by David Gibson
parent 4b5e06c946
commit c508bd12f6
2 changed files with 8 additions and 2 deletions

View File

@ -2834,6 +2834,13 @@ static void pc_machine_reset(MachineState *machine)
}
}
static void pc_machine_wakeup(MachineState *machine)
{
cpu_synchronize_all_states();
pc_machine_reset(machine);
cpu_synchronize_all_post_reset();
}
static CpuInstanceProperties
pc_cpu_index_to_props(MachineState *ms, unsigned cpu_index)
{
@ -2946,6 +2953,7 @@ static void pc_machine_class_init(ObjectClass *oc, void *data)
mc->block_default_type = IF_IDE;
mc->max_cpus = 255;
mc->reset = pc_machine_reset;
mc->wakeup = pc_machine_wakeup;
hc->pre_plug = pc_machine_device_pre_plug_cb;
hc->plug = pc_machine_device_plug_cb;
hc->unplug_request = pc_machine_device_unplug_request_cb;

2
vl.c
View File

@ -1568,8 +1568,6 @@ static void qemu_system_wakeup(void)
if (mc && mc->wakeup) {
mc->wakeup(current_machine);
} else {
qemu_system_reset(SHUTDOWN_CAUSE_NONE);
}
}