* [Qemu-devel] [PULL] usb patch queue
@ 2011-11-01 14:56 Gerd Hoffmann
2011-11-01 14:56 ` [Qemu-devel] [PATCH 1/3] usb-hub: wakeup on attach Gerd Hoffmann
` (3 more replies)
0 siblings, 4 replies; 14+ messages in thread
From: Gerd Hoffmann @ 2011-11-01 14:56 UTC (permalink / raw)
To: qemu-devel; +Cc: Gerd Hoffmann
Hi,
Three little usb patches for 1.0.
please pull,
Gerd
The following changes since commit ff74c5a9a91c6dbf1017195462aa4176f7381240:
Merge remote-tracking branch 'riku/linux-user-for-upstream' into staging (2011-10-31 15:05:40 -0500)
are available in the git repository at:
git://git.kraxel.org/qemu usb.29
Gerd Hoffmann (2):
usb-hub: wakeup on attach
usb-host: fix host close
Roy Tam (1):
usb: change VID/PID for usb-hub and usb-msd to prevent conflict
hw/usb-hub.c | 5 +++--
hw/usb-msd.c | 4 ++--
usb-linux.c | 6 ++++--
3 files changed, 9 insertions(+), 6 deletions(-)
^ permalink raw reply [flat|nested] 14+ messages in thread
* [Qemu-devel] [PATCH 1/3] usb-hub: wakeup on attach
2011-11-01 14:56 [Qemu-devel] [PULL] usb patch queue Gerd Hoffmann
@ 2011-11-01 14:56 ` Gerd Hoffmann
2011-11-02 9:38 ` hkran
2011-11-10 3:45 ` hkran
2011-11-01 14:56 ` [Qemu-devel] [PATCH 2/3] usb: change VID/PID for usb-hub and usb-msd to prevent conflict Gerd Hoffmann
` (2 subsequent siblings)
3 siblings, 2 replies; 14+ messages in thread
From: Gerd Hoffmann @ 2011-11-01 14:56 UTC (permalink / raw)
To: qemu-devel; +Cc: Gerd Hoffmann
When attaching a new device we must send a wakeup request to the root
hub, otherwise the guest will not notice the new device in case the
usb hub is suspended.
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
---
hw/usb-hub.c | 1 +
1 files changed, 1 insertions(+), 0 deletions(-)
diff --git a/hw/usb-hub.c b/hw/usb-hub.c
index 09c6516..7b47079 100644
--- a/hw/usb-hub.c
+++ b/hw/usb-hub.c
@@ -163,6 +163,7 @@ static void usb_hub_attach(USBPort *port1)
} else {
port->wPortStatus &= ~PORT_STAT_LOW_SPEED;
}
+ usb_wakeup(&s->dev);
}
static void usb_hub_detach(USBPort *port1)
--
1.7.1
^ permalink raw reply related [flat|nested] 14+ messages in thread
* [Qemu-devel] [PATCH 2/3] usb: change VID/PID for usb-hub and usb-msd to prevent conflict
2011-11-01 14:56 [Qemu-devel] [PULL] usb patch queue Gerd Hoffmann
2011-11-01 14:56 ` [Qemu-devel] [PATCH 1/3] usb-hub: wakeup on attach Gerd Hoffmann
@ 2011-11-01 14:56 ` Gerd Hoffmann
2011-11-01 15:29 ` Andreas Färber
2011-11-01 14:56 ` [Qemu-devel] [PATCH 3/3] usb-host: fix host close Gerd Hoffmann
2011-11-01 18:13 ` [Qemu-devel] [PULL] usb patch queue Anthony Liguori
3 siblings, 1 reply; 14+ messages in thread
From: Gerd Hoffmann @ 2011-11-01 14:56 UTC (permalink / raw)
To: qemu-devel; +Cc: Gerd Hoffmann, Roy Tam
From: Roy Tam <roytam@gmail.com>
Some USB drivers, for example USBASPI.SYS, will skip different type of
device which has same VID/PID. The following patch helps preventing
usb-msd being skipped by the driver.
Sign-off-by: Roy Tam <roytam@gmail.com>
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
---
hw/usb-hub.c | 4 ++--
hw/usb-msd.c | 4 ++--
2 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/hw/usb-hub.c b/hw/usb-hub.c
index 7b47079..3eb0f1a 100644
--- a/hw/usb-hub.c
+++ b/hw/usb-hub.c
@@ -127,8 +127,8 @@ static const USBDescDevice desc_device_hub = {
static const USBDesc desc_hub = {
.id = {
- .idVendor = 0,
- .idProduct = 0,
+ .idVendor = 0x0409,
+ .idProduct = 0x55aa,
.bcdDevice = 0x0101,
.iManufacturer = STR_MANUFACTURER,
.iProduct = STR_PRODUCT,
diff --git a/hw/usb-msd.c b/hw/usb-msd.c
index 1a0815a..b734177 100644
--- a/hw/usb-msd.c
+++ b/hw/usb-msd.c
@@ -162,8 +162,8 @@ static const USBDescDevice desc_device_high = {
static const USBDesc desc = {
.id = {
- .idVendor = 0,
- .idProduct = 0,
+ .idVendor = 0x46f4, /* CRC16() of "QEMU" */
+ .idProduct = 0x0001,
.bcdDevice = 0,
.iManufacturer = STR_MANUFACTURER,
.iProduct = STR_PRODUCT,
--
1.7.1
^ permalink raw reply related [flat|nested] 14+ messages in thread
* [Qemu-devel] [PATCH 3/3] usb-host: fix host close
2011-11-01 14:56 [Qemu-devel] [PULL] usb patch queue Gerd Hoffmann
2011-11-01 14:56 ` [Qemu-devel] [PATCH 1/3] usb-hub: wakeup on attach Gerd Hoffmann
2011-11-01 14:56 ` [Qemu-devel] [PATCH 2/3] usb: change VID/PID for usb-hub and usb-msd to prevent conflict Gerd Hoffmann
@ 2011-11-01 14:56 ` Gerd Hoffmann
2011-11-01 18:13 ` [Qemu-devel] [PULL] usb patch queue Anthony Liguori
3 siblings, 0 replies; 14+ messages in thread
From: Gerd Hoffmann @ 2011-11-01 14:56 UTC (permalink / raw)
To: qemu-devel; +Cc: Gerd Hoffmann
The whole usb_host_close() function is skipped in case the device is not
in attached state. This is wrong though, only then usb_device_detach()
must be skipped, all other cleanup (especially device reset and closing
the file handle) still needs to be done. There are code paths where
usb_host_close() is called with the device in detached state already.
This fixes usb-host devices not being released and returned to the host
after removing them with device_del.
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
---
usb-linux.c | 6 ++++--
1 files changed, 4 insertions(+), 2 deletions(-)
diff --git a/usb-linux.c b/usb-linux.c
index 7d4d1d7..f086d57 100644
--- a/usb-linux.c
+++ b/usb-linux.c
@@ -1349,7 +1349,7 @@ static int usb_host_close(USBHostDevice *dev)
{
int i;
- if (dev->fd == -1 || !dev->dev.attached) {
+ if (dev->fd == -1) {
return -1;
}
@@ -1367,7 +1367,9 @@ static int usb_host_close(USBHostDevice *dev)
}
async_complete(dev);
dev->closing = 0;
- usb_device_detach(&dev->dev);
+ if (dev->dev.attached) {
+ usb_device_detach(&dev->dev);
+ }
ioctl(dev->fd, USBDEVFS_RESET);
close(dev->fd);
dev->fd = -1;
--
1.7.1
^ permalink raw reply related [flat|nested] 14+ messages in thread
* Re: [Qemu-devel] [PATCH 2/3] usb: change VID/PID for usb-hub and usb-msd to prevent conflict
2011-11-01 14:56 ` [Qemu-devel] [PATCH 2/3] usb: change VID/PID for usb-hub and usb-msd to prevent conflict Gerd Hoffmann
@ 2011-11-01 15:29 ` Andreas Färber
2011-11-01 15:40 ` Gerd Hoffmann
0 siblings, 1 reply; 14+ messages in thread
From: Andreas Färber @ 2011-11-01 15:29 UTC (permalink / raw)
To: Gerd Hoffmann, Roy Tam; +Cc: qemu-devel
Am 01.11.2011 15:56, schrieb Gerd Hoffmann:
> From: Roy Tam <roytam@gmail.com>
>
> Some USB drivers, for example USBASPI.SYS, will skip different type of
> device which has same VID/PID. The following patch helps preventing
> usb-msd being skipped by the driver.
>
> Sign-off-by: Roy Tam <roytam@gmail.com>
Typo?
Andreas
> Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
> ---
> hw/usb-hub.c | 4 ++--
> hw/usb-msd.c | 4 ++--
> 2 files changed, 4 insertions(+), 4 deletions(-)
>
> diff --git a/hw/usb-hub.c b/hw/usb-hub.c
> index 7b47079..3eb0f1a 100644
> --- a/hw/usb-hub.c
> +++ b/hw/usb-hub.c
> @@ -127,8 +127,8 @@ static const USBDescDevice desc_device_hub = {
>
> static const USBDesc desc_hub = {
> .id = {
> - .idVendor = 0,
> - .idProduct = 0,
> + .idVendor = 0x0409,
> + .idProduct = 0x55aa,
> .bcdDevice = 0x0101,
> .iManufacturer = STR_MANUFACTURER,
> .iProduct = STR_PRODUCT,
> diff --git a/hw/usb-msd.c b/hw/usb-msd.c
> index 1a0815a..b734177 100644
> --- a/hw/usb-msd.c
> +++ b/hw/usb-msd.c
> @@ -162,8 +162,8 @@ static const USBDescDevice desc_device_high = {
>
> static const USBDesc desc = {
> .id = {
> - .idVendor = 0,
> - .idProduct = 0,
> + .idVendor = 0x46f4, /* CRC16() of "QEMU" */
> + .idProduct = 0x0001,
> .bcdDevice = 0,
> .iManufacturer = STR_MANUFACTURER,
> .iProduct = STR_PRODUCT,
--
SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 Nürnberg, Germany
GF: Jeff Hawn, Jennifer Guild, Felix Imendörffer; HRB 16746 AG Nürnberg
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [Qemu-devel] [PATCH 2/3] usb: change VID/PID for usb-hub and usb-msd to prevent conflict
2011-11-01 15:29 ` Andreas Färber
@ 2011-11-01 15:40 ` Gerd Hoffmann
0 siblings, 0 replies; 14+ messages in thread
From: Gerd Hoffmann @ 2011-11-01 15:40 UTC (permalink / raw)
To: Andreas Färber; +Cc: qemu-devel, Roy Tam
On 11/01/11 16:29, Andreas Färber wrote:
> Am 01.11.2011 15:56, schrieb Gerd Hoffmann:
>> From: Roy Tam <roytam@gmail.com>
>>
>> Some USB drivers, for example USBASPI.SYS, will skip different type of
>> device which has same VID/PID. The following patch helps preventing
>> usb-msd being skipped by the driver.
>>
>
>> Sign-off-by: Roy Tam <roytam@gmail.com>
>
> Typo?
Yea. Updated comment, pushed to the same location.
thanks,
Gerd
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [Qemu-devel] [PULL] usb patch queue
2011-11-01 14:56 [Qemu-devel] [PULL] usb patch queue Gerd Hoffmann
` (2 preceding siblings ...)
2011-11-01 14:56 ` [Qemu-devel] [PATCH 3/3] usb-host: fix host close Gerd Hoffmann
@ 2011-11-01 18:13 ` Anthony Liguori
3 siblings, 0 replies; 14+ messages in thread
From: Anthony Liguori @ 2011-11-01 18:13 UTC (permalink / raw)
To: Gerd Hoffmann; +Cc: qemu-devel
On 11/01/2011 09:56 AM, Gerd Hoffmann wrote:
> Hi,
>
> Three little usb patches for 1.0.
>
> please pull,
> Gerd
>
> The following changes since commit ff74c5a9a91c6dbf1017195462aa4176f7381240:
>
> Merge remote-tracking branch 'riku/linux-user-for-upstream' into staging (2011-10-31 15:05:40 -0500)
Pulled. Thanks.
Regards,
Anthony Liguori
> are available in the git repository at:
>
> git://git.kraxel.org/qemu usb.29
>
> Gerd Hoffmann (2):
> usb-hub: wakeup on attach
> usb-host: fix host close
>
> Roy Tam (1):
> usb: change VID/PID for usb-hub and usb-msd to prevent conflict
>
> hw/usb-hub.c | 5 +++--
> hw/usb-msd.c | 4 ++--
> usb-linux.c | 6 ++++--
> 3 files changed, 9 insertions(+), 6 deletions(-)
>
>
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [Qemu-devel] [PATCH 1/3] usb-hub: wakeup on attach
2011-11-01 14:56 ` [Qemu-devel] [PATCH 1/3] usb-hub: wakeup on attach Gerd Hoffmann
@ 2011-11-02 9:38 ` hkran
2011-11-02 12:56 ` Gerd Hoffmann
2011-11-10 3:45 ` hkran
1 sibling, 1 reply; 14+ messages in thread
From: hkran @ 2011-11-02 9:38 UTC (permalink / raw)
To: Gerd Hoffmann; +Cc: qemu-devel
On 11/01/2011 10:56 PM, Gerd Hoffmann wrote:
> When attaching a new device we must send a wakeup request to the root
> hub, otherwise the guest will not notice the new device in case the
> usb hub is suspended.
>
> Signed-off-by: Gerd Hoffmann<kraxel@redhat.com>
> ---
> hw/usb-hub.c | 1 +
> 1 files changed, 1 insertions(+), 0 deletions(-)
>
> diff --git a/hw/usb-hub.c b/hw/usb-hub.c
> index 09c6516..7b47079 100644
> --- a/hw/usb-hub.c
> +++ b/hw/usb-hub.c
> @@ -163,6 +163,7 @@ static void usb_hub_attach(USBPort *port1)
> } else {
> port->wPortStatus&= ~PORT_STAT_LOW_SPEED;
> }
> + usb_wakeup(&s->dev);
> }
>
> static void usb_hub_detach(USBPort *port1)
pulled, In what cases, the usb hub will be suspended? and how to tell it
happened? thanks.
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [Qemu-devel] [PATCH 1/3] usb-hub: wakeup on attach
2011-11-02 9:38 ` hkran
@ 2011-11-02 12:56 ` Gerd Hoffmann
2011-11-03 6:01 ` hkran
0 siblings, 1 reply; 14+ messages in thread
From: Gerd Hoffmann @ 2011-11-02 12:56 UTC (permalink / raw)
To: hkran; +Cc: qemu-devel
Hi,
>> static void usb_hub_detach(USBPort *port1)
> pulled, In what cases, the usb hub will be suspended? and how to tell it
> happened? thanks.
The guest enables the remote-wakeup feature. 'lspci -v' (within the
guest) shows it.
cheers,
Gerd
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [Qemu-devel] [PATCH 1/3] usb-hub: wakeup on attach
2011-11-02 12:56 ` Gerd Hoffmann
@ 2011-11-03 6:01 ` hkran
2011-11-03 8:41 ` Gerd Hoffmann
0 siblings, 1 reply; 14+ messages in thread
From: hkran @ 2011-11-03 6:01 UTC (permalink / raw)
To: Gerd Hoffmann; +Cc: hkran, qemu-devel
On 11/02/2011 08:56 PM, Gerd Hoffmann wrote:
> Hi,
>
>>> static void usb_hub_detach(USBPort *port1)
>> pulled, In what cases, the usb hub will be suspended? and how to tell it
>> happened? thanks.
> The guest enables the remote-wakeup feature. 'lspci -v' (within the
> guest) shows it.
>
> cheers,
> Gerd
>
I use the param "-usb -usbdevice tablet" to start qemu and then usb_del
tablet via monitor console after getting qemu up.
I saw this by entering lsusb -v
Bus 001 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 1.10
bDeviceClass 9 Hub
bDeviceSubClass 0 Unused
bDeviceProtocol 0 Full speed (or root) hub
bMaxPacketSize0 64
idVendor 0x1d6b Linux Foundation
idProduct 0x0001 1.1 root hub
bcdDevice 2.06
iManufacturer 3 Linux 2.6.32-131.0.15.el6.x86_64 uhci_hcd
iProduct 2 UHCI Host Controller
iSerial 1 0000:00:01.2
..........................
Hub Descriptor:
bLength 9
bDescriptorType 41
nNbrPorts 2
wHubCharacteristic 0x000a
No power switching (usb 1.0)
Per-port overcurrent protection
bPwrOn2PwrGood 1 * 2 milli seconds
bHubContrCurrent 0 milli Ampere
DeviceRemovable 0x00
PortPwrCtrlMask 0xff
Hub Port Status:
Port 1: 0000.0100 power
Port 2: 0000.0100 power
Device Status: 0x0003
Self Powered
Remote Wakeup Enabled
(It seems that the Remote-wakeup feature has been enabled)
There are two ports with the status "power", and I do not know how to
make it suspended yet. Can you help more ?
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [Qemu-devel] [PATCH 1/3] usb-hub: wakeup on attach
2011-11-03 6:01 ` hkran
@ 2011-11-03 8:41 ` Gerd Hoffmann
2011-11-03 9:20 ` hkran
0 siblings, 1 reply; 14+ messages in thread
From: Gerd Hoffmann @ 2011-11-03 8:41 UTC (permalink / raw)
To: hkran; +Cc: hkran, qemu-devel
On 11/03/11 07:01, hkran wrote:
> On 11/02/2011 08:56 PM, Gerd Hoffmann wrote:
>> Hi,
>>
>>>> static void usb_hub_detach(USBPort *port1)
>>> pulled, In what cases, the usb hub will be suspended? and how to tell it
>>> happened? thanks.
>> The guest enables the remote-wakeup feature. 'lspci -v' (within the
>> guest) shows it.
>>
>> cheers,
>> Gerd
>>
> I use the param "-usb -usbdevice tablet" to start qemu and then usb_del
> tablet via monitor console after getting qemu up.
> I saw this by entering lsusb -v
>
> Bus 001 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
> Device Descriptor:
> bLength 18
> bDescriptorType 1
> bcdUSB 1.10
> bDeviceClass 9 Hub
> bDeviceSubClass 0 Unused
> bDeviceProtocol 0 Full speed (or root) hub
> bMaxPacketSize0 64
> idVendor 0x1d6b Linux Foundation
> idProduct 0x0001 1.1 root hub
> bcdDevice 2.06
> iManufacturer 3 Linux 2.6.32-131.0.15.el6.x86_64 uhci_hcd
> iProduct 2 UHCI Host Controller
> iSerial 1 0000:00:01.2
> ..........................
> Hub Descriptor:
> bLength 9
> bDescriptorType 41
> nNbrPorts 2
> wHubCharacteristic 0x000a
> No power switching (usb 1.0)
> Per-port overcurrent protection
> bPwrOn2PwrGood 1 * 2 milli seconds
> bHubContrCurrent 0 milli Ampere
> DeviceRemovable 0x00
> PortPwrCtrlMask 0xff
> Hub Port Status:
> Port 1: 0000.0100 power
> Port 2: 0000.0100 power
> Device Status: 0x0003
> Self Powered
> Remote Wakeup Enabled
>
> (It seems that the Remote-wakeup feature has been enabled)
> There are two ports with the status "power", and I do not know how to
> make it suspended yet. Can you help more ?
That is the root hub created by the linux kernel, not the hub emulated
by qemu. If you hook up just a single device no hob is needed.
cheers,
Gerd
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [Qemu-devel] [PATCH 1/3] usb-hub: wakeup on attach
2011-11-03 8:41 ` Gerd Hoffmann
@ 2011-11-03 9:20 ` hkran
0 siblings, 0 replies; 14+ messages in thread
From: hkran @ 2011-11-03 9:20 UTC (permalink / raw)
To: Gerd Hoffmann; +Cc: hkran, qemu-devel
On 11/03/2011 04:41 PM, Gerd Hoffmann wrote:
> On 11/03/11 07:01, hkran wrote:
>> On 11/02/2011 08:56 PM, Gerd Hoffmann wrote:
>>> Hi,
>>>
>>>>> static void usb_hub_detach(USBPort *port1)
>>>> pulled, In what cases, the usb hub will be suspended? and how to tell it
>>>> happened? thanks.
>>> The guest enables the remote-wakeup feature. 'lspci -v' (within the
>>> guest) shows it.
>>>
>>> cheers,
>>> Gerd
>>>
>> I use the param "-usb -usbdevice tablet" to start qemu and then usb_del
>> tablet via monitor console after getting qemu up.
>> I saw this by entering lsusb -v
>>
>> Bus 001 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
>> Device Descriptor:
>> bLength 18
>> bDescriptorType 1
>> bcdUSB 1.10
>> bDeviceClass 9 Hub
>> bDeviceSubClass 0 Unused
>> bDeviceProtocol 0 Full speed (or root) hub
>> bMaxPacketSize0 64
>> idVendor 0x1d6b Linux Foundation
>> idProduct 0x0001 1.1 root hub
>> bcdDevice 2.06
>> iManufacturer 3 Linux 2.6.32-131.0.15.el6.x86_64 uhci_hcd
>> iProduct 2 UHCI Host Controller
>> iSerial 1 0000:00:01.2
>> ..........................
>> Hub Descriptor:
>> bLength 9
>> bDescriptorType 41
>> nNbrPorts 2
>> wHubCharacteristic 0x000a
>> No power switching (usb 1.0)
>> Per-port overcurrent protection
>> bPwrOn2PwrGood 1 * 2 milli seconds
>> bHubContrCurrent 0 milli Ampere
>> DeviceRemovable 0x00
>> PortPwrCtrlMask 0xff
>> Hub Port Status:
>> Port 1: 0000.0100 power
>> Port 2: 0000.0100 power
>> Device Status: 0x0003
>> Self Powered
>> Remote Wakeup Enabled
>>
>> (It seems that the Remote-wakeup feature has been enabled)
>> There are two ports with the status "power", and I do not know how to
>> make it suspended yet. Can you help more ?
> That is the root hub created by the linux kernel, not the hub emulated
> by qemu. If you hook up just a single device no hob is needed.
>
> cheers,
> Gerd
>
Yes, it is. After I usb_add a storage a 8-port hub emulated is added :
lsusb
Bus 001 Device 004: ID 0000:7777
Bus 001 Device 003: ID 0000:0000
Bus 001 Device 002: ID 0627:0001 Adomax Technology Co., Ltd
Bus 001 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Device 003 is the hub and Device 004 is my storage
lsusb -s 3 -v:
Bus 001 Device 003: ID 0000:0000
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 1.10
bDeviceClass 9 Hub
bDeviceSubClass 0 Unused
bDeviceProtocol 0 Full speed (or root) hub
bMaxPacketSize0 8
idVendor 0x0000
idProduct 0x0000
bcdDevice 1.01
iManufacturer 1 QEMU 0.15.50
iProduct 2 QEMU USB Hub
iSerial 3 314159
bNumConfigurations 1
...........................................
iConfiguration 0
bmAttributes 0xe0
Self Powered
Remote Wakeup
MaxPower 0mA
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 0
bAlternateSetting 0
bNumEndpoints 1
bInterfaceClass 9 Hub
bInterfaceSubClass 0 Unused
bInterfaceProtocol 0 Full speed (or root) hub
iInterface 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x81 EP 1 IN
bmAttributes 3
Transfer Type Interrupt
Synch Type None
Usage Type Data
wMaxPacketSize 0x0002 1x 2 bytes
bInterval 255
Hub Descriptor:
bLength 10
bDescriptorType 41
nNbrPorts 8
wHubCharacteristic 0x000a
No power switching (usb 1.0)
Per-port overcurrent protection
bPwrOn2PwrGood 1 * 2 milli seconds
bHubContrCurrent 0 milli Ampere
DeviceRemovable 0x00 0x00
PortPwrCtrlMask 0xff 0x00
Hub Port Status:
Port 1: 0000.0103 power enable connect
Port 2: 0000.0100 power
Port 3: 0000.0100 power
Port 4: 0000.0100 power
Port 5: 0000.0100 power
Port 6: 0000.0100 power
Port 7: 0000.0100 power
Port 8: 0000.0100 power
Device Status: 0x0001
Self Powered
my storage is connected to the port 1.
after usb_del, all the hub port status will turn to power. how should i
do next to get it to be suspended?thanks.
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [Qemu-devel] [PATCH 1/3] usb-hub: wakeup on attach
2011-11-01 14:56 ` [Qemu-devel] [PATCH 1/3] usb-hub: wakeup on attach Gerd Hoffmann
2011-11-02 9:38 ` hkran
@ 2011-11-10 3:45 ` hkran
2011-11-22 12:23 ` Gerd Hoffmann
1 sibling, 1 reply; 14+ messages in thread
From: hkran @ 2011-11-10 3:45 UTC (permalink / raw)
To: Gerd Hoffmann; +Cc: qemu-devel
On 11/01/2011 10:56 PM, Gerd Hoffmann wrote:
> When attaching a new device we must send a wakeup request to the root
> hub, otherwise the guest will not notice the new device in case the
> usb hub is suspended.
>
> Signed-off-by: Gerd Hoffmann<kraxel@redhat.com>
> ---
> hw/usb-hub.c | 1 +
> 1 files changed, 1 insertions(+), 0 deletions(-)
>
> diff --git a/hw/usb-hub.c b/hw/usb-hub.c
> index 09c6516..7b47079 100644
> --- a/hw/usb-hub.c
> +++ b/hw/usb-hub.c
> @@ -163,6 +163,7 @@ static void usb_hub_attach(USBPort *port1)
> } else {
> port->wPortStatus&= ~PORT_STAT_LOW_SPEED;
> }
> + usb_wakeup(&s->dev);
> }
>
> static void usb_hub_detach(USBPort *port1)
It seems "attach" works. But the "detach" did not work.
I added over two usbdevice "tablet" and usb_del them. I found sometimes
the guest did not know that the tablet had been deleted in host when the
port
's status changed to "suspend".
After I add usb_wake like this in the function usb_hub_detach. the
problem can be fixed.
static void usb_hub_detach(USBPort *port1)
{
USBHubState *s = port1->opaque;
USBHubPort *port = &s->ports[port1->index];
usb_wakeup(&s->dev);
---------------------------------->wakeup when detach
/* Let upstream know the device on this port is gone */
s->dev.port->ops->child_detach(s->dev.port, port1->dev);
port->wPortStatus &= ~PORT_STAT_CONNECTION;
port->wPortChange |= PORT_STAT_C_CONNECTION;
if (port->wPortStatus & PORT_STAT_ENABLE) {
port->wPortStatus &= ~PORT_STAT_ENABLE;
port->wPortChange |= PORT_STAT_C_ENABLE;
}
}
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [Qemu-devel] [PATCH 1/3] usb-hub: wakeup on attach
2011-11-10 3:45 ` hkran
@ 2011-11-22 12:23 ` Gerd Hoffmann
0 siblings, 0 replies; 14+ messages in thread
From: Gerd Hoffmann @ 2011-11-22 12:23 UTC (permalink / raw)
To: hkran; +Cc: qemu-devel
Hi,
> After I add usb_wake like this in the function usb_hub_detach. the
> problem can be fixed.
>
> static void usb_hub_detach(USBPort *port1)
> {
> USBHubState *s = port1->opaque;
> USBHubPort *port = &s->ports[port1->index];
>
> usb_wakeup(&s->dev);
> ---------------------------------->wakeup when detach
Fix added to usb patch queue.
thanks,
Gerd
^ permalink raw reply [flat|nested] 14+ messages in thread
end of thread, other threads:[~2011-11-22 12:23 UTC | newest]
Thread overview: 14+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-11-01 14:56 [Qemu-devel] [PULL] usb patch queue Gerd Hoffmann
2011-11-01 14:56 ` [Qemu-devel] [PATCH 1/3] usb-hub: wakeup on attach Gerd Hoffmann
2011-11-02 9:38 ` hkran
2011-11-02 12:56 ` Gerd Hoffmann
2011-11-03 6:01 ` hkran
2011-11-03 8:41 ` Gerd Hoffmann
2011-11-03 9:20 ` hkran
2011-11-10 3:45 ` hkran
2011-11-22 12:23 ` Gerd Hoffmann
2011-11-01 14:56 ` [Qemu-devel] [PATCH 2/3] usb: change VID/PID for usb-hub and usb-msd to prevent conflict Gerd Hoffmann
2011-11-01 15:29 ` Andreas Färber
2011-11-01 15:40 ` Gerd Hoffmann
2011-11-01 14:56 ` [Qemu-devel] [PATCH 3/3] usb-host: fix host close Gerd Hoffmann
2011-11-01 18:13 ` [Qemu-devel] [PULL] usb patch queue Anthony Liguori
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.