All of lore.kernel.org
 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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.