- 28 Oct, 2002 2 commits
-
-
Greg Kroah-Hartman authored
USB: fix the usb input drivers due to interrupt urb no automatic resubmission change to the usb core.
-
Greg Kroah-Hartman authored
USB: fix the usb serial drivers due to interrupt urb no automatic resubmission change to the usb core.
-
- 25 Oct, 2002 1 commit
-
-
David Brownell authored
Here's that promised patch to remove the problematic "automagic resubmit" mode from the API for interrupt transfers. It covers the core (including main HCDs) and a few essential drivers. All urbs now obey a simple rule: submit them once, then wait for some completion callback. Or unlink the urb if you're impatient, canceling the i/o request (which may have been partially completed). Bulk and interrupt transfers now behave the same at the API level, except that only interrupt transfers have bandwidth failure modes. Previously, interrupt transfers were different from bulk transfers in several ways that made limited sense. The only thing that's supposed to be special is achieving service latency guarantees by using the reserved periodic bandwidth. But there were a lot of other restrictions, plus HCD-dependent behaviors/bugs. Doing something like sending a 97 byte message to a device portably was a thing of pain, since the low-level "one packet per interval" rule was pushed up to drivers instead of being handled inside HCDs like it is for bulk, and sending a final "short" packet meant an urb unlink/relink. (Fixing this required UHCI to use a queue of TDs, like EHCI and OHCI; fixed by 2.5.44, and a small change in this patch. I'm not sure the unlink/relink issues have ever been really addressed.) Neither 1-msec transfer intervals nor USB 2.0 "high bandwidth" mode can reliably be serviced without a multi-buffered queue of interrupt transfers. (Comes almost for free with TD queueing; as of 2.5.44 all HCDs should do this.) And then there's "automagic resubmission", which made HCDs keep urbs during their complete() callbacks in a rather curious state ... half-owned by HCD, half-owned by device driver, not exactly linked but maybe not unlinked either. Bug-prone, and hard to test. So that's all gone now! This particular patch - updates the main hcds to use normal urb-completion logic for interrupt transfers, nothing special. (*) - makes usbcore (hub and root hub drivers) expect that, and removes an old kernel 2.3 "urb state confusion" workaround. (urb->dev is no longer nulled to distinguish unlinked urbs, since there's no longer a "half-in/half-out" state.) also the relevent kerneldoc is updated. - enables the 'usbtest' support for interrupt transfers, in both queued and non-queued modes. (but I haven't made time to test this ... the hcds "should" be fine since they use the same code now for bulk and interrupt, and bulk checked out.) - teaches hid-core, usbkbd, and usbmouse how to resubmit interrupt transfers explicitly. usb keyboards/mice work, but some less-common HID devices won't. - updated usb/net drivers (catc, kaweth, pegasus, rtl8150) But it doesn't update all device drivers that use interrupt transfers. The failure mode for un-converted drivers will be that interrupts after the first one get lost, and the fix for those drivers will be simple (see what the drivers here do). (*) It doesn't touch non-{E,O,U}HCI HCDs, like the SL-811HS, since those changes will require hardware as well as some quality time with 'usbtest'.
-
- 24 Oct, 2002 1 commit
-
-
Greg Kroah-Hartman authored
driver core: add support for calling /sbin/hotplug when classes are found and removed from the system.
-
- 23 Oct, 2002 2 commits
-
-
David Brownell authored
The EHCI driver was never adjusting the full speed maximum packet size up (when enumerating through a transaction translating hub). This broke the enumeration of some devices (maxpacket != 8) pretty early. This patch updates EHCI to fix the bug, and does minor cleanup to usbcore logic that figures out ep0 maxpacket. I left the partial read in for all speeds, even though only full speed needs it.
-
Arnaud Quette authored
The following one line patch (against 2.5.44) fixes an index problem when connecting a new hiddev device, when kernel isn't compiled with CONFIG_USB_DYNAMIC_MINORS. Previous attempt to open hiddev device terminated with an ENODEV error. Note that this fix works with either dynamic minors flag enabled or not.
-
- 22 Oct, 2002 1 commit
-
-
Oliver Neukum authored
-
- 21 Oct, 2002 8 commits
-
-
John Tyner authored
> The following patch removes the old framebuf_size and framebuf_read_start > values from the cam structure and simplifes the read function. It also > moves the needs dummy read check into the read_frame function. cp and dd > should both still work. This is in addition to the previous patch. It should allow any programs that read entire frames to receive a new frame with each successive read. Programs that read less than the entire frame will read until they reach the end of the frame. They will then read 0 bytes (signifying EOF). The next read will start the next frame.
-
John Tyner authored
The following patch removes the old framebuf_size and framebuf_read_start values from the cam structure and simplifes the read function. It also moves the needs dummy read check into the read_frame function. cp and dd should both still work.
-
Stuart MacDonald authored
Inlined are a few more patches to 2.5.43 that fix problems that were discovered during QA. 1-firm4.07 :: I've moved to the bottom since it's huge Updates the firmware to 4.07. Fixes a bug introduced in 4.05 where RTS is high after boot. Also fixes a bug where the whiteheat would allow data reception after boot when no ports were open. 2-fix-dtr-rts I didn't know this, but the firmware open command also handles raising the signals for me. This code is superflous. 3-fix-read-urb Read polling was started right away in whiteheat_open(). Coupled with the firmware bug fixed above where data could be received by a port that wasn't open, this caused the whiteheat_read_callback to fire before open() was finished, and in some cases this caused harm to the tty layer. I didn't track down the exact mechanism because either moving the read polling to the last operation of open() or using the fixed firmware caused the crash to stop happening. I have stack traces if you'd like to have a look; it looks like something scribbles on the stack, but I couldn't figure out what eactly, as the scribbled data didn't match anything in the whiteheat driver or the test applications. 4-fix-ixoff RELEVANT_IFLAG masks off the software flow control bits, so that a change that is restricted to the soft flow bits will be ignored. This is the email I sent earlier; I've decided to just not use the macro for now, but I'd still like to know if the macro should be fixed,. ..Stu
-
Oliver Neukum authored
-
David Brownell authored
This is a slightly cleaned up version of that earlier patch: - Makes both copies of the clear_halt() logic know that usb_pipein() returns boolean (zero/not) not integer (0/1). This resolves a problem folk have had with usb-storage. (I looked at kernel uses of usb_pipein and it really was only the clear_halt logic that cares.) - Removes some code from the "standard" version; no point in Linux expecting devices to do something neither Microsoft nor Apple will test for.
-
David Brownell authored
This is Pavel's patch, with some cleanups and re-sorting of the various SA-1100 cases. According to Pavel this works as well as his earlier version ... which is to say, maybe not yet, he saw a uhci "very bad" error (on 2.5.43). I'm sending it along since it's clearly the right way to support the Zaurus, and it can't be that far off given the code I've seen.
-
David Brownell authored
This should resolve the problems Nicolas Mailhot reported, where an old BIOS seemed reluctant to release the controller and the dbg() message delayed things enough to work. At worst, it'll eliminate dbg() messages as a factor.
-
Greg Kroah-Hartman authored
Thanks to Hiroyuki ARAKI <hiro@zob.ne.jp> for the information.
-
- 18 Oct, 2002 25 commits
-
-
Linus Torvalds authored
-
Patrick Mochel authored
The problem was that when the refcount hit 0, it was unconditionally assuming that it had been added, which is wrong. The patch below corrects that, and fixes the Oops when loading the floppy driver.
-
bk://linuxusb.bkbits.net/pnp-2.5Linus Torvalds authored
into home.transmeta.com:/home/torvalds/v2.5/linux
-
Linus Torvalds authored
into home.transmeta.com:/home/torvalds/v2.5/linux
-
Andi Kleen authored
Several ports (x86-64,ppc64,sparc64) which do 32bit ioctl emulation have functions for drivers to let them define their own translation handlers. So far it was a bit complicated to use because there was no standard include file that declares the prototypes for this stuff. Then drivers and other subsystems can start to declare their own ioctl translation handlers. This patch add include/linux/ioctl32.h to fix this. The actual implementation is in arch specific code. It has been coordinated with DaveM and Anton. This patch is needed for the x86-64 merge I sent in separate mail. There is currently no preprocessor symbol that the drivers can test to see if they should use this. So far they have to check arch symbols. This will be fixed later when all 64bit ports that need it add the dynamic ioctl registration API too (that's ia64,s390x,mips64)
-
Andi Kleen authored
This fixes a few files that got lost with the last merge and merges with 2.5.43/i386. Only changes architecture specific files. It depends on one other patch (for linux/ioctl32.h) which I'm sending separately. Changes: - Include missing files (pageattr.c) and Makefile changes - Update IA32 subsystem. Various small fixes and a big merge with sparc64. - Change HZ to 1000 - Merge some of the 2.5.43/i386 profiling changes. No full oprofile yet. - Fix many warnings - Update defconfig - Various other smaller cleanups and bugfixes.
-
Alexander Viro authored
* switched to private queues * set ->queue
-
Linus Torvalds authored
into home.transmeta.com:/home/torvalds/v2.5/linux
-
Alexander Viro authored
* switched to private queues * set ->queue and ->private_data * switched to use of ->bd_disk/->rq_disk * merged private blocksize, etc. arrays into nbd_dev[] * cleaned up
-
Alexander Viro authored
* switched to private queues * set ->queue and ->private_data * switched to use of ->rq_disk
-
Alexander Viro authored
sbpcd.c: removes bogus duplicate definition of sbpcd_lock, use of CURRENT (we are using private queue) and call of invalidate_buffers() in ->media_changed() (caller does it itself). That went in a changeset from davej - looks like a merge problem... sr.c: braino in ifdefed printk - s/disk/cd->disk/. Thanks to jejb for spotting that one...
-
bk://linux-bt.bkbits.net/bt-2.5Linus Torvalds authored
into home.transmeta.com:/home/torvalds/v2.5/linux
-
Linus Torvalds authored
into home.transmeta.com:/home/torvalds/v2.5/linux
-
David S. Miller authored
into nuts.ninka.net:/home/davem/src/BK/sparc-2.5
-
David S. Miller authored
-
Linus Torvalds authored
-
Dipankar Sarma authored
This adds a set of list macros that make handling of list protected by RCU simpler. The interfaces added are - list_add_rcu list_add_tail_rcu - Adds an element by taking care of memory barrier (wmb()). list_del_rcu - Deletes an element but doesn't re-initialize the pointers in the element for supporting RCU based traversal. list_for_each_rcu __list_for_each_rcu - Traversal of RCU protected list - takes care of memory barriers transparently.
-
Dipankar Sarma authored
This first RCU helper patch adds a read_barrier_depends() primitive to all archs which is NOP for archs that doesn't require an rmb() for data dependent reads when writes are ordered using a wmb(). In reality, only alpha requires an rmb(), the rest are NOPs. It is likely to be necessary in most situations that would use RCU. Please apply. Description : Sometime ago, during a discussion on lock-free lookups, it was agreed that an additional memory barrier interface, read_barrier_depends() that is lighter than an rmb(), is necessary to make sure that data-dependent reads are not re-ordered over this barrier. For many processors, data-dependency enforces order, so this interface is a NOP, but for those that don't (like alpha), it can be a rmb(). For example, the following code would force ordering (the initial value of "a" is zero, "b" is one, and "p" is "&a"): CPU 0 CPU 1 b = 2; memory_barrier(); p = &b; q = p; read_barrier_depends(); d = *q; because the read of "*q" depends on the read of "p" and these two reads should be separated by a read_barrier_depends(). However, the following code, with the same initial values for "a" and "b": CPU 0 CPU 1 a = 2; memory_barrier(); b = 3; y = b; read_barrier_depends(); x = a; does not enforce ordering, since there is no data dependency between the read of "a" and the read of "b". Therefore, on some CPUs, such as Alpha, "y" could be set to 3 and "x" to 0. rmb() needs to be used here, not read_barrier_depends(). The original discussion can be found at - http://marc.theaimsgroup.com/?t=100259422200002&r=1&w=2 Explanation of the need for read_barrier_depends() can be found at http://lse.sf.net/locking/wmbdd.html
-
David S. Miller authored
-
Frank Davis authored
This fixes a 'used but not declared' compile error
-
David S. Miller authored
It ends up trying to list_del() from an uninitialized list_head.
-
Steven Whitehouse authored
-
Hideaki Yoshifuji authored
- Ignore queries for invalid addresses - MLD for link-local addresses
-
Hideaki Yoshifuji authored
-
David S. Miller authored
-