On Wed, Oct 17, 2012 at 01:08:23PM -0500, Anthony Liguori wrote: > Eduardo Habkost <ehabk...@redhat.com> writes: > > > The reset register/unregister code is specific to qemu-system-*, so > > isolate it so it can be moved to qdev-system.c. > > > > Signed-off-by: Eduardo Habkost <ehabk...@redhat.com> > > --- > > hw/qdev-core.c | 24 ++++++++++++++++++------ > > 1 file changed, 18 insertions(+), 6 deletions(-) > > > > diff --git a/hw/qdev-core.c b/hw/qdev-core.c > > index af0af52..a105679 100644 > > --- a/hw/qdev-core.c > > +++ b/hw/qdev-core.c > > @@ -47,6 +47,21 @@ void GCC_WEAK qdev_finalize_vmstate(DeviceState *dev) > > { > > } > > > > +static void qbus_register_reset(BusState *bus) > > +{ > > + if (bus != sysbus_get_default()) { > > + /* TODO: once all bus devices are qdevified, > > + only reset handler for main_system_bus should be registered > > here. */ > > + qemu_register_reset(qbus_reset_all_fn, bus); > > + } > > +} > > + > > +static void qbus_unregister_reset(BusState *bus) > > +{ > > + assert(bus != sysbus_get_default()); /* main_system_bus is never freed > > */ > > + qemu_unregister_reset(qbus_reset_all_fn, bus); > > +} > > + > > Again, I'd suggest stubbing out qemu_[un]register_reset instead of > trying to cope with it's users.
I agree on the vmstate case (the other patch), but on this case this would require implementing a sysbus_get_default() stub as well. Skipping the whole check for sysbus_get_default() on *-user looks like the right thing to do, to me. Anyway, I am actually wondering if we really need to include the qbus code on *-user. Do you think *-user will eventually use BusState objects too, or it will use only DeviceState objects in the foreseeable future? > > Regards, > > Anthony Liguori > > > const char *qdev_fw_name(DeviceState *dev) > > { > > DeviceClass *dc = DEVICE_GET_CLASS(dev); > > @@ -355,10 +370,8 @@ static void qbus_realize(BusState *bus) > > QLIST_INSERT_HEAD(&bus->parent->child_bus, bus, sibling); > > bus->parent->num_child_bus++; > > object_property_add_child(OBJECT(bus->parent), bus->name, > > OBJECT(bus), NULL); > > - } else if (bus != sysbus_get_default()) { > > - /* TODO: once all bus devices are qdevified, > > - only reset handler for main_system_bus should be registered > > here. */ > > - qemu_register_reset(qbus_reset_all_fn, bus); > > + } else { > > + qbus_register_reset(bus); > > } > > } > > > > @@ -692,8 +705,7 @@ static void qbus_finalize(Object *obj) > > QLIST_REMOVE(bus, sibling); > > bus->parent->num_child_bus--; > > } else { > > - assert(bus != sysbus_get_default()); /* main_system_bus is never > > freed */ > > - qemu_unregister_reset(qbus_reset_all_fn, bus); > > + qbus_unregister_reset(bus); > > } > > g_free((char *)bus->name); > > } > > -- > > 1.7.11.7 -- Eduardo