diff mbox

[12/16] qdev: Pass size to qbus_create_inplace()

Message ID 1377302436-25193-13-git-send-email-afaerber@suse.de
State New
Headers show

Commit Message

Andreas Färber Aug. 24, 2013, midnight UTC
To be passed to object_initialize().

Since commit 39355c3826f5d9a2eb1ce3dc9b4cdd68893769d6 the argument is
void*, so drop some superfluous (BusState *) casts or direct parent
field usages.

Signed-off-by: Andreas Färber <afaerber@suse.de>
---
 hw/audio/intel-hda.c          | 2 +-
 hw/char/ipack.c               | 2 +-
 hw/char/virtio-serial-bus.c   | 4 ++--
 hw/core/qdev.c                | 2 +-
 hw/core/sysbus.c              | 4 ++--
 hw/cpu/icc_bus.c              | 3 ++-
 hw/ide/qdev.c                 | 2 +-
 hw/misc/macio/cuda.c          | 4 ++--
 hw/pci/pci.c                  | 2 +-
 hw/pci/pci_bridge.c           | 3 ++-
 hw/s390x/event-facility.c     | 4 ++--
 hw/s390x/s390-virtio-bus.c    | 4 ++--
 hw/s390x/virtio-ccw.c         | 4 ++--
 hw/scsi/scsi-bus.c            | 2 +-
 hw/usb/bus.c                  | 2 +-
 hw/usb/dev-smartcard-reader.c | 3 ++-
 hw/virtio/virtio-mmio.c       | 2 +-
 hw/virtio/virtio-pci.c        | 2 +-
 include/hw/qdev-core.h        | 2 +-
 19 files changed, 28 insertions(+), 25 deletions(-)

Comments

