* [Qemu-devel] [PATCH] Implement the function usb_hub_handle_reset
@ 2011-11-22 8:37 hkran
0 siblings, 0 replies; 6+ messages in thread
From: hkran @ 2011-11-22 8:37 UTC (permalink / raw)
To: qemu-devel; +Cc: Stefan Hajnoczi, Gerd Hoffmann
Implement the function usb_hub_handle_reset. without it the guest
propablly fail to configure the usb device attached to the virtulized
hub with a correct address.
Typically, attaching more than one usb devices when lauch qemu may lead
to the problem.
Signed-off-by: hkran <hkran@linux.vnet.ibm.com>
---
hw/usb-hub.c | 13 ++++++++++++-
1 files changed, 12 insertions(+), 1 deletions(-)
diff --git a/hw/usb-hub.c b/hw/usb-hub.c
index 3eb0f1a..6731075 100644
--- a/hw/usb-hub.c
+++ b/hw/usb-hub.c
@@ -220,7 +220,18 @@ static void usb_hub_complete(USBPort *port,
USBPacket *packet)
static void usb_hub_handle_reset(USBDevice *dev)
{
- /* XXX: do it */
+ USBHubPort *port = NULL;
+ USBHubState *s = (USBHubState *)dev;
+ int i;
+
+ for(i = 0; i < NUM_PORTS; i++) {
+ port = &(s->ports[i]);
+ if(port->wPortStatus & PORT_STAT_CONNECTION) {
+ usb_reset(&port->port);
+ port->wPortStatus = PORT_STAT_CONNECTION | PORT_STAT_POWER;
+ port->wPortChange = PORT_STAT_C_CONNECTION;
+ }
+ }
}
static int usb_hub_handle_control(USBDevice *dev, USBPacket *p,
--
1.7.1
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [Qemu-devel] [PATCH] Implement the function usb_hub_handle_reset
@ 2011-11-22 8:52 hkran
0 siblings, 0 replies; 6+ messages in thread
From: hkran @ 2011-11-22 8:52 UTC (permalink / raw)
To: qemu-devel; +Cc: hkran, Stefan Hajnoczi, Gerd Hoffmann
Implement the function usb_hub_handle_reset. without it the guest
propablly fail to configure the usb device attached to the virtulized
hub with a correct address.
Typically, attaching more than one usb devices when lauch qemu may lead
to the problem.
Signed-off-by: hkran <hkran@linux.vnet.ibm.com>
---
hw/usb-hub.c | 13 ++++++++++++-
1 files changed, 12 insertions(+), 1 deletions(-)
diff --git a/hw/usb-hub.c b/hw/usb-hub.c
index 3eb0f1a..6731075 100644
--- a/hw/usb-hub.c
+++ b/hw/usb-hub.c
@@ -220,7 +220,18 @@ static void usb_hub_complete(USBPort *port,
USBPacket *packet)
static void usb_hub_handle_reset(USBDevice *dev)
{
- /* XXX: do it */
+ USBHubPort *port = NULL;
+ USBHubState *s = (USBHubState *)dev;
+ int i;
+
+ for(i = 0; i < NUM_PORTS; i++) {
+ port = &(s->ports[i]);
+ if(port->wPortStatus & PORT_STAT_CONNECTION) {
+ usb_reset(&port->port);
+ port->wPortStatus = PORT_STAT_CONNECTION | PORT_STAT_POWER;
+ port->wPortChange = PORT_STAT_C_CONNECTION;
+ }
+ }
}
static int usb_hub_handle_control(USBDevice *dev, USBPacket *p,
--
1.7.1
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [Qemu-devel] [PATCH] Implement the function usb_hub_handle_reset
@ 2011-11-22 8:58 hkran
2011-11-22 12:36 ` Gerd Hoffmann
0 siblings, 1 reply; 6+ messages in thread
From: hkran @ 2011-11-22 8:58 UTC (permalink / raw)
To: qemu-devel; +Cc: Stefan Hajnoczi, Gerd Hoffmann
Implement the function usb_hub_handle_reset. without it the guest
propablly fail to configure the usb device attached to the virtulized
hub with a correct address.
Typically, attaching more than one usb devices when lauch qemu may lead
to the problem.
Signed-off-by: hkran <hkran@linux.vnet.ibm.com>
---
hw/usb-hub.c | 13 ++++++++++++-
1 files changed, 12 insertions(+), 1 deletions(-)
diff --git a/hw/usb-hub.c b/hw/usb-hub.c
index 3eb0f1a..6731075 100644
--- a/hw/usb-hub.c
+++ b/hw/usb-hub.c
@@ -220,7 +220,18 @@ static void usb_hub_complete(USBPort *port,
USBPacket *packet)
static void usb_hub_handle_reset(USBDevice *dev)
{
- /* XXX: do it */
+ USBHubPort *port = NULL;
+ USBHubState *s = (USBHubState *)dev;
+ int i;
+
+ for(i = 0; i < NUM_PORTS; i++) {
+ port = &(s->ports[i]);
+ if(port->wPortStatus & PORT_STAT_CONNECTION) {
+ usb_reset(&port->port);
+ port->wPortStatus = PORT_STAT_CONNECTION | PORT_STAT_POWER;
+ port->wPortChange = PORT_STAT_C_CONNECTION;
+ }
+ }
}
static int usb_hub_handle_control(USBDevice *dev, USBPacket *p,
--
1.7.1
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [Qemu-devel] [PATCH] Implement the function usb_hub_handle_reset
@ 2011-11-22 9:08 hkran
0 siblings, 0 replies; 6+ messages in thread
From: hkran @ 2011-11-22 9:08 UTC (permalink / raw)
To: qemu-devel; +Cc: stefanha
Implement the function usb_hub_handle_reset. without it the guest
propablly fail to configure the usb device attached to the virtulized
hub with a correct address.
Typically, attaching more than one usb devices when lauch qemu may
lead to the problem.
Signed-off-by: hkran <hkran@linux.vnet.ibm.com>
---
hw/usb-hub.c | 13 ++++++++++++-
1 files changed, 12 insertions(+), 1 deletions(-)
diff --git a/hw/usb-hub.c b/hw/usb-hub.c
index 3eb0f1a..6731075 100644
--- a/hw/usb-hub.c
+++ b/hw/usb-hub.c
@@ -220,7 +220,18 @@ static void usb_hub_complete(USBPort *port,
USBPacket *packet)
static void usb_hub_handle_reset(USBDevice *dev)
{
- /* XXX: do it */
+ USBHubPort *port = NULL;
+ USBHubState *s = (USBHubState *)dev;
+ int i;
+
+ for(i = 0; i < NUM_PORTS; i++) {
+ port = &(s->ports[i]);
+ if(port->wPortStatus & PORT_STAT_CONNECTION) {
+ usb_reset(&port->port);
+ port->wPortStatus = PORT_STAT_CONNECTION | PORT_STAT_POWER;
+ port->wPortChange = PORT_STAT_C_CONNECTION;
+ }
+ }
}
static int usb_hub_handle_control(USBDevice *dev, USBPacket *p,
--
1.7.1
^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [Qemu-devel] [PATCH] Implement the function usb_hub_handle_reset
2011-11-22 8:58 hkran
@ 2011-11-22 12:36 ` Gerd Hoffmann
2011-11-23 3:16 ` hkran
0 siblings, 1 reply; 6+ messages in thread
From: Gerd Hoffmann @ 2011-11-22 12:36 UTC (permalink / raw)
To: hkran; +Cc: qemu-devel, Stefan Hajnoczi
On 11/22/11 09:58, hkran wrote:
> Implement the function usb_hub_handle_reset. without it the guest
> propablly fail to configure the usb device attached to the virtulized
> hub with a correct address.
>
> Typically, attaching more than one usb devices when lauch qemu may lead
> to the problem.
What is the exact problem you are trying to fix?
cheers,
Gerd
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [Qemu-devel] [PATCH] Implement the function usb_hub_handle_reset
2011-11-22 12:36 ` Gerd Hoffmann
@ 2011-11-23 3:16 ` hkran
0 siblings, 0 replies; 6+ messages in thread
From: hkran @ 2011-11-23 3:16 UTC (permalink / raw)
To: Gerd Hoffmann; +Cc: qemu-devel, Stefan Hajnoczi
On 11/22/2011 08:36 PM, Gerd Hoffmann wrote:
> On 11/22/11 09:58, hkran wrote:
>> Implement the function usb_hub_handle_reset. without it the guest
>> propablly fail to configure the usb device attached to the virtulized
>> hub with a correct address.
>>
>> Typically, attaching more than one usb devices when lauch qemu may lead
>> to the problem.
> What is the exact problem you are trying to fix?
>
> cheers,
> Gerd
>
>
For example, I use the following command line to lautch qemu to play win7
/home/huikai/qemu10/bin/qemu-system-x86_64 -enable-kvm -m 1024 -drive
file=/root/win7_86.img,if=ide -net user -net nic,model=rtl8139
-localtime -chardev stdio,id=muxstdio -mon chardev=muxstdio -usb
-usbdevice tablet -spice port=2345,disable-ticketing -cdrom
/home/guest/Fedora-15-i686-Live-Desktop.iso -boot once=d -usbdevice
host:0000:7777
Here, I attatched two usbdevice tablet and a usb storage device
"host:0000:7777" on the host side. After guest have booted.there will
not see the usb storage device.
using monitor cmd "info usb" found the below:
(qemu) info usb
Device 0.1, Port 1, Speed 12 Mb/s, Product QEMU USB Tablet
Device 0.3, Port 2, Speed 12 Mb/s, Product QEMU USB Hub
Device 0.3, Port 2.1, Speed 480 Mb/s, Product host:2.4
the device "host:0000:7777" have not been configured successfully, guest
OS can not to see it.
I traced qemu and found that there will be several reset cmd issued by
the guest usb protocol stack during win7 booting, if we left the
hub_reset to do nothing, the usbdevice attached to it will fail to be
configured just in above case.
(If we "hot plug-in " a usb device via qemu's monitor, the problem is
not so easy to be reproduced because the reset cmd only be issued only
once or none)
(the problem is not always reproduced, but high possibility).
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2011-11-23 3:17 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-11-22 8:52 [Qemu-devel] [PATCH] Implement the function usb_hub_handle_reset hkran
-- strict thread matches above, loose matches on Subject: below --
2011-11-22 9:08 hkran
2011-11-22 8:58 hkran
2011-11-22 12:36 ` Gerd Hoffmann
2011-11-23 3:16 ` hkran
2011-11-22 8:37 hkran
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).