From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1MoeXT-0001To-7h for qemu-devel@nongnu.org; Fri, 18 Sep 2009 10:34:19 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1MoeXO-0001N9-R5 for qemu-devel@nongnu.org; Fri, 18 Sep 2009 10:34:18 -0400 Received: from [199.232.76.173] (port=38890 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1MoeXO-0001Ml-HO for qemu-devel@nongnu.org; Fri, 18 Sep 2009 10:34:14 -0400 Received: from mx1.redhat.com ([209.132.183.28]:57887) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1MoeXO-0004WD-1O for qemu-devel@nongnu.org; Fri, 18 Sep 2009 10:34:14 -0400 Received: from int-mx03.intmail.prod.int.phx2.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.16]) by mx1.redhat.com (8.13.8/8.13.8) with ESMTP id n8IEYCbj007711 for ; Fri, 18 Sep 2009 10:34:12 -0400 Subject: Re: [Qemu-devel] [PATCH 1/5] floppy: add drive properties. References: <1253132744-10492-1-git-send-email-kraxel@redhat.com> <1253132744-10492-2-git-send-email-kraxel@redhat.com> From: Markus Armbruster Date: Fri, 18 Sep 2009 16:34:10 +0200 In-Reply-To: <1253132744-10492-2-git-send-email-kraxel@redhat.com> (Gerd Hoffmann's message of "Wed\, 16 Sep 2009 22\:25\:40 +0200") Message-ID: <87k4zw490d.fsf@pike.pond.sub.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Gerd Hoffmann Cc: qemu-devel@nongnu.org Gerd Hoffmann writes: > Signed-off-by: Gerd Hoffmann > --- > hw/fdc.c | 50 +++++++++++++++++++++++++++++++++++++------------- > hw/fdc.h | 7 ++++--- > hw/mips_jazz.c | 5 ++--- > hw/mips_malta.c | 5 ++--- > hw/pc.c | 6 ++---- > hw/ppc_prep.c | 6 ++---- > hw/sun4m.c | 16 ++++------------ > hw/sun4u.c | 6 ++---- > 8 files changed, 55 insertions(+), 46 deletions(-) > > diff --git a/hw/fdc.c b/hw/fdc.c > index 389d9e6..ea3b8ac 100644 > --- a/hw/fdc.c > +++ b/hw/fdc.c [...] > @@ -1829,43 +1830,50 @@ static void fdctrl_result_timer(void *opaque) > } > > /* Init functions */ > -static void fdctrl_connect_drives(fdctrl_t *fdctrl, BlockDriverState **fds) > +static void fdctrl_connect_drives(fdctrl_t *fdctrl) > { > unsigned int i; > > for (i = 0; i < MAX_FD; i++) { > - fd_init(&fdctrl->drives[i], fds[i]); > + fd_init(&fdctrl->drives[i]); > fd_revalidate(&fdctrl->drives[i]); > } > } > > -fdctrl_t *fdctrl_init_isa(BlockDriverState **fds) > +fdctrl_t *fdctrl_init_isa(DriveInfo **fds) > { > fdctrl_t *fdctrl; > ISADevice *dev; > int dma_chann = 2; > > - dev = isa_create_simple("isa-fdc"); > + dev = isa_create("isa-fdc"); > + qdev_prop_set_drive(&dev->qdev, "driveA", fds[0]); > + qdev_prop_set_drive(&dev->qdev, "driveB", fds[1]); > + if (qdev_init(&dev->qdev) != 0) > + return NULL; Callers never check for failure. Recommend qdev_init_nofail(), except that's not merged, yet. > fdctrl = &(DO_UPCAST(fdctrl_isabus_t, busdev, dev)->state); > > fdctrl->dma_chann = dma_chann; > DMA_register_channel(dma_chann, &fdctrl_transfer_handler, fdctrl); > > - fdctrl_connect_drives(fdctrl, fds); > + fdctrl_connect_drives(fdctrl); > > return fdctrl; > } > > fdctrl_t *fdctrl_init_sysbus(qemu_irq irq, int dma_chann, > target_phys_addr_t mmio_base, > - BlockDriverState **fds) > + DriveInfo **fds) > { > fdctrl_t *fdctrl; > DeviceState *dev; > fdctrl_sysbus_t *sys; > > dev = qdev_create(NULL, "sysbus-fdc"); > - qdev_init(dev); > + qdev_prop_set_drive(dev, "driveA", fds[0]); > + qdev_prop_set_drive(dev, "driveB", fds[1]); > + if (qdev_init(dev) != 0) > + return NULL; Ditto. > sys = DO_UPCAST(fdctrl_sysbus_t, busdev.qdev, dev); > fdctrl = &sys->state; > sysbus_connect_irq(&sys->busdev, 0, irq); > @@ -1873,20 +1881,22 @@ fdctrl_t *fdctrl_init_sysbus(qemu_irq irq, int dma_chann, > > fdctrl->dma_chann = dma_chann; > DMA_register_channel(dma_chann, &fdctrl_transfer_handler, fdctrl); > - fdctrl_connect_drives(fdctrl, fds); > + fdctrl_connect_drives(fdctrl); > > return fdctrl; > } > > fdctrl_t *sun4m_fdctrl_init (qemu_irq irq, target_phys_addr_t io_base, > - BlockDriverState **fds, qemu_irq *fdc_tc) > + DriveInfo **fds, qemu_irq *fdc_tc) > { > DeviceState *dev; > fdctrl_sysbus_t *sys; > fdctrl_t *fdctrl; > > dev = qdev_create(NULL, "SUNW,fdtwo"); > - qdev_init(dev); > + qdev_prop_set_drive(dev, "drive", fds[0]); > + if (qdev_init(dev) != 0) > + return NULL; Ditto. > sys = DO_UPCAST(fdctrl_sysbus_t, busdev.qdev, dev); > fdctrl = &sys->state; > sysbus_connect_irq(&sys->busdev, 0, irq); [...]