From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:51740) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1V2u5B-0005aL-U9 for qemu-devel@nongnu.org; Fri, 26 Jul 2013 22:18:11 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1V2u57-0001BI-VJ for qemu-devel@nongnu.org; Fri, 26 Jul 2013 22:18:09 -0400 Received: from cantor2.suse.de ([195.135.220.15]:52291 helo=mx2.suse.de) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1V2u57-0001As-JJ for qemu-devel@nongnu.org; Fri, 26 Jul 2013 22:18:05 -0400 Message-ID: <51F32DD5.7010607@suse.de> Date: Sat, 27 Jul 2013 04:17:57 +0200 From: =?UTF-8?B?QW5kcmVhcyBGw6RyYmVy?= MIME-Version: 1.0 References: <1374889807-21069-1-git-send-email-afaerber@suse.de> In-Reply-To: <1374889807-21069-1-git-send-email-afaerber@suse.de> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Subject: Re: [Qemu-devel] [PATCH qom-next for-1.6 v2] fdc: Fix inheritence for SUNW, fdtwo List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: Kevin Wolf , Hu Tao , Mark Cave-Ayland , Stefan Hajnoczi , blauwirbel@gmail.com Am 27.07.2013 03:50, schrieb Andreas F=C3=A4rber: > Since commit dd3be7420774f7dc8f37a96ca24d07f0b6f31b3b SUNW,fdtwo's > initfn (realizefn since 940194c2369e50d91d1abf6f36d43853eea5e539) > was using SYSBUS_FDC() cast. This uses type sysbus-fdc rather than > SUNW,fdtwo. >=20 > Fix this by letting SUNW,fdtwo and sysbus-fdc both inherit from an > abstract type base-sysbus-fdc. >=20 > This allows to consolidate realizefns by using instance_init functions. > Clean up variable names and variable order while at it. >=20 > Reported-by: Mark Cave-Ayland > Cc: Hu Tao > Signed-off-by: Andreas F=C3=A4rber > --- > hw/block/fdc.c | 86 +++++++++++++++++++++++++++++---------------------= -------- > 1 file changed, 43 insertions(+), 43 deletions(-) >=20 > diff --git a/hw/block/fdc.c b/hw/block/fdc.c > index d32f6ba..723d2c7 100644 > --- a/hw/block/fdc.c > +++ b/hw/block/fdc.c > @@ -544,7 +544,7 @@ struct FDCtrl { > uint8_t timer1; > }; > =20 > -#define TYPE_SYSBUS_FDC "sysbus-fdc" > +#define TYPE_SYSBUS_FDC "base-sysbus-fdc" > #define SYSBUS_FDC(obj) OBJECT_CHECK(FDCtrlSysBus, (obj), TYPE_SYSBUS_= FDC) > =20 > typedef struct FDCtrlSysBus { > @@ -2153,60 +2153,49 @@ static void isabus_fdc_realize(DeviceState *dev= , Error **errp) > =20 > static void sysbus_fdc_initfn(Object *obj) > { > + SysBusDevice *sbd =3D SYS_BUS_DEVICE(obj); > FDCtrlSysBus *sys =3D SYSBUS_FDC(obj); > FDCtrl *fdctrl =3D &sys->state; > =20 > + fdctrl->dma_chann =3D -1; > + > memory_region_init_io(&fdctrl->iomem, obj, &fdctrl_mem_ops, fdctrl= , > "fdc", 0x08); > + sysbus_init_mmio(sbd, &fdctrl->iomem); > } > =20 > -static void sysbus_fdc_realize(DeviceState *dev, Error **errp) > +static void sun4m_fdc_initfn(Object *obj) > { > - FDCtrlSysBus *sys =3D SYSBUS_FDC(dev); > + SysBusDevice *sbd =3D SYS_BUS_DEVICE(obj); > + FDCtrlSysBus *sys =3D SYSBUS_FDC(obj); > FDCtrl *fdctrl =3D &sys->state; > - SysBusDevice *b =3D SYS_BUS_DEVICE(dev); > - Error *err =3D NULL; > =20 > - 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; > + fdctrl->sun4m =3D 1; > =20 > - qdev_set_legacy_instance_id(dev, 0 /* io */, 2); /* FIXME */ > - fdctrl_realize_common(fdctrl, &err); > - if (err !=3D NULL) { > - error_propagate(errp, err); > - return; > - } > + memory_region_init_io(&fdctrl->iomem, obj, &fdctrl_mem_strict_ops, > + fdctrl, "fdctrl", 0x08); > + sysbus_init_mmio(sbd, &fdctrl->iomem); > } > =20 > -static void sun4m_fdc_initfn(Object *obj) > +static void sysbus_fdc_common_initfn(Object *obj) > { > + DeviceState *dev =3D DEVICE(obj); > + SysBusDevice *sbd =3D SYS_BUS_DEVICE(dev); > FDCtrlSysBus *sys =3D SYSBUS_FDC(obj); > FDCtrl *fdctrl =3D &sys->state; > =20 > - memory_region_init_io(&fdctrl->iomem, obj, &fdctrl_mem_strict_ops, > - fdctrl, "fdctrl", 0x08); > + qdev_set_legacy_instance_id(dev, 0 /* io */, 2); /* FIXME */ > + > + sysbus_init_irq(sbd, &fdctrl->irq); > + qdev_init_gpio_in(dev, fdctrl_handle_tc, 1); > } > =20 > -static void sun4m_fdc_realize(DeviceState *dev, Error **errp) > +static void sysbus_fdc_common_realize(DeviceState *dev, Error **errp) > { > FDCtrlSysBus *sys =3D SYSBUS_FDC(dev); > FDCtrl *fdctrl =3D &sys->state; > - SysBusDevice *sbd =3D SYS_BUS_DEVICE(dev); > - Error *err =3D NULL; > =20 > - sysbus_init_mmio(sbd, &fdctrl->iomem); > - sysbus_init_irq(sbd, &fdctrl->irq); > - qdev_init_gpio_in(dev, fdctrl_handle_tc, 1); > - > - fdctrl->sun4m =3D 1; > - qdev_set_legacy_instance_id(dev, 0 /* io */, 2); /* FIXME */ > - fdctrl_realize_common(fdctrl, &err); > - if (err !=3D NULL) { > - error_propagate(errp, err); > - return; > - } > + fdctrl_realize_common(fdctrl, errp); > } > =20 > FDriveType isa_fdc_get_drive_type(ISADevice *fdc, int i) > @@ -2278,16 +2267,12 @@ static void sysbus_fdc_class_init(ObjectClass *= klass, void *data) > { > DeviceClass *dc =3D DEVICE_CLASS(klass); > =20 > - 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; > } > =20 > static const TypeInfo sysbus_fdc_info =3D { > - .name =3D TYPE_SYSBUS_FDC, > - .parent =3D TYPE_SYS_BUS_DEVICE, > - .instance_size =3D sizeof(FDCtrlSysBus), > + .name =3D "sysbus-fdc", > + .parent =3D TYPE_SYSBUS_FDC, > .instance_init =3D sysbus_fdc_initfn, > .class_init =3D sysbus_fdc_class_init, > }; > @@ -2301,23 +2286,38 @@ static void sun4m_fdc_class_init(ObjectClass *k= lass, void *data) > { > DeviceClass *dc =3D DEVICE_CLASS(klass); > =20 > - 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; > } > =20 > static const TypeInfo sun4m_fdc_info =3D { > .name =3D "SUNW,fdtwo", > - .parent =3D TYPE_SYS_BUS_DEVICE, > - .instance_size =3D sizeof(FDCtrlSysBus), > + .parent =3D TYPE_SYSBUS_FDC, > .instance_init =3D sun4m_fdc_initfn, > .class_init =3D sun4m_fdc_class_init, > }; > =20 > +static void sysbus_fdc_common_class_init(ObjectClass *klass, void *dat= a) > +{ > + DeviceClass *dc =3D DEVICE_CLASS(klass); > + > + dc->realize =3D sysbus_fdc_common_realize; > + dc->reset =3D fdctrl_external_reset_sysbus; > + dc->vmsd =3D &vmstate_sysbus_fdc; > +} > + > +static const TypeInfo sysbus_fdc_type_info =3D { > + .name =3D TYPE_SYSBUS_FDC, > + .parent =3D TYPE_SYS_BUS_DEVICE, > + .instance_size =3D sizeof(FDCtrlSysBus), > + .instance_init =3D sysbus_fdc_common_initfn, > + .abstract =3D true, > + .class_init =3D sysbus_fdc_common_class_init, > +}; > + > static void fdc_register_types(void) > { > type_register_static(&isa_fdc_info); > + type_register_static(&sysbus_fdc_type_info); > type_register_static(&sysbus_fdc_info); > type_register_static(&sun4m_fdc_info); > } Plus the following hunk to fix mips64: diff --git a/hw/block/fdc.c b/hw/block/fdc.c index 723d2c7..28266c2 100644 --- a/hw/block/fdc.c +++ b/hw/block/fdc.c @@ -2055,7 +2055,7 @@ void fdctrl_init_sysbus(qemu_irq irq, int dma_chann= , SysBusDevice *sbd; FDCtrlSysBus *sys; - dev =3D qdev_create(NULL, TYPE_SYSBUS_FDC); + dev =3D qdev_create(NULL, "sysbus-fdc"); sys =3D SYSBUS_FDC(dev); fdctrl =3D &sys->state; fdctrl->dma_chann =3D dma_chann; /* FIXME */ Andreas --=20 SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 N=C3=BCrnberg, Germany GF: Jeff Hawn, Jennifer Guild, Felix Imend=C3=B6rffer; HRB 16746 AG N=C3=BC= rnberg