* [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 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).