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