On Tue, Jul 10, 2012 at 4:41 PM, Paolo Bonzini <pbonz...@redhat.com> wrote: > Il 10/07/2012 08:16, Liu Ping Fan ha scritto: >> 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); > > Ok, now I see what you want to do. Next time, please add meaningful > commit messages to all patches in the series, even those that only add > infrastructure. > OK, I will.
> It really looks like time is ripe to make CPUs children of Device, so > you can just use qdev_reset_all to reset the CPU. > Change CPUState as child of Device? It is cool, but I think it will a huge work with argue. > Paolo > >> if (klass->reset != NULL) { >> (*klass->reset)(cpu); >> > >