qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Lonnie Mendez <lmendez19@austin.rr.com>
To: qemu-devel@nongnu.org
Subject: RE: [Qemu-devel] USB storage cannot be recognized on guest Linux domain?
Date: Thu, 15 Feb 2007 08:48:34 -0600	[thread overview]
Message-ID: <1171550915.4091.52.camel@vaio> (raw)
In-Reply-To: <A3C277AA6499944188602D8A7168B9A70169C41D@bjsmsx401>

[-- Attachment #1: Type: text/plain, Size: 1396 bytes --]

On Thu, 2007-02-15 at 15:44 +0800, Yu, Xiaoyang wrote:
> Hi Lonnie,
> 
> Thanks a lot for the information.
> 
> In our use case, we do not know the USB disk information before it is plugged by customer, so we cannot start qemu with -usbdevice.
> 
> For Linux, reload the uhci_hcd driver works. If we use this solution in our use case, then we need to issue an interrupt (maybe by pic_set_irq_new?) to the guest OS when QEMU detect a USB device is attached, and then the guest OS will reload the uhci_hcd driver. Is that right? Currently there is something wrong with the list archive server, so I haven't search out any example code from it :-(
> 
> I found that there is a patch to add the UHCI suspend/resume support in the archive posted by you, but it cannot be applied to QEMU-DM 0.8.2 directly:
> http://lists.gnu.org/archive/html/qemu-devel/2006-04/msg00576.html
> 
> I wonder why there is no official UHCI suspend/resume support in QEMU. To reload the uhci_hcd driver seems to be only a work around. Sometimes it even cause kernel oops. 
> 
> I also wonder why the kernel 2.6.11-1.1369_FC4 can recognize USB storage without UHCI suspend/resume support.

The attached patch is enough to have a device on linux recognized after
usb_add.  However, the device must be attached to the uhci controller's
root hub.  If a device is attached to an emulated usb hub device it will
not be detected.

[-- Attachment #2: qemu-uhci-resume.diff --]
[-- Type: text/x-patch, Size: 1492 bytes --]

? qemu-uhci-resume.diff
Index: hw/usb-uhci.c
===================================================================
RCS file: /sources/qemu/qemu/hw/usb-uhci.c,v
retrieving revision 1.13
diff -u -r1.13 usb-uhci.c
--- hw/usb-uhci.c	17 Jan 2007 23:08:17 -0000	1.13
+++ hw/usb-uhci.c	15 Feb 2007 14:44:40 -0000
@@ -26,6 +26,8 @@
 //#define DEBUG
 //#define DEBUG_PACKET
 
+#define UHCI_CMD_FGR      (1 << 4)
+#define UHCI_CMD_EGSM     (1 << 3)
 #define UHCI_CMD_GRESET   (1 << 2)
 #define UHCI_CMD_HCRESET  (1 << 1)
 #define UHCI_CMD_RS       (1 << 0)
@@ -327,6 +329,21 @@
     return val;
 }
 
+/* signal resume if controller suspended */
+static void uhci_resume (void *opaque)
+{
+    UHCIState *s = (UHCIState *)opaque;
+
+    if (!s)
+        return;
+
+    if (s->cmd & UHCI_CMD_EGSM) {
+        s->cmd |= UHCI_CMD_FGR;
+        s->status |= UHCI_STS_RD;
+        uhci_update_irq(s);
+    }
+}
+
 static void uhci_attach(USBPort *port1, USBDevice *dev)
 {
     UHCIState *s = port1->opaque;
@@ -344,6 +361,9 @@
             port->ctrl |= UHCI_PORT_LSDA;
         else
             port->ctrl &= ~UHCI_PORT_LSDA;
+
+        uhci_resume(s);
+
         port->port.dev = dev;
         /* send the attach message */
         usb_send_msg(dev, USB_MSG_ATTACH);
@@ -358,6 +378,9 @@
             port->ctrl &= ~UHCI_PORT_EN;
             port->ctrl |= UHCI_PORT_ENC;
         }
+
+        uhci_resume(s);
+
         dev = port->port.dev;
         if (dev) {
             /* send the detach message */

  reply	other threads:[~2007-02-15 14:48 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-02-14  7:05 [Qemu-devel] USB storage cannot be recognized on guest Linux domain? Yu, Xiaoyang
2007-02-14 10:26 ` Yu, Xiaoyang
2007-02-14 11:27   ` AW: [Qemu-devel] USB storage cannot be recognized on guest Linuxdomain? Nenad Cimerman
2007-02-14 12:24     ` [Qemu-devel] USB storage cannot be recognized on guestLinuxdomain? Yu, Xiaoyang
2007-02-14 12:39       ` Yu, Xiaoyang
2007-02-14 15:00   ` [Qemu-devel] USB storage cannot be recognized on guest Linux domain? Lonnie Mendez
2007-02-15  2:36     ` [Qemu-devel] USB storage cannot be recognized on guest Linuxdomain? Yu, Xiaoyang
2007-02-15  2:43       ` Lonnie Mendez
2007-02-15  7:44         ` [Qemu-devel] USB storage cannot be recognized on guest Linux domain? Yu, Xiaoyang
2007-02-15 14:48           ` Lonnie Mendez [this message]
2007-02-16  5:10             ` [Qemu-devel] USB storage cannot be recognized on guest Linuxdomain? Yu, Xiaoyang

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=1171550915.4091.52.camel@vaio \
    --to=lmendez19@austin.rr.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).