This gets rid of the port semaphore, and the serialization caused by
that, and replaces it with the proper reference counting logic for
the usb serial object.
[PATCH] USB: add "present" flag to usb_device structure.
This solves lots of races when drivers hold a reference to the usb_device
after the device is physically removed from the system (like when a user
has a open handle.) This now prevents any new urbs being submitted or
canceled for the device.
George Anzinger [Tue, 18 Feb 2003 06:41:13 +0000 (22:41 -0800)]
[PATCH] POSIX clocks & timers
This is version 23 or so of the POSIX timer code.
Internal changelog:
- Changed the signals code to match the new order of things. Also the
new xtime_lock code needed to be picked up. It made some things a lot
simpler.
- Fixed a spin lock hand off problem in locking timers (thanks
to Randy).
- Fixed nanosleep to test for out of bound nanoseconds
(thanks to Julie).
- Fixed a couple of id deallocation bugs that left old ids
laying around (hey I get this one).
- This version has a new timer id manager. Andrew Morton
suggested elimination of recursion (done) and I added code
to allow it to release unused nodes. The prior version only
released the leaf nodes. (The id manager uses radix tree
type nodes.) Also added is a reuse count so ids will not
repeat for at least 256 alloc/ free cycles.
- The changes for the new sys_call restart now allow one
restart function to handle both nanosleep and clock_nanosleep.
Saves a bit of code, nice.
- All the requested changes and Lindent too :).
- I also broke clock_nanosleep() apart much the same way
nanosleep() was with the 2.5.50-bk5 changes.
TIMER STORMS
The POSIX clocks and timers code prevents "timer storms" by
not putting repeating timers back in the timer list until
the signal is delivered for the prior expiry. Timer events
missed by this delay are accounted for in the timer overrun
count. The net result is MUCH lower system overhead while
presenting the same info to the user as would be the case if
an interrupt and timer processing were required for each
increment in the overrun count.
Alan Cox [Tue, 18 Feb 2003 03:43:37 +0000 (19:43 -0800)]
[PATCH] ide-proc - fix crash on identify
We cannot do an identify on a drive with no driver loaded. The kernel
has a ton of half backed "if no driver" cases but they dont cover all
cases and its a mess.
For now we rely on the probe time identify unless a driver is loaded. A
proper fix (an 'ide-unassigned' driver) will follow later
Alan Cox [Tue, 18 Feb 2003 03:43:22 +0000 (19:43 -0800)]
[PATCH] ide-probe updates
Fix crash with slave and no master
Fix crash with hdb=noprobe hdb=cdrom
Fix crash with pre ATA devices refusing IDENTIFY
Fix flash slave making master disappear
Add interfaces that the PPC uses to do disk spin up when the BIOS has not
Add framework to allow hdparm -d1 on a box built with IDE_DMA_ONLYDISK
Fix identify framework so we can fix the proc identify crash too
Duncan Sands [Tue, 18 Feb 2003 00:43:30 +0000 (16:43 -0800)]
[PATCH] USB speedtouch: replace speedtouch crc routines
Use the kernel CRC routines rather than a do-it-yourself version.
By the way, I created a common USB Makefile.lib, rather than having
one for the class drivers, and one for speedtouch.
Neil Brown [Mon, 17 Feb 2003 11:17:51 +0000 (03:17 -0800)]
[PATCH] Provide a 'safe-mode' for soft raid.
When a raid1 or raid5 array is in 'safe-mode', then the array
is marked clean whenever there are no outstanding write requests,
and is marked dirty again before allowing any write request to
proceed.
This means than an unclean shutdown while no write activity is happening
will NOT cause a resync to be required. However it does mean extra
updates to the superblock.
Currently safe-mode is turned on by sending SIGKILL to the raid thread
as would happen at a normal shutdown. This should mean that the
reboot notifier is no longer needed.
After looking more at performance issues I may make safemode be on
all the time. I will almost certainly make it on when RAID5 is degraded
as an unclean shutdown of a degraded RAID5 means data loss.
This code was provided by Angus Sawyer <angus.sawyer@dsl.pipex.com>
Neil Brown [Mon, 17 Feb 2003 11:17:16 +0000 (03:17 -0800)]
[PATCH] Fix bug in md superblock sanity checking.
This call the super_90_load is meant to make sure that the new
superblock is consistant with a pre-exisitnig one (on rdev0)... but
rdev0 was not passed :-(
Neil Brown [Mon, 17 Feb 2003 11:17:07 +0000 (03:17 -0800)]
[PATCH] Convert fs/nfsctl.c to use C99 named initiailzers
From Art Haas <ahaas@airmail.net>:
This converts the file to use C99 named initializers. These change make
the file compile with fewer warnings if '-W' is added to the compile
flags, and may enhance code readability. Let me know if you think this
should be sent to Linus.
Neil Brown [Mon, 17 Feb 2003 11:17:00 +0000 (03:17 -0800)]
[PATCH] Make kNFSd pre/post_[acm]time use struct timespec
From Trond:
When the nanosecond resolution on [acm]time was introduced to 2.5.x,
the knfsd GETATTR responses were converted to make use of the
nanosecond field, but the pre/post WCC attributes were not. This will
lead to a lot of unnecessary cache invalidations on the clients.
The following trivial patch should fix up knfsd so that it stores and
encodes the full 'struct timespec' in both pre and post attribute
fields.
Neil Brown [Mon, 17 Feb 2003 11:16:52 +0000 (03:16 -0800)]
[PATCH] Fix problem where knfsd wouldn't release filesystem on unexport.
Problem was that the cache was being updated inplace, rather
than swapping in a new entry, so old filesystem pointers
were overwritten without being released.
Neil Brown [Mon, 17 Feb 2003 11:16:29 +0000 (03:16 -0800)]
[PATCH] Bounds checking for NFSv3 readdirplus
From Ted Phelps <phelps@dstc.edu.au>
The NFSv3 readdirplus path doesn't check to see if maxcount is less
than the size of a page before it fills it up, possibly overwriting
random bits of memory. At least, it makes my Solaris NFSv3 client
work.
The attached patch, against 2.5.58, adds this check in a way which is
consistent with the way readdir does under both NFSv2 andNFSv3.
Sam Ravnborg [Mon, 17 Feb 2003 06:15:45 +0000 (22:15 -0800)]
[PATCH] char/drivers/random.c - fix warning
When compiling random.c without SYSCTL defined a warning is
issued about free_entropy_store being defined but not used.
Put ifdef's around the functions.
I could have moved the whole function, but it logically belongs
to this part of the file.
Marc Zyngier [Mon, 17 Feb 2003 05:35:00 +0000 (21:35 -0800)]
[PATCH] EISA/sysfs updates
This is an update to the EISA/sysfs code :
- Separate bus root code from generic code.
- Add driver for PCI/EISA bridge.
- Hacked parisc eisa driver so it can act as a root device.
- Add driver for so-called virtual root (for bridge-less systems).
- Allow multiple roots.
- Moved quirk_eisa_bridge from alpha to generic code, since
the EISA code needs it now (on x86, for example...).
- 3c59x :
Prevent driver from returning ENODEV in case it has registered with
the EISA framework, but no device has been found yet (it happends
when the driver is built into the kernel, and the EISA bus root has
not been discovered yet).
It's been discussed on lkml, and all suggestions (mainly from Ivan
Kokshaysky <ink@jurassic.park.msu.ru>) have been taken into account.
Dave Kleikamp [Mon, 17 Feb 2003 06:09:10 +0000 (00:09 -0600)]
JFS: Fix jfs_sync_fs
jfs_sync_fs was implemented using the same code as the unmount code to flush
the journal and wait for the journal to quiesce. Since jfs_sync_fs may be
called while the volume is under heavy use, we can end up waiting
indefinately. Code in jfs_flush_journal meant to detect a hang at unmount
time may be triggered in this case causing a trap. This patch changes
jfs_sync_fs to only wait until the most recent transaction has been
commited to disk, rather than waiting until the commit queue is empty.
Linus Torvalds [Mon, 17 Feb 2003 03:51:37 +0000 (19:51 -0800)]
Fix locking for "send_sig_info()", to avoid possible races with signal
state changes due to execve() and exit(). We need to hold the tasklist
lock to guarantee stability of "task->sighand".
This patch updates the 2.5 ov511 driver to version 1.64. This fixes some
longstanding bugs and cleans the code up a bit.
Changes:
- Eliminate remaining uses of sleep_on()
- Remove unnecessary (and racy) calls to waitqueue_active()
- Fix a memory leak in the open() error path
- Remove some redundant and unused variables
- Documentation fixes
David Brownell [Mon, 17 Feb 2003 02:40:43 +0000 (18:40 -0800)]
[PATCH] USB: USB keyboard works after reboot (ehci-hcd)
This resolves a problem caused by "reboot" not actually
doing a clean shutdown of drivers. It uses a reboot
notifier to make sure that typical BIOS code (using the
USB 1.1 companion controllers) will see keyboards even
without an EHCI driver being active.
David Brownell [Mon, 17 Feb 2003 02:40:17 +0000 (18:40 -0800)]
[PATCH] USB: sg_complete() warning downgrade
An error check would wrongly fire after usb_sg_cancel().
This patch prevents the misfire, and also makes the
diagnostic (a) more useful, (b) less scarey.
Duncan Sands [Mon, 17 Feb 2003 02:13:56 +0000 (18:13 -0800)]
[PATCH] USB speedtouch: speedtouch 330 support
Differences: speedtouch 330 vs the older speedtouch USB:
Vendor and ProdID: no difference (!)
Rev: 2.00 vs 0.00
SerialNumber: 0090D0xxxxxx, xxxxxx larger for 330
Interface 1, Alt 2:
E: Ad=06(O) Atr=02(Bulk) MxPS=64 Ivl=0ms
E: Ad=07(O) Atr=02(Bulk) MxPS=64 Ivl=0ms
E: Ad=87(I) Atr=01(Isoc) MxPS=640 Ivl=1ms
vs
E: Ad=06(O) Atr=02(Bulk) MxPS=32 Ivl=0ms
E: Ad=07(O) Atr=02(Bulk) MxPS=32 Ivl=0ms
E: Ad=87(I) Atr=02(Bulk) MxPS=64 Ivl=0ms
Interface 1, Alt 3:
E: Ad=06(O) Atr=02(Bulk) MxPS=64 Ivl=0ms
E: Ad=07(O) Atr=02(Bulk) MxPS=64 Ivl=0ms
E: Ad=87(I) Atr=01(Isoc) MxPS=960 Ivl=1ms
vs
E: Ad=06(O) Atr=02(Bulk) MxPS=16 Ivl=0ms
E: Ad=07(O) Atr=02(Bulk) MxPS=16 Ivl=0ms
E: Ad=87(I) Atr=02(Bulk) MxPS=64 Ivl=0ms
The current driver works with the speedtouch 330 as long as we use alternate setting
1 on interface 1 rather than alternate 2 as we do now. In fact it makes sense to use
alternate 1 for the speedtouch USB as well: the difference is in the max packet size
for the out bulk endpoint (0x07): 64 for Alt 1, 32 for Alt 2. Since we send only
multiples of 53 bytes (ATM cell size), the potential lower latency for Alt 2 is not
really exploitable (think about it!). My tests indicate no harm and perhaps a slight
gain by using Alt 1. The manufacturer seems to think so too, since they chose to
keep the Alt 1 setting and threw out Alt 2 when designing the 330. So just use Alt 1
for both modems.
Duncan Sands [Mon, 17 Feb 2003 02:09:22 +0000 (18:09 -0800)]
[PATCH] USB speedtouch: Fix speedtouch maxi race
Instead of trying to close all ATM connections in the USB disconnect routine,
just notify the ATM layer that the ATM device should go down when the last
connection is closed. This should be the last big speedtouch stability fix.
Duncan Sands [Mon, 17 Feb 2003 02:09:00 +0000 (18:09 -0800)]
[PATCH] USB speedtouch: fix speedtouch micro race
The disconnect routine counts the completed_receivers/spare_senders list
to see if the completion handler has finished. It then kills the tasklet.
However the tasklet was being scheduled after adding to the lists, creating
a micro race. So schedule the tasklet before adding to the list.
Russell King [Sun, 16 Feb 2003 19:38:14 +0000 (19:38 +0000)]
[ARM] Update signal handling for ARM.
Update the ARM signal handling to use the generic
get_signal_to_deliver() implementation. There is a caveat though -
ARM has no hardware support for single stepping, and thus needs the
kernel to help provide this.
We introduce a new ptrace flag for this, PT_SINGLESTEP, which
indicates to architecture specific code that it should take extra
actions in the signal handler to set and/or clear breakpoints as
appropriate.
Jeff Wiedemeier [Sun, 16 Feb 2003 16:19:31 +0000 (08:19 -0800)]
[PATCH] delay marvel agp printk until after !hose check
Delay the marvel agp hose printk until after the check for whether a
valid AGP hose was found. Otherwise if none was found, hose->index in
the printk arg list dereferences NULL.