All of lore.kernel.org
 help / color / mirror / Atom feed
From: Eduardo Habkost <ehabkost@redhat.com>
To: Anthony Liguori <anthony@codemonkey.ws>
Cc: peter.maydell@linaro.org, riku.voipio@iki.fi,
	qemu-devel@nongnu.org, blauwirbel@gmail.com,
	"Igor Mammedov" <imammedo@redhat.com>,
	"Andreas Färber" <afaerber@suse.de>
Subject: Re: [Qemu-devel] [PATCH 07/12] qdev-core: isolate reset register/unregister code
Date: Tue, 23 Oct 2012 12:56:18 -0200	[thread overview]
Message-ID: <20121023145618.GC627@otherpad.lan.raisama.net> (raw)
In-Reply-To: <874nltug2w.fsf@codemonkey.ws>

On Wed, Oct 17, 2012 at 01:08:23PM -0500, Anthony Liguori wrote:
> Eduardo Habkost <ehabkost@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 <ehabkost@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 was going to implement it the way you suggested. But then I noticed
that I _ *-user will need to request the devices to be reset once, too
(even if the only devices available are the CPU objects).

On the next version, I will move the reset-function list from vl.c to
qdev-core.c. Code that uses qdev will need to take care of calling
qemu_devices_reset() eventually (qemu-system does that on vl.c *-user
will need to that somewhere else).

> 
> 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

  parent reply	other threads:[~2012-10-23 14:56 UTC|newest]

Thread overview: 27+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-10-16 19:08 [Qemu-devel] [PATCH 00/12] make CPU child of DeviceState and include qdev core in *-user Eduardo Habkost
2012-10-16 19:08 ` [Qemu-devel] [PATCH 01/12] qdev: split up header so it can be used in cpu.h Eduardo Habkost
2012-10-16 19:08 ` [Qemu-devel] [PATCH 02/12] qapi-types.h doesn't really need to include qemu-common.h Eduardo Habkost
2012-10-16 19:08 ` [Qemu-devel] [PATCH 03/12] qdev: separate core from the code used only by qemu-system-* Eduardo Habkost
2012-10-16 19:08 ` [Qemu-devel] [PATCH 04/12] qdev: rename qdev.c to qdev-core.c Eduardo Habkost
2012-10-16 19:08 ` [Qemu-devel] [PATCH 05/12] qdev-core: isolate vmstate handling into separate functions Eduardo Habkost
2012-10-17 18:06   ` Anthony Liguori
2012-10-16 19:08 ` [Qemu-devel] [PATCH 06/12] qdev: move vmstate handling to qdev-system.c Eduardo Habkost
2012-10-16 19:08 ` [Qemu-devel] [PATCH 07/12] qdev-core: isolate reset register/unregister code Eduardo Habkost
2012-10-17 18:08   ` Anthony Liguori
2012-10-17 18:32     ` Eduardo Habkost
2012-10-18 14:51       ` Andreas Färber
2012-10-23 14:56     ` Eduardo Habkost [this message]
2012-10-24  2:43       ` Eduardo Habkost
2012-10-16 19:08 ` [Qemu-devel] [PATCH 08/12] qdev: move reset register/unregister code to qdev-system.c Eduardo Habkost
2012-10-16 19:08 ` [Qemu-devel] [PATCH 09/12] move qemu_irq typedef out of cpu-common.h Eduardo Habkost
2012-10-17 18:08   ` Anthony Liguori
2012-10-16 19:08 ` [Qemu-devel] [PATCH 10/12] qdev: use full qdev.h include path on qdev*.c Eduardo Habkost
2012-10-16 19:08 ` [Qemu-devel] [PATCH 11/12] include core qdev code into *-user, too Eduardo Habkost
2012-10-17 18:11   ` Anthony Liguori
2012-10-17 18:18     ` Eduardo Habkost
2012-10-17 19:21     ` Peter Maydell
2012-10-19 16:59       ` Eduardo Habkost
2012-10-22 12:36   ` Igor Mammedov
2012-10-22 12:43     ` Eduardo Habkost
2012-10-16 19:08 ` [Qemu-devel] [PATCH 12/12] qom: make CPU a child of DeviceState Eduardo Habkost
  -- strict thread matches above, loose matches on Subject: below --
2012-10-16  1:57 [Qemu-devel] [PATCH v3 00/12] make CPU child of DeviceState and include qdev core in *-user Igor Mammedov
2012-10-16  1:57 ` [Qemu-devel] [PATCH 07/12] qdev-core: isolate reset register/unregister code Igor Mammedov

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20121023145618.GC627@otherpad.lan.raisama.net \
    --to=ehabkost@redhat.com \
    --cc=afaerber@suse.de \
    --cc=anthony@codemonkey.ws \
    --cc=blauwirbel@gmail.com \
    --cc=imammedo@redhat.com \
    --cc=peter.maydell@linaro.org \
    --cc=qemu-devel@nongnu.org \
    --cc=riku.voipio@iki.fi \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.