Wayne Xia Aug. 26, 2013, 7:44 a.m. UTC | #1
于 2013-8-24 8:00, Andreas Färber 写道:
> To be passed to object_initialize().
>
> Since commit 39355c3826f5d9a2eb1ce3dc9b4cdd68893769d6 the argument is
> void*, so drop some superfluous (BusState *) casts or direct parent
> field usages.
>
> Signed-off-by: Andreas Färber <afaerber@suse.de>
> ---
>   hw/audio/intel-hda.c          | 2 +-
>   hw/char/ipack.c               | 2 +-
>   hw/char/virtio-serial-bus.c   | 4 ++--
>   hw/core/qdev.c                | 2 +-
>   hw/core/sysbus.c              | 4 ++--
>   hw/cpu/icc_bus.c              | 3 ++-
>   hw/ide/qdev.c                 | 2 +-
>   hw/misc/macio/cuda.c          | 4 ++--
>   hw/pci/pci.c                  | 2 +-
>   hw/pci/pci_bridge.c           | 3 ++-
>   hw/s390x/event-facility.c     | 4 ++--
>   hw/s390x/s390-virtio-bus.c    | 4 ++--
>   hw/s390x/virtio-ccw.c         | 4 ++--
>   hw/scsi/scsi-bus.c            | 2 +-
>   hw/usb/bus.c                  | 2 +-
>   hw/usb/dev-smartcard-reader.c | 3 ++-
>   hw/virtio/virtio-mmio.c       | 2 +-
>   hw/virtio/virtio-pci.c        | 2 +-
>   include/hw/qdev-core.h        | 2 +-
>   19 files changed, 28 insertions(+), 25 deletions(-)
>
> diff --git a/hw/audio/intel-hda.c b/hw/audio/intel-hda.c
> index 9c2fa88..8800dfe 100644
> --- a/hw/audio/intel-hda.c
> +++ b/hw/audio/intel-hda.c
> @@ -44,7 +44,7 @@ void hda_codec_bus_init(DeviceState *dev, HDACodecBus *bus, size_t bus_size,
>                           hda_codec_response_func response,
>                           hda_codec_xfer_func xfer)
>   {
> -    qbus_create_inplace(&bus->qbus, TYPE_HDA_BUS, dev, NULL);
> +    qbus_create_inplace(bus, bus_size, TYPE_HDA_BUS, dev, NULL);
>       bus->response = response;
>       bus->xfer = xfer;
>   }
> diff --git a/hw/char/ipack.c b/hw/char/ipack.c
> index 5fb7073..b7e45be 100644
> --- a/hw/char/ipack.c
> +++ b/hw/char/ipack.c
> @@ -29,7 +29,7 @@ void ipack_bus_new_inplace(IPackBus *bus, size_t bus_size,
>                              const char *name, uint8_t n_slots,
>                              qemu_irq_handler handler)
>   {
> -    qbus_create_inplace(&bus->qbus, TYPE_IPACK_BUS, parent, name);
> +    qbus_create_inplace(bus, bus_size, TYPE_IPACK_BUS, parent, name);
>       bus->n_slots = n_slots;
>       bus->set_irq = handler;
>   }
> diff --git a/hw/char/virtio-serial-bus.c b/hw/char/virtio-serial-bus.c
> index da417c7..d90fc2a 100644
> --- a/hw/char/virtio-serial-bus.c
> +++ b/hw/char/virtio-serial-bus.c
> @@ -911,8 +911,8 @@ static int virtio_serial_device_init(VirtIODevice *vdev)
>                   sizeof(struct virtio_console_config));
>
>       /* Spawn a new virtio-serial bus on which the ports will ride as devices */
> -    qbus_create_inplace(&vser->bus.qbus, TYPE_VIRTIO_SERIAL_BUS, qdev,
> -                        vdev->bus_name);
> +    qbus_create_inplace(&vser->bus, sizeof(vser->bus), TYPE_VIRTIO_SERIAL_BUS,
> +                        qdev, vdev->bus_name);
>       vser->bus.qbus.allow_hotplug = 1;
>       vser->bus.vser = vser;
>       QTAILQ_INIT(&vser->ports);
> diff --git a/hw/core/qdev.c b/hw/core/qdev.c
> index 758de9f..81874da 100644
> --- a/hw/core/qdev.c
> +++ b/hw/core/qdev.c
> @@ -470,7 +470,7 @@ static void bus_unparent(Object *obj)
>       }
>   }
>
> -void qbus_create_inplace(void *bus, const char *typename,
> +void qbus_create_inplace(void *bus, size_t size, const char *typename,
>                            DeviceState *parent, const char *name)
>   {
>       object_initialize(bus, typename);
> diff --git a/hw/core/sysbus.c b/hw/core/sysbus.c
> index 9004d8c..b84cd4a 100644
> --- a/hw/core/sysbus.c
> +++ b/hw/core/sysbus.c
> @@ -276,8 +276,8 @@ static void main_system_bus_create(void)
>       /* assign main_system_bus before qbus_create_inplace()
>        * in order to make "if (bus != sysbus_get_default())" work */
>       main_system_bus = g_malloc0(system_bus_info.instance_size);
> -    qbus_create_inplace(main_system_bus, TYPE_SYSTEM_BUS, NULL,
> -                        "main-system-bus");
> +    qbus_create_inplace(main_system_bus, system_bus_info.instance_size,
> +                        TYPE_SYSTEM_BUS, NULL, "main-system-bus");
>       OBJECT(main_system_bus)->free = g_free;
>       object_property_add_child(container_get(qdev_get_machine(),
>                                               "/unattached"),
> diff --git a/hw/cpu/icc_bus.c b/hw/cpu/icc_bus.c
> index 8748cc5..9a4ea7e 100644
> --- a/hw/cpu/icc_bus.c
> +++ b/hw/cpu/icc_bus.c
> @@ -90,7 +90,8 @@ static void icc_bridge_init(Object *obj)
>       ICCBridgeState *s = ICC_BRIGDE(obj);
>       SysBusDevice *sb = SYS_BUS_DEVICE(obj);
>
> -    qbus_create_inplace(&s->icc_bus, TYPE_ICC_BUS, DEVICE(s), "icc");
> +    qbus_create_inplace(&s->icc_bus, sizeof(s->icc_bus), TYPE_ICC_BUS,
> +                        DEVICE(s), "icc");
>
>       /* Do not change order of registering regions,
>        * APIC must be first registered region, board maps it by 0 index
> diff --git a/hw/ide/qdev.c b/hw/ide/qdev.c
> index 8be76ab..18c4b7e 100644
> --- a/hw/ide/qdev.c
> +++ b/hw/ide/qdev.c
> @@ -50,7 +50,7 @@ static const TypeInfo ide_bus_info = {
>   void ide_bus_new(IDEBus *idebus, size_t idebus_size, DeviceState *dev,
>                    int bus_id, int max_units)
>   {
> -    qbus_create_inplace(&idebus->qbus, TYPE_IDE_BUS, dev, NULL);
> +    qbus_create_inplace(idebus, idebus_size, TYPE_IDE_BUS, dev, NULL);
>       idebus->bus_id = bus_id;
>       idebus->max_units = max_units;
>   }
> diff --git a/hw/misc/macio/cuda.c b/hw/misc/macio/cuda.c
> index c0fd7da..8e41459 100644
> --- a/hw/misc/macio/cuda.c
> +++ b/hw/misc/macio/cuda.c
> @@ -711,8 +711,8 @@ static void cuda_initfn(Object *obj)
>           s->timers[i].index = i;
>       }
>
> -    qbus_create_inplace((BusState *)&s->adb_bus, TYPE_ADB_BUS, DEVICE(obj),
> -                        "adb.0");
> +    qbus_create_inplace(&s->adb_bus, sizeof(s->adb_bus), TYPE_ADB_BUS,
> +                        DEVICE(obj), "adb.0");
>   }
>
>   static void cuda_class_init(ObjectClass *oc, void *data)
> diff --git a/hw/pci/pci.c b/hw/pci/pci.c
> index 397555c..e688f4a 100644
> --- a/hw/pci/pci.c
> +++ b/hw/pci/pci.c
> @@ -318,7 +318,7 @@ void pci_bus_new_inplace(PCIBus *bus, size_t bus_size, DeviceState *parent,
>                            MemoryRegion *address_space_io,
>                            uint8_t devfn_min, const char *typename)
>   {
> -    qbus_create_inplace(bus, typename, parent, name);
> +    qbus_create_inplace(bus, bus_size, typename, parent, name);
>       pci_bus_init(bus, parent, name, address_space_mem,
>                    address_space_io, devfn_min);
>   }
> diff --git a/hw/pci/pci_bridge.c b/hw/pci/pci_bridge.c
> index a90671d..e6b22b8 100644
> --- a/hw/pci/pci_bridge.c
> +++ b/hw/pci/pci_bridge.c
> @@ -367,7 +367,8 @@ int pci_bridge_initfn(PCIDevice *dev, const char *typename)
>   	    br->bus_name = dev->qdev.id;
>       }
>
> -    qbus_create_inplace(&sec_bus->qbus, typename, &dev->qdev, br->bus_name);
> +    qbus_create_inplace(sec_bus, sizeof(br->sec_bus), typename, DEVICE(dev),

wouldn't
qbus_create_inplace(sec_bus, sizeof(*sec_bus), typename, DEVICE(dev),
looks more straight?

> +                        br->bus_name);
>       sec_bus->parent_dev = dev;
>       sec_bus->map_irq = br->map_irq ? br->map_irq : pci_swizzle_map_irq_fn;
>       sec_bus->address_space_mem = &br->address_space_mem;
> diff --git a/hw/s390x/event-facility.c b/hw/s390x/event-facility.c
> index 0faade0..a3aceef 100644
> --- a/hw/s390x/event-facility.c
> +++ b/hw/s390x/event-facility.c
> @@ -324,8 +324,8 @@ static int init_event_facility(S390SCLPDevice *sdev)
>       sdev->event_pending = event_pending;
>
>       /* Spawn a new sclp-events facility */
> -    qbus_create_inplace(&event_facility->sbus.qbus,
> -                        TYPE_SCLP_EVENTS_BUS, (DeviceState *)sdev, NULL);
> +    qbus_create_inplace(&event_facility->sbus, sizeof(event_facility->sbus),
> +                        TYPE_SCLP_EVENTS_BUS, DEVICE(sdev), NULL);
>       event_facility->sbus.qbus.allow_hotplug = 0;
>       event_facility->qdev = (DeviceState *) sdev;
>
> diff --git a/hw/s390x/s390-virtio-bus.c b/hw/s390x/s390-virtio-bus.c
> index 579adbc..e95b831 100644
> --- a/hw/s390x/s390-virtio-bus.c
> +++ b/hw/s390x/s390-virtio-bus.c
> @@ -699,8 +699,8 @@ static void virtio_s390_bus_new(VirtioBusState *bus, size_t bus_size,
>       BusState *qbus;
>       char virtio_bus_name[] = "virtio-bus";
>
> -    qbus_create_inplace((BusState *)bus, TYPE_VIRTIO_S390_BUS, qdev,
> -                        virtio_bus_name);
> +    qbus_create_inplace((BusState *)bus, bus_size, TYPE_VIRTIO_S390_BUS,
> +                        qdev, virtio_bus_name);
>       qbus = BUS(bus);
>       qbus->allow_hotplug = 1;
>   }
> diff --git a/hw/s390x/virtio-ccw.c b/hw/s390x/virtio-ccw.c
> index 36cbf42..cf7075e 100644
> --- a/hw/s390x/virtio-ccw.c
> +++ b/hw/s390x/virtio-ccw.c
> @@ -1297,8 +1297,8 @@ static void virtio_ccw_bus_new(VirtioBusState *bus, size_t bus_size,
>       BusState *qbus;
>       char virtio_bus_name[] = "virtio-bus";
>
> -    qbus_create_inplace((BusState *)bus, TYPE_VIRTIO_CCW_BUS, qdev,
> -                        virtio_bus_name);
> +    qbus_create_inplace((BusState *)bus, bus_size, TYPE_VIRTIO_CCW_BUS,
> +                        qdev, virtio_bus_name);
>       qbus = BUS(bus);
>       qbus->allow_hotplug = 1;
>   }
> diff --git a/hw/scsi/scsi-bus.c b/hw/scsi/scsi-bus.c
> index 968bf23..5cd6137 100644
> --- a/hw/scsi/scsi-bus.c
> +++ b/hw/scsi/scsi-bus.c
> @@ -75,7 +75,7 @@ static void scsi_device_unit_attention_reported(SCSIDevice *s)
>   void scsi_bus_new(SCSIBus *bus, size_t bus_size, DeviceState *host,
>                     const SCSIBusInfo *info, const char *bus_name)
>   {
> -    qbus_create_inplace(&bus->qbus, TYPE_SCSI_BUS, host, bus_name);
> +    qbus_create_inplace(bus, bus_size, TYPE_SCSI_BUS, host, bus_name);
>       bus->busnr = next_scsi_bus++;
>       bus->info = info;
>       bus->qbus.allow_hotplug = 1;
> diff --git a/hw/usb/bus.c b/hw/usb/bus.c
> index 6aee262..82ca6a1 100644
> --- a/hw/usb/bus.c
> +++ b/hw/usb/bus.c
> @@ -70,7 +70,7 @@ const VMStateDescription vmstate_usb_device = {
>   void usb_bus_new(USBBus *bus, size_t bus_size,
>                    USBBusOps *ops, DeviceState *host)
>   {
> -    qbus_create_inplace(&bus->qbus, TYPE_USB_BUS, host, NULL);
> +    qbus_create_inplace(bus, bus_size, TYPE_USB_BUS, host, NULL);
>       bus->ops = ops;
>       bus->busnr = next_usb_bus++;
>       bus->qbus.allow_hotplug = 1; /* Yes, we can */
> diff --git a/hw/usb/dev-smartcard-reader.c b/hw/usb/dev-smartcard-reader.c
> index 2233c54..8c7a61e 100644
> --- a/hw/usb/dev-smartcard-reader.c
> +++ b/hw/usb/dev-smartcard-reader.c
> @@ -1309,7 +1309,8 @@ static int ccid_initfn(USBDevice *dev)
>
>       usb_desc_create_serial(dev);
>       usb_desc_init(dev);
> -    qbus_create_inplace(&s->bus.qbus, TYPE_CCID_BUS, &dev->qdev, NULL);
> +    qbus_create_inplace(&s->bus, sizeof(s->bus), TYPE_CCID_BUS, DEVICE(dev),
> +                        NULL);
>       s->intr = usb_ep_get(dev, USB_TOKEN_IN, CCID_INT_IN_EP);
>       s->bus.qbus.allow_hotplug = 1;
>       s->card = NULL;
> diff --git a/hw/virtio/virtio-mmio.c b/hw/virtio/virtio-mmio.c
> index 692979e..29cf284 100644
> --- a/hw/virtio/virtio-mmio.c
> +++ b/hw/virtio/virtio-mmio.c
> @@ -392,7 +392,7 @@ static void virtio_mmio_bus_new(VirtioBusState *bus, size_t bus_size,
>       DeviceState *qdev = DEVICE(dev);
>       BusState *qbus;
>
> -    qbus_create_inplace((BusState *)bus, TYPE_VIRTIO_MMIO_BUS, qdev, NULL);
> +    qbus_create_inplace(bus, bus_size, TYPE_VIRTIO_MMIO_BUS, qdev, NULL);
>       qbus = BUS(bus);
>       qbus->allow_hotplug = 0;
>   }
> diff --git a/hw/virtio/virtio-pci.c b/hw/virtio/virtio-pci.c
> index 313723f..a9a1893 100644
> --- a/hw/virtio/virtio-pci.c
> +++ b/hw/virtio/virtio-pci.c
> @@ -1512,7 +1512,7 @@ static void virtio_pci_bus_new(VirtioBusState *bus, size_t bus_size,
>       BusState *qbus;
>       char virtio_bus_name[] = "virtio-bus";
>
> -    qbus_create_inplace((BusState *)bus, TYPE_VIRTIO_PCI_BUS, qdev,
> +    qbus_create_inplace(bus, bus_size, TYPE_VIRTIO_PCI_BUS, qdev,
>                           virtio_bus_name);
>       qbus = BUS(bus);
>       qbus->allow_hotplug = 1;
> diff --git a/include/hw/qdev-core.h b/include/hw/qdev-core.h
> index 46972f4..a62f231 100644
> --- a/include/hw/qdev-core.h
> +++ b/include/hw/qdev-core.h
> @@ -264,7 +264,7 @@ DeviceState *qdev_find_recursive(BusState *bus, const char *id);
>   typedef int (qbus_walkerfn)(BusState *bus, void *opaque);
>   typedef int (qdev_walkerfn)(DeviceState *dev, void *opaque);
>
> -void qbus_create_inplace(void *bus, const char *typename,
> +void qbus_create_inplace(void *bus, size_t size, const char *typename,
>                            DeviceState *parent, const char *name);
>   BusState *qbus_create(const char *typename, DeviceState *parent, const char *name);
>   /* Returns > 0 if either devfn or busfn skip walk somewhere in cursion,
>
Cornelia Huck Aug. 26, 2013, 8:03 a.m. UTC | #2
On Sat, 24 Aug 2013 02:00:32 +0200
Andreas Färber <afaerber@suse.de> wrote:

> To be passed to object_initialize().
> 
> Since commit 39355c3826f5d9a2eb1ce3dc9b4cdd68893769d6 the argument is
> void*, so drop some superfluous (BusState *) casts or direct parent
> field usages.
> 
> Signed-off-by: Andreas Färber <afaerber@suse.de>
> ---
>  hw/audio/intel-hda.c          | 2 +-
>  hw/char/ipack.c               | 2 +-
>  hw/char/virtio-serial-bus.c   | 4 ++--
>  hw/core/qdev.c                | 2 +-
>  hw/core/sysbus.c              | 4 ++--
>  hw/cpu/icc_bus.c              | 3 ++-
>  hw/ide/qdev.c                 | 2 +-
>  hw/misc/macio/cuda.c          | 4 ++--
>  hw/pci/pci.c                  | 2 +-
>  hw/pci/pci_bridge.c           | 3 ++-
>  hw/s390x/event-facility.c     | 4 ++--
>  hw/s390x/s390-virtio-bus.c    | 4 ++--
>  hw/s390x/virtio-ccw.c         | 4 ++--
>  hw/scsi/scsi-bus.c            | 2 +-
>  hw/usb/bus.c                  | 2 +-
>  hw/usb/dev-smartcard-reader.c | 3 ++-
>  hw/virtio/virtio-mmio.c       | 2 +-
>  hw/virtio/virtio-pci.c        | 2 +-
>  include/hw/qdev-core.h        | 2 +-
>  19 files changed, 28 insertions(+), 25 deletions(-)
> 

> diff --git a/hw/s390x/s390-virtio-bus.c b/hw/s390x/s390-virtio-bus.c
> index 579adbc..e95b831 100644
> --- a/hw/s390x/s390-virtio-bus.c
> +++ b/hw/s390x/s390-virtio-bus.c
> @@ -699,8 +699,8 @@ static void virtio_s390_bus_new(VirtioBusState *bus, size_t bus_size,
>      BusState *qbus;
>      char virtio_bus_name[] = "virtio-bus";
> 
> -    qbus_create_inplace((BusState *)bus, TYPE_VIRTIO_S390_BUS, qdev,
> -                        virtio_bus_name);
> +    qbus_create_inplace((BusState *)bus, bus_size, TYPE_VIRTIO_S390_BUS,
> +                        qdev, virtio_bus_name);
>      qbus = BUS(bus);
>      qbus->allow_hotplug = 1;
>  }
> diff --git a/hw/s390x/virtio-ccw.c b/hw/s390x/virtio-ccw.c
> index 36cbf42..cf7075e 100644
> --- a/hw/s390x/virtio-ccw.c
> +++ b/hw/s390x/virtio-ccw.c
> @@ -1297,8 +1297,8 @@ static void virtio_ccw_bus_new(VirtioBusState *bus, size_t bus_size,
>      BusState *qbus;
>      char virtio_bus_name[] = "virtio-bus";
> 
> -    qbus_create_inplace((BusState *)bus, TYPE_VIRTIO_CCW_BUS, qdev,
> -                        virtio_bus_name);
> +    qbus_create_inplace((BusState *)bus, bus_size, TYPE_VIRTIO_CCW_BUS,
> +                        qdev, virtio_bus_name);
>      qbus = BUS(bus);
>      qbus->allow_hotplug = 1;
>  }

You'll probably want to drop the superflous casts here as well :)
Andreas Färber Aug. 30, 2013, 5:05 p.m. UTC | #3
Am 26.08.2013 10:03, schrieb Cornelia Huck:
> On Sat, 24 Aug 2013 02:00:32 +0200
> Andreas Färber <afaerber@suse.de> wrote:
> 
>> To be passed to object_initialize().
>>
>> Since commit 39355c3826f5d9a2eb1ce3dc9b4cdd68893769d6 the argument is
>> void*, so drop some superfluous (BusState *) casts or direct parent
>> field usages.
>>
>> Signed-off-by: Andreas Färber <afaerber@suse.de>
>> ---
>>  hw/audio/intel-hda.c          | 2 +-
>>  hw/char/ipack.c               | 2 +-
>>  hw/char/virtio-serial-bus.c   | 4 ++--
>>  hw/core/qdev.c                | 2 +-
>>  hw/core/sysbus.c              | 4 ++--
>>  hw/cpu/icc_bus.c              | 3 ++-
>>  hw/ide/qdev.c                 | 2 +-
>>  hw/misc/macio/cuda.c          | 4 ++--
>>  hw/pci/pci.c                  | 2 +-
>>  hw/pci/pci_bridge.c           | 3 ++-
>>  hw/s390x/event-facility.c     | 4 ++--
>>  hw/s390x/s390-virtio-bus.c    | 4 ++--
>>  hw/s390x/virtio-ccw.c         | 4 ++--
>>  hw/scsi/scsi-bus.c            | 2 +-
>>  hw/usb/bus.c                  | 2 +-
>>  hw/usb/dev-smartcard-reader.c | 3 ++-
>>  hw/virtio/virtio-mmio.c       | 2 +-
>>  hw/virtio/virtio-pci.c        | 2 +-
>>  include/hw/qdev-core.h        | 2 +-
>>  19 files changed, 28 insertions(+), 25 deletions(-)
>>
> 
>> diff --git a/hw/s390x/s390-virtio-bus.c b/hw/s390x/s390-virtio-bus.c
>> index 579adbc..e95b831 100644
>> --- a/hw/s390x/s390-virtio-bus.c
>> +++ b/hw/s390x/s390-virtio-bus.c
>> @@ -699,8 +699,8 @@ static void virtio_s390_bus_new(VirtioBusState *bus, size_t bus_size,
>>      BusState *qbus;
>>      char virtio_bus_name[] = "virtio-bus";
>>
>> -    qbus_create_inplace((BusState *)bus, TYPE_VIRTIO_S390_BUS, qdev,
>> -                        virtio_bus_name);
>> +    qbus_create_inplace((BusState *)bus, bus_size, TYPE_VIRTIO_S390_BUS,
>> +                        qdev, virtio_bus_name);
>>      qbus = BUS(bus);
>>      qbus->allow_hotplug = 1;
>>  }
>> diff --git a/hw/s390x/virtio-ccw.c b/hw/s390x/virtio-ccw.c
>> index 36cbf42..cf7075e 100644
>> --- a/hw/s390x/virtio-ccw.c
>> +++ b/hw/s390x/virtio-ccw.c
>> @@ -1297,8 +1297,8 @@ static void virtio_ccw_bus_new(VirtioBusState *bus, size_t bus_size,
>>      BusState *qbus;
>>      char virtio_bus_name[] = "virtio-bus";
>>
>> -    qbus_create_inplace((BusState *)bus, TYPE_VIRTIO_CCW_BUS, qdev,
>> -                        virtio_bus_name);
>> +    qbus_create_inplace((BusState *)bus, bus_size, TYPE_VIRTIO_CCW_BUS,
>> +                        qdev, virtio_bus_name);
>>      qbus = BUS(bus);
>>      qbus->allow_hotplug = 1;
>>  }
> 
> You'll probably want to drop the superflous casts here as well :)

Fixed, thanks!

Andreas
Andreas Färber Aug. 30, 2013, 5:12 p.m. UTC | #4
Am 26.08.2013 09:44, schrieb Wenchao Xia:
> 于 2013-8-24 8:00, Andreas Färber 写道:
>> To be passed to object_initialize().
>>
>> Since commit 39355c3826f5d9a2eb1ce3dc9b4cdd68893769d6 the argument is
>> void*, so drop some superfluous (BusState *) casts or direct parent
>> field usages.
>>
>> Signed-off-by: Andreas Färber <afaerber@suse.de>
>> ---
>>   hw/audio/intel-hda.c          | 2 +-
>>   hw/char/ipack.c               | 2 +-
>>   hw/char/virtio-serial-bus.c   | 4 ++--
>>   hw/core/qdev.c                | 2 +-
>>   hw/core/sysbus.c              | 4 ++--
>>   hw/cpu/icc_bus.c              | 3 ++-
>>   hw/ide/qdev.c                 | 2 +-
>>   hw/misc/macio/cuda.c          | 4 ++--
>>   hw/pci/pci.c                  | 2 +-
>>   hw/pci/pci_bridge.c           | 3 ++-
>>   hw/s390x/event-facility.c     | 4 ++--
>>   hw/s390x/s390-virtio-bus.c    | 4 ++--
>>   hw/s390x/virtio-ccw.c         | 4 ++--
>>   hw/scsi/scsi-bus.c            | 2 +-
>>   hw/usb/bus.c                  | 2 +-
>>   hw/usb/dev-smartcard-reader.c | 3 ++-
>>   hw/virtio/virtio-mmio.c       | 2 +-
>>   hw/virtio/virtio-pci.c        | 2 +-
>>   include/hw/qdev-core.h        | 2 +-
>>   19 files changed, 28 insertions(+), 25 deletions(-)
>>
>> diff --git a/hw/audio/intel-hda.c b/hw/audio/intel-hda.c
>> index 9c2fa88..8800dfe 100644
>> --- a/hw/audio/intel-hda.c
>> +++ b/hw/audio/intel-hda.c
>> @@ -44,7 +44,7 @@ void hda_codec_bus_init(DeviceState *dev,
>> HDACodecBus *bus, size_t bus_size,
>>                           hda_codec_response_func response,
>>                           hda_codec_xfer_func xfer)
>>   {
>> -    qbus_create_inplace(&bus->qbus, TYPE_HDA_BUS, dev, NULL);
>> +    qbus_create_inplace(bus, bus_size, TYPE_HDA_BUS, dev, NULL);
>>       bus->response = response;
>>       bus->xfer = xfer;
>>   }
>> diff --git a/hw/char/ipack.c b/hw/char/ipack.c
>> index 5fb7073..b7e45be 100644
>> --- a/hw/char/ipack.c
>> +++ b/hw/char/ipack.c
>> @@ -29,7 +29,7 @@ void ipack_bus_new_inplace(IPackBus *bus, size_t
>> bus_size,
>>                              const char *name, uint8_t n_slots,
>>                              qemu_irq_handler handler)
>>   {
>> -    qbus_create_inplace(&bus->qbus, TYPE_IPACK_BUS, parent, name);
>> +    qbus_create_inplace(bus, bus_size, TYPE_IPACK_BUS, parent, name);
>>       bus->n_slots = n_slots;
>>       bus->set_irq = handler;
>>   }
>> diff --git a/hw/char/virtio-serial-bus.c b/hw/char/virtio-serial-bus.c
>> index da417c7..d90fc2a 100644
>> --- a/hw/char/virtio-serial-bus.c
>> +++ b/hw/char/virtio-serial-bus.c
>> @@ -911,8 +911,8 @@ static int virtio_serial_device_init(VirtIODevice
>> *vdev)
>>                   sizeof(struct virtio_console_config));
>>
>>       /* Spawn a new virtio-serial bus on which the ports will ride as
>> devices */
>> -    qbus_create_inplace(&vser->bus.qbus, TYPE_VIRTIO_SERIAL_BUS, qdev,
>> -                        vdev->bus_name);
>> +    qbus_create_inplace(&vser->bus, sizeof(vser->bus),
>> TYPE_VIRTIO_SERIAL_BUS,
>> +                        qdev, vdev->bus_name);
>>       vser->bus.qbus.allow_hotplug = 1;
>>       vser->bus.vser = vser;
>>       QTAILQ_INIT(&vser->ports);
>> diff --git a/hw/core/qdev.c b/hw/core/qdev.c
>> index 758de9f..81874da 100644
>> --- a/hw/core/qdev.c
>> +++ b/hw/core/qdev.c
>> @@ -470,7 +470,7 @@ static void bus_unparent(Object *obj)
>>       }
>>   }
>>
>> -void qbus_create_inplace(void *bus, const char *typename,
>> +void qbus_create_inplace(void *bus, size_t size, const char *typename,
>>                            DeviceState *parent, const char *name)
>>   {
>>       object_initialize(bus, typename);
>> diff --git a/hw/core/sysbus.c b/hw/core/sysbus.c
>> index 9004d8c..b84cd4a 100644
>> --- a/hw/core/sysbus.c
>> +++ b/hw/core/sysbus.c
>> @@ -276,8 +276,8 @@ static void main_system_bus_create(void)
>>       /* assign main_system_bus before qbus_create_inplace()
>>        * in order to make "if (bus != sysbus_get_default())" work */
>>       main_system_bus = g_malloc0(system_bus_info.instance_size);
>> -    qbus_create_inplace(main_system_bus, TYPE_SYSTEM_BUS, NULL,
>> -                        "main-system-bus");
>> +    qbus_create_inplace(main_system_bus, system_bus_info.instance_size,
>> +                        TYPE_SYSTEM_BUS, NULL, "main-system-bus");
>>       OBJECT(main_system_bus)->free = g_free;
>>       object_property_add_child(container_get(qdev_get_machine(),
>>                                               "/unattached"),
>> diff --git a/hw/cpu/icc_bus.c b/hw/cpu/icc_bus.c
>> index 8748cc5..9a4ea7e 100644
>> --- a/hw/cpu/icc_bus.c
>> +++ b/hw/cpu/icc_bus.c
>> @@ -90,7 +90,8 @@ static void icc_bridge_init(Object *obj)
>>       ICCBridgeState *s = ICC_BRIGDE(obj);
>>       SysBusDevice *sb = SYS_BUS_DEVICE(obj);
>>
>> -    qbus_create_inplace(&s->icc_bus, TYPE_ICC_BUS, DEVICE(s), "icc");
>> +    qbus_create_inplace(&s->icc_bus, sizeof(s->icc_bus), TYPE_ICC_BUS,
>> +                        DEVICE(s), "icc");
>>
>>       /* Do not change order of registering regions,
>>        * APIC must be first registered region, board maps it by 0 index
>> diff --git a/hw/ide/qdev.c b/hw/ide/qdev.c
>> index 8be76ab..18c4b7e 100644
>> --- a/hw/ide/qdev.c
>> +++ b/hw/ide/qdev.c
>> @@ -50,7 +50,7 @@ static const TypeInfo ide_bus_info = {
>>   void ide_bus_new(IDEBus *idebus, size_t idebus_size, DeviceState *dev,
>>                    int bus_id, int max_units)
>>   {
>> -    qbus_create_inplace(&idebus->qbus, TYPE_IDE_BUS, dev, NULL);
>> +    qbus_create_inplace(idebus, idebus_size, TYPE_IDE_BUS, dev, NULL);
>>       idebus->bus_id = bus_id;
>>       idebus->max_units = max_units;
>>   }
>> diff --git a/hw/misc/macio/cuda.c b/hw/misc/macio/cuda.c
>> index c0fd7da..8e41459 100644
>> --- a/hw/misc/macio/cuda.c
>> +++ b/hw/misc/macio/cuda.c
>> @@ -711,8 +711,8 @@ static void cuda_initfn(Object *obj)
>>           s->timers[i].index = i;
>>       }
>>
>> -    qbus_create_inplace((BusState *)&s->adb_bus, TYPE_ADB_BUS,
>> DEVICE(obj),
>> -                        "adb.0");
>> +    qbus_create_inplace(&s->adb_bus, sizeof(s->adb_bus), TYPE_ADB_BUS,
>> +                        DEVICE(obj), "adb.0");
>>   }
>>
>>   static void cuda_class_init(ObjectClass *oc, void *data)
>> diff --git a/hw/pci/pci.c b/hw/pci/pci.c
>> index 397555c..e688f4a 100644
>> --- a/hw/pci/pci.c
>> +++ b/hw/pci/pci.c
>> @@ -318,7 +318,7 @@ void pci_bus_new_inplace(PCIBus *bus, size_t
>> bus_size, DeviceState *parent,
>>                            MemoryRegion *address_space_io,
>>                            uint8_t devfn_min, const char *typename)
>>   {
>> -    qbus_create_inplace(bus, typename, parent, name);
>> +    qbus_create_inplace(bus, bus_size, typename, parent, name);
>>       pci_bus_init(bus, parent, name, address_space_mem,
>>                    address_space_io, devfn_min);
>>   }
>> diff --git a/hw/pci/pci_bridge.c b/hw/pci/pci_bridge.c
>> index a90671d..e6b22b8 100644
>> --- a/hw/pci/pci_bridge.c
>> +++ b/hw/pci/pci_bridge.c
>> @@ -367,7 +367,8 @@ int pci_bridge_initfn(PCIDevice *dev, const char
>> *typename)
>>           br->bus_name = dev->qdev.id;
>>       }
>>
>> -    qbus_create_inplace(&sec_bus->qbus, typename, &dev->qdev,
>> br->bus_name);
>> +    qbus_create_inplace(sec_bus, sizeof(br->sec_bus), typename,
>> DEVICE(dev),
> 
> wouldn't
> qbus_create_inplace(sec_bus, sizeof(*sec_bus), typename, DEVICE(dev),
> looks more straight?

That would defeat part of the purpose. sec_bus is a local variable of
type PCIBus*, to which the actual pointer &br->sec_bus is assigned.
Should that one grow larger, sec_bus can still be used but we don't want
it to assert.

Regards,
Andreas

> 
>> +                        br->bus_name);
>>       sec_bus->parent_dev = dev;
>>       sec_bus->map_irq = br->map_irq ? br->map_irq :
>> pci_swizzle_map_irq_fn;
>>       sec_bus->address_space_mem = &br->address_space_mem;
[snip]
diff mbox

Patch

diff --git a/hw/audio/intel-hda.c b/hw/audio/intel-hda.c
index 9c2fa88..8800dfe 100644
--- a/hw/audio/intel-hda.c
+++ b/hw/audio/intel-hda.c
@@ -44,7 +44,7 @@  void hda_codec_bus_init(DeviceState *dev, HDACodecBus *bus, size_t bus_size,
                         hda_codec_response_func response,
                         hda_codec_xfer_func xfer)
 {
-    qbus_create_inplace(&bus->qbus, TYPE_HDA_BUS, dev, NULL);
+    qbus_create_inplace(bus, bus_size, TYPE_HDA_BUS, dev, NULL);
     bus->response = response;
     bus->xfer = xfer;
 }
diff --git a/hw/char/ipack.c b/hw/char/ipack.c
index 5fb7073..b7e45be 100644
--- a/hw/char/ipack.c
+++ b/hw/char/ipack.c
@@ -29,7 +29,7 @@  void ipack_bus_new_inplace(IPackBus *bus, size_t bus_size,
                            const char *name, uint8_t n_slots,
                            qemu_irq_handler handler)
 {
-    qbus_create_inplace(&bus->qbus, TYPE_IPACK_BUS, parent, name);
+    qbus_create_inplace(bus, bus_size, TYPE_IPACK_BUS, parent, name);
     bus->n_slots = n_slots;
     bus->set_irq = handler;
 }
diff --git a/hw/char/virtio-serial-bus.c b/hw/char/virtio-serial-bus.c
index da417c7..d90fc2a 100644
--- a/hw/char/virtio-serial-bus.c
+++ b/hw/char/virtio-serial-bus.c
@@ -911,8 +911,8 @@  static int virtio_serial_device_init(VirtIODevice *vdev)
                 sizeof(struct virtio_console_config));
 
     /* Spawn a new virtio-serial bus on which the ports will ride as devices */
-    qbus_create_inplace(&vser->bus.qbus, TYPE_VIRTIO_SERIAL_BUS, qdev,
-                        vdev->bus_name);
+    qbus_create_inplace(&vser->bus, sizeof(vser->bus), TYPE_VIRTIO_SERIAL_BUS,
+                        qdev, vdev->bus_name);
     vser->bus.qbus.allow_hotplug = 1;
     vser->bus.vser = vser;
     QTAILQ_INIT(&vser->ports);
diff --git a/hw/core/qdev.c b/hw/core/qdev.c
index 758de9f..81874da 100644
--- a/hw/core/qdev.c
+++ b/hw/core/qdev.c
@@ -470,7 +470,7 @@  static void bus_unparent(Object *obj)
     }
 }
 
-void qbus_create_inplace(void *bus, const char *typename,
+void qbus_create_inplace(void *bus, size_t size, const char *typename,
                          DeviceState *parent, const char *name)
 {
     object_initialize(bus, typename);
diff --git a/hw/core/sysbus.c b/hw/core/sysbus.c
index 9004d8c..b84cd4a 100644
--- a/hw/core/sysbus.c
+++ b/hw/core/sysbus.c
@@ -276,8 +276,8 @@  static void main_system_bus_create(void)
     /* assign main_system_bus before qbus_create_inplace()
      * in order to make "if (bus != sysbus_get_default())" work */
     main_system_bus = g_malloc0(system_bus_info.instance_size);
-    qbus_create_inplace(main_system_bus, TYPE_SYSTEM_BUS, NULL,
-                        "main-system-bus");
+    qbus_create_inplace(main_system_bus, system_bus_info.instance_size,
+                        TYPE_SYSTEM_BUS, NULL, "main-system-bus");
     OBJECT(main_system_bus)->free = g_free;
     object_property_add_child(container_get(qdev_get_machine(),
                                             "/unattached"),
diff --git a/hw/cpu/icc_bus.c b/hw/cpu/icc_bus.c
index 8748cc5..9a4ea7e 100644
--- a/hw/cpu/icc_bus.c
+++ b/hw/cpu/icc_bus.c
@@ -90,7 +90,8 @@  static void icc_bridge_init(Object *obj)
     ICCBridgeState *s = ICC_BRIGDE(obj);
     SysBusDevice *sb = SYS_BUS_DEVICE(obj);
 
-    qbus_create_inplace(&s->icc_bus, TYPE_ICC_BUS, DEVICE(s), "icc");
+    qbus_create_inplace(&s->icc_bus, sizeof(s->icc_bus), TYPE_ICC_BUS,
+                        DEVICE(s), "icc");
 
     /* Do not change order of registering regions,
      * APIC must be first registered region, board maps it by 0 index
diff --git a/hw/ide/qdev.c b/hw/ide/qdev.c
index 8be76ab..18c4b7e 100644
--- a/hw/ide/qdev.c
+++ b/hw/ide/qdev.c
@@ -50,7 +50,7 @@  static const TypeInfo ide_bus_info = {
 void ide_bus_new(IDEBus *idebus, size_t idebus_size, DeviceState *dev,
                  int bus_id, int max_units)
 {
-    qbus_create_inplace(&idebus->qbus, TYPE_IDE_BUS, dev, NULL);
+    qbus_create_inplace(idebus, idebus_size, TYPE_IDE_BUS, dev, NULL);
     idebus->bus_id = bus_id;
     idebus->max_units = max_units;
 }
diff --git a/hw/misc/macio/cuda.c b/hw/misc/macio/cuda.c
index c0fd7da..8e41459 100644
--- a/hw/misc/macio/cuda.c
+++ b/hw/misc/macio/cuda.c
@@ -711,8 +711,8 @@  static void cuda_initfn(Object *obj)
         s->timers[i].index = i;
     }
 
-    qbus_create_inplace((BusState *)&s->adb_bus, TYPE_ADB_BUS, DEVICE(obj),
-                        "adb.0");
+    qbus_create_inplace(&s->adb_bus, sizeof(s->adb_bus), TYPE_ADB_BUS,
+                        DEVICE(obj), "adb.0");
 }
 
 static void cuda_class_init(ObjectClass *oc, void *data)
diff --git a/hw/pci/pci.c b/hw/pci/pci.c
index 397555c..e688f4a 100644
--- a/hw/pci/pci.c
+++ b/hw/pci/pci.c
@@ -318,7 +318,7 @@  void pci_bus_new_inplace(PCIBus *bus, size_t bus_size, DeviceState *parent,
                          MemoryRegion *address_space_io,
                          uint8_t devfn_min, const char *typename)
 {
-    qbus_create_inplace(bus, typename, parent, name);
+    qbus_create_inplace(bus, bus_size, typename, parent, name);
     pci_bus_init(bus, parent, name, address_space_mem,
                  address_space_io, devfn_min);
 }
diff --git a/hw/pci/pci_bridge.c b/hw/pci/pci_bridge.c
index a90671d..e6b22b8 100644
--- a/hw/pci/pci_bridge.c
+++ b/hw/pci/pci_bridge.c
@@ -367,7 +367,8 @@  int pci_bridge_initfn(PCIDevice *dev, const char *typename)
 	    br->bus_name = dev->qdev.id;
     }
 
-    qbus_create_inplace(&sec_bus->qbus, typename, &dev->qdev, br->bus_name);
+    qbus_create_inplace(sec_bus, sizeof(br->sec_bus), typename, DEVICE(dev),
+                        br->bus_name);
     sec_bus->parent_dev = dev;
     sec_bus->map_irq = br->map_irq ? br->map_irq : pci_swizzle_map_irq_fn;
     sec_bus->address_space_mem = &br->address_space_mem;
diff --git a/hw/s390x/event-facility.c b/hw/s390x/event-facility.c
index 0faade0..a3aceef 100644
--- a/hw/s390x/event-facility.c
+++ b/hw/s390x/event-facility.c
@@ -324,8 +324,8 @@  static int init_event_facility(S390SCLPDevice *sdev)
     sdev->event_pending = event_pending;
 
     /* Spawn a new sclp-events facility */
-    qbus_create_inplace(&event_facility->sbus.qbus,
-                        TYPE_SCLP_EVENTS_BUS, (DeviceState *)sdev, NULL);
+    qbus_create_inplace(&event_facility->sbus, sizeof(event_facility->sbus),
+                        TYPE_SCLP_EVENTS_BUS, DEVICE(sdev), NULL);
     event_facility->sbus.qbus.allow_hotplug = 0;
     event_facility->qdev = (DeviceState *) sdev;
 
diff --git a/hw/s390x/s390-virtio-bus.c b/hw/s390x/s390-virtio-bus.c
index 579adbc..e95b831 100644
--- a/hw/s390x/s390-virtio-bus.c
+++ b/hw/s390x/s390-virtio-bus.c
@@ -699,8 +699,8 @@  static void virtio_s390_bus_new(VirtioBusState *bus, size_t bus_size,
     BusState *qbus;
     char virtio_bus_name[] = "virtio-bus";
 
-    qbus_create_inplace((BusState *)bus, TYPE_VIRTIO_S390_BUS, qdev,
-                        virtio_bus_name);
+    qbus_create_inplace((BusState *)bus, bus_size, TYPE_VIRTIO_S390_BUS,
+                        qdev, virtio_bus_name);
     qbus = BUS(bus);
     qbus->allow_hotplug = 1;
 }
diff --git a/hw/s390x/virtio-ccw.c b/hw/s390x/virtio-ccw.c
index 36cbf42..cf7075e 100644
--- a/hw/s390x/virtio-ccw.c
+++ b/hw/s390x/virtio-ccw.c
@@ -1297,8 +1297,8 @@  static void virtio_ccw_bus_new(VirtioBusState *bus, size_t bus_size,
     BusState *qbus;
     char virtio_bus_name[] = "virtio-bus";
 
-    qbus_create_inplace((BusState *)bus, TYPE_VIRTIO_CCW_BUS, qdev,
-                        virtio_bus_name);
+    qbus_create_inplace((BusState *)bus, bus_size, TYPE_VIRTIO_CCW_BUS,
+                        qdev, virtio_bus_name);
     qbus = BUS(bus);
     qbus->allow_hotplug = 1;
 }
diff --git a/hw/scsi/scsi-bus.c b/hw/scsi/scsi-bus.c
index 968bf23..5cd6137 100644
--- a/hw/scsi/scsi-bus.c
+++ b/hw/scsi/scsi-bus.c
@@ -75,7 +75,7 @@  static void scsi_device_unit_attention_reported(SCSIDevice *s)
 void scsi_bus_new(SCSIBus *bus, size_t bus_size, DeviceState *host,
                   const SCSIBusInfo *info, const char *bus_name)
 {
-    qbus_create_inplace(&bus->qbus, TYPE_SCSI_BUS, host, bus_name);
+    qbus_create_inplace(bus, bus_size, TYPE_SCSI_BUS, host, bus_name);
     bus->busnr = next_scsi_bus++;
     bus->info = info;
     bus->qbus.allow_hotplug = 1;
diff --git a/hw/usb/bus.c b/hw/usb/bus.c
index 6aee262..82ca6a1 100644
--- a/hw/usb/bus.c
+++ b/hw/usb/bus.c
@@ -70,7 +70,7 @@  const VMStateDescription vmstate_usb_device = {
 void usb_bus_new(USBBus *bus, size_t bus_size,
                  USBBusOps *ops, DeviceState *host)
 {
-    qbus_create_inplace(&bus->qbus, TYPE_USB_BUS, host, NULL);
+    qbus_create_inplace(bus, bus_size, TYPE_USB_BUS, host, NULL);
     bus->ops = ops;
     bus->busnr = next_usb_bus++;
     bus->qbus.allow_hotplug = 1; /* Yes, we can */
diff --git a/hw/usb/dev-smartcard-reader.c b/hw/usb/dev-smartcard-reader.c
index 2233c54..8c7a61e 100644
--- a/hw/usb/dev-smartcard-reader.c
+++ b/hw/usb/dev-smartcard-reader.c
@@ -1309,7 +1309,8 @@  static int ccid_initfn(USBDevice *dev)
 
     usb_desc_create_serial(dev);
     usb_desc_init(dev);
-    qbus_create_inplace(&s->bus.qbus, TYPE_CCID_BUS, &dev->qdev, NULL);
+    qbus_create_inplace(&s->bus, sizeof(s->bus), TYPE_CCID_BUS, DEVICE(dev),
+                        NULL);
     s->intr = usb_ep_get(dev, USB_TOKEN_IN, CCID_INT_IN_EP);
     s->bus.qbus.allow_hotplug = 1;
     s->card = NULL;
diff --git a/hw/virtio/virtio-mmio.c b/hw/virtio/virtio-mmio.c
index 692979e..29cf284 100644
--- a/hw/virtio/virtio-mmio.c
+++ b/hw/virtio/virtio-mmio.c
@@ -392,7 +392,7 @@  static void virtio_mmio_bus_new(VirtioBusState *bus, size_t bus_size,
     DeviceState *qdev = DEVICE(dev);
     BusState *qbus;
 
-    qbus_create_inplace((BusState *)bus, TYPE_VIRTIO_MMIO_BUS, qdev, NULL);
+    qbus_create_inplace(bus, bus_size, TYPE_VIRTIO_MMIO_BUS, qdev, NULL);
     qbus = BUS(bus);
     qbus->allow_hotplug = 0;
 }
diff --git a/hw/virtio/virtio-pci.c b/hw/virtio/virtio-pci.c
index 313723f..a9a1893 100644
--- a/hw/virtio/virtio-pci.c
+++ b/hw/virtio/virtio-pci.c
@@ -1512,7 +1512,7 @@  static void virtio_pci_bus_new(VirtioBusState *bus, size_t bus_size,
     BusState *qbus;
     char virtio_bus_name[] = "virtio-bus";
 
-    qbus_create_inplace((BusState *)bus, TYPE_VIRTIO_PCI_BUS, qdev,
+    qbus_create_inplace(bus, bus_size, TYPE_VIRTIO_PCI_BUS, qdev,
                         virtio_bus_name);
     qbus = BUS(bus);
     qbus->allow_hotplug = 1;
diff --git a/include/hw/qdev-core.h b/include/hw/qdev-core.h
index 46972f4..a62f231 100644
--- a/include/hw/qdev-core.h
+++ b/include/hw/qdev-core.h
@@ -264,7 +264,7 @@  DeviceState *qdev_find_recursive(BusState *bus, const char *id);
 typedef int (qbus_walkerfn)(BusState *bus, void *opaque);
 typedef int (qdev_walkerfn)(DeviceState *dev, void *opaque);
 
-void qbus_create_inplace(void *bus, const char *typename,
+void qbus_create_inplace(void *bus, size_t size, const char *typename,
                          DeviceState *parent, const char *name);
 BusState *qbus_create(const char *typename, DeviceState *parent, const char *name);
 /* Returns > 0 if either devfn or busfn skip walk somewhere in cursion,