Patchwork [FOR,0.12,RESEND] fdc: fix drive property handling.

login
register
mail settings
Submitter Gerd Hoffmann
Date Jan. 6, 2010, 2:23 p.m.
Message ID <1262787790-27764-1-git-send-email-kraxel@redhat.com>
Download mbox | patch
Permalink /patch/42297/
State New
Headers show

Comments

Gerd Hoffmann - Jan. 6, 2010, 2:23 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.

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
---
 hw/fdc.c |   15 ++++++++++-----
 1 files changed, 10 insertions(+), 5 deletions(-)
Gerd Hoffmann - Jan. 27, 2010, 11:43 a.m.
On 01/06/10 15:23, 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.
>
> Signed-off-by: Gerd Hoffmann<kraxel@redhat.com>

Ping.  This patch seems to keep missing the boat ...

cheers,
   Gerd
Aurelien Jarno - Feb. 28, 2010, 6:02 p.m.
On Wed, Jan 06, 2010 at 03:23:10PM +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.

This patch looks good except for minor coding style issues (see below).
As I prefer to apply it to head and then cherry-pick it to stable, could
you please send a fixed patch? Then I'll apply it.

> Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
> ---
>  hw/fdc.c |   15 ++++++++++-----
>  1 files changed, 10 insertions(+), 5 deletions(-)
> 
> diff --git a/hw/fdc.c b/hw/fdc.c
> index 0579b03..691374e 100644
> --- a/hw/fdc.c
> +++ b/hw/fdc.c
> @@ -1860,8 +1860,10 @@ fdctrl_t *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]);

You should use curly brace around the previous line.

>      if (qdev_init(&dev->qdev) < 0)
>          return NULL;
>      return &(DO_UPCAST(fdctrl_isabus_t, busdev, dev)->state);
> @@ -1879,8 +1881,10 @@ fdctrl_t *fdctrl_init_sysbus(qemu_irq irq, int dma_chann,
>      sys = DO_UPCAST(fdctrl_sysbus_t, 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]);

ditto

>      qdev_init_nofail(dev);
>      sysbus_connect_irq(&sys->busdev, 0, irq);
>      sysbus_mmio_map(&sys->busdev, 0, mmio_base);
> @@ -1896,7 +1900,8 @@ fdctrl_t *sun4m_fdctrl_init (qemu_irq irq, target_phys_addr_t io_base,
>      fdctrl_t *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]);

ditto

>      qdev_init_nofail(dev);
>      sys = DO_UPCAST(fdctrl_sysbus_t, busdev.qdev, dev);
>      fdctrl = &sys->state;
> -- 
> 1.6.5.2
> 
> 
> 
>

Patch

diff --git a/hw/fdc.c b/hw/fdc.c
index 0579b03..691374e 100644
--- a/hw/fdc.c
+++ b/hw/fdc.c
@@ -1860,8 +1860,10 @@  fdctrl_t *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(fdctrl_isabus_t, busdev, dev)->state);
@@ -1879,8 +1881,10 @@  fdctrl_t *fdctrl_init_sysbus(qemu_irq irq, int dma_chann,
     sys = DO_UPCAST(fdctrl_sysbus_t, 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);
@@ -1896,7 +1900,8 @@  fdctrl_t *sun4m_fdctrl_init (qemu_irq irq, target_phys_addr_t io_base,
     fdctrl_t *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(fdctrl_sysbus_t, busdev.qdev, dev);
     fdctrl = &sys->state;