From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:57618) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1V0pvm-00086Y-7S for qemu-devel@nongnu.org; Sun, 21 Jul 2013 05:27:56 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1V0pvk-00016Y-VH for qemu-devel@nongnu.org; Sun, 21 Jul 2013 05:27:54 -0400 Received: from cantor2.suse.de ([195.135.220.15]:42425 helo=mx2.suse.de) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1V0pvk-00016U-LO for qemu-devel@nongnu.org; Sun, 21 Jul 2013 05:27:52 -0400 Message-ID: <51EBA992.6070106@suse.de> Date: Sun, 21 Jul 2013 11:27:46 +0200 From: =?ISO-8859-15?Q?Andreas_F=E4rber?= MIME-Version: 1.0 References: <555ec78d1db05435707ae68d4af4557aea0c3beb.1372673778.git.hutao@cn.fujitsu.com> In-Reply-To: <555ec78d1db05435707ae68d4af4557aea0c3beb.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 09/26] fdc: use realize for fdc. List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Hu Tao Cc: Kevin Wolf , Stefan Hajnoczi , Peter Crosthwaite , qemu-devel Am 01.07.2013 12:18, schrieb Hu Tao: > Signed-off-by: Hu Tao > --- > hw/block/fdc.c | 62 ++++++++++++++++++++++++++++++++++++++------------= -------- > 1 file changed, 41 insertions(+), 21 deletions(-) >=20 > diff --git a/hw/block/fdc.c b/hw/block/fdc.c > index f8270cb..0fe0cf9 100644 > --- a/hw/block/fdc.c > +++ b/hw/block/fdc.c > @@ -2145,38 +2145,58 @@ static void isabus_fdc_realize(DeviceState *dev= , Error **errp) > add_boot_device_path(isa->bootindexB, dev, "/floppy@1"); > } > =20 > -static int sysbus_fdc_init1(SysBusDevice *dev) > +static void sysbus_fdc_initfn(Object *obj) > { > - FDCtrlSysBus *sys =3D SYSBUS_FDC(dev); > + FDCtrlSysBus *sys =3D SYSBUS_FDC(obj); > FDCtrl *fdctrl =3D &sys->state; > - int ret; > =20 > memory_region_init_io(&fdctrl->iomem, &fdctrl_mem_ops, fdctrl, "fd= c", 0x08); > - sysbus_init_mmio(dev, &fdctrl->iomem); > - sysbus_init_irq(dev, &fdctrl->irq); > - qdev_init_gpio_in(DEVICE(dev), fdctrl_handle_tc, 1); > - fdctrl->dma_chann =3D -1; > +} > =20 > - qdev_set_legacy_instance_id(DEVICE(dev), 0 /* io */, 2); /* FIXME = */ > - ret =3D fdctrl_init_common(fdctrl); > +static void sysbus_fdc_realize(DeviceState *dev, Error **errp) > +{ > + FDCtrlSysBus *sys =3D SYSBUS_FDC(dev); > + FDCtrl *fdctrl =3D &sys->state; > + SysBusDevice *b =3D SYS_BUS_DEVICE(dev); > =20 > - return ret; > + > + sysbus_init_mmio(b, &fdctrl->iomem); > + sysbus_init_irq(b, &fdctrl->irq); > + qdev_init_gpio_in(dev, fdctrl_handle_tc, 1); > + fdctrl->dma_chann =3D -1; > + > + qdev_set_legacy_instance_id(dev, 0 /* io */, 2); /* FIXME */ > + if (fdctrl_init_common(fdctrl) < 0) { > + error_setg(errp, "Floppy init failed."); > + return; > + } > } > =20 > -static int sun4m_fdc_init1(SysBusDevice *dev) > +static void sun4m_fdc_initfn(Object *obj) > { > - FDCtrlSysBus *sys =3D SYSBUS_FDC(dev); > + FDCtrlSysBus *sys =3D SYSBUS_FDC(obj); > FDCtrl *fdctrl =3D &sys->state; > =20 > memory_region_init_io(&fdctrl->iomem, &fdctrl_mem_strict_ops, fdct= rl, > "fdctrl", 0x08); > - sysbus_init_mmio(dev, &fdctrl->iomem); > - sysbus_init_irq(dev, &fdctrl->irq); > - qdev_init_gpio_in(DEVICE(dev), fdctrl_handle_tc, 1); > +} > + > +static void sun4m_fdc_realize(DeviceState *dev, Error **errp) > +{ > + FDCtrlSysBus *sys =3D SYSBUS_FDC(dev); > + FDCtrl *fdctrl =3D &sys->state; > + SysBusDevice *b =3D SYS_BUS_DEVICE(dev); I've renamed this variable to Peter's suggested sbd and posted a follow-up to rename fdctrl_init_common() to fdctrl_realize_common() and to propagate Error** from fdctrl_connect_drives() directly into the realizefn. Andreas > + > + sysbus_init_mmio(b, &fdctrl->iomem); > + sysbus_init_irq(b, &fdctrl->irq); > + qdev_init_gpio_in(dev, fdctrl_handle_tc, 1); > =20 > fdctrl->sun4m =3D 1; > - qdev_set_legacy_instance_id(DEVICE(dev), 0 /* io */, 2); /* FIXME = */ > - return fdctrl_init_common(fdctrl); > + qdev_set_legacy_instance_id(dev, 0 /* io */, 2); /* FIXME */ > + if (fdctrl_init_common(fdctrl) < 0) { > + error_setg(errp, "Floppy init failed."); > + return; > + } > } > =20 > FDriveType isa_fdc_get_drive_type(ISADevice *fdc, int i) > @@ -2247,9 +2267,8 @@ static Property sysbus_fdc_properties[] =3D { > static void sysbus_fdc_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_fdc_init1; > + dc->realize =3D sysbus_fdc_realize; > dc->reset =3D fdctrl_external_reset_sysbus; > dc->vmsd =3D &vmstate_sysbus_fdc; > dc->props =3D sysbus_fdc_properties; > @@ -2259,6 +2278,7 @@ static const TypeInfo sysbus_fdc_info =3D { > .name =3D TYPE_SYSBUS_FDC, > .parent =3D TYPE_SYS_BUS_DEVICE, > .instance_size =3D sizeof(FDCtrlSysBus), > + .instance_init =3D sysbus_fdc_initfn, > .class_init =3D sysbus_fdc_class_init, > }; > =20 > @@ -2270,9 +2290,8 @@ static Property sun4m_fdc_properties[] =3D { > static void sun4m_fdc_class_init(ObjectClass *klass, void *data) > { > DeviceClass *dc =3D DEVICE_CLASS(klass); > - SysBusDeviceClass *k =3D SYS_BUS_DEVICE_CLASS(klass); > =20 > - k->init =3D sun4m_fdc_init1; > + dc->realize =3D sun4m_fdc_realize; > dc->reset =3D fdctrl_external_reset_sysbus; > dc->vmsd =3D &vmstate_sysbus_fdc; > dc->props =3D sun4m_fdc_properties; > @@ -2282,6 +2301,7 @@ static const TypeInfo sun4m_fdc_info =3D { > .name =3D "SUNW,fdtwo", > .parent =3D TYPE_SYS_BUS_DEVICE, > .instance_size =3D sizeof(FDCtrlSysBus), > + .instance_init =3D sun4m_fdc_initfn, > .class_init =3D sun4m_fdc_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