Re: [Qemu-devel] [PATCH 05/14] qdev: use wrapper for qdev_get_path

2012-05-02 Thread Gerd Hoffmann
On 05/01/12 20:36, Anthony Liguori wrote:
 Hi Gerd,
 
 Could you carefully review the USB changes here?  I'm not really sure
 what our contract is with the guest in terms of ABI compatibility.  I
 think it's good but it could use a second set of eyes.

incremental fix attached.

cheers,
  Gerd

From 8823f1f5491639119d267289610fcad6dd1a0872 Mon Sep 17 00:00:00 2001
From: Gerd Hoffmann kra...@redhat.com
Date: Wed, 2 May 2012 14:30:54 +0200
Subject: [PATCH] fixup

Signed-off-by: Gerd Hoffmann kra...@redhat.com
---
 hw/usb/desc.c |6 ++
 1 files changed, 2 insertions(+), 4 deletions(-)

diff --git a/hw/usb/desc.c b/hw/usb/desc.c
index 64352c9..84ea9f2 100644
--- a/hw/usb/desc.c
+++ b/hw/usb/desc.c
@@ -433,13 +433,11 @@ void usb_desc_create_serial(USBDevice *dev)
 int index = desc-id.iSerialNumber;
 char serial[64];
 int dst;
-char *path = NULL;
+char *path;
 
 assert(index != 0  desc-str[index] != NULL);
 dst = snprintf(serial, sizeof(serial), %s, desc-str[index]);
-if (hcd-parent_bus  hcd-parent_bus-parent) {
-path = qdev_get_dev_path(hcd-parent_bus-parent);
-}
+path = qdev_get_dev_path(hcd);
 if (path) {
 dst += snprintf(serial+dst, sizeof(serial)-dst, -%s, path);
 }
-- 
1.7.1



Re: [Qemu-devel] [PATCH 05/14] qdev: use wrapper for qdev_get_path

2012-05-01 Thread Anthony Liguori

Hi Gerd,

Could you carefully review the USB changes here?  I'm not really sure what our 
contract is with the guest in terms of ABI compatibility.  I think it's good but 
it could use a second set of eyes.


Regards,

Anthony Liguori

On 05/01/2012 01:18 PM, Anthony Liguori wrote:

This makes it easier to remove it from BusInfo.

Signed-off-by: Anthony Liguorialigu...@us.ibm.com
---
  exec.c|4 ++--
  hw/qdev.c |   16 
  hw/qdev.h |2 ++
  hw/usb/desc.c |7 +--
  savevm.c  |   12 ++--
  5 files changed, 31 insertions(+), 10 deletions(-)

diff --git a/exec.c b/exec.c
index 0607c9b..e3523d2 100644
--- a/exec.c
+++ b/exec.c
@@ -2583,8 +2583,8 @@ void qemu_ram_set_idstr(ram_addr_t addr, const char 
*name, DeviceState *dev)
  assert(new_block);
  assert(!new_block-idstr[0]);

