more USB patches for 2.6.22
PATCH 1/1 more USB patches for 2.6.22
Here are some more USB patches and fixes against your 2.6.22 git tree.
They add a new usb gadget driver, more urb->status cleanups, a new sysfs attribute to get the raw config of the usb device, and some bugfixes and documentation updates.
Please pull from:
master.kernel.org:/pub/scm/linux/kernel/git/gregkh/usb-2.6.git/
The full patches will be sent to the linux-usb-devel mailing list, if anyone wants to see them.
thanks,
greg k-h
MAINTAINERS | 6 + drivers/usb/atm/cxacru.c | 3 +- drivers/usb/atm/speedtch.c | 7 +- drivers/usb/atm/ueagle-atm.c | 6 +- drivers/usb/atm/usbatm.c | 11 +- drivers/usb/class/cdc-acm.c | 18 +- drivers/usb/class/usblp.c | 27 +- drivers/usb/core/hcd.c | 131 +- drivers/usb/core/hub.c | 10 +- drivers/usb/core/message.c | 34 +- drivers/usb/core/sysfs.c | 53 + drivers/usb/core/urb.c | 88 +- drivers/usb/gadget/Kconfig | 57 +- drivers/usb/gadget/Makefile | 1 + drivers/usb/gadget/amd5536udc.c | 3454 ++++++++++++++++++++++++++++++++ drivers/usb/gadget/amd5536udc.h | 626 ++++++ drivers/usb/gadget/ether.c | 4 + drivers/usb/gadget/gadget_chips.h | 10 +- drivers/usb/gadget/m66592-udc.c | 255 ++-- drivers/usb/gadget/m66592-udc.h | 610 +++--- drivers/usb/gadget/serial.c | 25 +- drivers/usb/host/isp116x-hcd.c | 187 +- drivers/usb/host/r8a66597-hcd.c | 110 +- drivers/usb/host/r8a66597.h | 87 +- drivers/usb/host/u132-hcd.c | 17 +- drivers/usb/host/uhci-q.c | 59 +- drivers/usb/image/mdc800.c | 45 +- drivers/usb/image/microtek.c | 19 +- drivers/usb/misc/adutux.c | 59 +- drivers/usb/misc/appledisplay.c | 9 +- drivers/usb/misc/auerswald.c | 25 +- drivers/usb/misc/ftdi-elan.c | 21 +- drivers/usb/misc/iowarrior.c | 21 +- drivers/usb/misc/ldusb.c | 20 +- drivers/usb/misc/legousbtower.c | 28 +- drivers/usb/misc/phidgetkit.c | 13 +- drivers/usb/misc/phidgetmotorcontrol.c | 13 +- drivers/usb/misc/usblcd.c | 11 +- drivers/usb/misc/usbtest.c | 4 +- drivers/usb/misc/uss720.c | 5 +- drivers/usb/serial/io_ti.c | 10 +- drivers/usb/serial/mos7720.c | 5 - drivers/usb/serial/mos7840.c | 19 - drivers/usb/serial/sierra.c | 119 +- drivers/usb/storage/dpcm.c | 56 +- drivers/usb/storage/onetouch.c | 13 +- drivers/usb/storage/unusual_devs.h | 18 + 47 files changed, 5350 insertions(+), 1079 deletions(-) create mode 100644 drivers/usb/gadget/amd5536udc.c create mode 100644 drivers/usb/gadget/amd5536udc.h
---------------
Alan Stern (8):
isp116x-hcd: prepare for urb->status
USB: add "descriptors" binary sysfs attribute
USB: fix warning caused by autosuspend counter going negative
UHCI: short control URBs get a status stage
USB: documentation update for usb_unlink_urb
USB: usb-storage: unusual_devs entry for Nikon D100
USB: move routines in hcd.c
USB: change name of spinlock in hcd.c
Florin Malita (1):
USB: mos7720, mos7840: remove redundant urb check
Greg Kroah-Hartman (22):
USB: atm: cxacru: clean up urb->status usage
USB: atm: speedtch: clean up urb->status usage
USB: atm: ueagle-atm: clean up urb->status usage
USB: atm: usbatm: clean up urb->status usage
USB: class: cdc-acm: clean up urb->status usage
USB: class: usblp: clean up urb->status usage
USB: storage: onetouch: clean up urb->status usage
USB: image: mdc800: clean up urb->status usage
USB: image: microtek: clean up urb->status usage
USB: core: message: clean up urb->status usage
USB: misc: adtux: clean up urb->status usage
USB: misc: appledisplay: clean up urb->status usage
USB: misc: auerswald: clean up urb->status usage
USB: misc: ftdi-elan: clean up urb->status usage
USB: misc: iowarrior: clean up urb->status usage
USB: misc: ldusb: clean up urb->status usage
USB: misc: legousbtower: clean up urb->status usage
USB: misc: phidgetkit: clean up urb->status usage
USB: misc: phidgetmotorcontrol: clean up urb->status usage
USB: misc: usblcd: clean up urb->status usage
USB: misc: usbtest: clean up urb->status usage
USB: misc: uss720: clean up urb->status usageJesper Juhl (1):
USB: Remove pointless conditional in drivers/usb/serial/io_ti.c::edge_shutdown()
Kevin Lloyd (2):
USB: sierra: Add TRU-Install (c) Support
USB: sierra: Add new devices
Matthias Kaehlcke (4):
USB: use mutex instead of semaphore in the USB gadget serial driver
USB: use mutex instead of semaphore in the ELAN U132 adapter driver
USB: use mutex instead of semaphore in the Adutux driver
USB: use mutex instead of semaphore in the FTDI ELAN driver
Pete Zaitcev (1):
USB: usblp: "Big cleanup" breaks O_NONBLOCK
S.Caglar Onur (1):
USB: drivers/usb/storage/dpcm.c whitespace cleanup
Thomas Dahlmann (2):
USB: amd5536 UDC driver (in GEODE southbridge)
USB: MAINTAINERS entry for amd5536udc
Yoshihiro Shimoda (2):
USB: m66592-udc: fixes some problems
USB: r8a66597-hcd: fixes some problem
Quoted 6 lines · Greg KH
Here are some more USB patches and fixes against your 2.6.22 git tree.
They add a new usb gadget driver, more
urb->statuscleanups, a new sysfs attribute to get the raw config of the usb device, and some bugfixes and documentation updates.
I have a flaky(?) USB multi-card reader, and I just got an oops with it on x86-64. It was preceded by some of the IO errors:
end_request: I/O error, dev sdc, sector 0
sd 11:0:0:1: [sdc] Result: hostbyte=0x07 driverbyte=0x00
end_request: I/O error, dev sdc, sector 0
Buffer I/O error on device sdc, logical block 0
usb 2-5: reset high speed USB device using ehci_hcd and address 10 usb 2-5: reset high speed USB device using ehci_hcd and address 10 usb 2-5: reset high speed USB device using ehci_hcd and address 10 usb 2-5: reset high speed USB device using ehci_hcd and address 10 usb 2-5: reset high speed USB device using ehci_hcd and address 10 usb 2-5: reset high speed USB device using ehci_hcd and address 10 usb 2-5: device descriptor read/all, error 0
but the oops itself happened when I then removed the USB device due to the errors, causing this:
usb 2-5: USB disconnect, address 10
sd 11:0:0:1: [sdc] Result: hostbyte=0x07 driverbyte=0x00
end_request: I/O error, dev sdc, sector 0 Buffer I/O error on device sdc, logical block 0 sd 11:0:0:1: [sdc] Result: hostbyte=0x07 driverbyte=0x00
end_request: I/O error, dev sdc, sector 0 Buffer I/O error on device sdc, logical block 0 sd 11:0:0:1: [sdc] Result: hostbyte=0x01 driverbyte=0x00
end_request: I/O error, dev sdc, sector 0 Buffer I/O error on device sdc, logical block 0 sd 11:0:0:1: [sdc] Result: hostbyte=0x01 driverbyte=0x00
end_request: I/O error, dev sdc, sector 0 Buffer I/O error on device sdc, logical block 0 sd 11:0:0:1: [sdc] Result: hostbyte=0x01 driverbyte=0x00
end_request: I/O error, dev sdc, sector 0 Buffer I/O error on device sdc, logical block 0 Dev sdc: unable to read RDB block 0
sd 11:0:0:1: [sdc] Result: hostbyte=0x01 driverbyte=0x00
end_request: I/O error, dev sdc, sector 0 Buffer I/O error on device sdc, logical block 0
unable to read partition table
sd 11:0:0:1: [sdc] Attached SCSI removable disk sd 11:0:0:1: Attached scsi generic sg3 type 0
usb-storage: device scan complete
and finally the oops itself:
general protection fault: 0000 [1] SMP CPU 0 Modules linked in: Pid: 214, comm: khubd Not tainted 2.6.22-g20082208 #56 RIP: 0010:[<ffffffff80274670>] [<ffffffff80274670>] kfree+0x27/0x81 RSP: 0018:ffff81012bd0dd90 EFLAGS: 00010212 RAX: 037d001b2d7d01b8 RBX: ffff810001000000 RCX: ffffffff80314f0f RDX: ffff81012337b738 RSI: 037c811b2e7d01b8 RDI: ff241b0cff251c0b RBP: ff241b0cff251c0b R08: ffffffff8062eed0 R09: ffff81012bc0f430 R10: 0000000000000287 R11: ffffffff803ed953 R12: ffff81008642f140 R13: 0000000000000000 R14: 0000000000001540 R15: 0000000000000008 FS: 0000000000000000(0000) GS:ffffffff806a0000(0000) knlGS:0000000000000000 CS: 0010 DS: 0018 ES: 0018 CR0: 000000008005003b CR2: 00002b02340410a0 CR3: 000000010bd4b000 CR4: 00000000000006e0 Process khubd (pid: 214, threadinfo ffff81012bd0c000, task ffff81012bed36b0) Stack: ffff81012337b738 ffff81011e9fa800 ffff81008642f140 ffffffff803f50c4 ffff81012337b738 ffff81011e9fa800 ffffffff8064ae70 ffff81011e9fa888 ffff81012ad60978 ffff81012ad60800 ffff81012ad60800 ffffffff803ed96c Call Trace: [<ffffffff803f50c4>] usb_destroy_configuration+0x85/0xee [<ffffffff803ed96c>] usb_release_dev+0x19/0x55 [<ffffffff803140c9>] kobject_cleanup+0x52/0x70 [<ffffffff803140e7>] kobject_release+0x0/0x9 [<ffffffff80314f0f>] kref_put+0x5d/0x68 [<ffffffff803ef78f>] hub_thread+0x390/0xb27 [<ffffffff8023dcb1>] autoremove_wake_function+0x0/0x2e [<ffffffff803ef3ff>] hub_thread+0x0/0xb27 [<ffffffff8023db95>] kthread+0x47/0x76 [<ffffffff8020c0f8>] child_rip+0xa/0x12 [<ffffffff8023db4e>] kthread+0x0/0x76 [<ffffffff8020c0ee>] child_rip+0x0/0x12 Code: 48 8b 06 25 00 40 02 00 48 3d 00 40 02 00 75 04 48 8b 76 10 RIP [<ffffffff80274670>] kfree+0x27/0x81 RSP <ffff81012bd0dd90>
Looks like another reference counting bug...
Linus
Quoted 14 lines · Linus Torvalds
I have a flaky(?) USB multi-card reader, and I just got an oops with it on x86-64. It was preceded by some of the IO errors:
end_request: I/O error, dev sdc, sector 0
sd 11:0:0:1: [sdc] Result: hostbyte=0x07 driverbyte=0x00
end_request: I/O error, dev sdc, sector 0
Buffer I/O error on device sdc, logical block 0
usb 2-5: reset high speed USB device usingehci_hcdand address 10 usb 2-5: reset high speed USB device usingehci_hcdand address 10 usb 2-5: reset high speed USB device usingehci_hcdand address 10 usb 2-5: reset high speed USB device usingehci_hcdand address 10 usb 2-5: reset high speed USB device usingehci_hcdand address 10 usb 2-5: reset high speed USB device usingehci_hcdand address 10 usb 2-5: device descriptor read/all, error 0
Error 0? That sounds bogus. Perhaps this patch will take care of everything:
http://marc.info/?l=linux-usb-devel&m=118531582013355&w=2
It has already been submitted to Greg KH, but if it takes care of your problem you might want to merge it immediately. It fixes an obvious bug that was recently introduced.
Alan Stern
usb-storage autosuspend bug?
In reply to Linus TorvaldsAlan and Oliver, was this caused by the autosuspend changes for usb-storage?
thanks,
greg k-h
Quoted 95 lines · Linus Torvalds
Quoted 6 lines · Greg KH
Here are some more USB patches and fixes against your 2.6.22 git tree.
They add a new usb gadget driver, more
urb->statuscleanups, a new sysfs attribute to get the raw config of the usb device, and some bugfixes and documentation updates.I have a flaky(?) USB multi-card reader, and I just got an oops with it on x86-64. It was preceded by some of the IO errors:
end_request: I/O error, dev sdc, sector 0
sd 11:0:0:1: [sdc] Result: hostbyte=0x07 driverbyte=0x00
end_request: I/O error, dev sdc, sector 0
Buffer I/O error on device sdc, logical block 0
usb 2-5: reset high speed USB device usingehci_hcdand address 10 usb 2-5: reset high speed USB device usingehci_hcdand address 10 usb 2-5: reset high speed USB device usingehci_hcdand address 10 usb 2-5: reset high speed USB device usingehci_hcdand address 10 usb 2-5: reset high speed USB device usingehci_hcdand address 10 usb 2-5: reset high speed USB device usingehci_hcdand address 10 usb 2-5: device descriptor read/all, error 0but the oops itself happened when I then removed the USB device due to the errors, causing this:
usb 2-5: USB disconnect, address 10
sd 11:0:0:1: [sdc] Result: hostbyte=0x07 driverbyte=0x00
end_request: I/O error, dev sdc, sector 0 Buffer I/O error on device sdc, logical block 0 sd 11:0:0:1: [sdc] Result: hostbyte=0x07 driverbyte=0x00
end_request: I/O error, dev sdc, sector 0 Buffer I/O error on device sdc, logical block 0 sd 11:0:0:1: [sdc] Result: hostbyte=0x01 driverbyte=0x00
end_request: I/O error, dev sdc, sector 0 Buffer I/O error on device sdc, logical block 0 sd 11:0:0:1: [sdc] Result: hostbyte=0x01 driverbyte=0x00
end_request: I/O error, dev sdc, sector 0 Buffer I/O error on device sdc, logical block 0 sd 11:0:0:1: [sdc] Result: hostbyte=0x01 driverbyte=0x00
end_request: I/O error, dev sdc, sector 0 Buffer I/O error on device sdc, logical block 0 Dev sdc: unable to read RDB block 0
sd 11:0:0:1: [sdc] Result: hostbyte=0x01 driverbyte=0x00
end_request: I/O error, dev sdc, sector 0 Buffer I/O error on device sdc, logical block 0
unable to read partition table
sd 11:0:0:1: [sdc] Attached SCSI removable disk sd 11:0:0:1: Attached scsi generic sg3 type 0
usb-storage: device scan completeand finally the oops itself:
general protection fault: 0000 [1] SMP CPU 0 Modules linked in: Pid: 214, comm: khubd Not tainted 2.6.22-g20082208 #56 RIP: 0010:[<ffffffff80274670>] [<ffffffff80274670>] kfree+0x27/0x81 RSP: 0018:ffff81012bd0dd90 EFLAGS: 00010212 RAX: 037d001b2d7d01b8 RBX: ffff810001000000 RCX: ffffffff80314f0f RDX: ffff81012337b738 RSI: 037c811b2e7d01b8 RDI: ff241b0cff251c0b RBP: ff241b0cff251c0b R08: ffffffff8062eed0 R09: ffff81012bc0f430 R10: 0000000000000287 R11: ffffffff803ed953 R12: ffff81008642f140 R13: 0000000000000000 R14: 0000000000001540 R15: 0000000000000008 FS: 0000000000000000(0000) GS:ffffffff806a0000(0000) knlGS:0000000000000000 CS: 0010 DS: 0018 ES: 0018 CR0: 000000008005003b CR2: 00002b02340410a0 CR3: 000000010bd4b000 CR4: 00000000000006e0 Process khubd (pid: 214, threadinfo ffff81012bd0c000, task ffff81012bed36b0) Stack: ffff81012337b738 ffff81011e9fa800 ffff81008642f140 ffffffff803f50c4 ffff81012337b738 ffff81011e9fa800 ffffffff8064ae70 ffff81011e9fa888 ffff81012ad60978 ffff81012ad60800 ffff81012ad60800 ffffffff803ed96c Call Trace: [<ffffffff803f50c4>] usb_destroy_configuration+0x85/0xee [<ffffffff803ed96c>] usb_release_dev+0x19/0x55 [<ffffffff803140c9>] kobject_cleanup+0x52/0x70 [<ffffffff803140e7>] kobject_release+0x0/0x9 [<ffffffff80314f0f>] kref_put+0x5d/0x68 [<ffffffff803ef78f>] hub_thread+0x390/0xb27 [<ffffffff8023dcb1>] autoremove_wake_function+0x0/0x2e [<ffffffff803ef3ff>] hub_thread+0x0/0xb27 [<ffffffff8023db95>] kthread+0x47/0x76 [<ffffffff8020c0f8>] child_rip+0xa/0x12 [<ffffffff8023db4e>] kthread+0x0/0x76 [<ffffffff8020c0ee>] child_rip+0x0/0x12 Code: 48 8b 06 25 00 40 02 00 48 3d 00 40 02 00 75 04 48 8b 76 10 RIP [<ffffffff80274670>] kfree+0x27/0x81 RSP <ffff81012bd0dd90>Looks like another reference counting bug...
Linus
Re: [linux-usb-devel] usb-storage autosuspend bug?
Am Donnerstag 26 Juli 2007 schrieb Greg KH:
Quoted 2 lines
Alan and Oliver, was this caused by the autosuspend changes for usb-storage?
The oops itself looks like refcounting. What caused the initial io error does not become clear from the log. It is possible that the device cannot stand suspension. But there's no evidence from that. On the contrary, these devices usually do an unplug/plug cycle, which is not in the log.
Regards
Oliver
Re: [linux-usb-devel] usb-storage autosuspend bug?
Quoted 8 lines · Oliver Neukum
Am Donnerstag 26 Juli 2007 schrieb Greg KH:
Quoted 2 lines
Alan and Oliver, was this caused by the autosuspend changes for usb-storage?
The oops itself looks like refcounting. What caused the initial io error does not become clear from the log. It is possible that the device cannot stand suspension. But there's no evidence from that. On the contrary, these devices usually do an unplug/plug cycle, which is not in the log.
I don't think it's a refcounting problem. My guess is that the underlying cause is the bug in your urb->status removal patch for usb_start_wait_urb() -- the one I fixed here:
http://marc.info/?l=linux-usb-devel&m=118531582013355&w=2
Of course, my guess could be wrong. I haven't tried to recreate Linus's bug with that patch reverted. But with the patch present I was not able to duplicate the bug.
Alan Stern
Re: [linux-usb-devel] usb-storage autosuspend bug?
Quoted 10 lines · Alan Stern
I don't think it's a refcounting problem. My guess is that the underlying cause is the bug in your
urb->statusremoval patch forusb_start_wait_urb()-- the one I fixed here:http://marc.info/?l=linux-usb-devel&m=118531582013355&w=2
Of course, my guess could be wrong. I haven't tried to recreate Linus's bug with that patch reverted. But with the patch present I was not able to duplicate the bug.
I finally got around to testing this, and while I still have problems with that reader, I can't reproduce the oops with that patch in place either.
Of course, I only ever saw the oops once, so I really don't know how reproducible it was. Maybe you have to remove the USB reader at _just_ the right moment. But I did get
... usb 2-6: reset high speed USB device using ehci_hcd and address 4 usb 2-6: USB disconnect, address 4 sd 6:0:0:1: [sdc] Result: hostbyte=0x07 driverbyte=0x00 end_request: I/O error, dev sdc, sector 1999855 ... scsi 6:0:0:1: rejecting I/O to dead device
so the testing was done with the kind of behaviour that resulted in an oops and a dead khubd last time around.
So I guess I'll ack the patch for whatever that is worth.
Over to you, Greg..
Linus
Re: [linux-usb-devel] usb-storage autosuspend bug?
Quoted 29 lines · Linus Torvalds
Quoted 10 lines · Alan Stern
I don't think it's a refcounting problem. My guess is that the underlying cause is the bug in your
urb->statusremoval patch forusb_start_wait_urb()-- the one I fixed here:http://marc.info/?l=linux-usb-devel&m=118531582013355&w=2
Of course, my guess could be wrong. I haven't tried to recreate Linus's bug with that patch reverted. But with the patch present I was not able to duplicate the bug.
I finally got around to testing this, and while I still have problems with that reader, I can't reproduce the oops with that patch in place either.
Of course, I only ever saw the oops once, so I really don't know how reproducible it was. Maybe you have to remove the USB reader at _just_ the right moment. But I did get
... usb 2-6: reset high speed USB device using ehci_hcd and address 4 usb 2-6: USB disconnect, address 4 sd 6:0:0:1: [sdc] Result: hostbyte=0x07 driverbyte=0x00 end_request: I/O error, dev sdc, sector 1999855 ... scsi 6:0:0:1: rejecting I/O to dead device
Quoted 4 lines
so the testing was done with the kind of behaviour that resulted in an oops and a dead khubd last time around.
So I guess I'll ack the patch for whatever that is worth.
Ok, the patch is in the series I just sent to you.
If you run into that bug again, please let us know.
thanks,
greg k-h