From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:34407) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1V0qFC-0004P2-Ez for qemu-devel@nongnu.org; Sun, 21 Jul 2013 05:47:59 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1V0qFB-0007O5-8y for qemu-devel@nongnu.org; Sun, 21 Jul 2013 05:47:58 -0400 Received: from cantor2.suse.de ([195.135.220.15]:42796 helo=mx2.suse.de) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1V0qFA-0007ND-WD for qemu-devel@nongnu.org; Sun, 21 Jul 2013 05:47:57 -0400 Message-ID: <51EBAE47.3080501@suse.de> Date: Sun, 21 Jul 2013 11:47:51 +0200 From: =?ISO-8859-15?Q?Andreas_F=E4rber?= MIME-Version: 1.0 References: <7da0c8dce11d32c300df10dade5e099b3aae7114.1372673778.git.hutao@cn.fujitsu.com> In-Reply-To: <7da0c8dce11d32c300df10dade5e099b3aae7114.1372673778.git.hutao@cn.fujitsu.com> Content-Type: text/plain; charset=ISO-8859-15 Content-Transfer-Encoding: quoted-printable Subject: Re: [Qemu-devel] [PATCH v2 19/26] scsi esp: use realize for scsi esp List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Hu Tao Cc: Paolo Bonzini , Peter Crosthwaite , qemu-devel Am 01.07.2013 12:18, schrieb Hu Tao: > Signed-off-by: Hu Tao > --- > hw/scsi/esp.c | 30 ++++++++++++++++++++---------- > 1 file changed, 20 insertions(+), 10 deletions(-) >=20 > diff --git a/hw/scsi/esp.c b/hw/scsi/esp.c > index f7d6389..714d2fd 100644 > --- a/hw/scsi/esp.c > +++ b/hw/scsi/esp.c > @@ -668,23 +668,33 @@ static void sysbus_esp_gpio_demux(void *opaque, i= nt irq, int level) > } > } > =20 > -static int sysbus_esp_init(SysBusDevice *dev) > +static void sysbus_esp_init(Object *obj) > +{ > + SysBusESPState *sysbus =3D ESP(obj); > + > + memory_region_init_io(&sysbus->iomem, &sysbus_esp_mem_ops, sysbus, > + "esp", ESP_REGS << sysbus->it_shift); it_shift is a field set after initialization, so moving this back into realizefn. > +} > + > +static void sysbus_esp_realize(DeviceState *dev, Error **errp) > { > SysBusESPState *sysbus =3D ESP(dev); > + SysBusDevice *b =3D SYS_BUS_DEVICE(dev); Please try to order variables from DeviceState to specific type, also renaming to sbd for clarity. > ESPState *s =3D &sysbus->esp; > =20 > - sysbus_init_irq(dev, &s->irq); > + sysbus_init_irq(b, &s->irq); > assert(sysbus->it_shift !=3D -1); > =20 > s->chip_id =3D TCHI_FAS100A; > - memory_region_init_io(&sysbus->iomem, &sysbus_esp_mem_ops, sysbus, > - "esp", ESP_REGS << sysbus->it_shift); > - sysbus_init_mmio(dev, &sysbus->iomem); > + sysbus_init_mmio(b, &sysbus->iomem); > =20 > - qdev_init_gpio_in(&dev->qdev, sysbus_esp_gpio_demux, 2); > + qdev_init_gpio_in(dev, sysbus_esp_gpio_demux, 2); > =20 > - scsi_bus_new(&s->bus, &dev->qdev, &esp_scsi_info, NULL); > - return scsi_bus_legacy_handle_cmdline(&s->bus); > + scsi_bus_new(&s->bus, dev, &esp_scsi_info, NULL); > + if (scsi_bus_legacy_handle_cmdline(&s->bus) < 0) { > + error_setg(errp, "handling scsi bus failed"); > + return; > + } scsi_bus_legacy_handle_cmdline() is calling for better error propagation, will post a follow-up. Andreas > } > =20 > static void sysbus_esp_hard_reset(DeviceState *dev) > @@ -707,9 +717,8 @@ static const VMStateDescription vmstate_sysbus_esp_= scsi =3D { > static void sysbus_esp_class_init(ObjectClass *klass, void *data) > { > DeviceClass *dc =3D DEVICE_CLASS(klass); > - SysBusDeviceClass *k =3D SYS_BUS_DEVICE_CLASS(klass); > =20 > - k->init =3D sysbus_esp_init; > + dc->realize =3D sysbus_esp_realize; > dc->reset =3D sysbus_esp_hard_reset; > dc->vmsd =3D &vmstate_sysbus_esp_scsi; > } > @@ -718,6 +727,7 @@ static const TypeInfo sysbus_esp_info =3D { > .name =3D TYPE_ESP, > .parent =3D TYPE_SYS_BUS_DEVICE, > .instance_size =3D sizeof(SysBusESPState), > + .instance_init =3D sysbus_esp_init, > .class_init =3D sysbus_esp_class_init, > }; > =20 >=20 --=20 SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 N=FCrnberg, Germany GF: Jeff Hawn, Jennifer Guild, Felix Imend=F6rffer; HRB 16746 AG N=FCrnbe= rg