Patchwork qdev: don't add typename to fw_dev_path when get_fw_dev_path isn't implemented

login
register
mail settings
Submitter Amos Kong
Date May 28, 2013, 10:25 a.m.
Message ID <1369736734-15449-1-git-send-email-akong@redhat.com>
Download mbox | patch
Permalink /patch/246818/
State New
Headers show

Comments

Amos Kong - May 28, 2013, 10:25 a.m.
Currently we add typename to fw_dev_path if virtio-bus
doesn't have get_fw_dev_path implementation, the fw_dev_path
passed to seabios is not expected, the typename is redundant.
It causes that bootindex parameter of scsi device doesn't work.

This patch changes the qdev_get_fw_dev_path_helper() to add
nothing if device doesn't have get_fw_dev_path implementation.

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Amos Kong <akong@redhat.com>
---
 hw/core/qdev.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
Paolo Bonzini - May 28, 2013, 10:30 a.m.
Il 28/05/2013 12:25, Amos Kong ha scritto:
> Currently we add typename to fw_dev_path if virtio-bus
> doesn't have get_fw_dev_path implementation, the fw_dev_path
> passed to seabios is not expected, the typename is redundant.
> It causes that bootindex parameter of scsi device doesn't work.
> 
> This patch changes the qdev_get_fw_dev_path_helper() to add
> nothing if device doesn't have get_fw_dev_path implementation.

This is not enough, because it would change behavior for other buses
that do not have get_fw_dev_path.  You also need to add a default
implementation of the callback.

> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>

You don't need my Signed-off-by.  On the other hand, you should Cc
qemu-stable@nongnu.org.

Paolo

> Signed-off-by: Amos Kong <akong@redhat.com>
> ---
>  hw/core/qdev.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/hw/core/qdev.c b/hw/core/qdev.c
> index 6985ad8..150255d 100644
> --- a/hw/core/qdev.c
> +++ b/hw/core/qdev.c
> @@ -515,7 +515,7 @@ static int qdev_get_fw_dev_path_helper(DeviceState *dev, char *p, int size)
>              l += snprintf(p + l, size - l, "%s", d);
>              g_free(d);
>          } else {
> -            l += snprintf(p + l, size - l, "%s", object_get_typename(OBJECT(dev)));
> +            return l;
>          }
>      }
>      l += snprintf(p + l , size - l, "/");
>

Patch

diff --git a/hw/core/qdev.c b/hw/core/qdev.c
index 6985ad8..150255d 100644
--- a/hw/core/qdev.c
+++ b/hw/core/qdev.c
@@ -515,7 +515,7 @@  static int qdev_get_fw_dev_path_helper(DeviceState *dev, char *p, int size)
             l += snprintf(p + l, size - l, "%s", d);
             g_free(d);
         } else {
-            l += snprintf(p + l, size - l, "%s", object_get_typename(OBJECT(dev)));
+            return l;
         }
     }
     l += snprintf(p + l , size - l, "/");