qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Gerd Hoffmann <kraxel@redhat.com>
To: qemu-devel@nongnu.org
Cc: Gerd Hoffmann <kraxel@redhat.com>
Subject: [Qemu-devel] [RfC PATCH] usb/vmstate: add parent dev path
Date: Tue, 13 Mar 2012 13:34:47 +0100	[thread overview]
Message-ID: <1331642087-21325-1-git-send-email-kraxel@redhat.com> (raw)

... to make vmstate id string truely unique with multiple host
controllers, i.e. move from "1/usb-ptr" to "0000:00:01.3/1/usb-ptr"
(usb tabled connected to piix3 uhci).

This is needed in case you have multiple USB busses in a virtual
machine to make sure the section names are unique.  Obviously this
will break migration.  I'm sitting on the patch for a while already,
with the plan to sneak it in when we have a migration flag day anyway
for the planned new & shiny migration format.

It doesn't look like this is going to happen anytime soon.  I'd like to
have this fixed in the 1.1 release.  Suggestions how to go forward?

cheers,
  Gerd

---
 hw/usb/bus.c |   15 ++++++++++++++-
 1 files changed, 14 insertions(+), 1 deletions(-)

diff --git a/hw/usb/bus.c b/hw/usb/bus.c
index d3f8358..0ffb89e 100644
--- a/hw/usb/bus.c
+++ b/hw/usb/bus.c
@@ -460,7 +460,20 @@ static void usb_bus_dev_print(Monitor *mon, DeviceState *qdev, int indent)
 static char *usb_get_dev_path(DeviceState *qdev)
 {
     USBDevice *dev = USB_DEVICE(qdev);
-    return g_strdup(dev->port->path);
+    DeviceState *hcd = qdev->parent_bus->parent;
+    char *id = NULL;
+
+    if (hcd && hcd->parent_bus && hcd->parent_bus->info->get_dev_path) {
+        id = hcd->parent_bus->info->get_dev_path(hcd);
+    }
+    if (id) {
+        int len = strlen(id)+strlen(dev->port->path)+2;
+        char *ret = g_malloc(len);
+        snprintf(ret, len, "%s/%s", id, dev->port->path);
+        return ret;
+    } else {
+        return g_strdup(dev->port->path);
+    }
 }
 
 static char *usb_get_fw_dev_path(DeviceState *qdev)
-- 
1.7.1

             reply	other threads:[~2012-03-13 12:34 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-03-13 12:34 Gerd Hoffmann [this message]
2012-03-13 12:42 ` [Qemu-devel] [RfC PATCH] usb/vmstate: add parent dev path Paolo Bonzini
  -- strict thread matches above, loose matches on Subject: below --
2011-08-26 10:11 Gerd Hoffmann
2011-08-26 10:25 ` Daniel P. Berrange
2011-08-26 10:46   ` Gerd Hoffmann

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1331642087-21325-1-git-send-email-kraxel@redhat.com \
    --to=kraxel@redhat.com \
    --cc=qemu-devel@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).