Tony Lindgren [Fri, 21 May 2004 23:59:48 +0000 (00:59 +0100)]
[ARM PATCH] 1887/1: Update OMAP low level debug functions again
Patch from Tony Lindgren
This patch makes the low level debug functions work when support is
compiled in for multiple OMAPs. The patch also removes now unnecessary
include, incorrect comment, and SERIAL_REG_SHIFT ifdefs.
Tony Lindgren [Fri, 21 May 2004 23:55:08 +0000 (00:55 +0100)]
[ARM PATCH] 1885/1: OMAP update 2/2: include files
Patch from Tony Lindgren
This patch syncs the mainline kernel with the linux-omap tree.
The highlights of the patch are:
- Changed the BOOT_MEM() to use the new IO address (Tony Lindgren)
- Cleaned up interrupt handler (Juha Yrjölä)
- DMA channel linking for 1610 (Samuel Ortiz)
- GPIO fixes (Juha Yrjölä)
- IRQ fix for OMAP-730 (Kevin Hilman)
- OMAP-1510 FPGA interrupt fix (Dirk Behme)
- OMAP-1610 voltage change settings (Todd Poynor)
- Uncompress kernel serial output fixes (Tony Lindgren)
Tony Lindgren [Fri, 21 May 2004 23:46:09 +0000 (00:46 +0100)]
[ARM PATCH] 1884/1: OMAP update 1/2: arch files
Patch from Tony Lindgren
This patch syncs the mainline kernel with the linux-omap tree.
The highlights of the patch are:
- Changed the BOOT_MEM() to use the new IO address (Tony Lindgren)
- Cleaned up interrupt handler (Juha Yrjölä)
- DMA channel linking for 1610 (Samuel Ortiz)
- GPIO fixes (Juha Yrjölä)
- IRQ fix for OMAP-730 (Kevin Hilman)
- OMAP-1510 FPGA interrupt fix (Dirk Behme)
- OMAP-1610 voltage change settings (Todd Poynor)
- Uncompress kernel serial output fixes (Tony Lindgren)
Nicolas Pitre [Fri, 21 May 2004 10:47:55 +0000 (11:47 +0100)]
[ARM PATCH] 1889/1: don't select CONFIG_IWMMXT just yet with Mainstone
Patch from Nicolas Pitre
Since the iWMMXt patch (#1866/1) requires more time to be reviewed,
this patch will allow merging Mainstone patches without breaking
anything if iWMMXt support isn't merged yet.
Should be applied after patch #1867/1.
Andrew Morton [Fri, 21 May 2004 07:46:17 +0000 (00:46 -0700)]
[PATCH] block device layer: separate backing_dev_info infrastructure
Sigh. ramdisk almost works, except it loses data on umount.
This is because the files which are atop the ramdisk do not contribute to
dirty memory accounting, but they do need writeback. So when sync() calls
sync_inodes_sb() to do the work, sync_inodes_sb() hopelessly underestimates
the number of pages which need writeback for a complete sync.
If you run `sync' enough times, everything eventually hits "disk" and all is
happy.
The root cause here is that the ramdisk and the files which it hosts shared
the same backing_dev_info. This is inappropriate because the hosted files
*do* want to writeback and really should contribute to dirty memory
accounting. But the ramdisk inode itself wants neither.
So. The patch sets up the infrastructure which permits a blockdev to provide
a separate backing_dev_info for the files which it hosts. It's a bit of a
ramdisk-special.
Linus Torvalds [Fri, 21 May 2004 07:29:23 +0000 (00:29 -0700)]
Add 'mode' argument to vfs_symlink.
Right now we ignore it, but we need to pass this down
to the low-level filesystems if we want to ever make
knfsd create symlinks with different permissions correctly.
Andrew Morton [Fri, 21 May 2004 06:23:55 +0000 (23:23 -0700)]
[PATCH] drop left-over #ifndef __ia64__
From: David Mosberger <davidm@napali.hpl.hp.com>
It used to be that loops_per_jiffy was a macro on ia64, hence it couldn't be
exported. That's no longer the case though, so there is no point in
inhibiting its export (not that it makes any _sense_ to export that value on
ia64).
Andrew Morton [Fri, 21 May 2004 06:23:44 +0000 (23:23 -0700)]
[PATCH] Fix i386/x86_64 cpuid/msr BUG() on impossible CPUs
From: Rusty Russell <rusty@rustcorp.com.au>
Matthieu Castet <castet.matthieu@free.fr> pointed out that testing
cpu_online(cpu) on a UP system goes BUG().
That's because you're never supposed to ask cpu_online() about a CPU which
is >= NR_CPUS. msr and cpuid devices use the minor to indicate the CPU
number. Oops.
Fix is to explicitly test cpu < NR_CPUS. Using cpu_online() is OK;
although the CPU might go down before you actually read the file, that will
simply cause junk to be returned.
Andrew Morton [Fri, 21 May 2004 06:22:29 +0000 (23:22 -0700)]
[PATCH] trivial: Make JFFS2 ready for Linux 2.7
From: Rusty Russell <rusty@rustcorp.com.au>
(OK from maintainer David Woodhouse <dwmw2@infradead.org>)
From: Sam Ravnborg <sam@ravnborg.org>
From: <l.s.r@web.de>
> since the code for Linux 2.4 compatibility in fs/jffs2 is gone, we can
> clean up the Makefile a bit. Following patch makes the Makefile
> compatible with Linux 2.7 instead . :) Please consider applying.
If we are going to clean up this I prefer we get rid of the
local variables.
See attached patch.
Pure cosmetic. Largest biovec slab is printed as biovec-BIO_MAX_PAGES in
/proc/slabinfo. It would be more informative to print actual number instead
of macro's name.
Andrew Morton [Fri, 21 May 2004 06:20:48 +0000 (23:20 -0700)]
[PATCH] Fix NFSD oops in readdir
From: Neil Brown <neilb@cse.unsw.edu.au>
If a single readdir entry needs to be split over two pages in the reply, we
first encode it into a new page, and then copy the bits into place. When
we do this relocation, we have to modify the "offset" pointer to be either
in the first or the second page, as appropriate.
If the pointer should be at the start of the second page, it is currently
put past the end of the first page.
Note that as the offset and whole response is known to be 4byte-aligned,
the offset pointer will never be split over two pages.
Andrew Morton [Fri, 21 May 2004 06:20:26 +0000 (23:20 -0700)]
[PATCH] getblk() BUG removal
We keep on getting BUG()s from isofs_read_super() because it passes an insane
blocksize to bread(). See http://bugme.osdl.org/show_bug.cgi?id=2735 for
example.
I don't know what's up with isofs, but going BUG in there seems a bit rude.
Change it to drop a bunch of diagnostics and a backtrace then return a null
bh*.
Most callers of getblk() don't expect it to fail, so they'll oops anyway. But
isofs does actually check for a NULL return. This way, the machine stays up
and we get better debug diagnostics.
Andrew Morton [Fri, 21 May 2004 06:20:14 +0000 (23:20 -0700)]
[PATCH] Debugging option to put data symbols in kallsyms
From: Rusty Russell <rusty@rustcorp.com.au>
kallsyms contains only function names, but some debuggers (eg. xmon on
PPC/PPC64) use it to lookup symbols: it'd be much nicer if it included data
symbols too.
Andrew Morton [Fri, 21 May 2004 06:19:40 +0000 (23:19 -0700)]
[PATCH] ramdisk: fix PageUptodate() handling
When a filesystem does getblk() to get a buffer_head against the ramdisk the
VFS will allocate a new not-uptodate pagecache page and will attach buffers to
it.
The filesystem will then bring certain buffer_heads uptodate. But not the
whole page.
Later, various ramdisk a_ops see the not-uptodate page and wipe the whole
thing out, including the parts to which the filesystem wrote!
Fix that up by only zapping those parts of the page which are covered by
non-uptodate buffers.
Andrew Morton [Fri, 21 May 2004 06:19:17 +0000 (23:19 -0700)]
[PATCH] ramdisk: lock blockdev pages during "IO".
There's a race: one CPU writes a 1k block into a ramdisk page which isn't in
the blockdev pagecache yet. It memsets the locked page to zeroes.
While this is happening, another CPU comes in and tries to write a different
1k block to the "disk". But it doesn't lock the page so it races with the
memset and can have its data scribbled over.
Fix this up by locking the page even if it already existed in pagecache.
Locking a pagecache page in a make_request_fn sounds deadlocky but it is not,
because:
a) ramdisk_writepage() does nothing but a set_bit(), and cannot recur onto
the same page.
b) Any higher-level code which holds a page lock is supposed to be
allocating its memory with GFP_NOFS, and in 2.6 kernels that's equivalent
to GFP_NOIO.
(The distinction between GFP_NOIO and GFP_NOFS basically disappeared
with the buffer_head LRU, although it was reused for writes to swap).
Andrew Morton [Fri, 21 May 2004 06:18:44 +0000 (23:18 -0700)]
[PATCH] ppc64: make enter_rtas() take unsigned long arg
From: Paul Mackerras <paulus@samba.org>
We declare enter_rtas with a struct rtas_args * argument, though it is
supposed to be a physical address, and then every time we call it we cast the
unsigned long result from __pa() to a void *. This patch changes the
declaration of enter_rtas to make it take an unsigned long argument, and
removes the cast from all the callers. The actual enter_rtas() routine is in
assembler and doesn't need to be changed.
Andrew Morton [Fri, 21 May 2004 06:18:21 +0000 (23:18 -0700)]
[PATCH] ppc64: update xmon debugger
From: Paul Mackerras <paulus@samba.org>
This patch fixes a whole pile of problems in the xmon kernel debugger for
ppc64. This basically makes xmon SMP-safe. Now, when we enter xmon it
sends an IPI to the other CPUs to get them into xmon too. It also changes
the way we do single-stepping and breakpoints so that we don't have to
remove a breakpoint to proceed from it (instead we either emulate the
instruction where the breakpoint was, or execute it out of place). With
this patch, if we get an exception inside xmon, it will just return to the
xmon command loop instead of hanging the system as at present.
The patch is quite large because it updates the disassembler to the latest
version from binutils (trimmed a bit), which is why I didn't cc lkml.
Andrew Morton [Fri, 21 May 2004 06:18:10 +0000 (23:18 -0700)]
[PATCH] ppc64: fix inline version of _raw_spin_trylock
From: Paul Mackerras <paulus@samba.org>
When I added the out-of-line spinlocks on PPC64, I inadvertently introduced
a bug in the inline version of _raw_spin_trylock, where it returns the
opposite of what it should return. The patch below fixes it.
Andrew Morton [Fri, 21 May 2004 06:17:59 +0000 (23:17 -0700)]
[PATCH] ppc64: Fix readq & writeq
From: Benjamin Herrenschmidt <benh@kernel.crashing.org>
This fixes busted asm constraints for readq & writeq implementation on
ppc64 that resulted in garbage beeing generated for writeq (plus an obvious
mistake in the prototype).
Andrew Morton [Fri, 21 May 2004 06:17:47 +0000 (23:17 -0700)]
[PATCH] fix for stuck cpus at boot]
From: Anton Blanchard <anton@samba.org>
From: Rusty Russell <rusty@rustcorp.com.au>
When hotplug cpu isn't enabled, cpu_is_offline is always false. I had a stuck
cpu at boot that resulted in a lockup because we tried to start a migration
thread on it. Instead of cpu_is_offline we can use !cpu_online which should
cover both the hotplug cpu enabled and disabled cases.
Trond Myklebust [Thu, 20 May 2004 11:47:06 +0000 (07:47 -0400)]
Following a suggestion by Jamie Lokier
RPC: Make "major" timeouts be of fixed length "timeo<<retrans"
rather than counting the number of retransmissions. The
clock starts at the first attempt to send each request.
RPC: Ensure that we "slow start" the RTT estimation after a
major timeout has occurred.
Trond Myklebust [Thu, 20 May 2004 11:45:19 +0000 (07:45 -0400)]
NFS O_DIRECT: Change the NFS O_DIRECT path so that it
no longer calls the generic VFS read and write routines.
This allows all application read requests to pass through
to the server, instead of just the ones that appear to be
inside the file. this eliminates the requirement to use a
GETATTR operation before each read or write to determine
where the EOF is. This is a significant performance and
scalability win.
It also removes all requirements for holding the inode
semaphore during NFS direct reads and writes, as the read
and write logic no longer needs atomic access to the size
of the file. this also helps client CPU scalability by
reducing the serialization of writes against a single file.
Trond Myklebust [Thu, 20 May 2004 11:43:48 +0000 (07:43 -0400)]
NFS_O_DIRECT: there's a code path in nfs_direct_write_seg
where NFS_I(inode)->data_updates can get out of sync
with reality, which will lead to a BUG() in nfs_clear_inode
later on.
Dave Kleikamp [Thu, 20 May 2004 10:46:12 +0000 (05:46 -0500)]
JFS: [CHECKER] if txCommit fails, don't call d_instantiate
In several functions, d_instantiate is called before the transaction
is committed. Under the rare condition that txCommit fails, the new
inode is released, but the dentry continues to point to it. This
can lead to a seg fault. The fix is to call d_instantiate after
txCommit has run successfully.
David Vrabel [Thu, 20 May 2004 03:53:00 +0000 (20:53 -0700)]
[ARM] Fix IXP4XX_OST_RELOAD_MASK definition to not mask proper bits
Current definition of OST_RELOAD_MASK masks off bit 2 of
the timer reload value register when it should mask bits 0
and 1. This would cause small timeout values to be loaded
incorrectly.