This will give the embeded logic module, such as apic has the opportunity to reset.
Signed-off-by: Liu Ping Fan <pingf...@linux.vnet.ibm.com> --- qom/cpu.c | 16 ++++++++++++++++ 1 files changed, 16 insertions(+), 0 deletions(-) diff --git a/qom/cpu.c b/qom/cpu.c index 5b36046..6aea8e6 100644 --- a/qom/cpu.c +++ b/qom/cpu.c @@ -20,10 +20,26 @@ #include "qemu/cpu.h" #include "qemu-common.h" +#include "hw/qdev.h" + +static int cpu_reset_kid(Object *child, void *opaque) +{ + if (object_is_type_str(child, TYPE_DEVICE)) { + device_reset(DEVICE(child)); + } else if (object_is_type_str(child, TYPE_BUS)) { + bus_reset(BUS(child)); + } else { + printf("cpu's child must be DEVICE or BUS"); + abort(); + } + return 0; +} void cpu_reset(CPUState *cpu) { CPUClass *klass = CPU_GET_CLASS(cpu); + Object *obj = OBJECT(cpu); + object_child_foreach(obj, cpu_reset_kid, NULL); if (klass->reset != NULL) { (*klass->reset)(cpu); -- 1.7.4.4