Russell King [Mon, 31 May 2004 12:15:46 +0000 (13:15 +0100)]
[PCMCIA] Fix up SOC PCMCIA socket timing calculations
The timing calculations used by the PXA platforms did not always take
account of the timings handed to us by PCMCIA, and where it did, it
assumed IO timings for memory windows.
We fix this, and provide a generic function which calculates the
required timings (in nanoseconds) for IO, memory and attribute
windows. The SOC drivers only have to convert this information to
whatever format the hardware requires to achieve at least these
timing parameters.
Russell King [Mon, 31 May 2004 12:41:16 +0000 (13:41 +0100)]
[ARM] Eliminate meminfo 'end' element
Some machines decided to initialise this element. It's not necessary
since find_memend_and_nodes() initialises this itself. However,
'end' is not required if we initialise high_memory in this function
rather than waiting until mem_init() is called.
Peter Osterlund [Mon, 31 May 2004 08:11:45 +0000 (01:11 -0700)]
[PATCH] Avoid excessive stack usage in NFS
Assigning '*wdata' with a dynamic initializer creates a
temporary structure copy on the stack, and then the final
data is initialized with a "memcpy()".
As a result, these NFS functions use more than 800 bytes
of stack-space.
Changing the code to just do a memset followed by explicit
initialization of the non-zero member variables takes the
stack usage down to 36 bytes.
Alexander Viro [Sun, 30 May 2004 14:35:38 +0000 (07:35 -0700)]
[PATCH] sparse alpha: the rest of it
A bunch of "return in void function" dealt with, removed bogus extern
from definition of __load_new_mm_context(), sanitized fscking ugly
CROSS_64K() helper (even if sparse doesn't segfault on that anymore,
it's _still_ fscking ugly).
Alexander Viro [Sun, 30 May 2004 13:09:42 +0000 (06:09 -0700)]
[PATCH] sparse: SIOCGIFCONF handling - the rest of it
Fixed the type of SIOCGIFCONF callback; inet instance was already
correctly annotated, decnet one was _not_. Moreover, decnet callback
needed fixing - dereferencing userland address.
Alexander Viro [Sun, 30 May 2004 13:07:30 +0000 (06:07 -0700)]
[PATCH] sparse: amd64 annotation - beginning
Annotated basic primitives (copy_.._user, get_user, ...).
Functions got __user in prototypes, macros (in uaccess.h) got a
conditional check - see CHECK_UPTR() below. If you have more elegant
way to deal with the macros - please, tell.
Andi Kleen [Sun, 30 May 2004 04:55:13 +0000 (21:55 -0700)]
[PATCH] x86-64 update
Add accumulated bug fixes for x86-64 and some minor cleanups.
- Add ptep_set_access_flags from i386
- Change memory text mapping to 10MB from 40MB to make alias window
smaller
- Disable change_page_attr for kernel mapoing for now (wrong, but the
other code also doesn't work)
- Add .bss.page_aligned and align interrupt/exception stacks (idea from
Matt Mackall)
- Protect sysenter MSR setup against missing registers.
- Set mce tolerance level to 1 (panic instead of deadlock)
- Fix cross 4GB bug in find_first_bit (Michael Matz)
- Add missing memory clobbers in bitops.h (Suresh B. Siddha)
- Check kernel size at boot up
- Set boot cpu online at boot to fix early printk
- Fix EFER bit definitions (Dave Jones)
- Fix comments in 32bit syscall table.
- Quieten all 32bit syscalls that are unimplemented in 32bit.
- Various MCE fixes suggested by Eric Morton, David Boles et.al.
More to come.
- Quieten some printks
- Fix cpu online check in msr driver
- Lower polling interval for machine checks to 5 minutes to avoid
overrunning the registers.
- Make memcpy_{from,to}io more compatible with i386 (Roland Dreier)
Alexander Viro [Sat, 29 May 2004 12:36:13 +0000 (05:36 -0700)]
[PATCH] sparse: nf_sockopt() annotation
netfilter set/getsockopt annotated. That's a continuation of previous
patch - by now the only remaining place where setsockopt()/getsockopt()
userland pointers are not traced is vcc_[sg]etsockopt() and down into the
ATM drivers. Everything from that area in net/* should be done by now.
That's pretty much it as far as non-trivial splitting counts; remaining
patches in net/* are independent, tty and console stuff is also not hard to
split (not much of it, anyway) and what remains is arch-dependent code for
alpha and amd64. Of course there'll be more stuff coming, but as far as I'm
concerned the rest of my pile is managable - and finally below 200Kb. That'll
go tomorrow - right now I'm going down and getting some sleep...
Alexander Viro [Sat, 29 May 2004 11:44:03 +0000 (04:44 -0700)]
[PATCH] sparse: final bits of compat_ioctl
ethtool_ioctl() annotated; it would go in the first compat_ioctl
chunk (trivial ones) if it wouldn't be right after SIOCGIFCONF mess; was
easier to split in that order...
Alexander Viro [Sat, 29 May 2004 11:43:20 +0000 (04:43 -0700)]
[PATCH] sparse (compat_ioctl): font stuff
Annotated, cleaned up, wholesale copying of structure with
subsequeunt casts from hell replaced with get_user()/put_user() on
the fields we really need.
Alexander Viro [Sat, 29 May 2004 11:42:59 +0000 (04:42 -0700)]
[PATCH] sparse (compat_ioctl): raw_ioctl() fixes
Whoever had done the translation apparently never heard of
big-endian boxen. Replaced the kludge with get_user()/put_user() on
64bit values. Note that
struct raw_config_request
{
int raw_minor;
__u64 block_major;
__u64 block_minor;
};
has __u64 on _all_ platforms and it is used as an integer in raw.c code.
The only reason why translation is needed at all is alignment for 64bit
values; block_major and block_minor themselves should be passed as-is.
Alexander Viro [Sat, 29 May 2004 11:42:48 +0000 (04:42 -0700)]
[PATCH] sparse: compat_ioctl - easy part
Easy parts of compat_ioctl fixes - pure __user annotation.
In one place (SG_IO handling) replaced dereference of user pointer
with put_user() (why whoever had noticed that just put a FIXME instead
of obvios fix is a mistery...)
a bunch of trivial ->read() and ->write() instances (and their procfs
relatives) __user-annotated. All chunks are independent, but IMO not
worth splitting.
Alexander Viro [Sat, 29 May 2004 09:18:12 +0000 (02:18 -0700)]
[PATCH] sparse: bits and pieces
Independent minor bits caught by sparse:
- paride.h mixing void and int in ? :, used always in a void context
ide-iops.c return insw() - insw is void()
- scsi/constants.c uses undefined macros in #if; added #define to 0 in
case that used to leave it undefined
- usb/host/hcd.h: fixed-point arithmetics in constant
- fs/exec.c: missing UL on a large constant
- fs/locks.c: #if where #ifdef should've been
- fs.h: missing UL on MAX_LFS_FILESIZE in 64bit case