David Brownell [Mon, 29 Dec 2003 04:30:55 +0000 (20:30 -0800)]
[PATCH] USB: let USB_{PEGASUS,USBNET} depend on NET_ETHERNET
Adrian Bunk wrote:
> I observed the following small problem in 2.6:
>
> - MII depends on NET_ETHERNET
> - USB_PEGASUS and USB_USBNET select MII, but they depend only on NET
>
> The patch below lets USB_PEGASUS and USB_USBNET depend on NET_ETHERNET
> instead of NET to fix this issue.
Actually how about this one instead? The PEGASUS bit is the same.
The difference is that MII (and CRC32) are only attributed to the
driver code that needs those ... AX8817X needs both, ZAURUS just
needs CRC32. The core (which should eventually become a separate
module) shouldn't depend on those modules at all.
Also both CDCETHER and AX8817X are marked as non-experimental;
I recall Dave Hollis submitted a patch to do that for AX8817X,
and CDCETHER now seems to have gotten enough success reports too.
David Brownell [Mon, 29 Dec 2003 04:29:03 +0000 (20:29 -0800)]
[PATCH] USB: <linux/usb_gadget.h> doc updates
As more people have been using this API, the need for some
clarifications has (no surprise!) came up.
Most significant is the halt processing, needed to make
Alan's "File Storage Gadget" (mass storage class, talks
to usb-storage and Windows) handle fault cases cleanly.
Gadget drivers can't halt IN endpoints until the FIFO is
emptied by the host ... virtually no hardware tries to
sequence the DATA and STALL packets by itself.
Adam Kropelin [Mon, 29 Dec 2003 04:21:02 +0000 (20:21 -0800)]
[PATCH] USB: Stop hiddev generating empty events
hiddev is mistakenly returning empty hiddev_event structures for report
events. According to Documentation/usb/hiddev.txt, report events are
only sent when HIDDEV_FLAG_REPORT and HIDDEV_FLAG_UREF are both set.
Currently, report events from hid cause hiddev to generate empty
hiddev_event events when HIDDEV_FLAG_UREF is not set.
Ingo Molnar [Mon, 29 Dec 2003 02:23:53 +0000 (18:23 -0800)]
[PATCH] Fix context switch accounting
Noted by Nick Piggin, fix based on a patch by Linus.
I've done some additional cleanups: fixed a compilation warning on UP
and cleaned up the goto pick_next_task code. Moved the 'unlikely' to
the test as a whole.
I've tested this patch and the context-switch stats look OK.
Bill Marr [Fri, 19 Dec 2003 03:11:27 +0000 (19:11 -0800)]
[PATCH] Status Query On My MCT-U232 Patch
Brief Patch Description:
Fix a problem in the 'mct_u232' driver whereby output data gets held up in the
USB/RS-232 adapter for RS-232 devices which don't assert the 'CTS' signal.
Background:
The Belkin F5U109 is a 9-pin USB/RS-232 adapter that is supported by the
existing 'mct_u232' kernel module. Recently, I've been testing it under the
2.4.22 (Slackware 9.1) kernel and the 2.6.0-test9 kernel.
I've connected a Garmin 'GPS35 TracPak' GPS receiver (RS-232 interface) and an
ordinary RS-232 external modem to my PC's USB port via the Belkin F5U109
adapter.
Problem:
Although _reads_ from either of the RS-232 devices mentioned above work fine
via the Belkin adapter, _writes_ to the GPS receiver are not being seen by
the GPS. Writes to the modem, however, work perfectly.
Aside: The 'Linux USB Users' archives show that at least one other person
(circa May 2002) had the exact same problem I'm having, but it sounds like no
solution was ever determined because the person in question just bought a
different USB/RS-232 adapter.
Investigation:
Using the 'seyon' terminal emulator in Linux and a crude hardware RS-232
"breakout box" that I hacked together, I've determined that the problem is
related to the RTS/CTS RS-232 hardware handshaking.
After further investigation, I've concluded that RS-232 devices which do not
assert the 'Clear To Send' ('CTS') signal prevent the Belkin F5U109 adapter
from transmitting data to the RS-232 device when the current (version 1.1)
'mct_u232' module is used. The data gets "queued up" (up to a point -- 16
bytes, I think) in the adapter but never transmitted.
Since this GPS receiver works perfectly (reads and writes) when connected to a
PC running W98se using the same Belkin adapter and the Belkin-supplied
Windows driver, the Linux driver became suspect.
After some testing with SniffUSB, I found that the Windows driver sends a
couple of unique undocumented USB 'device requests' that the Linux driver
does not. As it turns out, the second of those 2 requests is critical in
making the adapter transmit data to a device which doesn't assert 'CTS'.
For completeness, the Windows driver in use was determined from the 'Device
Manager', 'Driver File Details' page:
U2SPORT.VXD
Provider: Magic Control Technology
File version: 1.21P.0104 for Win98/Me
Solution:
My patch adds the 2 missing USB 'device request' commands right after a
baud-change command. This mimics the operation of the W98 driver.
Unfortunately, after much testing, I found no other operation (besides a
baud-change request) under Windows that triggers either of these 2 'device
request' commands. This makes it impossible to fully document the behavior of
these requests, but I've made entries for them alongside the others in the
'mct_u232.h' file.
Purely for clarity, the patch also modifies various comments in 'mct_u232.h',
mostly to reflect proper sizes of the various 'USB Device Request' fields per
the USB 1.1 specification.
The patch also updates the version number of the driver, corrects a minor
typographical error, and documents a difference in the length of the data in
a 'baud rate change' command for certain adapters which use a coded baud-rate
rather than the conventional RS-232 baud rate divisor.
I've provided (tested) patches for both the 2.4.22 and the 2.6.0-test9
kernels.
Please note that the changes to 'mct_u232.h' apply to both 2.4.22 and
2.6.0-test9 since that file has not changed between those kernel releases.
Nevertheless, I've included that (same) portion of the patch in both
attachments for simplicity.
Dmitry Torokhov [Thu, 18 Dec 2003 13:35:52 +0000 (05:35 -0800)]
[PATCH] Input: remove synaptics config option
Remove Synaptics config option. Since mousedev was fixed with regard to
touchpads generating absolute events there should no troubles for users
migrating from older kernel or different hardware so we can have it always
compiled in.
Dmitry Torokhov [Thu, 18 Dec 2003 13:35:36 +0000 (05:35 -0800)]
[PATCH] Input: add serio_[un]register_port_delayed to fix deadlock
Add serio_[un]register_port_delayed to allow delayed execution of
register/unregister code (via kseriod) when it is not clear whether
serio_sem has been taken or not. Use in i8042.c to avoid deadlock
Dmitry Torokhov [Thu, 18 Dec 2003 13:35:20 +0000 (05:35 -0800)]
[PATCH] Input: psmouse fixes
- Remove psmouse_pm_callback since i8042 now has its own resume
handler which will issue reconnect request
- Do not close/open serio port in psmouse_reconnect since i8042
should restore ports to the proper state before calling reconnect
Dmitry Torokhov [Thu, 18 Dec 2003 13:34:47 +0000 (05:34 -0800)]
[PATCH] Input: implement resume methods
- Implement resume methods using serio_reconnect facility
- Register i8042 with sysfs
- Register i8042 with older PM scheme to restore keyboard
and mouse for APM users
- Convert parameter handling to the new style
- Unregister port not only when there is no free IRQ but
also if the port fails to activate.
Dmitry Torokhov [Thu, 18 Dec 2003 13:34:30 +0000 (05:34 -0800)]
[PATCH] Input: add psmouse_proto parameter
New parameter psmouse_proto to replace psmouse_noext. Allows to specify
highest PS/2 protocol extension that kernel has permission to negotiate
(bare|imps|exps). psmouse_noext marked as deprecated and emits a warning
when used. parameter parsing converted to the new scheme.
Vojtech Pavlik [Thu, 18 Dec 2003 13:33:58 +0000 (05:33 -0800)]
[PATCH] Fixes for keyboard 2.4 compatibility
I have two patches I'd like to get tested by a wider audience before
sending them to Linus for the 2.6 tree.
The first one fixes an issue in current 2.6-test with AT keyboard repeat
rate setting, the second one makes setkeycodes/getkeycodes work the same
as 2.4, so that people can keep their setups. It also fixes japanese and
korean key handling.
I just want to share a little change that I've did to psmouse_pm_callback()
which without this, my synaptics touchpad would prevent my laptop (IBM
Thinkpad T30) from suspending.
Dmitry Torokhov [Thu, 18 Dec 2003 13:33:25 +0000 (05:33 -0800)]
[PATCH] Input: unregister i8042 port when writing to control register fails
I think that if we can't write to the control register it's not less critical
than not having a free IRQ so we better unregister port in this case as well.
Peter Osterlund [Thu, 18 Dec 2003 13:33:09 +0000 (05:33 -0800)]
[PATCH] synaptics powerpro fix
Made the packet checking code less strict, so that the driver works also for
touchpads that don't strictly follow the synaptics absolute protocol.
Problem reported by Anders Kaseorg using a PowerPro C 3:16 laptop.
Dmitry Torokhov [Thu, 18 Dec 2003 13:32:52 +0000 (05:32 -0800)]
[PATCH] Synaptics: use serio_reconnect
Input/Synaptics:
1. Support for pass-through port moved from Synaptics driver to psmouse
itself, it is cleaner and should allow using it in other drivers if
needed.
2. The driver makes use of new reconnect functionality in serio. It will
try to keep the same input device after resume or when it resets itself.
3. If mouse is disconnected or other mouse plugged in while sleeping the
driver should correctly recognize that and create a new serio/input
device.
Dmitry Torokhov [Thu, 18 Dec 2003 13:32:03 +0000 (05:32 -0800)]
[PATCH] Add black list to handler<->device matching
Input: Introduce an optional blacklist field in input_handler structure.
When loading a new device or a new handler try to match device
against handler's black list before doing match on required
attributes.
This allows to get rid of "surprises" in connect functions, IMO
connect should only fail when it physically can not connect, not
because it decides it does not like device.
Dmitry Torokhov [Thu, 18 Dec 2003 13:31:47 +0000 (05:31 -0800)]
[PATCH] serio: possible race between port removal and kseriod
Input: There is a possibility that serio might get deleted while there
are outstanding events involving that serio waiting for kseriod
to process them. Invalidate them so kseriod thread will just
drop dead events.
Jes Sorensen [Wed, 17 Dec 2003 00:26:43 +0000 (16:26 -0800)]
[PATCH] qla1280 crash fix in error handling
This fixes a bug in the qla1280 driver where it would leave a pointer to
an on the stack completion event in a command structure if
qla1280_mailbox_command fails. The result is that the interrupt handler
later tries to complete() garbage on the stack. The mailbox command can
fail if a device on the bus decides to lock up etc.
Jens Axboe [Wed, 17 Dec 2003 00:12:29 +0000 (16:12 -0800)]
[PATCH] CDROM_SEND_PACKET bug
I just found Yet Another Bug in scsi_ioctl - CDROM_SEND_PACKET puts a
kernel pointer in hdr->cmdp, where sg_io() expects to find user address.
This worked up until recently because of the memcpy bug, but now it
doesn't because we do the proper copy_from_user().
This fix undoes the user copy code from sg_io, and instead makes the
SG_IO ioctl copy it locally. This makes SG_IO and CDROM_SEND_PACKET
agree on the calling convention, and everybody is happy.
I've tested that both
cdrecord -dev=/dev/hdc -inq
and
cdrecord -dev=ATAPI:/dev/hdc -inq
works now. The former will use SG_IO, the latter CDROM_SEND_PACKET (and
incidentally would work in both 2.4 and 2.6, if it wasn't for
CDROM_SEND_PACKET sucking badly in 2.4).
Jens Axboe [Mon, 15 Dec 2003 23:51:55 +0000 (15:51 -0800)]
[PATCH] Fix IDE bus reset and DMA disable when reading blank DVD-R
From Jon Burgess:
There is a problems with blank DVD media using the ide-cd driver.
When we attempt to read the blank disk, the drive responds to the read
request by returning a "blank media" error. The kernel doesn't have
any special case handling for this sense value and retries the request
a couple of times, then gives up and does a bus reset and disables DMA
to the device.
Which obviously doesn't help the situation.
The sense key value of 8 isn't listed in ide-cd.h, but it is listed in
scsi.h as a "BLANK_CHECK" error.
This trivial patch treats this error condition as a reason to abort
the request. This behaviour is the same as what we do with a blank CD-R.
It looks like the same fix might be desired for 2.4 as well, although
is perhaps not so important since scsi-ide is normally used instead.
Neil Brown [Mon, 15 Dec 2003 08:35:56 +0000 (00:35 -0800)]
[PATCH] Fix possible bio corruption with RAID5
1/ make sure raid5 doesn't try to handle multiple overlaping
requests at the same time as this would confuse things badly.
Currently it justs BUGs if this is attempted.
2/ Fix a possible data-loss-on-write problem. If two or
more bio's that write to the same page are processed at the
same time, only the first was actually commited to storage.
3/ Fix a use-after-free bug. raid5 keeps the bio's it is given
in linked lists when more than one bio touch a single page.
In some cases the tail of this list can be freed, and
the current test for 'are we at the end' isn't reliable.
This patch strengths the test to make it reliable.
David Brownell [Mon, 15 Dec 2003 05:38:28 +0000 (21:38 -0800)]
[PATCH] USB: <linux/usb_ch9.h> new descriptor codes, types
This patch adds definitions:
- New "video" class, for video cameras and more complicated devices;
- New "Interface association" descriptor type, used by video class,
along with two other assigned desciptor type codes (OTG, "debug")
listed in the same ECN to the USB 2.0 spec;
- Type declarations for "Interface association" and OTG descriptors.
It also replaces three copies of USB_DT_CS_* declarations in audio
support with one in <linux/usb_ch9.h>, and uses the newly exposed
symbol in "usbnet". (Near as I can tell, the convention for those
"class specific" descriptor types started with audio, and was then
adopted by several other class specifications.)
Linus Torvalds [Sun, 14 Dec 2003 10:28:27 +0000 (02:28 -0800)]
Fix thread group leader zombie leak
Petr Vandrovec noticed a problem where the thread group leader
would not be properly reaped if the parent of the thread group
was ignoring SIGCHLD, and the thread group leader had exited
before the last sub-thread.
Linus Torvalds [Sat, 13 Dec 2003 13:36:30 +0000 (05:36 -0800)]
More subtle SMP bugs in prepare_to_wait()/finish_wait().
This time we have a SMP memory ordering issue in prepare_to_wait(),
where we really need to make sure that subsequent tests for the
event we are waiting for can not migrate up to before the wait
queue has been set up.
René Scharfe [Sat, 13 Dec 2003 03:45:10 +0000 (19:45 -0800)]
[PATCH] HPFS: missing lock_kernel() in hpfs_readdir()
In 2.5.x, the BKL was pushed from vfs_readdir() into the filesystem
specific functions. But only the unlock_kernel() made it into the HPFS
code, lock_kernel() got lost on the way. This rendered the filesystem
unusable.
This adds the missing lock_kernel(). It's been tested by Timo Maier who
also reported the problem earlier today.
David Brownell [Fri, 12 Dec 2003 06:36:36 +0000 (22:36 -0800)]
[PATCH] USB: usb driver binding fixes
There are problems lurking in the driver binding code for usb,
with highlights being disagreements about:
(a) locks: usb bus writelock v. BKL v. driver->serialize
(b) driver: interface.driver v. interface.dev.driver
Fixing those is going to take multiple patches, and I thought
I'd start out with a small one that's relatively simple. This:
- Cleans up locking.
* Updates comments and kerneldoc to reflect that the
usb bus writelock is what protects against conflicts
when binding/unbinding drivers to devices.
* Removes driver->serialize ... not needed, since
it's only gotten when the bus writelock is held.
* Removes incorrect "must have BKL" comments, and one
bit of code that tried to use BKL not the writelock.
- Removes inconsistencies about what driver is bound to the
interface ... for now "interface.driver" is "the truth".
* usb_probe_interface() will no longer clobber bindings
established with usb_driver_claim_interface().
* usb_driver_release_interface() calls device_release_driver()
for bindings established with probe(), so the driver model
updates (sysfs etc) are done as expected.
* usb_unbind_interface() doesn't usb_driver_release_interface(),
since release() should eventually _always_ call unbind()
(indirectly through device_release_driver).
Essentially there are two driver binding models in USB today,
and this patch makes them start to cooperate properly:
- probe()/disconnect(), used by most drivers. This goes
through the driver model core.
- claim()/release(), used by CDC drivers (ACM, Ethernet)
and audio to claim extra interfaces and by usbfs since it
can't come in through probe(). Bypasses driver model.
That interface.driver pointer can be removed by changing the
claim()/release() code to use the driver model calls added
for that purpose: device_{bind,release}_driver(). I didn't
do that in this patch, since it'll have side effects like
extra disconnect() calls that drivers will need to handle.
A separate usbfs patch is needed to fix its driver binding;
mostly just to use the right lock, but those changes were
more extensive and uncovered other issues. (Like, I think,
some that Duncan has been noticing ...)
David T. Hollis [Fri, 12 Dec 2003 06:31:42 +0000 (22:31 -0800)]
[PATCH] USB: Mark AX8817x usbnet driver as non-experimental
Trivial patch to remove the Experimental mark on the AX8817x driver
portion of usbnet. The driver seems to have made the rounds enough and
is working quite well.
Linus Torvalds [Fri, 12 Dec 2003 06:20:08 +0000 (22:20 -0800)]
Fix subtle bug in "finish_wait()", which can cause kernel stack
corruption on SMP because of another CPU still accessing a waitqueue
even after it was de-allocated.
Use a careful version of the list emptiness check to make sure we
don't de-allocate the stack frame before the waitqueue is all done.
Nemosoft Unv. [Fri, 12 Dec 2003 06:13:03 +0000 (22:13 -0800)]
[PATCH] USB: PWC 8.12 driver update
Attached you will find patches that will bring the Philips Webcam driver
(PWC) up to version 8.12. The most important new feature is support for
the motorized pan & tilt feature of the new Logitech QuickCam
Orbit/Sphere, which I don't think is in the stores yet (at least it's
not on Logitech's website), but should be there soon. In addition, the
documentation in the kernel about the cams is updated.
Alan Stern [Fri, 12 Dec 2003 03:57:12 +0000 (19:57 -0800)]
[PATCH] USB: Allow configuration #0
This patch helped Jon Wilson. It allows devices to have a configuration
numbered 0, in spite of the standard convention that config #0 really
means unconfigured.
Matthew Dharm [Fri, 12 Dec 2003 01:35:24 +0000 (17:35 -0800)]
[PATCH] USB: don't send any MODE SENSE commands to usb mass storage devices
This patch basically eliminates the use of MODE_SENSE or MODE_SENSE_10 for
direct-access USB storage devices. That $&%*! command has caused us more
trouble than all the others combined, and after more than a year we still
don't have a good way of handling/using them.
I constantly get complaints about devices which don't work because of the
way 2.5/6 uses MODE_SENSE and MODE_SENSE_10 -- this patch will greatly
increase compatiblity with devices. As with the patch to limit transfer
sizes, I'd like to see this applied as soon as possible.
Matt
> ----- Forwarded message from Patrick Mansfield <patmans@us.ibm.com> -----
>
> Date: Thu, 20 Nov 2003 08:28:27 -0800
> From: Patrick Mansfield <patmans@us.ibm.com>
> Subject: [PATCH] don't send any MODE SENSE commands to usb mass storage devices
> To: mdharm-scsi@one-eyed-alien.net
Matthew -
Is this patch in your queue? I don't see it in Linus' tree yet.
Don't send any MODE SENSE commands to usb mass storage devices.
Alan Stern [Thu, 11 Dec 2003 09:06:32 +0000 (01:06 -0800)]
[PATCH] USB storage: Another unusual_devs.h update
On Thu, 20 Nov 2003, Stefan J. Betz wrote:
> Hello People,
>
> i have some Mitsumi USB Floppy Drive with the following Data:
> Manufactur: Mitsumi
> Typ : D353FUE
>
> When i plug this Device into my Linux Box (Kernel 2.6.0-test9), i get
> the following messages in my Syslog:
>
> Nov 20 22:17:57 mobileone kernel: hub 1-0:1.0: new USB device on port 1, assigned address 2
> Nov 20 22:17:57 mobileone kernel: usb-storage: This device (03ee,6901,0100 S 04 P 00) has unneeded SubClass and Protocol entries in unusual_devs.h
> Nov 20 22:17:57 mobileone kernel: Please send a copy of this message to <linux-usb-devel@lists.sourceforge.net>
> Nov 20 22:17:57 mobileone kernel: scsi2 : SCSI emulation for USB Mass Storage devices
> Nov 20 22:17:57 mobileone kernel: Vendor: MITSUMI Model: USB FDD Rev: 1039
> Nov 20 22:17:57 mobileone kernel: Type: Direct-Access ANSI SCSI revision: 02
> Nov 20 22:17:57 mobileone kernel: Attached scsi generic sg2 at scsi2, channel 0, id 0, lun 0, type 0
> I that is enough information to Support that drive (or how can i use ist
> today?)
>
> Greeting Betz Stefan
Thank you for sending this in. The usb-storage driver will be updated
sometime after 2.6.0-final is released.
Alexander Oltu [Thu, 11 Dec 2003 08:35:03 +0000 (00:35 -0800)]
[PATCH] USB storage: patch for unusual_devs.h
I send a patch and copy of /proc/bus/usb/devices for my 5`25 external
USB enclosure. I don't know exactly manufacturer of this device, but
model is CD-509.
It will be nice if it helps somebody else.
Alan Stern [Thu, 11 Dec 2003 08:24:48 +0000 (00:24 -0800)]
[PATCH] USB storage: unusual_devs.h entry revision
Here is another update for unusual_devs.h in both 2.6 and 2.4. No
urgency.
On Wed, 12 Nov 2003, Aris Basic wrote:
> Device Sony Memory Stick Reader MSAC-US1
> usb-storage: This device (054c,002d,0100 S 04 P 01) has unneeded SubClass and Protocol entries in unusual_devs.h
> Please send a copy of this message to <linux-usb-devel@lists.sourceforge.net>
Martin Pool [Thu, 11 Dec 2003 03:55:55 +0000 (19:55 -0800)]
[PATCH] USB storage: add unusual storage device entry for Minolta DiMAGE
Yes, it seems to work OK on the 7i with this updated patch. I don't
have a 7 or 7Hi to try, but everything on the web seems to say the USB
firmware works the same way.
Stephane Galles [Thu, 11 Dec 2003 03:51:43 +0000 (19:51 -0800)]
[PATCH] USB storage: patch for Kyocera S5 camera
I've seen some entries in 2.4.22 and 2.6.0 unusual_devs.h
for Kyocera Finecam S3 et S4 cameras and I own a Finecam S5
that does not work out of the box either
(here is the beast : http://www.yashica.com/digital/finecams5/finecams5.html)
so I found the unusual_devs.h entry and submitted it some month
ago at http://www.qbik.ch/usb/devices/showdev.php?id=1626
for the 2.4 kernels
I thought It would be nice to have the whole Finecam family
in Unusual_devs.h for 2.6.0
The patch for the 2.6.0-test9 is attached with this mail
It differs from the entry I submitted at www.qbik.ch
as I used the new SC/PR_DEVICE flags and got rid of the
IGNORE_SER flag from 2.4
Do you want a patch for 2.4 too ? If so, I should test my
old 2.4 entry with the lastest 2.4 Kernels, coz on a daily
basis I use a 2.4.20, which is rather old. Moreover, I could
used the SC/PR_DEVICE flags too for 2.4.22 (keeping the IGNORE_SER flag
though)
By the way, several entries with the running patch :
David Brownell [Tue, 9 Dec 2003 10:05:06 +0000 (02:05 -0800)]
[PATCH] USB: usb_hcd_unlink_urb() test for list membership
This is a minor cleanup that replaces a test for non-null urb->hcpriv
with "is the urb on this list". HCDs don't need to use hcpriv in that
way, and in general this is a safer way to test that. (AIO does much
the same thing in its kiocb cancelation paths.)
Herbert Xu [Tue, 9 Dec 2003 09:40:44 +0000 (01:40 -0800)]
[PATCH] USB: Fix connect/disconnect race
This patch was integrated by you in 2.4 six months ago. Unfortunately
it never got into 2.5. Without it you can end up with crashes such
as http://bugs.debian.org/218670
Alan Stern [Tue, 9 Dec 2003 03:48:52 +0000 (19:48 -0800)]
[PATCH] USB storage: Add comments explaining new s-g usage
On Sun, 30 Nov 2003, Matthew Dharm wrote:
> I'm going to pass this one along to Greg, but I think some places in this
> could really use some better comments. Especially the way you use a single
> buffer inside the loop -- it took me a few minutes to figure out how your
> logic to refresh the buffer with new data worked.
>
> I'm also wondering if the access_xfer_buf() function could use some more
> header comments, stating why this is needed (i.e. spelling out the
> kmap()-isms).
Okay, here it is. This patch basically just adds comments. Each routine
that uses the new scatter-gather function gets a brief explanation of
what's going on, and access_xfer_buf() itself gets detailed comments
saying what it's doing and why it's necessary. You may even want to cut
some of it back; I was pretty verbose.
Alan Stern [Tue, 9 Dec 2003 03:46:03 +0000 (19:46 -0800)]
[PATCH] USB storage: Convert sddr55 to use the new s-g routines
This patch changes the sddr55 driver to make it use the new scatter-gather
routines. It has not been tested, but perhaps Andries Brouwer will be
able to try it out.
Alan Stern [Tue, 9 Dec 2003 03:44:56 +0000 (19:44 -0800)]
[PATCH] USB storage: Update scatter-gather handling in the shuttle-usbat
This patch updates the shuttle_usbat driver to use the new scatter-gather
transfer routines. The small set of changes needed speaks well for the
original organization of the code.
Alan Stern [Tue, 9 Dec 2003 03:43:57 +0000 (19:43 -0800)]
[PATCH] USB storage: Update scatter-gather handling in the isd200 driver
This patch fixes the scatter-gather handling in isd200, replacing an
incorrect routine there with calls to the new routine added in the
previous patch. It also removes a couple of places where the driver
returned data for commands that shouldn't get any (TEST-UNIT-READY and
START-STOP).
Alan Stern [Tue, 9 Dec 2003 03:42:16 +0000 (19:42 -0800)]
[PATCH] USB storage: Convert datafab to use the new s-g routines
This patch updates the datafab driver to the new scatter-gather handling,
which makes it safe for systems with >1GByte of memory.
It has been tested by Eduard Hasenleithner.
Tom Rini [Tue, 9 Dec 2003 01:42:34 +0000 (17:42 -0800)]
[PATCH] USB: mark the scanner driver as obsolete
On Mon, Dec 01, 2003 at 11:21:58AM -0800, Greg KH wrote:
> Can't you use xsane without the scanner kernel driver? I thought the
> latest versions used libusb/usbfs to talk directly to the hardware.
> Because of this, the USB scanner driver is marked to be removed from the
> kernel sometime in the near future.
After a bit of mucking around (and possibly finding a bug with debian's
libusb/xsane/hotplug interaction, nothing seems to run
/etc/hotplug/usb/libusbscanner and thus only root can scan, anyone whose
got this working please let me know), the problem does not exist if I
only use libusb xsane.
Matthew Dharm [Tue, 9 Dec 2003 01:35:37 +0000 (17:35 -0800)]
[PATCH] USB storage: fix for jumpshot and datafab devices
This patch fixes some obvious errors in the jumpshot and datafab drivers.
This should close out Bugzilla bug #1408
> Date: Mon, 1 Dec 2003 12:14:53 -0500 (EST)
> From: Alan Stern <stern@rowland.harvard.edu>
> Subject: Patch from Eduard Hasenleithner
> To: Matthew Dharm <mdharm-usb@one-eyed-alien.net>
> cc: USB Storage List <usb-storage@one-eyed-alien.net>
>
> Matt:
>
> Did you see this patch? It was posted to the usb-development mailing list
> about a week ago, before I started making all my changes. It is clearly
> correct and necessary.
>
> Alan Stern
Jens Axboe [Tue, 9 Dec 2003 01:03:05 +0000 (17:03 -0800)]
[PATCH] scsi_ioctl memcpy'ing user address
James reported a bug in scsi_ioctl.c where it mem copies a user pointer
instead of using copy_from_user(). I inadvertently introduced this one
when getting rid of CDROM_SEND_PACKET. Here's a trivial patch to fix it.
Alan Stern [Mon, 8 Dec 2003 09:45:52 +0000 (01:45 -0800)]
[PATCH] USB storage: Change sddr09 to use the new s-g access routine
This patch updates the sddr09 driver to use the new scatter-gather access
routine. After installing it, the user who experienced memory access
violations says everything is now working properly.
Alan Stern [Mon, 8 Dec 2003 09:45:21 +0000 (01:45 -0800)]
[PATCH] USB storage: Fix scatter-gather buffer access in usb-storage core
This patch adds a routine to protocol.c that correctly transfers data to
or from a scatter-gather buffer. According to Jens Axboe, we've been
using page_address() incorrectly -- it's necessary to use kmap() instead
-- and in fact it doesn't give the desired result when the buffers are
located in high memory. This could affect anyone using a system with 1 GB
or more of RAM, and one user has already reported such a problem (as you
know).
The three fixup routines in protocol.c and usb.c have been changed to use
the new s-g access routine. When similar adjustments have been made to
all the subdrivers, we will be able to eliminate the raw_bulk.c source
file entirely.
Alan Stern [Mon, 8 Dec 2003 09:45:04 +0000 (01:45 -0800)]
[PATCH] USB storage: Remove dead code from debug.c
This patch removes an uncalled subroutine from debug.c. I only noticed it
when tracking down scatter-gather usage; there didn't seem to be any
reason to repair it since it wasn't being used anywhere.
Alan Stern [Mon, 8 Dec 2003 09:44:49 +0000 (01:44 -0800)]
[PATCH] USB storage: Enhance sddr09 to work with 64 MB SmartMedia cards
This patch was written by Andries Brouwer. It adds to sddr09 the ability
to use 64 MB SmartMedia cards. I have added a few minor alterations to
make it fit in with my sequence of other patches.
Alan Stern [Mon, 8 Dec 2003 09:44:31 +0000 (01:44 -0800)]
[PATCH] USB storage: Remove unneeded scatter-gather operations in sddr09
This patch removes some unnecessary scatter-gather code from the sddr09
driver. In its place a single smaller buffer is re-used each time through
an I/O loop, as opposed to transferring all the data at once.
Andries Brouwer kindly tested this and suggested some improvements to get
it working right.
Added vendor/product ids for Epson, Genius, Microtek, Plustek,
Reflecta, and Visioneer scanners. Removed ids for HP PSC devices as
these are supported by the hpoj userspace driver.
Alan Stern [Mon, 8 Dec 2003 09:08:03 +0000 (01:08 -0800)]
[PATCH] USB: Fix khubd synchronization
It improves synchronization with hub_irq() and guarantees that the hub
disconnect() routine doesn't exit until the URB's completion routine has
finished.
Alan Stern [Mon, 8 Dec 2003 08:54:38 +0000 (00:54 -0800)]
[PATCH] USB: khubd optimization
It changes spin_lock_save() to spin_lock() within the completion routine
and list_del()/INIT_LIST_HEAD() to list_del_init(). It's nothing more
than a minor optimization.
David Brownell [Mon, 8 Dec 2003 05:28:46 +0000 (21:28 -0800)]
[PATCH] USB: fix remove device after set_configuration
If a device can't be configured, the current test9 code forgets
to clean it out of sysfs. This resolves that issue, so the retry
in usb_new_device() stands a chance of working.
The enumeration code still doesn't handle such errors well, but
at least this way that hub port can be used for another device.