Russell King [Thu, 17 Apr 2003 23:26:15 +0000 (00:26 +0100)]
[ARM] Fix Kconfig breakage in arch/arm/mach-iop3xx/Kconfig
When a "depends" statement against all configuration options of a choice,
which causes all options of that choice to be disabled, it sends Kconfig
into an infinite loop. Move the "depends" clause to the choice statement
instead.
Eli Carter [Thu, 17 Apr 2003 22:59:27 +0000 (23:59 +0100)]
[ARM PATCH] 1506/1: Add iq80321 MTD mapping
Patch from Eli Carter
# Thu Apr 17 14:05:58 CDT 2003 ejc@rnd-linux-c84
# iq80321-mtd
#
# Add the MTD mapping for the flash chip on the iq80321 board.
# The drivers/mtd/maps/iq80321.c file comes from 2.4.19-rmk4-ds2, and is
# essentially a copy of the iq80310.c file in the same directory.
# This version used C99 initializers
#
# Diff'ed against 2.5.65-rmk1+1472-4+1502-3
# Applies cleanly to linux-2.5.67-rmk1+1502-3
#
# arch/arm/def-configs/iq80321 | 61 ++++++++++-----
# drivers/mtd/maps/Kconfig | 8 ++
# drivers/mtd/maps/Makefile | 1
# drivers/mtd/maps/iq80321.c | 169 +++++++++++++++++++++++++++++++++++++++++++
# 4 files changed, 218 insertions(+), 21 deletions(-)
#
Alan Cox [Thu, 17 Apr 2003 09:29:58 +0000 (02:29 -0700)]
[PATCH] generalise fpu_irq also add pc98 for x86 code
The idea is to move more to if(pc98) so that we can attempt to get all
the ports buildable as one "generic" port in time. I don't think its p
possible for PC9800 but no need to dig holes
[PATCH] make devpts filesystem mandatory even for CONFIG_DEVFS
This patch rips out handling of UNIX98 ptys from devfs. We already
have a special small filesystem to handle it (devpts) that's always
compiled in anyway. This allows to get rid of all DEVFS_FL* flags and
some gunk in devfs.
Ben Collins [Thu, 17 Apr 2003 06:07:43 +0000 (23:07 -0700)]
[PATCH] IEEE-1394/Firewire updates
- Add driver registration for dv1394/video1394/raw1394.
- Fix 3 sleep-while-atomic bugs in ohci1394 and ieee1394.
- Cleanup some bus-reset handling in ohci1394.
- Add empty config-rom handling.
- Check and handle SBP-2 logins active/available for non-exclusive
logins.
- Fix bug in SBP-2 DMA cleanup.
Andrew Morton [Thu, 17 Apr 2003 05:52:11 +0000 (22:52 -0700)]
[PATCH] Fix orlov allocator boundary case
In the interests of SMP scalability the ext2 free blocks and free inodes
counters are "approximate". But there is a piece of code in the Orlov
allocator which fails due to boundary conditions on really small
filesystems.
Fix that up via a final allocation pass which simply uses first-fit for
allocation of a directory inode.
David Mosberger [Wed, 16 Apr 2003 04:20:26 +0000 (21:20 -0700)]
[PATCH] fix fs->lock deadlock with emulated name lookup
The patch below is needed to avoid a deadlock on fs->lock. Without
the patch, if __emul_lookup_dentry() returns 0, we fail to reacquire
current->fs->lock and then go ahead to read_unlock() it anyhow. Bad
for your health.
I believe the bug was introduced when the fast pathwalk was reverted
in order to introduce the RCU lockless path walking.
David Mosberger [Tue, 15 Apr 2003 15:51:27 +0000 (08:51 -0700)]
[PATCH] module symbol fix
Fix for trivial typo. Without it, you can't insert anything on top of
agpgart.ko because the agp_register_driver() will erroneously pick up
the symbol version from agp_backend_acquire().
Rusty Russell [Tue, 15 Apr 2003 14:56:40 +0000 (07:56 -0700)]
[NETFILTER_IPV4]: De-linearization of IP Connection Tracking.
This converts connection tracking and all the connection tracking
modules to handle non-linear skbs. Enough interfaces have been
broken in the process that old helpers won't compile.
Interfaces which used to take a "void *data, int len" or
"struct iphdr *iph, int len" now take the skb itself (and an offset to
the data in the case of the first interface), which is not
linearized in any way (although Alexey says after ip_rcv the IP header
is always linear, so IPv4 netfilter hooks can always assume a linear
IP hdr).
Helpers which examine data (amanda, FTP, IRC) now copy it into a buffer
and examine that.
Now that the kernel provides code user programs are executing directly
(I mean the vsyscall code on x86) it is necessary to add unwind
information for that code as well. The unwind information is used not
only in C++ code.
This patch adds a AT_SYSINFO_EH_FRAME ELF aux-table value that points to
the unwinding block description for the sysinfo frame, and makes sure
the AT_* value is passed to applications. It defines the static data
for the unwind blocks (two, one for int80 and the other for sysenter),
and finally adds code to copy the data in place.
Ivan Kokshaysky [Tue, 15 Apr 2003 03:58:21 +0000 (20:58 -0700)]
[PATCH] alpha: move_initrd fix (from Jeff Wiedemeier)
While testing our upcoming kernel update for 7.2 alpha, I've encountered
a problem with move_initrd. It allocates a page-aligned chunk to move
the initrd into, but it doesn't allocate the entire last
page. Subsequent bootmem allocations can then be filled from the last
page used be the initrd. This then becomes a problem when the initrd
memory is released.
Ivan Kokshaysky [Tue, 15 Apr 2003 03:56:48 +0000 (20:56 -0700)]
[PATCH] alpha: execve() fix
The 2.5 kernels may hang on execve(). Most easily this can be reproduced
by submitting forms in mozilla, apparently because it does execve with
very long argument strings.
That's what happens in do_execve, I suppose:
bprm.mm = mm_alloc();
...
init_new_context(current, bprm.mm); here we update current ptbr
with new mm->pgd
...
copy_strings;
interrupt -> do_softirq -> switch to ksoftirqd
...
switch back to do_execve;
copy_strings - immediate page fault in copy_user that we can't
handle because the new ptbr has been activated
after context switch and current->mm is not
valid anymore.
The fix is to not update ptbr for current task in init_new_context(),
as we do it later in activate_mm() anyway.
The patch fixes some problems with NFS under heavy writeout.
NFS pages can be in a clean but unreclaimable state. They are unreclaimable
because the server has not yet acked the write - we may need to "redirty"
them if the server crashes.
These are referred to as "unstable" pages. We need to count them alongside
dirty and writeback pages when making flushing and throttling decisions.
Otherwise the machine can be flooded with these pages and the VM has
problems.
Andrew Morton [Mon, 14 Apr 2003 13:10:43 +0000 (06:10 -0700)]
[PATCH] Posix timer hang fix
From: george anzinger <george@mvista.com>
The MAJOR problem was a hang in the kernel if a user tried to delete a
repeating timer that had a signal delivery pending. I was putting the
task in a loop waiting for that same task to pick up the signal. OUCH!
A minor issue relates to the need by the glibc folks, to specify a
particular thread to get the signal. I had this code in all along,
but somewhere in 2.5 the signal code was made POSIX compliant, i.e.
deliver to the first thread that doesn't have it masked out.
This now uses the code from the above mentioned clean up. Most
signals go to the group delivery signal code, however, those
specifying THREAD_ID (an extension to the POSIX standard) are sent to
the specified thread. That thread MUST be in the same thread group as
the thread that creates the timer.
Andrew Morton [Mon, 14 Apr 2003 13:09:45 +0000 (06:09 -0700)]
[PATCH] flush_work_queue() fixes
The workqueue code currently has a notion of a per-cpu queue being "busy".
flush_scheduled_work()'s responsibility is to wait for a queue to be not busy.
Problem is, flush_scheduled_work() can easily hang up.
- The workqueue is deemed "busy" when there are pending delayed
(timer-based) works. But if someone repeatedly schedules new delayed work
in the callback, the queue will never fall idle, and flush_scheduled_work()
will not terminate.
- If someone reschedules work (not delayed work) in the work function, that
too will cause the queue to never go idle, and flush_scheduled_work() will
not terminate.
So what this patch does is:
- Create a new "cancel_delayed_work()" which will try to kill off any
timer-based delayed works.
- Change flush_scheduled_work() so that it is immune to people re-adding
work in the work callout handler.
We can do this by recognising that the caller does *not* want to wait
until the workqueue is "empty". The caller merely wants to wait until all
works which were pending at the time flush_scheduled_work() was called have
completed.
The patch uses a couple of sequence numbers for that.
So now, if someone wants to reliably remove delayed work they should do:
/*
* Make sure that my work-callback will no longer schedule new work
*/
my_driver_is_shutting_down = 1;
/*
* Kill off any pending delayed work
*/
cancel_delayed_work(&my_work);
/*
* OK, there will be no new works scheduled. But there may be one
* currently queued or in progress. So wait for that to complete.
*/
flush_scheduled_work();
The patch also changes the flush_workqueue() sleep to be uninterruptible.
We cannot legally bale out if a signal is delivered anyway.
Andrew Morton [Mon, 14 Apr 2003 13:09:35 +0000 (06:09 -0700)]
[PATCH] Fix oprofile on hyperthreaded P4's
From: Philippe Elie <phil.el@wanadoo.fr>
- oprofile is currently only profiling one sibling. Fix that with
appropriate register settings.
- fix an oops which could occur if the userspace driver were to request a
non-existent resource.
- in NMI handler counter_config[i].event is accessible from user space so
user can change the event during profiling by echo xxx >
/dev/oprofile/event
- event mask was wrong, the bit field is 6 bits length not 5, events
SSE_INPUT_ASSIST and X87_SIMD_MOVES_UOP was affected by masking high bit of
event number.