-if (dev  dev-parent_bus  dev-parent_bus-info-get_dev_path) {
-char *id = dev-parent_bus-info-get_dev_path(dev);
+if (dev) {
+char *id = qdev_get_dev_path(dev);
  if (id) {
  snprintf(new_block-idstr, sizeof(new_block-idstr), %s/, id);
  g_free(id);
diff --git a/hw/qdev.c b/hw/qdev.c
index e17a9ab..e835650 100644
--- a/hw/qdev.c
+++ b/hw/qdev.c
@@ -519,6 +519,22 @@ char* qdev_get_fw_dev_path(DeviceState *dev)
  return strdup(path);
  }

+char *qdev_get_dev_path(DeviceState *dev)
+{
+BusClass *bc;
+
+if (!dev-parent_bus) {
+return NULL;
+}
+
+bc = BUS_GET_CLASS(dev-parent_bus);
+if (bc-get_dev_path) {
+return bc-get_dev_path(dev);
+}
+
+return NULL;
+}
+
  static char *qdev_get_type(Object *obj, Error **errp)
  {
  return g_strdup(object_get_typename(obj));
diff --git a/hw/qdev.h b/hw/qdev.h
index ca8386a..fc3b50f 100644
--- a/hw/qdev.h
+++ b/hw/qdev.h
@@ -362,4 +362,6 @@ extern int qdev_hotplug;

  void qdev_add_properties(DeviceState *dev, Property *props);

+char *qdev_get_dev_path(DeviceState *dev);
+
  #endif
diff --git a/hw/usb/desc.c b/hw/usb/desc.c
index e8a3c6a..64352c9 100644
--- a/hw/usb/desc.c
+++ b/hw/usb/desc.c
@@ -433,11 +433,14 @@ void usb_desc_create_serial(USBDevice *dev)
  int index = desc-id.iSerialNumber;
  char serial[64];
  int dst;
+char *path = NULL;

  assert(index != 0  desc-str[index] != NULL);
  dst = snprintf(serial, sizeof(serial), %s, desc-str[index]);
-if (hcd  hcd-parent_bus  hcd-parent_bus-info-get_dev_path) {
-char *path = hcd-parent_bus-info-get_dev_path(hcd);
+if (hcd-parent_bus  hcd-parent_bus-parent) {
+path = qdev_get_dev_path(hcd-parent_bus-parent);
+}
+if (path) {
  dst += snprintf(serial+dst, sizeof(serial)-dst, -%s, path);
  }
  dst += snprintf(serial+dst, sizeof(serial)-dst, -%s, dev-port-path);
diff --git a/savevm.c b/savevm.c
index 2d18bab..818ddfc 100644
--- a/savevm.c
+++ b/savevm.c
@@ -1248,8 +1248,8 @@ int register_savevm_live(DeviceState *dev,
  se-is_ram = 1;
  }

-if (dev  dev-parent_bus  dev-parent_bus-info-get_dev_path) {
-char *id = dev-parent_bus-info-get_dev_path(dev);
+if (dev) {
+char *id = qdev_get_dev_path(dev);
  if (id) {
  pstrcpy(se-idstr, sizeof(se-idstr), id);
  pstrcat(se-idstr, sizeof(se-idstr), /);
@@ -1292,8 +1292,8 @@ void unregister_savevm(DeviceState *dev, const char 
*idstr, void *opaque)
  SaveStateEntry *se, *new_se;
  char id[256] = ;

-if (dev  dev-parent_bus  dev-parent_bus-info-get_dev_path) {
-char *path = dev-parent_bus-info-get_dev_path(dev);
+if (dev) {
+char *path = qdev_get_dev_path(dev);
  if (path) {
  pstrcpy(id, sizeof(id), path);
  pstrcat(id, sizeof(id), /);
@@ -1334,8 +1334,8 @@ int vmstate_register_with_alias_id(DeviceState *dev, int 
instance_id,
  se-alias_id = alias_id;
  se-no_migrate = vmsd-unmigratable;

-if (dev  dev-parent_bus  dev-parent_bus-info-get_dev_path) {
-char *id = dev-parent_bus-info-get_dev_path(dev);
+if (dev) {
+char *id = qdev_get_dev_path(dev);
  if (id) {
  pstrcpy(se-idstr, sizeof(se-idstr), id);
  pstrcat(se-idstr, sizeof(se-idstr), /);





[Qemu-devel] [PATCH 05/14] qdev: use wrapper for qdev_get_path

2012-05-01 Thread Anthony Liguori
This makes it easier to remove it from BusInfo.

Signed-off-by: Anthony Liguori aligu...@us.ibm.com
---
 exec.c|4 ++--
 hw/qdev.c |   16 
 hw/qdev.h |2 ++
 hw/usb/desc.c |7 +--
 savevm.c  |   12 ++--
 5 files changed, 31 insertions(+), 10 deletions(-)

diff --git a/exec.c b/exec.c
index 0607c9b..e3523d2 100644
--- a/exec.c
+++ b/exec.c
@@ -2583,8 +2583,8 @@ void qemu_ram_set_idstr(ram_addr_t addr, const char 
*name, DeviceState *dev)
 assert(new_block);
 assert(!new_block-idstr[0]);
 
-if (dev  dev-parent_bus  dev-parent_bus-info-get_dev_path) {
-char *id = dev-parent_bus-info-get_dev_path(dev);
+if (dev) {
+char *id = qdev_get_dev_path(dev);
 if (id) {
 snprintf(new_block-idstr, sizeof(new_block-idstr), %s/, id);
 g_free(id);
diff --git a/hw/qdev.c b/hw/qdev.c
index e17a9ab..e835650 100644
--- a/hw/qdev.c
+++ b/hw/qdev.c
@@ -519,6 +519,22 @@ char* qdev_get_fw_dev_path(DeviceState *dev)
 return strdup(path);
 }
 
+char *qdev_get_dev_path(DeviceState *dev)
+{
+BusClass *bc;
+
+if (!dev-parent_bus) {
+return NULL;
+}
+
+bc = BUS_GET_CLASS(dev-parent_bus);
+if (bc-get_dev_path) {
+return bc-get_dev_path(dev);
+}
+
+return NULL;
+}
+
 static char *qdev_get_type(Object *obj, Error **errp)
 {
 return g_strdup(object_get_typename(obj));
diff --git a/hw/qdev.h b/hw/qdev.h
index ca8386a..fc3b50f 100644
--- a/hw/qdev.h
+++ b/hw/qdev.h
@@ -362,4 +362,6 @@ extern int qdev_hotplug;
 
 void qdev_add_properties(DeviceState *dev, Property *props);
 
+char *qdev_get_dev_path(DeviceState *dev);
+
 #endif
diff --git a/hw/usb/desc.c b/hw/usb/desc.c
index e8a3c6a..64352c9 100644
--- a/hw/usb/desc.c
+++ b/hw/usb/desc.c
@@ -433,11 +433,14 @@ void usb_desc_create_serial(USBDevice *dev)
 int index = desc-id.iSerialNumber;
 char serial[64];
 int dst;
+char *path = NULL;
 
 assert(index != 0  desc-str[index] != NULL);
 dst = snprintf(serial, sizeof(serial), %s, desc-str[index]);
-if (hcd  hcd-parent_bus  hcd-parent_bus-info-get_dev_path) {
-char *path = hcd-parent_bus-info-get_dev_path(hcd);
+if (hcd-parent_bus  hcd-parent_bus-parent) {
+path = qdev_get_dev_path(hcd-parent_bus-parent);
+}
+if (path) {
 dst += snprintf(serial+dst, sizeof(serial)-dst, -%s, path);
 }
 dst += snprintf(serial+dst, sizeof(serial)-dst, -%s, dev-port-path);
diff --git a/savevm.c b/savevm.c
index 2d18bab..818ddfc 100644
--- a/savevm.c
+++ b/savevm.c
@@ -1248,8 +1248,8 @@ int register_savevm_live(DeviceState *dev,
 se-is_ram = 1;
 }
 
-if (dev  dev-parent_bus  dev-parent_bus-info-get_dev_path) {
-char *id = dev-parent_bus-info-get_dev_path(dev);
+if (dev) {
+char *id = qdev_get_dev_path(dev);
 if (id) {
 pstrcpy(se-idstr, sizeof(se-idstr), id);
 pstrcat(se-idstr, sizeof(se-idstr), /);
@@ -1292,8 +1292,8 @@ void unregister_savevm(DeviceState *dev, const char 
*idstr, void *opaque)
 SaveStateEntry *se, *new_se;
 char id[256] = ;
 
-if (dev  dev-parent_bus  dev-parent_bus-info-get_dev_path) {
-char *path = dev-parent_bus-info-get_dev_path(dev);
+if (dev) {
+char *path = qdev_get_dev_path(dev);
 if (path) {
 pstrcpy(id, sizeof(id), path);
 pstrcat(id, sizeof(id), /);
@@ -1334,8 +1334,8 @@ int vmstate_register_with_alias_id(DeviceState *dev, int 
instance_id,
 se-alias_id = alias_id;
 se-no_migrate = vmsd-unmigratable;
 
-if (dev  dev-parent_bus  dev-parent_bus-info-get_dev_path) {
-char *id = dev-parent_bus-info-get_dev_path(dev);
+if (dev) {
+char *id = qdev_get_dev_path(dev);
 if (id) {
 pstrcpy(se-idstr, sizeof(se-idstr), id);
 pstrcat(se-idstr, sizeof(se-idstr), /);
-- 
1.7.5.4




[Qemu-devel] [PATCH 05/14] qdev: use wrapper for qdev_get_path

2012-04-18 Thread Anthony Liguori
This makes it easier to remove it from BusInfo.

Signed-off-by: Anthony Liguori aligu...@us.ibm.com
---
 exec.c|4 ++--
 hw/qdev.c |   16 
 hw/qdev.h |2 ++
 savevm.c  |   12 ++--
 4 files changed, 26 insertions(+), 8 deletions(-)

diff --git a/exec.c b/exec.c
index 77d6866..4632b24 100644
--- a/exec.c
+++ b/exec.c
@@ -2878,8 +2878,8 @@ void qemu_ram_set_idstr(ram_addr_t addr, const char 
*name, DeviceState *dev)
 assert(new_block);
 assert(!new_block-idstr[0]);
 
-if (dev  dev-parent_bus  dev-parent_bus-info-get_dev_path) {
-char *id = dev-parent_bus-info-get_dev_path(dev);
+if (dev) {
+char *id = qdev_get_dev_path(dev);
 if (id) {
 snprintf(new_block-idstr, sizeof(new_block-idstr), %s/, id);
 g_free(id);
diff --git a/hw/qdev.c b/hw/qdev.c
index c8dda31..d265963 100644
--- a/hw/qdev.c
+++ b/hw/qdev.c
@@ -518,6 +518,22 @@ char* qdev_get_fw_dev_path(DeviceState *dev)
 return strdup(path);
 }
 
+char *qdev_get_dev_path(DeviceState *dev)
+{
+BusClass *bc;
+
+if (!dev-parent_bus) {
+return NULL;
+}
+
+bc = BUS_GET_CLASS(dev-parent_bus);
+if (bc-get_dev_path) {
+return bc-get_dev_path(dev);
+}
+
+return NULL;
+}
+
 static char *qdev_get_type(Object *obj, Error **errp)
 {
 return g_strdup(object_get_typename(obj));
diff --git a/hw/qdev.h b/hw/qdev.h
index ca8386a..fc3b50f 100644
--- a/hw/qdev.h
+++ b/hw/qdev.h
@@ -362,4 +362,6 @@ extern int qdev_hotplug;
 
 void qdev_add_properties(DeviceState *dev, Property *props);
 
+char *qdev_get_dev_path(DeviceState *dev);
+
 #endif
diff --git a/savevm.c b/savevm.c
index 2d18bab..818ddfc 100644
--- a/savevm.c
+++ b/savevm.c
@@ -1248,8 +1248,8 @@ int register_savevm_live(DeviceState *dev,
 se-is_ram = 1;
 }
 
-if (dev  dev-parent_bus  dev-parent_bus-info-get_dev_path) {
-char *id = dev-parent_bus-info-get_dev_path(dev);
+if (dev) {
+char *id = qdev_get_dev_path(dev);
 if (id) {
 pstrcpy(se-idstr, sizeof(se-idstr), id);
 pstrcat(se-idstr, sizeof(se-idstr), /);
@@ -1292,8 +1292,8 @@ void unregister_savevm(DeviceState *dev, const char 
*idstr, void *opaque)
 SaveStateEntry *se, *new_se;
 char id[256] = ;
 
-if (dev  dev-parent_bus  dev-parent_bus-info-get_dev_path) {
-char *path = dev-parent_bus-info-get_dev_path(dev);
+if (dev) {
+char *path = qdev_get_dev_path(dev);
 if (path) {
 pstrcpy(id, sizeof(id), path);
 pstrcat(id, sizeof(id), /);
@@ -1334,8 +1334,8 @@ int vmstate_register_with_alias_id(DeviceState *dev, int 
instance_id,
 se-alias_id = alias_id;
 se-no_migrate = vmsd-unmigratable;
 
-if (dev  dev-parent_bus  dev-parent_bus-info-get_dev_path) {
-char *id = dev-parent_bus-info-get_dev_path(dev);
+if (dev) {
+char *id = qdev_get_dev_path(dev);
 if (id) {
 pstrcpy(se-idstr, sizeof(se-idstr), id);
 pstrcat(se-idstr, sizeof(se-idstr), /);
-- 
1.7.5.4