Russell King [Fri, 27 Feb 2004 17:18:54 +0000 (17:18 +0000)]
[ARM] amba_{request,release}_regions
Add documentation for the above two functions. Allow a NULL name to
be passed to amba_request_regions. In this case, we use the driver's
name associated with the device.
Russell King [Fri, 27 Feb 2004 16:37:12 +0000 (16:37 +0000)]
[ARM] Allow decompressor to use "cache type" register
This allows the decompressor to automatically detect the geometry of
the cache while booting to ensure correct behaviour over a wider
number of ARM CPUs.
Russell King [Fri, 27 Feb 2004 15:22:13 +0000 (15:22 +0000)]
[ARM] Remove obsolete sysctl PM interface.
The old sysctl PM interface has been replaced by the driver models
interface. This has been gone for a while in the -rmk tree and no
one complained, so there's no point keeping it around.
Russell King [Fri, 27 Feb 2004 14:02:35 +0000 (14:02 +0000)]
[ARM] Update sa1111-pcibuf for dmapool changes.
- use dev_dbg for device-centric debugging messages
- use pr_debug for general debugging messages
- use dmapools instead of pcipools
- use NULL rather than 0 for NULL pointers
- use enum dma_data_direction rather than int
- use DMA_* direction definitions rather than PCI_DMA_*
- only check for sane DMA direction on mapping functions, but
check that DMA direction matches when unmapping/syncing.
[SCTP] Fix incorrect INIT process termination with sinit_max_init_timeo.
Currently, sinit_max_init_timeo is treated as the maximum timeout
value for INIT retransmissions and the INIT process is aborted when
the timeout reaches this value. But as per the SCTP sockets API draft,
sinit_max_init_timeo only limits the timeout. The INIT process should
be aborted only after MAX_INIT_RETRANSMITS.
Anton Blanchard [Fri, 27 Feb 2004 01:28:28 +0000 (17:28 -0800)]
[PATCH] ppc64: TLB flush rework
ppc64 tlb flush rework from Paul Mackerras
Instead of doing a double pass of the pagetables, we batch things
up in the pte flush routines and then shoot the batch down in
flush_tlb_pending.
Our page aging was broken, we never flushed entries out of the ppc64
hashtable. We now flush in ptep_test_and_clear_young.
A number of other things were fixed up in the process:
- change ppc64_tlb_batch to per cpu data
- remove some LPAR debug code
- be more careful with ioremap_mm inits
- clean up arch/ppc64/mm/init.c, create tlb.c
[PATCH] ppc64:Implement support for Apple DART IOMMU (PowerMac G5)
This allows us to use more than 2Gb of RAM on a PowerMac G5. You can
also boot with iommu=off to disable it, but then you get back the 2Gb
RAM limitation.
[PATCH] ppc64: Fix drivers/ide when using an IOMMU
Make IDE advertise only 128 entries of SG table on archs with an IOMMU.
The current IOMMU implementations of pci_map_sg() may produce segments
that don't match the boundary requirements of IDE, thus causing the
driver to break them up. The BIO is supposed to account for that,
however, it cannot account for a pci_map_sg producing a segment of the
requested size, but with incorrect alignement, thus we may still try to
break up the list in more entries than is supported by the HW.
A similar fix already went in libata. The "real" long term fix will be
to move the boundary requirements to struct device so that pci_map_sg()
can respect them when producing the sglist. In the meantime, this
band-aid works around the problem.
Lots of things renamed, sillicaps killed, stuffs moved around and common
code properly extracted from implementation specific code, new
allocator, etc... The code is overall a lot simpler, faster, less prone
to fail, and a lot more manageable. I didn't use "bk mv", there is no
need to keep the old history attached to the new file.
[PATCH] ppc64: Fix /dev/mem idea of what is memory
This adds a hack to /dev/mem (along with the other ones already there)
to prevent mapping cacheable of the IO hole.
Without this, XFree blows up on machines with enough memory to go past
the IO hole. It also tries to prevent memory from beeing mapped
uncached. Cache paradoxes are evil and can kill the CPU.
The necessary page_is_ram() call was added by the previous patch doing
the proper IO hole accounting.
On machines with an IO hole (like Apple G5 with more than 2Gb of RAM,
but also some pSeries) we failed to properly account for the real
amount of physical RAM and inform the zone allocator of our hole size.
During the process, I included Anton slaughtering of the guard page we
had in the first 256Mb kernel segment, thus allowing this segment to be
mapped with large pages as it should be.
Jeff Garzik [Thu, 26 Feb 2004 16:26:13 +0000 (11:26 -0500)]
[libata] limit S/G table size to 128 entries
Agreeing with Ben H's recommendation, I reduce the max-hw-segments
number to 128, to match max-phys-segments number. This shouldn't
affect performance because 128*64K is far above the max transfer size
for most current IDE devices. Even 128*4K is OK.
Andrew Morton [Thu, 26 Feb 2004 14:51:58 +0000 (06:51 -0800)]
[PATCH] Add a MODULE_VERSION macro
From: Rusty Russell <rusty@au1.ibm.com>
The way it works is that the .mod file contains the name of the module (as
before), but succeeding lines are the constituent parts (assumed to be .c
files, which usually works: if they use MODULE_VERSION in a file for which
this isn't true we'll get a warning).
As we postprocess modules, we look in the .modinfo section for a
"version=", which is placed by the MODULE_VERSION() macro. This will be of
form "version=<macroarg>" "\0" [24 chars] "\0". The 24 chars are replaced
by the md4 sum of the .c files and any files they #include using '#include
"file"' which are found in the current directory. Whitespace is collapsed
outside strings, and comments are ignored for purposes of the sum.
At the kernel summit, various people asked for a MODULE_VERSION macro to
store module strings (for later access through sysfs). A simple md4 is
needed to identify changes in modules which, inevitably, do not update the
version. It skips whitespace and comments, and includes #includes which
are in the same dir.
The module versions should be set according to this definition, based on
the RPM one, or CVS Revision tags. Violators will be shot.
[<epoch>`:']<version>[`-'<extraversion>]
<epoch>: A (small) unsigned integer which allows you to start versions
anew. If not mentioned, it's zero. eg. "2:1.0" is after
"1:2.0".
<version>: The <version> may contain only alphanumerics.
<extraversion>: Like <version>, but inserted for local
customizations, eg "rh3" or "rusty1".
Comparison of two versions (assuming same epoch):
Split each into all-digit and all-alphabetical parts. Compare each one one
at a time: digit parts numerically, alphabetical in ASCII order. So 0.10
comes after 0.9.
Andrew Morton [Thu, 26 Feb 2004 14:51:46 +0000 (06:51 -0800)]
[PATCH] kNFSd: return more than one page of directory entries.
From: NeilBrown <neilb@cse.unsw.edu.au>
From: Bruce Allan <bwa@us.ibm.com>
This requires checking if the entry will fit in the current page and, if it
doesn't, encoding it into the next page, and then copying it back to lie
across the boundary between two pages.
Andrew Morton [Thu, 26 Feb 2004 14:50:27 +0000 (06:50 -0800)]
[PATCH] kNFSd: Enforce open_downgrade requirement
From: NeilBrown <neilb@cse.unsw.edu.au>
The spec requires that the access and deny bits requested in open_downgrade
represent the union of the bits for some subset of the OPENS for the given
open_owner and file. Enforce that requirement.
Andrew Morton [Thu, 26 Feb 2004 14:49:20 +0000 (06:49 -0800)]
[PATCH] kNFSd: move fh_dup2 and fix it
From: NeilBrown <neilb@cse.unsw.edu.au>
fh_dup2 duplicates an entire svc_fh structure, so in addition to dget()'ing
the dentry, it also needs to bump the reference count on fh_export.
Moved it out of the header file into nfsfh.c for the simple reason that I
couldn't figure out how to reorganize the headers files right so that the
fh_dup2 could use the definition of svc_fh. Since fh_dup2 is never actually
used outside of nfs4proc.c, it could just as well be moved there....
Andrew Morton [Thu, 26 Feb 2004 14:48:26 +0000 (06:48 -0800)]
[PATCH] kNFSd: correct symlink related error returns.
From: NeilBrown <neilb@cse.unsw.edu.au>
unlike v2/v3, nfsv4 returns nfserr_inval when attempting to read, write,
commit or test lock a symlink. nfsv4 does return nfserr_symlink on lookup
and open, so a simple fix in fh_verify() will not work.
Andrew Morton [Thu, 26 Feb 2004 14:47:08 +0000 (06:47 -0800)]
[PATCH] kNFSd: Use only the uid when deciding whether a setclientid is being done with the "same principal".
From: NeilBrown <neilb@cse.unsw.edu.au>
I would have assumed that we should also check for the same security
(pseudo)flavor, but that doesn't seem to be how Solaris does it, and since
the spec doesn't suggest including such information in the clientid, that
would make it impossible to switch pseudoflavors.
Andrew Morton [Thu, 26 Feb 2004 14:46:54 +0000 (06:46 -0800)]
[PATCH] kNFSd: NFSdV4 fixes for replaying open requests.
From: NeilBrown <neilb@cse.unsw.edu.au>
Since the open op changes the current filehandle, we can't correctly replay
compounds containing opens unless we save the filehandle resulting from the
open as well as the encoded reply.
Andrew Morton [Thu, 26 Feb 2004 14:46:20 +0000 (06:46 -0800)]
[PATCH] kNFSd: v4 exclusive open fix.
From: NeilBrown <neilb@cse.unsw.edu.au>
Exclusive creates were failing with permission errors, because they don't set
the mode on the newly created file, and the permission check in fh_verify
(called at the end of do_open_lookup) was failing. So pass in the
MAY_OWNER_OVERRIDE flag to allow the owner of the file to override the
permission check.
Andrew Morton [Thu, 26 Feb 2004 14:46:09 +0000 (06:46 -0800)]
[PATCH] kNFSd: NFSv4 locking state fix
From: NeilBrown <neilb@cse.unsw.edu.au>
It's OK for the find_lockstateowner_str to fail; that just means we haven't
seen the lockowner, and will compare the request range to all locks on the
file.
Andrew Morton [Thu, 26 Feb 2004 14:45:47 +0000 (06:45 -0800)]
[PATCH] kNFSd: IDmap support for the NFSv4 server.
From: NeilBrown <neilb@cse.unsw.edu.au>
Updated version which uses ascii-encoding of messages, from
http://www.citi.umich.edu/u/marius/linux-2.5.70-idmap-server-new.diff as of
October 14, 2003.
Andrew Morton [Thu, 26 Feb 2004 14:45:35 +0000 (06:45 -0800)]
[PATCH] kNFSd: gss api changes for integrity checking.
From: NeilBrown <neilb@cse.unsw.edu.au>
Doesn't actually add integrity support on the server yet; just adapts
server-side code to the gss api changes necessary to get integrity working on
the client.
Andrew Morton [Thu, 26 Feb 2004 14:45:25 +0000 (06:45 -0800)]
[PATCH] kNFSd: Add minimal server-side support for rpcsec_gss.
From: NeilBrown <neilb@cse.unsw.edu.au>
From: "J. Bruce Fields" <bfields@fieldses.org>
Note that the user (or exportfs, on the user's behalf) allows a gss
pseudoflavor to be used to access an export by exporting to a special client
named "gss/pseudoflavor-name", e.g., "gss/krb5" or "gss/lipkey-i".
Andrew Morton [Thu, 26 Feb 2004 14:44:54 +0000 (06:44 -0800)]
[PATCH] ppc64: Fix a sleeping with spinlock bug in ioremap
From: Benjamin Herrenschmidt <benh@kernel.crashing.org>
ppc64 uses its own range allocator for ioremap (in order to allocate
things in a different space than normal vmalloc). This is historic stuff,
we may get rid of it, but in the meantime, here's a patch turning the
spinlock in there into a semaphore so it doesn't blow up when doing
kmallocs.
Andre McCurdy [Thu, 26 Feb 2004 12:15:46 +0000 (12:15 +0000)]
[ARM] Optimise ARM720T Thumb abort unwinding.
Patch from: Andre.
Optimise data_thumb_pushpop and data_thumb_ldmstm population
counting code with a slightly more optimal algorithm than the
original as there are only 8 bits to count instead of 16.