From: "Michael S. Tsirkin" <mst@redhat.com>
To: Bandan Das <bsd@redhat.com>
Cc: "Paolo Bonzini" <pbonzini@redhat.com>,
qemu-devel@nongnu.org, "Andreas Färber" <afaerber@suse.de>
Subject: Re: [Qemu-devel] [RFC PATCH 3/3] pci: move vmstate_pcibus registration/unregistration to realize and unrealize interfaces
Date: Wed, 12 Mar 2014 22:29:16 +0200 [thread overview]
Message-ID: <20140312202916.GA6884@redhat.com> (raw)
In-Reply-To: <1385419722-22205-4-git-send-email-bsd@redhat.com>
On Mon, Nov 25, 2013 at 05:48:42PM -0500, Bandan Das wrote:
> Relocate some stuff to avoid forward declarations and use the
> realize and unrealize hooks to call into register and unregister vmstate_pcibus
> respectively
>
> Signed-off-by: Bandan Das <bsd@redhat.com>
Acked-by: Michael S. Tsirkin <mst@redhat.com>
> ---
> hw/pci/pci.c | 49 ++++++++++++++++++++++++++++---------------------
> 1 file changed, 28 insertions(+), 21 deletions(-)
>
> diff --git a/hw/pci/pci.c b/hw/pci/pci.c
> index 49eca95..a43f84f 100644
> --- a/hw/pci/pci.c
> +++ b/hw/pci/pci.c
> @@ -47,7 +47,6 @@ static void pcibus_dev_print(Monitor *mon, DeviceState *dev, int indent);
> static char *pcibus_get_dev_path(DeviceState *dev);
> static char *pcibus_get_fw_dev_path(DeviceState *dev);
> static int pcibus_reset(BusState *qbus);
> -static void pci_bus_finalize(Object *obj);
>
> static Property pci_props[] = {
> DEFINE_PROP_PCI_DEVFN("addr", PCIDevice, devfn, -1),
> @@ -60,6 +59,32 @@ static Property pci_props[] = {
> DEFINE_PROP_END_OF_LIST()
> };
>
> +static const VMStateDescription vmstate_pcibus = {
> + .name = "PCIBUS",
> + .version_id = 1,
> + .minimum_version_id = 1,
> + .minimum_version_id_old = 1,
> + .fields = (VMStateField[]) {
> + VMSTATE_INT32_EQUAL(nirq, PCIBus),
> + VMSTATE_VARRAY_INT32(irq_count, PCIBus,
> + nirq, 0, vmstate_info_int32,
> + int32_t),
> + VMSTATE_END_OF_LIST()
> + }
> +};
> +
> +static void pci_bus_realize(BusState *qbus, Error **errp)
> +{
> + PCIBus *bus = DO_UPCAST(PCIBus, qbus, qbus);
> + vmstate_register(NULL, -1, &vmstate_pcibus, bus);
> +}
> +
> +static void pci_bus_unrealize(BusState *qbus, Error **errp)
> +{
> + PCIBus *bus = DO_UPCAST(PCIBus, qbus, qbus);
> + vmstate_unregister(NULL, &vmstate_pcibus, bus);
> +}
> +
> static void pci_bus_class_init(ObjectClass *klass, void *data)
> {
> BusClass *k = BUS_CLASS(klass);
> @@ -67,6 +92,8 @@ static void pci_bus_class_init(ObjectClass *klass, void *data)
> k->print_dev = pcibus_dev_print;
> k->get_dev_path = pcibus_get_dev_path;
> k->get_fw_dev_path = pcibus_get_fw_dev_path;
> + k->realize = pci_bus_realize;
> + k->unrealize = pci_bus_unrealize;
> k->reset = pcibus_reset;
> }
>
> @@ -74,7 +101,6 @@ static const TypeInfo pci_bus_info = {
> .name = TYPE_PCI_BUS,
> .parent = TYPE_BUS,
> .instance_size = sizeof(PCIBus),
> - .instance_finalize = pci_bus_finalize,
> .class_init = pci_bus_class_init,
> };
>
> @@ -94,17 +120,6 @@ static uint16_t pci_default_sub_device_id = PCI_SUBDEVICE_ID_QEMU;
>
> static QLIST_HEAD(, PCIHostState) pci_host_bridges;
>
> -static const VMStateDescription vmstate_pcibus = {
> - .name = "PCIBUS",
> - .version_id = 1,
> - .minimum_version_id = 1,
> - .minimum_version_id_old = 1,
> - .fields = (VMStateField []) {
> - VMSTATE_INT32_EQUAL(nirq, PCIBus),
> - VMSTATE_VARRAY_INT32(irq_count, PCIBus, nirq, 0, vmstate_info_int32, int32_t),
> - VMSTATE_END_OF_LIST()
> - }
> -};
> static int pci_bar(PCIDevice *d, int reg)
> {
> uint8_t type;
> @@ -300,8 +315,6 @@ static void pci_bus_init(PCIBus *bus, DeviceState *parent,
> QLIST_INIT(&bus->child);
>
> pci_host_bus_register(bus, parent);
> -
> - vmstate_register(NULL, -1, &vmstate_pcibus, bus);
> }
>
> bool pci_bus_is_express(PCIBus *bus)
> @@ -377,12 +390,6 @@ int pci_bus_num(PCIBus *s)
> return s->parent_dev->config[PCI_SECONDARY_BUS];
> }
>
> -static void pci_bus_finalize(Object *obj)
> -{
> - PCIBus *bus = PCI_BUS(obj);
> - vmstate_unregister(NULL, &vmstate_pcibus, bus);
> -}
> -
> static int get_pci_config_device(QEMUFile *f, void *pv, size_t size)
> {
> PCIDevice *s = container_of(pv, PCIDevice, config);
> --
> 1.8.3.1
>
next prev parent reply other threads:[~2014-03-12 20:29 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-11-25 22:48 [Qemu-devel] [RFC PATCH 0/3] Add realize unrealize interfaces for BusState Bandan Das
2013-11-25 22:48 ` [Qemu-devel] [RFC PATCH 1/3] qdev: add realize/unrealize " Bandan Das
2013-11-25 22:48 ` [Qemu-devel] [RFC PATCH 2/3] qdev: Integrate the bus realized property to get Bandan Das
2013-11-25 22:48 ` [Qemu-devel] [RFC PATCH 3/3] pci: move vmstate_pcibus registration/unregistration to realize and unrealize interfaces Bandan Das
2014-03-12 20:29 ` Michael S. Tsirkin [this message]
2013-12-11 15:27 ` [Qemu-devel] [RFC PATCH 0/3] Add realize unrealize interfaces for BusState Bandan Das
2014-03-12 20:38 ` Andreas Färber
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=20140312202916.GA6884@redhat.com \
--to=mst@redhat.com \
--cc=afaerber@suse.de \
--cc=bsd@redhat.com \
--cc=pbonzini@redhat.com \
--cc=qemu-devel@nongnu.org \
/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.