Patchwork fdc: fix drive property handling.

login
register
mail settings
Submitter Gerd Hoffmann
Date March 10, 2010, 4:30 p.m.
Message ID <1268238629-23164-1-git-send-email-kraxel@redhat.com>
Download mbox | patch
Permalink /patch/47255/
State New
Headers show

Comments

Gerd Hoffmann - March 10, 2010, 4:30 p.m.
Fix the floppy controller init wrappers to set the drive properties
only in case the DriveInfo pointers passed in are non NULL.  This allows
to set the properties using -global.

[ v2: fix code style issues pointed out by Aurelien Jarno ]

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
---
 hw/fdc.c |   20 +++++++++++++++-----
 1 files changed, 15 insertions(+), 5 deletions(-)
Aurelien Jarno - March 13, 2010, 11:16 a.m.
On Wed, Mar 10, 2010 at 05:30:29PM +0100, Gerd Hoffmann wrote:
> Fix the floppy controller init wrappers to set the drive properties
> only in case the DriveInfo pointers passed in are non NULL.  This allows
> to set the properties using -global.
> 
> [ v2: fix code style issues pointed out by Aurelien Jarno ]
> 
> Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>

Thanks, applied.

> ---
>  hw/fdc.c |   20 +++++++++++++++-----
>  1 files changed, 15 insertions(+), 5 deletions(-)
> 
> diff --git a/hw/fdc.c b/hw/fdc.c
> index eb39e30..42b6d7d 100644
> --- a/hw/fdc.c
> +++ b/hw/fdc.c
> @@ -1860,8 +1860,12 @@ FDCtrl *fdctrl_init_isa(DriveInfo **fds)
>      ISADevice *dev;
>  
>      dev = isa_create("isa-fdc");
> -    qdev_prop_set_drive(&dev->qdev, "driveA", fds[0]);
> -    qdev_prop_set_drive(&dev->qdev, "driveB", fds[1]);
> +    if (fds[0]) {
> +        qdev_prop_set_drive(&dev->qdev, "driveA", fds[0]);
> +    }
> +    if (fds[1]) {
> +        qdev_prop_set_drive(&dev->qdev, "driveB", fds[1]);
> +    }
>      if (qdev_init(&dev->qdev) < 0)
>          return NULL;
>      return &(DO_UPCAST(FDCtrlISABus, busdev, dev)->state);
> @@ -1878,8 +1882,12 @@ FDCtrl *fdctrl_init_sysbus(qemu_irq irq, int dma_chann,
>      sys = DO_UPCAST(FDCtrlSysBus, busdev.qdev, dev);
>      fdctrl = &sys->state;
>      fdctrl->dma_chann = dma_chann; /* FIXME */
> -    qdev_prop_set_drive(dev, "driveA", fds[0]);
> -    qdev_prop_set_drive(dev, "driveB", fds[1]);
> +    if (fds[0]) {
> +        qdev_prop_set_drive(dev, "driveA", fds[0]);
> +    }
> +    if (fds[1]) {
> +        qdev_prop_set_drive(dev, "driveB", fds[1]);
> +    }
>      qdev_init_nofail(dev);
>      sysbus_connect_irq(&sys->busdev, 0, irq);
>      sysbus_mmio_map(&sys->busdev, 0, mmio_base);
> @@ -1895,7 +1903,9 @@ FDCtrl *sun4m_fdctrl_init(qemu_irq irq, target_phys_addr_t io_base,
>      FDCtrl *fdctrl;
>  
>      dev = qdev_create(NULL, "SUNW,fdtwo");
> -    qdev_prop_set_drive(dev, "drive", fds[0]);
> +    if (fds[0]) {
> +        qdev_prop_set_drive(dev, "drive", fds[0]);
> +    }
>      qdev_init_nofail(dev);
>      sys = DO_UPCAST(FDCtrlSysBus, busdev.qdev, dev);
>      fdctrl = &sys->state;
> -- 
> 1.6.6.1
> 
> 
> 
>

Patch

diff --git a/hw/fdc.c b/hw/fdc.c
index eb39e30..42b6d7d 100644
--- a/hw/fdc.c
+++ b/hw/fdc.c
@@ -1860,8 +1860,12 @@  FDCtrl *fdctrl_init_isa(DriveInfo **fds)
     ISADevice *dev;
 
     dev = isa_create("isa-fdc");
-    qdev_prop_set_drive(&dev->qdev, "driveA", fds[0]);
-    qdev_prop_set_drive(&dev->qdev, "driveB", fds[1]);
+    if (fds[0]) {
+        qdev_prop_set_drive(&dev->qdev, "driveA", fds[0]);
+    }
+    if (fds[1]) {
+        qdev_prop_set_drive(&dev->qdev, "driveB", fds[1]);
+    }
     if (qdev_init(&dev->qdev) < 0)
         return NULL;
     return &(DO_UPCAST(FDCtrlISABus, busdev, dev)->state);
@@ -1878,8 +1882,12 @@  FDCtrl *fdctrl_init_sysbus(qemu_irq irq, int dma_chann,
     sys = DO_UPCAST(FDCtrlSysBus, busdev.qdev, dev);
     fdctrl = &sys->state;
     fdctrl->dma_chann = dma_chann; /* FIXME */
-    qdev_prop_set_drive(dev, "driveA", fds[0]);
-    qdev_prop_set_drive(dev, "driveB", fds[1]);
+    if (fds[0]) {
+        qdev_prop_set_drive(dev, "driveA", fds[0]);
+    }
+    if (fds[1]) {
+        qdev_prop_set_drive(dev, "driveB", fds[1]);
+    }
     qdev_init_nofail(dev);
     sysbus_connect_irq(&sys->busdev, 0, irq);
     sysbus_mmio_map(&sys->busdev, 0, mmio_base);
@@ -1895,7 +1903,9 @@  FDCtrl *sun4m_fdctrl_init(qemu_irq irq, target_phys_addr_t io_base,
     FDCtrl *fdctrl;
 
     dev = qdev_create(NULL, "SUNW,fdtwo");
-    qdev_prop_set_drive(dev, "drive", fds[0]);
+    if (fds[0]) {
+        qdev_prop_set_drive(dev, "drive", fds[0]);
+    }
     qdev_init_nofail(dev);
     sys = DO_UPCAST(FDCtrlSysBus, busdev.qdev, dev);
     fdctrl = &sys->state;