ChangeSet@1.1830, 2004-05-22 22:46:07-07:00, torvalds@ppc970.osdl.org
Linux 2.6.7-rc1
TAG: v2.6.7-rc1
ChangeSet@1.1829, 2004-05-22 22:26:09-07:00, roland@redhat.com
[PATCH] bogus sigaltstack calls by rt_sigreturn
There is a longstanding bug in the rt_sigreturn system call.
This exists in both 2.4 and 2.6, and for almost every platform.
I am referring to this code in sys_rt_sigreturn (arch/i386/kernel/signal.c):
if (__copy_from_user(&st, &frame->uc.uc_stack, sizeof(st)))
goto badframe;
/* It is more difficult to avoid calling this function than to
call it and ignore errors. */
/*
* THIS CANNOT WORK! "&st" is a kernel address, and "do_sigaltstack()"
* takes a user address (and verifies that it is a user address). End
* result: it does exactly _nothing_.
*/
do_sigaltstack(&st, NULL, regs->esp);
As the comment says, this is bogus. On vanilla i386 kernels, this is just
harmlessly stupid--do_sigaltstack always does nothing and returns -EFAULT.
However this code actually bites users on kernels using Ingo Molnar's 4G/4G
address space layout changes. There some kernel stack address might very
well be a lovely and readable user address as well. When that happens, we
make a sigaltstack call with some random buffer, and then the fun begins.
To my knowledge, this has produced trouble in the real world only for 4G
i386 kernels (RHEL and Fedora "hugemem" kernels) on machines that actually
have several GB of physical memory (and in programs that are actually using
sigaltstack and handling a lot of signals). However, the same clearly
broken code has been blindly copied to most other architecture ports, and
off hand I don't know the address space details of any other well enough to
know if real kernel stack addresses and real user addresses are in fact
disjoint as they are on i386 when not using the nonstandard 4GB address
space layout.
The obvious intent of the call being there in the first place is to permit
a signal handler to diddle its ucontext_t.uc_stack before returning, and
have this effect a sigaltstack call on the signal handler return. This is
not only an optimization vs doing the extra system call, but makes it
possible to make a sigaltstack change when that handler itself was running
on the signal stack. AFAICT this has never actually worked before, so
certainly noone depends on it. But the code certainly suggests that
someone intended at one time for that to be the behavior. Thus I am
inclined to fix it so it works in that way, though it has not done so before.
It would also be reasonable enough to simply rip out the bogus call and not
have this functionality.
From the current state of code in both 2.4 and 2.6, there is no fathoming
how this broken code came about. It's actually much simpler to just make
it work! I can only presume that at some point in the past the sigaltstack
implementation functions were different such that this made sense. Of the
few ports I've looked at briefly, only the ppc/pc64 porters (go paulus!)
actually tried to understand what the i386 code was doing and implemented
it correctly rather than just carefully transliterating the bug.
The patch below fixes only the i386 and x86_64 versions. The x86_64
patches I have not actually tested. I think each and every arch (except
ppc and ppc64) need to make the corresponding fixes as well. Note that
there is a function to fix for each native arch, and then one for each
emulation flavor. The details differ minutely for getting the calls right
in each emulation flavor, but I think that most or all of the arch's with
biarch/emulation support have similar enough code that each emulation
flavor's fix will look very much like the arch/x86_64/ia32/ia32_signal.c
patch here.
ChangeSet@1.1828, 2004-05-22 22:10:33-07:00, akpm@osdl.org
[PATCH] partial prefetch for vma_prio_tree_next
From: Rajesh Venkatasubramanian <vrajesh@umich.edu>
This patch adds prefetches for walking a vm_set.list. Adding prefetches
for prio tree traversals is tricky and may lead to cache trashing. So this
patch just adds prefetches only when walking a vm_set.list.
I haven't done any benchmarks to show that this patch improves performance.
However, this patch should help to improve performance when vm_set.lists
are long, e.g., libc. Since we only prefetch vmas that are guaranteed to
be used in the near future, this patch should not result in cache trashing,
theoretically.
I didn't add any NULL checks before prefetching because prefetch.h clearly
says prefetch(0) is okay.
ChangeSet@1.1827, 2004-05-22 22:10:23-07:00, akpm@osdl.org
[PATCH] rmap 40 better anon_vma sharing
From: Hugh Dickins <hugh@veritas.com>
anon_vma rmap will always necessarily be more restrictive about vma merging
than before: according to the history of the vmas in an mm, they are liable to
be allocated different anon_vma heads, and from that point on be unmergeable.
Most of the time this doesn't matter at all; but in two cases it may matter.
One case is that mremap refuses (-EFAULT) to span more than a single vma: so
it is conceivable that some app has relied on vma merging prior to mremap in
the past, and will now fail with anon_vma. Conceivable but unlikely, let's
cross that bridge if we come to it: and the right answer would be to extend
mremap, which should not be exporting the kernel's implementation detail of
vma to user interface.
The other case that matters is when a reasonable repetitive sequence of
syscalls and faults ends up with a large number of separate unmergeable vmas,
instead of the single merged vma it could have.
Andrea's mprotect-vma-merging patch fixed some such instances, but left other
plausible cases unmerged. There is no perfect solution, and the harder you
try to allow vmas to be merged, the less efficient anon_vma becomes, in the
extreme there being one to span the whole address space, from which hangs
every private vma; but anonmm rmap is clearly superior to that extreme.
Andrea's principle was that neighbouring vmas which could be mprotected into
mergeable vmas should be allowed to share anon_vma: good insight. His
implementation was to arrange this sharing when trying vma merge, but that
seems to be too early. This patch sticks to the principle, but implements it
in anon_vma_prepare, when handling the first write fault on a private vma:
with better results. The drawback is that this first write fault needs an
extra find_vma_prev (whereas prev was already to hand when implementing
anon_vma sharing at try-to-merge time).
ChangeSet@1.1826, 2004-05-22 22:10:11-07:00, akpm@osdl.org
[PATCH] rmap 39 add anon_vma rmap
From: Hugh Dickins <hugh@veritas.com>
Andrea Arcangeli's anon_vma object-based reverse mapping scheme for anonymous
pages. Instead of tracking anonymous pages by pte_chains or by mm, this
tracks them by vma. But because vmas are frequently split and merged
(particularly by mprotect), a page cannot point directly to its vma(s), but
instead to an anon_vma list of those vmas likely to contain the page - a list
on which vmas can easily be linked and unlinked as they come and go. The vmas
on one list are all related, either by forking or by splitting.
This has three particular advantages over anonmm: that it can cope
effortlessly with mremap moves; and no longer needs page_table_lock to protect
an mm's vma tree, since try_to_unmap finds vmas via page -> anon_vma -> vma
instead of using find_vma; and should use less cpu for swapout since it can
locate its anonymous vmas more quickly.
It does have disadvantages too: a lot more change in mmap.c to deal with
anon_vmas, though small straightforward additions now that the vma merging has
been refactored there; more lowmem needed for each anon_vma and vma structure;
an additional restriction on the merging of vmas (cannot be merged if already
assigned different anon_vmas, since then their pages will be pointing to
different heads).
(There would be no need to enlarge the vma structure if anonymous pages
belonged only to anonymous vmas; but private file mappings accumulate
anonymous pages by copy-on-write, so need to be listed in both anon_vma and
prio_tree at the same time. A different implementation could avoid that by
using anon_vmas only for purely anonymous vmas, and use the existing prio_tree
to locate cow pages - but that would involve a long search for each single
private copy, probably not a good idea.)
Where before the vm_pgoff of a purely anonymous (not file-backed) vma was
meaningless, now it represents the virtual start address at which that vma is
mapped - which the standard file pgoff manipulations treat linearly as vmas
are split and merged. But if mremap moves the vma, then it generally carries
its original vm_pgoff to the new location, so pages shared with the old
location can still be found. Magic.
Hugh has massaged it somewhat: building on the earlier rmap patches, this
patch is a fifth of the size of Andrea's original anon_vma patch. Please note
that this posting will be his first sight of this patch, which he may or may
not approve.
ChangeSet@1.1825, 2004-05-22 22:10:00-07:00, akpm@osdl.org
[PATCH] rmap 38 remove anonmm rmap
From: Hugh Dickins <hugh@veritas.com>
Before moving on to anon_vma rmap, remove now what's peculiar to anonmm rmap:
the anonmm handling and the mremap move cows. Temporarily reduce
page_referenced_anon and try_to_unmap_anon to stubs, so a kernel built with
this patch will not swap anonymous at all.
ChangeSet@1.1824, 2004-05-22 22:09:49-07:00, akpm@osdl.org
[PATCH] rmap 37 page_add_anon_rmap vma
From: Hugh Dickins <hugh@veritas.com>
Silly final patch for anonmm rmap: change page_add_anon_rmap's mm arg to vma
arg like anon_vma rmap, to smooth the transition between them.
ChangeSet@1.1823, 2004-05-22 22:09:38-07:00, akpm@osdl.org
[PATCH] rmap 36 mprotect use vma_merge
From: Hugh Dickins <hugh@veritas.com>
Earlier on, in 2.6.6, we took the vma merging code out of mremap.c and let it
rely on vma_merge instead (via copy_vma). Now take the vma merging code out
of mprotect.c and let it rely on vma_merge too: so vma_merge becomes the sole
vma merging engine. The fruit of this consolidation is that mprotect now
merges file-backed vmas naturally. Make this change now because anon_vma will
complicate the vma merging rules, let's keep them all in one place.
vma_merge remains where the decisions are made, whether to merge with prev
and/or next; but now [addr,end) may be the latter part of prev, or first part
or whole of next, whereas before it was always a new area.
vma_adjust carries out vma_merge's decision, but when sliding the boundary
between vma and next, must temporarily remove next from the prio_tree too.
And it turned out (by oops) to have a surer idea of whether next needs to be
removed than vma_merge, so the fput and freeing moves into vma_adjust.
Too much decipherment of what's going on at the start of vma_adjust? Yes, and
there's a delicate assumption that you may use vma_adjust in sliding a
boundary, or splitting in two, or growing a vma (mremap uses it in that way),
but not for simply shrinking a vma. Which is so, and must be so (how could
pages mapped in the part to go, be zapped without first splitting?), but would
feel better with some protection.
__vma_unlink can then be moved from mm.h to mmap.c, and mm.h's more misleading
than helpful can_vma_merge is deleted.
ChangeSet@1.1822, 2004-05-22 22:09:27-07:00, akpm@osdl.org
[PATCH] rmap 35 mmap.c cleanups
From: Hugh Dickins <hugh@veritas.com>
Before some real vma_merge work in mmap.c in the next patch, a patch of
miscellaneous cleanups to cut down the noise:
- remove rb_parent arg from vma_merge: mm->mmap can do that case
- scatter pgoff_t around to ingratiate myself with the boss
- reorder is_mergeable_vma tests, vm_ops->close is least likely
- can_vma_merge_before take combined pgoff+pglen arg (from Andrea)
- rearrange do_mmap_pgoff's ever-confusing anonymous flags switch
- comment do_mmap_pgoff's mysterious (vm_flags & VM_SHARED) test
- fix ISO C90 warning on browse_rb if building with DEBUG_MM_RB
- stop that long MNT_NOEXEC line wrapping
Yes, buried in amidst these is indeed one pgoff replaced by "next->vm_pgoff -
pglen" (reverting a mod of mine which took pgoff supplied by user too
seriously in the anon case), and another pgoff replaced by 0 (reverting
anon_vma mod which crept in with NUMA API): neither of them really matters,
except perhaps in /proc/pid/maps.
ChangeSet@1.1821, 2004-05-22 22:09:16-07:00, akpm@osdl.org
[PATCH] rmap 34 vm_flags page_table_lock
From: Hugh Dickins <hugh@veritas.com>
First of a batch of seven rmap patches, based on 2.6.6-mm3. Probably the
final batch: remaining issues outstanding can have isolated patches. The
first half of the batch is good for anonmm or anon_vma, the second half of the
batch replaces my anonmm rmap by Andrea's anon_vma rmap.
Judge for yourselves which you prefer. I do think I was wrong to call
anon_vma more complex than anonmm (its lists are easier to understand than my
refcounting), and I'm happy with its vma merging after the last patch. It
just comes down to whether we can spare the extra 24 bytes (maximum, on
32-bit) per vma for its advantages in swapout and mremap.
rmap 34 vm_flags page_table_lock
Why do we guard vm_flags mods with page_table_lock when it's already
down_write guarded by mmap_sem? There's probably a historical reason, but no
sign of any need for it now. Andrea added a comment and removed the instance
from mprotect.c, Hugh plagiarized his comment and removed the instances from
madvise.c and mlock.c. Huge leap in scalability... not expected; but this
should stop people asking why those spinlocks.
ChangeSet@1.1820, 2004-05-22 22:09:05-07:00, akpm@osdl.org
[PATCH] rmap 33 install_arg_page vma
From: Hugh Dickins <hugh@veritas.com>
anon_vma will need to pass vma to put_dirty_page, so change it and its
various callers (setup_arg_pages and its 32-on-64-bit arch variants); and
please, let's rename it to install_arg_page.
Earlier attempt to do this (rmap 26 __setup_arg_pages) tried to clean up
those callers instead, but failed to boot: so now apply rmap 27's memset
initialization of vmas to these callers too; which relieves them from
needing the recently included linux/mempolicy.h.
While there, moved install_arg_page's flush_dcache_page up before
page_table_lock - doesn't in fact matter at all, just saves one worry when
researching flush_dcache_page locking constraints.
ChangeSet@1.1819, 2004-05-22 22:08:54-07:00, akpm@osdl.org
[PATCH] rmap 32 zap_pmd_range wrap
From: Hugh Dickins <hugh@veritas.com>
From: Andrea Arcangeli <andrea@suse.de>
zap_pmd_range, alone of all those page_range loops, lacks the check for
whether address wrapped. Hugh is in doubt as to whether this makes any
difference to any config on any arch, but eager to fix the odd one out.
ChangeSet@1.1818, 2004-05-22 22:08:43-07:00, akpm@osdl.org
[PATCH] rmap 31 unlikely bad memory
From: Hugh Dickins <hugh@veritas.com>
From: Andrea Arcangeli <andrea@suse.de>
Sprinkle unlikelys throughout mm/memory.c, wherever we see a pgd_bad or a
pmd_bad; likely or unlikely on pte_same or !pte_same. Put the jump in the
error return from do_no_page, not in the fast path.
ChangeSet@1.1817, 2004-05-22 22:08:33-07:00, akpm@osdl.org
[PATCH] rmap 30 fix bad mapcount
From: Hugh Dickins <hugh@veritas.com>
From: Andrea Arcangeli <andrea@suse.de>
page_alloc.c's bad_page routine should reset a bad mapcount; and it's more
revealing to show the bad mapcount than just the boolean mapped.
ChangeSet@1.1816, 2004-05-22 22:08:22-07:00, akpm@osdl.org
[PATCH] rmap 29 VM_RESERVED safety
From: Hugh Dickins <hugh@veritas.com>
From: Andrea Arcangeli <andrea@suse.de>
Set VM_RESERVED in videobuf_mmap_mapper, to warn do_no_page and swapout not to
worry about its pages. Set VM_RESERVED in ia64_elf32_init, it too provides an
unusual nopage which might surprise higher level checks. Future safety: they
don't actually pose a problem in this current tree.
ChangeSet@1.1815, 2004-05-22 22:08:11-07:00, akpm@osdl.org
[PATCH] rmap 28 remove_vm_struct
From: Hugh Dickins <hugh@veritas.com>
The callers of remove_shared_vm_struct then proceed to do several more
identical things: gather them together in remove_vm_struct.
ChangeSet@1.1814, 2004-05-22 22:08:00-07:00, akpm@osdl.org
[PATCH] rmap 27 memset 0 vma
From: Hugh Dickins <hugh@veritas.com>
We're NULLifying more and more fields when initializing a vma
(mpol_set_vma_default does that too, if configured to do anything). Now use
memset to avoid specifying fields, and save a little code too.
(Yes, I realize anon_vma will want to set vm_pgoff non-0, but I think that
will be better handled at the core, since anon vm_pgoff is negotiable up until
an anon_vma is actually assigned.)
ChangeSet@1.1813, 2004-05-22 22:07:49-07:00, akpm@osdl.org
[PATCH] rmap 24 no rmap fastcalls
From: Hugh Dickins <hugh@veritas.com>
I like CONFIG_REGPARM, even when it's forced on: because it's easy to force
off for debugging - easier than editing out scattered fastcalls. Plus I've
never understood why we make function foo a fastcall, but function bar not.
Remove fastcall directives from rmap. And fix comment about mremap_moved
race: it only applies to anon pages.
ChangeSet@1.1812, 2004-05-22 22:07:38-07:00, akpm@osdl.org
[PATCH] rmap 23 empty flush_dcache_mmap_lock
From: Hugh Dickins <hugh@veritas.com>
Most architectures (like i386) do nothing in flush_dcache_page, or don't scan
i_mmap in flush_dcache_page, so don't need flush_dcache_mmap_lock to do
anything: define it and flush_dcache_mmap_unlock away. Noticed arm26, cris,
h8300 still defining flush_page_to_ram: delete it again.
ChangeSet@1.1811, 2004-05-22 22:07:26-07:00, akpm@osdl.org
[PATCH] rmap 22 flush_dcache_mmap_lock
From: Hugh Dickins <hugh@veritas.com>
arm and parisc __flush_dcache_page have been scanning the i_mmap(_shared) list
without locking or disabling preemption. That may be even more unsafe now
it's a prio tree instead of a list.
It looks like we cannot use i_shared_lock for this protection: most uses of
flush_dcache_page are okay, and only one would need lock ordering fixed
(get_user_pages holds page_table_lock across flush_dcache_page); but there's a
few (e.g. in net and ntfs) which look as if they're using it in I/O
completion - and it would be restrictive to disallow it there.
So, on arm and parisc only, define flush_dcache_mmap_lock(mapping) as
spin_lock_irq(&(mapping)->tree_lock); on i386 (and other arches left to the
next patch) define it away to nothing; and use where needed.
While updating locking hierarchy in filemap.c, remove two layers of the fossil
record from add_to_page_cache comment: no longer used for swap.
I believe all the #includes will work out, but have only built i386. I can
see several things about this patch which might cause revulsion: the name
flush_dcache_mmap_lock? the reuse of the page radix_tree's tree_lock for this
different purpose? spin_lock_irqsave instead? can't we somehow get
i_shared_lock to handle the problem?
ChangeSet@1.1810, 2004-05-22 22:07:15-07:00, akpm@osdl.org
[PATCH] rmap 21 try_to_unmap_one mapcount
From: Hugh Dickins <hugh@veritas.com>
Why should try_to_unmap_anon and try_to_unmap_file take a copy of
page->mapcount and pass it down for try_to_unmap_one to decrement? why not
just check page->mapcount itself? asks akpm. Perhaps there used to be a good
reason, but not any more: remove the mapcount arg.
ChangeSet@1.1809, 2004-05-22 22:07:04-07:00, akpm@osdl.org
[PATCH] rmap 20 i_mmap_shared into i_mmap
From: Hugh Dickins <hugh@veritas.com>
Why should struct address_space have separate i_mmap and i_mmap_shared
prio_trees (separating !VM_SHARED and VM_SHARED vmas)? No good reason, the
same processing is usually needed on both. Merge i_mmap_shared into i_mmap,
but keep i_mmap_writable count of VM_SHARED vmas (those capable of dirtying
the underlying file) for the mapping_writably_mapped test.
The VM_MAYSHARE test in the arm and parisc loops is not necessarily what they
will want to use in the end: it's provided as a harmless example of what might
be appropriate, but maintainers are likely to revise it later (that parisc
loop is currently being changed in the parisc tree anyway).
On the way, remove the now out-of-date comments on vm_area_struct size.
ChangeSet@1.1808, 2004-05-22 22:06:53-07:00, akpm@osdl.org
[PATCH] rmap.c comment/style fixups
From: Christoph Hellwig <hch@lst.de>
ChangeSet@1.1807, 2004-05-22 22:06:42-07:00, akpm@osdl.org
[PATCH] vm_area_struct size comment
From: Hugh Dickins <hugh@veritas.com>
Missed comment on the size of vm_area_struct: it is no longer 64 bytes on
ia32.
ChangeSet@1.1806, 2004-05-22 22:06:32-07:00, akpm@osdl.org
[PATCH] rmap 19: arch prio_tree
From: Hugh Dickins <hugh@veritas.com>
The previous patches of this prio_tree batch have been to generic only. Now
the arm and parisc __flush_dcache_page are converted to using
vma_prio_tree_next, and benefit from its selection of relevant vmas. They're
still accessing the tree without i_shared_lock or any other, that's not
forgotten but still under investigation. Include pagemap.h for the definition
of PAGE_CACHE_SHIFT. s390 and x86_64 no longer initialize vma's shared field
(whose type has changed), done later.
ChangeSet@1.1805, 2004-05-22 22:06:21-07:00, akpm@osdl.org
[PATCH] unmap_mapping_range: add comment
ChangeSet@1.1804, 2004-05-22 22:06:10-07:00, akpm@osdl.org
[PATCH] rmap 18: i_mmap_nonlinear
From: Hugh Dickins <hugh@veritas.com>
The prio_tree is of no use to nonlinear vmas: currently we're having to search
the tree in the most inefficient way to find all its nonlinears. At the very
least we need an indication of the unlikely case when there are some
nonlinears; but really, we'd do best to take them out of the prio_tree
altogether, into a list of their own - i_mmap_nonlinear.
ChangeSet@1.1803, 2004-05-22 22:05:59-07:00, akpm@osdl.org
[PATCH] rmap 17: real prio_tree
From: Hugh Dickins <hugh@veritas.com>
Rajesh Venkatasubramanian's implementation of a radix priority search tree of
vmas, to handle object-based reverse mapping corner cases well.
Amongst the objections to object-based rmap were test cases by akpm and by
mingo, in which large numbers of vmas mapping disjoint or overlapping parts of
a file showed strikingly poor performance of the i_mmap lists. Perhaps those
tests are irrelevant in the real world? We cannot be too sure: the prio_tree
is well-suited to solving precisely that problem, so unless it turns out to
bring too much overhead, let's include it.
Why is this prio_tree.c placed in mm rather than lib? See GET_INDEX: this
implementation is geared throughout to use with vmas, though the first half of
the file appears more general than the second half.
Each node of the prio_tree is itself (contained within) a vma: might save
memory by allocating distinct nodes from which to hang vmas, but wouldn't save
much, and would complicate the usage with preallocations. Off each node of
the prio_tree itself hangs a list of like vmas, if any.
The connection from node to list is a little awkward, but probably the best
compromise: it would be more straightforward to list likes directly from the
tree node, but that would use more memory per vma, for the list_head and to
identify that head. Instead, node's shared.vm_set.head points to next vma
(whose shared.vm_set.head points back to node vma), and that next contains the
list_head from which the rest hang - reusing fields already used in the
prio_tree node itself.
Currently lacks prefetch: Rajesh hopes to add some soon.
ChangeSet@1.1802, 2004-05-22 22:05:47-07:00, akpm@osdl.org
[PATCH] rmap 16: pretend prio_tree
From: Hugh Dickins <hugh@veritas.com>
Pave the way for prio_tree by switching over to its interfaces, but actually
still implement them with the same old lists as before.
Most of the vma_prio_tree interfaces are straightforward. The interesting one
is vma_prio_tree_next, used to search the tree for all vmas which overlap the
given range: unlike the list_for_each_entry it replaces, it does not find
every vma, just those that match.
But this does leave handling of nonlinear vmas in a very unsatisfactory state:
for now we have to search again over the maximum range to find all the
nonlinear vmas which might contain a page, which of course takes away the
point of the tree. Fixed in later patch of this batch.
There is no need to initialize vma linkage all over, just do it before
inserting the vma in list or tree. /proc/pid/statm had an odd test for its
shared count: simplified to an equivalent test on vm_file.
ChangeSet@1.1801, 2004-05-22 22:05:35-07:00, akpm@osdl.org
[PATCH] rmap 15: vma_adjust
From: Hugh Dickins <hugh@veritas.com>
If file-based vmas are to be kept in a tree, according to the file offsets
they map, then adjusting the vma's start pgoff or its end involves
repositioning in the tree, while holding i_shared_lock (and page_table_lock).
We used to avoid that if possible, e.g. when just moving end; but if we're
heading that way, let's now tidy up vma_merge and split_vma, and do all the
locking and adjustment in a new helper vma_adjust. And please, let's call the
next vma in vma_merge "next" rather than "prev".
Since these patches are diffed over 2.6.6-rc2-mm2, they include the NUMA
mpolicy mods which you'll have to remove to go earlier in the series, sorry
for that nuisance. I have intentionally changed the one vma_mpol_equal to
mpol_equal, to make the merge cases more alike.
ChangeSet@1.1800, 2004-05-22 22:05:24-07:00, akpm@osdl.org
[PATCH] numa api: fix end of memory handling in mbind
From: Andi Kleen <ak@suse.de>
This fixes a user triggerable crash in mbind() in NUMA API. It would oops
when running into the end of memory. Actually not really oops, because a
oops with the mm sem hold for writing always deadlocks.
ChangeSet@1.1799, 2004-05-22 22:05:14-07:00, akpm@osdl.org
[PATCH] numa api: Add policy support to anonymous memory
From: Andi Kleen <ak@suse.de>
Change to core VM to use alloc_page_vma() instead of alloc_page().
Change the swap readahead to follow the policy of the VMA.
ChangeSet@1.1798, 2004-05-22 22:05:02-07:00, akpm@osdl.org
[PATCH] numa api: Add statistics
From: Andi Kleen <ak@suse.de>
Add NUMA hit/miss statistics to page allocation and display them in sysfs.
This is not 100% required for NUMA API, but without this it is very
The overhead is quite low because all counters are per CPU and only happens
when CONFIG_NUMA is defined.
ChangeSet@1.1797, 2004-05-22 22:04:51-07:00, akpm@osdl.org
[PATCH] small numa api fixups
From: Christoph Hellwig <hch@lst.de>
- don't include mempolicy.h in sched.h and mm.h when a forward delcaration
is enough. Andi argued against that in the past, but I'd really hate to add
another header to two of the includes used in basically every driver when we
can include it in the six files actually needing it instead (that number is
for my ppc32 system, maybe other arches need more include in their
directories)
- make numa api fields in tast_struct conditional on CONFIG_NUMA, this gives
us a few ugly ifdefs but avoids wasting memory on non-NUMA systems.
ChangeSet@1.1796, 2004-05-22 22:04:40-07:00, akpm@osdl.org
[PATCH] numa api: Add shared memory support
From: Andi Kleen <ak@suse.de>
Add support to tmpfs and hugetlbfs to support NUMA API. Shared memory is a
bit of a special case for NUMA policy. Normally policy is associated to VMAs
or to processes, but for a shared memory segment you really want to share the
policy. The core NUMA API has code for that, this patch adds the necessary
changes to tmpfs and hugetlbfs.
First it changes the custom swapping code in tmpfs to follow the policy set
via VMAs.
It is also useful to have a "backing store" of policy that saves the policy
even when nobody has the shared memory segment mapped. This allows command
line tools to pre configure policy, which is then later used by programs.
Note that hugetlbfs needs more changes - it is also required to switch it to
lazy allocation, otherwise the prefault prevents mbind() from working.
ChangeSet@1.1795, 2004-05-22 22:04:29-07:00, akpm@osdl.org
[PATCH] numa api: Add VMA hooks for policy
From: Andi Kleen <ak@suse.de>
NUMA API adds a policy to each VMA. During VMA creattion, merging and
splitting these policies must be handled properly. This patch adds the calls
to this.
It is a nop when CONFIG_NUMA is not defined.
ChangeSet@1.1794, 2004-05-22 22:04:17-07:00, akpm@osdl.org
[PATCH] Re-add NUMA API statistics
From: Andi Kleen <ak@suse.de>
Patch readds the sysfs output of the NUMA API statistics. All my test
scripts need this and it is very useful to check if the policy actually
works.
This got lost when the huge page numa api changes got dropped.
I decided to not resend the huge pages NUMA API changes for now. Instead I
will wait for this area to settle when demand paged large pages is merged.
ChangeSet@1.1793, 2004-05-22 22:04:06-07:00, akpm@osdl.org
[PATCH] numa api core: use SLAB_PANIC
ChangeSet@1.1792, 2004-05-22 22:03:56-07:00, akpm@osdl.org
[PATCH] mpol in copy_vma
From: Hugh Dickins <hugh@veritas.com>
I think Andi missed the copy_vma I recently added for mremap, and it'll
need something like below.... (Doesn't look like it'll optimize away when
it's not needed - rather bloaty.)
ChangeSet@1.1791, 2004-05-22 22:03:39-07:00, akpm@osdl.org
[PATCH] numa api: Core NUMA API code
From: Andi Kleen <ak@suse.de>
The following patches add support for configurable NUMA memory policy
for user processes. It is based on the proposal from last kernel summit
with feedback from various people.
This NUMA API doesn't not attempt to implement page migration or anything
else complicated: all it does is to police the allocation when a page
is first allocation or when a page is reallocated after swapping. Currently
only support for shared memory and anonymous memory is there; policy for
file based mappings is not implemented yet (although they get implicitely
policied by the default process policy)
It adds three new system calls: mbind to change the policy of a VMA,
set_mempolicy to change the policy of a process, get_mempolicy to retrieve
memory policy. User tools (numactl, libnuma, test programs, manpages) can be
found in ftp://ftp.suse.com/pub/people/ak/numa/numactl-0.6.tar.gz
For details on the system calls see the manpages
http://www.firstfloor.org/~andi/mbind.html
http://www.firstfloor.org/~andi/set_mempolicy.html
http://www.firstfloor.org/~andi/get_mempolicy.html
Most user programs should actually not use the system calls directly,
but use the higher level functions in libnuma
(http://www.firstfloor.org/~andi/numa.html) or the command line tools
(http://www.firstfloor.org/~andi/numactl.html
The system calls allow user programs and administors to set various NUMA memory
policies for putting memory on specific nodes. Here is a short description
of the policies copied from the kernel patch:
* NUMA policy allows the user to give hints in which node(s) memory should
* be allocated.
*
* Support four policies per VMA and per process:
*
* The VMA policy has priority over the process policy for a page fault.
*
* interleave Allocate memory interleaved over a set of nodes,
* with normal fallback if it fails.
* For VMA based allocations this interleaves based on the
* offset into the backing object or offset into the mapping
* for anonymous memory. For process policy an process counter
* is used.
* bind Only allocate memory on a specific set of nodes,
* no fallback.
* preferred Try a specific node first before normal fallback.
* As a special case node -1 here means do the allocation
* on the local CPU. This is normally identical to default,
* but useful to set in a VMA when you have a non default
* process policy.
* default Allocate on the local node first, or when on a VMA
* use the process policy. This is what Linux always did
* in a NUMA aware kernel and still does by, ahem, default.
*
* The process policy is applied for most non interrupt memory allocations
* in that process' context. Interrupts ignore the policies and always
* try to allocate on the local CPU. The VMA policy is only applied for memory
* allocations for a VMA in the VM.
*
* Currently there are a few corner cases in swapping where the policy
* is not applied, but the majority should be handled. When process policy
* is used it is not remembered over swap outs/swap ins.
*
* Only the highest zone in the zone hierarchy gets policied. Allocations
* requesting a lower zone just use default policy. This implies that
* on systems with highmem kernel lowmem allocation don't get policied.
* Same with GFP_DMA allocations.
*
* For shmfs/tmpfs/hugetlbfs shared memory the policy is shared between
* all users and remembered even when nobody has memory mapped.
This patch:
This is the core NUMA API code. This includes NUMA policy aware
wrappers for get_free_pages and alloc_page_vma(). On non NUMA kernels
these are defined away.
The system calls mbind (see http://www.firstfloor.org/~andi/mbind.html),
get_mempolicy (http://www.firstfloor.org/~andi/get_mempolicy.html) and
set_mempolicy (http://www.firstfloor.org/~andi/set_mempolicy.html) are
implemented here.
Adds a vm_policy field to the VMA and to the process. The process
also has field for interleaving. VMA interleaving uses the offset
into the VMA, but that's not possible for process allocations.
From: Andi Kleen <ak@muc.de>
> Andi, how come policy_vma() calls ->set_policy under i_shared_sem?
I think this can be actually dropped now. In an earlier version I did
walk the vma shared list to change the policies of other mappings to the
same shared memory region. This turned out too complicated with all the
corner cases, so I eventually gave in and added ->get_policy to the fast
path. Also there is still the mmap_sem which prevents races in the same MM.
Patch to remove it attached. Also adds documentation and removes the
bogus __alloc_page_vma() prototype noticed by hch.
From: Andi Kleen <ak@suse.de>
A few incremental fixes for NUMA API.
- Fix a few comments
- Add a compat_ function for get_mem_policy I considered changing the
ABI to avoid this, but that would have made the API too ugly. I put it
directly into the file because a mm/compat.c didn't seem worth it just for
this.
- Fix the algorithm for VMA interleave.
From: Matthew Dobson <colpatch@us.ibm.com>
1) Move the extern of alloc_pages_current() into #ifdef CONFIG_NUMA.
The only references to the function are in NUMA code in mempolicy.c
2) Remove the definitions of __alloc_page_vma(). They aren't used.
3) Move forward declaration of struct vm_area_struct to top of file.
ChangeSet@1.1790, 2004-05-22 22:03:26-07:00, akpm@osdl.org
[PATCH] numa api: Add IA64 support
From: Andi Kleen <ak@suse.de>
Add NUMA API system calls on IA64 and one bug fix required for it.
ChangeSet@1.1789, 2004-05-22 22:03:15-07:00, akpm@osdl.org
[PATCH] numa api: Add i386 support
From: Andi Kleen <ak@suse.de>
Add NUMA API system calls for i386
ChangeSet@1.1788, 2004-05-22 22:03:04-07:00, akpm@osdl.org
[PATCH] numa api: x86_64 support
From: Andi Kleen <ak@suse.de>
Add NUMA API system calls on x86-64
This includes a bugfix to prevent miscompilation on gcc 3.2 of bitmap.h
ChangeSet@1.1787, 2004-05-22 22:02:50-07:00, akpm@osdl.org
[PATCH] rmap 14: i_shared_lock fixes
From: Hugh Dickins <hugh@veritas.com>
First of batch of six patches which introduce Rajesh Venkatasubramanian's
implementation of a radix priority search tree of vmas, to handle object-based
reverse mapping corner cases well.
rmap 14 i_shared_lock fixes
Start the sequence with a couple of outstanding i_shared_lock fixes.
Since i_shared_sem became i_shared_lock, we've had to shift and then
temporarily remove mremap move's protection of concurrent truncation - if
mremap moves ptes while unmap_mapping_range_list is making its way through the
vmas, there's a danger we'd move a pte from an area yet to be cleaned back
into an area already cleared.
Now site the i_shared_lock with the page_table_lock in move_one_page. Replace
page_table_present by get_one_pte_map, so we know when it's necessary to
allocate a new page table: in which case have to drop i_shared_lock, trylock
and perhaps reorder locks on the way back. Yet another fix: must check for
NULL dst before pte_unmap(dst).
And over in rmap.c, try_to_unmap_file's cond_resched amidst its lengthy
nonlinear swapping was now causing might_sleep warnings: moved to a rather
unsatisfactory and less frequent cond_resched_lock on i_shared_lock when we
reach the end of the list; and one before starting on the nonlinears too: the
"cursor" may become out-of-date if we do schedule, but I doubt it's worth
bothering about.
ChangeSet@1.1786, 2004-05-22 22:02:36-07:00, akpm@osdl.org
[PATCH] Convert i_shared_sem back to a spinlock
Having a semaphore in there causes modest performance regressions on heavily
mmap-intensive workloads on some hardware. Specifically, up to 30% in SDET on
NUMAQ and big PPC64.
So switch it back to being a spinlock. This does mean that unmap_vmas() needs
to be told whether or not it is allowed to schedule away; that's simple to do
via the zap_details structure.
This change means that there will be high scheuling latencies when someone
truncates a large file which is currently mmapped, but nobody does that
anyway. The scheduling points in unmap_vmas() are mainly for munmap() and
exit(), and they still will work OK for that.
From: Hugh Dickins <hugh@veritas.com>
Sorry, my premature optimizations (trying to pass down NULL zap_details
except when needed) have caught you out doubly: unmap_mapping_range_list was
NULLing the details even though atomic was set; and if it hadn't, then
zap_pte_range would have missed free_swap_and_cache and pte_clear when pte
not present. Moved the optimization into zap_pte_range itself. Plus
massive documentation update.
From: Hugh Dickins <hugh@veritas.com>
Here's a second patch to add to the first: mremap's cows can't come home
without releasing the i_mmap_lock, better move the whole "Subtle point"
locking from move_vma into move_page_tables. And it's possible for the file
that was behind an anonymous page to be truncated while we drop that lock,
don't want to abort mremap because of VM_FAULT_SIGBUS.
(Eek, should we be checking do_swap_page of a vm_file area against the
truncate_count sequence? Technically yes, but I doubt we need bother.)
- We cannot hold i_mmap_lock across move_one_page() because
move_one_page() needs to perform __GFP_WAIT allocations of pagetable pages.
- Move the cond_resched() out so we test it once per page rather than only
when move_one_page() returns -EAGAIN.
ChangeSet@1.1785, 2004-05-22 22:02:25-07:00, akpm@osdl.org
[PATCH] rmap 13 include/asm deletions
From: Hugh Dickins <hugh@veritas.com>
Delete include/asm*/rmap.h
Delete pte_addr_t typedef from include/asm*/pgtable.h
Delete KM_PTE2 from subset of include/asm*/kmap_types.h
Beware when 4G/4G returns to -mm: i386 may need KM_FILLER for 8K stack.
ChangeSet@1.1784, 2004-05-22 22:02:09-07:00, akpm@osdl.org
[PATCH] rmap 12 pgtable remove rmap
From: Hugh Dickins <hugh@veritas.com>
Remove the support for pte_chain rmap from page table initialization, just
continue to maintain nr_page_table_pages (but only for user page tables -
it also counted vmalloc page tables before, little need, and I'm unsure if
per-cpu stats are safe early enough on all arches). mm/memory.c is the
only core file affected.
But ppc and ppc64 have found the old rmap page table initialization useful
to support their ptep_test_and_clear_young: so transfer rmap's
initialization to them (even on kernel page tables? well, okay).
ChangeSet@1.1783, 2004-05-22 22:01:58-07:00, akpm@osdl.org
[PATCH] rmap 11 mremap moves
From: Hugh Dickins <hugh@veritas.com>
A weakness of the anonmm scheme is its difficulty in tracking pages shared
between two or more mms (one being an ancestor of the other), when mremap has
been used to move a range of pages in one of those mms. mremap move is not
very common anyway, and it's more often used on a page range exclusive to the
mm; but uncommon though it may be, we must not allow unlocked pages to become
unswappable.
This patch follows Linus' suggestion, simply to take a private copy of the
page in such a case: early C-O-W. My previous implementation was daft with
respect to pages currently on swap: it insisted on swapping them in to copy
them. No need for that: just take the copy when a page is brought in from
swap, and its intended address is found to clash with what rmap has already
noted.
If do_swap_page has to make this copy in the mremap moved case (simply a call
to do_wp_page), might as well do so also in the case when it's a write access
but the page not exclusive, it's always seemed a little odd that swapin needed
a second fault for that. A bug even: get_user_pages force imagines that a
single call to handle_mm_fault must break C-O-W. Another bugfix: swapoff's
unuse_process didn't check is_vm_hugetlb_page.
Andrea's anon_vma has no such problem with mremap moved pages, handling them
with elegant use of vm_pgoff - though at some cost to vma merging. How
important is it to handle them efficiently? For now there's a msg
printk(KERN_WARNING "%s: mremap moved %d cows\n", current->comm, cows);
ChangeSet@1.1782, 2004-05-22 22:01:46-07:00, akpm@osdl.org
[PATCH] rmap 10 add anonmm rmap
From: Hugh Dickins <hugh@veritas.com>
Hugh's anonmm object-based reverse mapping scheme for anonymous pages. We
have not yet decided whether to adopt this scheme, or Andrea's more advanced
anon_vma scheme. anonmm is easier for me to merge quickly, to replace the
pte_chain rmap taken out in the previous patch; a patch to install Andrea's
anon_vma will follow in due course.
Why build up and tear down chains of pte pointers for anonymous pages, when a
page can only appear at one particular address, in a restricted group of mms
that might share it? (Except: see next patch on mremap.)
Introduce struct anonmm per mm to track anonymous pages, all forks from one
exec sharing the same bundle of linked anonmms. Anonymous pages originate in
one mm, but may be forked into another mm of the bundle later on. Callouts
from fork.c to allocate, dup and exit the anonmm structure private to rmap.c.
From: Hugh Dickins <hugh@veritas.com>
Two concurrent exits (of the last two mms sharing the anonhd). First
exit_rmap brings anonhd->count down to 2, gets preempted (at the
spin_unlock) by second, which brings anonhd->count down to 1, sees it's 1
and frees the anonhd (without making any change to anonhd->count itself),
cpu goes on to do something new which reallocates the old anonhd as a new
struct anonmm (probably not a head, in which case count will start at 1),
first resumes after the spin_unlock and sees anonhd->count 1, frees "anonhd"
again, it's used for something else, a later exit_rmap list_del finds list
corrupt.
ChangeSet@1.1781, 2004-05-22 22:01:30-07:00, akpm@osdl.org
[PATCH] rmap 9 remove pte_chains
From: Hugh Dickins <hugh@veritas.com>
Lots of deletions: the next patch will put in the new anon rmap, which
should look clearer if first we remove all of the old pte-pointer-based
rmap from the core in this patch - which therefore leaves anonymous rmap
totally disabled, anon pages locked in memory until process frees them.
Leave arch files (and page table rmap) untouched for now, clean them up in
a later batch. A few constructive changes amidst all the deletions:
Choose names (e.g. page_add_anon_rmap) and args (e.g. no more pteps) now
so we need not revisit so many files in the next patch. Inline function
page_dup_rmap for fork's copy_page_range, simply bumps mapcount under lock.
cond_resched_lock in copy_page_range. Struct page rearranged: no pte
union, just mapcount moved next to atomic count, so two ints can occupy one
long on 64-bit; i386 struct page now 32 bytes even with PAE. Never pass
PageReserved to page_remove_rmap, only do_wp_page did so.
From: Hugh Dickins <hugh@veritas.com>
Move page_add_anon_rmap's BUG_ON(page_mapping(page)) inside the rmap_lock
(well, might as well just check mapping if !mapcount then): if this page is
being mapped or unmapped on another cpu at the same time, page_mapping's
PageAnon(page) and page->mapping are volatile.
But page_mapping(page) is used more widely: I've a nasty feeling that
clear_page_anon, page_add_anon_rmap and/or page_mapping need barriers added
(also in 2.6.6 itself),
ChangeSet@1.1780, 2004-05-22 22:01:17-07:00, akpm@osdl.org
[PATCH] slab: consolidate panic code
Many places do:
if (kmem_cache_create(...) == NULL)
panic(...);
We can consolidate all that by passing another flag to kmem_cache_create()
which says "panic if it doesn't work".
ChangeSet@1.1779, 2004-05-22 22:01:04-07:00, akpm@osdl.org
[PATCH] rmap 8 unmap nonlinear
From: Hugh Dickins <hugh@veritas.com>
The previous patch let the ptes of file pages be located via page
->mapping->i_mmap and i_mmap_shared lists of vmas; which works well unless
the vma is VM_NONLINEAR - one in which sys_remap_file_pages has been used
to place pages in unexpected places, to avoid an explosion of distinct
unmergable vmas. Such pages were effectively locked in memory.
page_referenced_file is already skipping nonlinear vmas, they'd just waste
its time, and age unfairly any pages in their proper positions. Now extend
try_to_unmap_file, to persuade it to swap from nonlinears.
Ignoring the page requested, try to unmap cluster of 32 neighbouring ptes
(in worst case all empty slots) in a nonlinear vma, then move on to the
next vma; stopping when we've unmapped at least as many maps as the
requested page had (vague guide of how hard to try), or have reached the
end. With large sparse nonlinear vmas, this could take a long time:
inserted a cond_resched while no locks are held, unusual at this level but
I think okay, shrink_list does so.
Use vm_private_data a little like the old mm->swap_address, as a cursor
recording how far we got, so we don't attack the same ptes next time around
(earlier tried inserting an empty marker vma in the list, but that got
messy). How well this will work on real- life nonlinear vmas remains to be
seen, but should work better than locking them all in memory, or swapping
everything out all the time.
Existing users of vm_private_data have either VM_RESERVED or VM_DONTEXPAND
set, both of which are in the VM_SPECIAL category where we never try to
merge vmas: so removed the vm_private_data test from is_mergeable_vma, so
we can still merge VM_NONLINEARs. Of course, we could instead add another
field to vm_area_struct.
ChangeSet@1.1778, 2004-05-22 22:00:54-07:00, akpm@osdl.org
[PATCH] rmap 7 object-based rmap
From: Hugh Dickins <hugh@veritas.com>
Dave McCracken's object-based reverse mapping scheme for file pages: why
build up and tear down chains of pte pointers for file pages, when
page->mapping has i_mmap and i_mmap_shared lists of all the vmas which
might contain that page, and it appears at one deterministic position
within the vma (unless vma is nonlinear - see next patch)?
Has some drawbacks: more work to locate the ptes from page_referenced and
try_to_unmap, especially if the i_mmap lists contain a lot of vmas covering
different ranges; has to down_trylock the i_shared_sem, and hope that
doesn't fail too often. But attractive in that it uses less lowmem, and
shifts the rmap burden away from the hot paths, to swapout.
Hybrid scheme for the moment: carry on with pte_chains for anonymous pages,
that's unchanged; but file pages keep mapcount in the pte union of struct
page, where anonymous pages keep chain pointer or direct pte address: so
page_mapped(page) works on both.
Hugh massaged it a little: distinct page_add_file_rmap entry point; list
searches check rss so as not to waste time on mms fully swapped out; check
mapcount to terminate once all ptes have been found; and a WARN_ON if
page_referenced should have but couldn't find all the ptes.
ChangeSet@1.1777, 2004-05-22 22:00:42-07:00, akpm@osdl.org
[PATCH] __set_page_dirty_nobuffers race fix
Running __mark_inode_dirty() against a swapcache page is illegal and will
oops.
I see a race in set_page_dirty() wherein it can be called with a PageSwapCache
page, but if the page is removed from swapcache after
__set_page_dirty_nobuffers() drops tree_lock(), we have the situation where
PageSwapCache() is false, but local variable `mapping' points at swapcache.
Handle that by checking for non-null mapping->host. We don't care about the
page state at this point - we're only interested in the inode.
There is a converse case: what if a page is added to swapcache as we are
running set_page_dirty() against it?
In this case the page gets its PG_dirty flag set but it is not tagged as dirty
in the swapper_space radix tree. The swap writeout code will handle this OK
and test_clear_page_dirty()'s call to
radix_tree_tag_clear(PAGECACHE_TAG_DIRTY) will silently have no effect. The
only downside is that future radix-tree-based writearound won't notice that
such pages are dirty and swap IO scheduling will be a teensy bit worse.
The patch also fixes the (silly) testing of local variable `mapping' to see if
the page was truncated. We should test page_mapping() for that.
ChangeSet@1.1776, 2004-05-22 22:00:31-07:00, akpm@osdl.org
[PATCH] Make sync_page use swapper_space again
Revert recent changes to sync_page(). Now that page_mapping() returns
&swapper_space for swapcache pages we don't need to test for PageSwapCache in
sync_page().
ChangeSet@1.1775, 2004-05-22 22:00:19-07:00, akpm@osdl.org
[PATCH] vmscan: revert may_enter_fs changes
Fix up the "may we call writepage" logic for the swapcache changes.
ChangeSet@1.1774, 2004-05-22 22:00:08-07:00, akpm@osdl.org
[PATCH] revert recent swapcache handling changes
Go back to the 2.6.5 concepts, with rmap additions. In particular:
- Implement Andrea's flavour of page_mapping(). This function opaquely does
the right thing for pagecache pages, anon pages and for swapcache pages.
The critical thing here is that page_mapping() returns &swapper_space for
swapcache pages without actually requiring the storage at page->mapping.
This frees page->mapping for the anonmm/anonvma metadata.
- Andrea and Hugh placed the pagecache index of swapcache pages into
page->private rather than page->index. So add new page_index() function
which hides this.
- Make swapper_space.set_page_dirty() again point at
__set_page_dirty_buffers(). If we don't do that, a bare set_page_dirty()
will fall through to __set_page_dirty_buffers(), which is silly.
This way, __set_page_dirty_buffers() can continue to use page->mapping.
It should never go near anon or swapcache pages.
- Give swapper_space a ->set_page_dirty address_space_operation method, so
that set_page_dirty() will not fall through to __set_page_dirty_buffers()
for swapcache pages. That function is not set up to handle them.
The main effect of these changes is that swapcache pages are treated more
similarly to pagecache pages. And we are again tagging swapcache pages as
dirty in their radix tree, which is a requirement if we later wish to
implement swapcache writearound based on tagged radix-tree walks.
ChangeSet@1.1773, 2004-05-22 21:59:57-07:00, akpm@osdl.org
[PATCH] __add_to_swap_cache and add_to_pagecache() simplification
Simplify the logic in there a bit.
ChangeSet@1.1772, 2004-05-22 21:59:45-07:00, akpm@osdl.org
[PATCH] Make swapper_space tree_lock irq-safe
->tree_lock is supposed to be IRQ-safe. Hugh worked out that with his
changes, we never actually take it from interrupt context, so spin_lock() is
sufficient.
Apart from kinda freaking me out, the analysis which led to this decision
becomes untrue with later patches. So make it irq-safe.
ChangeSet@1.1758.1.1, 2004-05-22 14:27:16-07:00, torvalds@ppc970.osdl.org
Avoid type warning in comparison by making it explicit.
(The difference between two pointers is a "size_t", while
MAX_LEN and the result here are "int"s).
ChangeSet@1.1770, 2004-05-22 13:47:44-07:00, shemminger@osdl.org
[BRIDGE]: Forwarding table sanity checks.
Forwarding table paranoia:
* Solve some potential problems if a device changes address and one or
more device has the same address.
* Warn if new device added to a bridge matches a entry that has shown
up on the network.
* Also don't put static entries in the timer list, they don't time
out so shouldn't be there.
ChangeSet@1.1769, 2004-05-22 13:47:01-07:00, shemminger@osdl.org
[BRIDGE]: Compat hooks for new-ioctl interface.
Replacement 64 bit compatibility code for the new ioctl's. The new
ioctl's all pass through clean, but for the old style ioctl's it uses
the mis-feature of the earlier bridge-utils that they check the API version.
So if an old 32bit version of brctl is run on a 64bit platform it will
report
bridge utilities not compatible with kernel version
Tested on Itanium 1; but should solve issue for sparc, ppc, and x86_64
ChangeSet@1.1768, 2004-05-22 13:46:09-07:00, shemminger@osdl.org
[BRIDGE]: New ioctl interface for 32/64 compatability.
Add four new ioctl's for the operations that can't be done through sysfs.
The existing bridge ioctl's are multiplexed, and most go through SIOCDEVPRIVATE
so they won't work in a mixed 32/64bit environment.
The new release of bridge-utils will use these if possible, and fall
back to the old interface.
ChangeSet@1.1767, 2004-05-22 13:44:51-07:00, shemminger@osdl.org
[BRIDGE]: Add sysfs support.
ChangeSet@1.1766, 2004-05-22 13:39:53-07:00, shemminger@osdl.org
[BRIDGE]: Expose timer_residue function for use by sysfs.
Move the local function timer_residue to br_timer_value so it can
be used by both ioctl and sysfs code.
ChangeSet@1.1765, 2004-05-22 13:39:18-07:00, shemminger@osdl.org
[BRIDGE]: Read forwarding table chunk at a time.
Change how the read of forwarding table works. Instead of copying
entries to user one at a time, use an intermediate kernel buffer and
do up to a page at a chunk.
This gets rid of some awkward code dealing with entries getting deleted
during the copy. And allows same function to be used by later sysfs
hook.
ChangeSet@1.1764, 2004-05-22 13:38:39-07:00, shemminger@osdl.org
[BRIDGE]: Fix deadlock on device removal.
Fix a deadlock where deleting a device call br_del_if with lock held.
br_del_if doesn't want to be called under lock anymore.
ChangeSet@1.1763, 2004-05-22 13:38:07-07:00, shemminger@osdl.org
[BRIDGE]: Ioctl cleanup and consolidation.
Merge the ioctl stub calls that just end up calling the sub-function
to do the actual ioctl. Move br_get_XXX_ifindices into the ioctl file
as well where they can be static.
ChangeSet@1.1762, 2004-05-22 13:37:36-07:00, shemminger@osdl.org
[BRIDGE]: Relax locking on add/delete.
Relax the locking on add/delete interfaces to a bridge. Since these operations
are already called with RTNL semaphore, only need to hold the bridge lock while
doing operations related to STP and processing path. This is necessary for later
sysfs support where those operations might sleep.
ChangeSet@1.1761, 2004-05-22 13:36:59-07:00, shemminger@osdl.org
[BRIDGE]: Cleanup of bridge allocation.
Minor cleanup (lead in to later sysfs support).
Change new_nb to new_bridge_dev and return the net_device rather than
bridge because that is what the caller wants anyway.
ChangeSet@1.1760, 2004-05-22 13:36:24-07:00, shemminger@osdl.org
[BRIDGE]: Handle delete of multiple devices with same address.
This fixes the issue discovered when removing bluetooth devices from a bridge.
Need to add special case code when forwarding table is being cleaned up to
handle the case where several devices share the same hardware address.
ChangeSet@1.1759, 2004-05-22 13:35:20-07:00, herbet@gondor.apana.org.au
[IPSEC]: Lock policy in policy timer.
ChangeSet@1.1758, 2004-05-22 13:01:55-07:00, B.Zolnierkiewicz@elka.pw.edu.pl
[PATCH] IDE PCI: don't initialize fields of static chipset tables to zero
Also remove unused EOL define from ide.h.
This trivial patch makes grepping a lot easier.
ChangeSet@1.1757, 2004-05-22 13:01:44-07:00, B.Zolnierkiewicz@elka.pw.edu.pl
[PATCH] two fixups for my ARM/ARM26 IDE changes
- initializing needs to be set to 1 before calling ide_arm_init()
- ide_default_io_ctl() should be 0 on arm26
ChangeSet@1.1756, 2004-05-22 13:01:33-07:00, B.Zolnierkiewicz@elka.pw.edu.pl
[PATCH] remove dead drivers/ide/ppc/swarm.c
This driver was partially merged in 2.5.32 and never compiled in 2.5/2.6.
It was fixed in linux-mips CVS but has been broken again about 5 months ago.
Just remove it for now (it is in wrong directory anyway).
ChangeSet@1.1755, 2004-05-22 10:52:32-07:00, bunk@fs.tum.de
[PATCH] more comx removal
The patch below removes the MAINTAINERS entry for the removed comx
driver.
Additionally, the following comx header files could be removed:
drivers/net/wan/mixcom.h
drivers/net/wan/hscx.h
drivers/net/wan/munich32x.h
drivers/net/wan/falc-lh.h
I've double-checked that none of them are used by any other driver.
ChangeSet@1.1754, 2004-05-22 10:50:24-07:00, bunk@fs.tum.de
[PATCH] JFFS2_FS_NAND=y compile error
The case of CONFIG_JFFS2_FS_NAND=y got broken recently.
The bug is obvious, and the fix is trivial:
ChangeSet@1.1753, 2004-05-22 10:39:44-07:00, akpm@osdl.org
[PATCH] autofs4: MAINTAINERS update
From: Ian Kent <raven@themaw.net>
This changes the autofs4 maintainer to me. Recommended by Joe Perches and
OKed with Jeremy.
ChangeSet@1.1752, 2004-05-22 10:39:34-07:00, akpm@osdl.org
[PATCH] autofs4: printk cleanup
From: Ian Kent <raven@themaw.net>
This is a patch contributed by Joe Perches to automatically include the
function name in the dprintk statements.
ChangeSet@1.1751, 2004-05-22 10:39:23-07:00, akpm@osdl.org
[PATCH] x86 cpuid cache info update
From: Francois Romieu <romieu@fr.zoreil.com>
Missing cache size format for Intel P4E (p.26 of doc. 241618-025, "Intel
Processor Identification and the CPUID Instruction").
ChangeSet@1.1750, 2004-05-22 10:39:12-07:00, akpm@osdl.org
[PATCH] i4l: Eicon driver: fix __devexit in prototype
From: Armin Schindler <armin@melware.de>
Fixes a compiler warning about unused Eicon ISDN driver function if hotplug is
disabled.
ChangeSet@1.1749, 2004-05-22 10:39:01-07:00, akpm@osdl.org
[PATCH] swsusp: fix devfs breakage introduced in 2.6.6
From: Pavel Machek <pavel@ucw.cz>
This fixes bad interaction between devfs and swsusp.
Check whether the swap device is the specified resume device, irrespective of
whether they are specified by identical names.
(Thus, device inode aliasing is allowed. You can say /dev/hda4 instead of
/dev/ide/host0/bus0/target0/lun0/part4 [if using devfs] and they'll be
considered the same device. This is *necessary* for devfs, since the resume
code can only recognize the form /dev/hda4, but the suspend code would like
the long name [as shown in 'cat /proc/mounts'].)
[Thanks to devfs hero whose name I forgot.]
ChangeSet@1.1748, 2004-05-22 10:38:51-07:00, akpm@osdl.org
[PATCH] swsusp: kill unneccessary debugging
From: Pavel Machek <pavel@ucw.cz>
This is no longer neccessary. We have enough pauses elsewhere, and it works
well enough that this is not needed.
ChangeSet@1.1747, 2004-05-22 10:38:40-07:00, akpm@osdl.org
[PATCH] blk: clear completion stack pointer on return
From: Jens Axboe <axboe@suse.de>
It doesn't always look safe to let ->waiting remain set when returning from
functions that set it to point to stack area, since various locations check
for != NULL to see if it's valid. So clear it on return from
ide_do_drive_cmd() and blk_execute_rq().
ChangeSet@1.1746, 2004-05-22 10:38:29-07:00, akpm@osdl.org
[PATCH] Sanitise handling of unneeded syscall stubs
From: David Mosberger <davidm@napali.hpl.hp.com>
Below is a patch that tries to sanitize the dropping of unneeded system-call
stubs in generic code. In some instances, it would be possible to move the
optional system-call stubs into a library routine which would avoid the need
for #ifdefs, but in many cases, doing so would require making several
functions global (and possibly exporting additional data-structures in
header-files). Furthermore, it would inhibit (automatic) inlining in the
cases in the cases where the stubs are needed. For these reasons, the patch
keeps the #ifdef-approach.
This has been tested on ia64 and there were no objections from the
arch-maintainers (and one positive response). The patch should be safe but
arch-maintainers may want to take a second look to see if some __ARCH_WANT_foo
macros should be removed for their architecture (I'm quite sure that's the
case, but I wanted to play it safe and only preserved the status-quo in that
regard).
ChangeSet@1.1745, 2004-05-22 10:38:16-07:00, akpm@osdl.org
[PATCH] trivial: remove duplicated #includes
From: Rusty Russell <rusty@rustcorp.com.au>
From: a.othieno@bluewin.ch (Arthur Othieno)
From: Vinay K Nallamothu <vinay-rc@naturesoft.net>
Remove various duplicated #includes
From: Vinay K Nallamothu <vinay-rc@naturesoft.net>
Use mod_timer in drivers_block_floppy98.c
From: carbonated beverage <ramune@net-ronin.org>
doc update for bk usage
bk://... appears to be dead, use http://... instead.
ChangeSet@1.1744, 2004-05-22 10:38:03-07:00, akpm@osdl.org
[PATCH] trivial: use page_to_phys in dma_map_page()
From: Trivial Patch Monkey <trivial@rustcorp.com.au>
From: Adam Lackorzynski <adam@os.inf.tu-dresden.de>
dma_map_page() can be simplified by using page_to_phys instead of writing the
calculation explicitly.
ChangeSet@1.1743, 2004-05-22 10:37:52-07:00, akpm@osdl.org
[PATCH] fbdev: mode switching fix.
From: James Simmons <jsimmons@infradead.org>
This fixes the bugs that where in mode switch via stty.
The problem was we couldn't set the mode just by using the x and y
resolution. We use modedb to fill in the rest. There also was a bug that
allowed you to change the console resolution for drivers with fixed
resolutions. This would mess up your display. Now that is fixed.
ChangeSet@1.1742, 2004-05-22 10:37:41-07:00, akpm@osdl.org
[PATCH] fix sendfile on 64bit architectures
From: Andi Kleen <ak@suse.de>
sys_sendfile has a hardcoded 2GB limit. 64bit architectures should
probably always use sys_sendfile64() in their native system tables, because
for them sizeof(off_t) == sizeof(loff_t). This patch does this. It seemed
easier to just change the 64bit entry tables instead of fixing up all the
emulation layers to do 2GB checks on their own.
I changed all 64bit architectures except for parisc64, which seemed to
already have a sendfile64.
ChangeSet@1.1741, 2004-05-22 10:37:30-07:00, akpm@osdl.org
[PATCH] console autodetection for pmac
From: Olaf Hering <olh@suse.de>
This one allows console autodetection for powermacs.
ChangeSet@1.1740, 2004-05-22 10:37:19-07:00, akpm@osdl.org
[PATCH] gss_api build fix
From: "J. Bruce Fields" <bfields@fieldses.org>
Older gcc's don't like that dimensionless array. Remove it in favour of a
pointer to the data.
ChangeSet@1.1739, 2004-05-22 10:37:08-07:00, akpm@osdl.org
[PATCH] vga16fb warning fix
drivers/video/vga16fb.c:1350: warning: assignment makes pointer from integer without a cast
ChangeSet@1.1738, 2004-05-22 10:36:55-07:00, akpm@osdl.org
[PATCH] Fix !CONFIG_SYSFS build
From: Maneesh Soni <maneesh@in.ibm.com>
The sysfs_rename_dir() interface was changed recently but I forgot to
change the definition if CONFIG_SYSFS is not defined.
ChangeSet@1.1734, 2004-05-21 22:59:48+01:00, tony@com.rmk.(none)
[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.
ChangeSet@1.1733, 2004-05-21 22:55:08+01:00, tony@com.rmk.(none)
[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)
ChangeSet@1.1726.1.45, 2004-05-21 14:54:20-07:00, torvalds@ppc970.osdl.org
Merge http://lia64.bkbits.net/to-linus-2.5
into ppc970.osdl.org:/home/torvalds/v2.6/linux
ChangeSet@1.1726.1.44, 2004-05-21 14:46:46-07:00, torvalds@ppc970.osdl.org
[REDO] ramdisk: separate the blockdev backing_dev_info from the hosted inodes
This re-applies the separation of the ramdisk blockdev inode
backing store and the files that live in the ramdisk.
Cset exclude: torvalds@ppc970.osdl.org|ChangeSet|20040521210025|21437
ChangeSet@1.1726.1.43, 2004-05-21 14:46:17-07:00, akpm@osdl.org
[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.
ChangeSet@1.1732, 2004-05-21 22:46:09+01:00, tony@com.rmk.(none)
[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)
ChangeSet@1.1726.4.4, 2004-05-21 14:43:13-07:00, herbert@gondor.apana.org.au
[IPSEC]: Fix state modifications in xfrm_state_update().
doing a mod_timer on a live state without holding a lock or for that
matter not even checking whether the state is dead is definitely a bad
idea
ChangeSet@1.1726.4.3, 2004-05-21 14:41:11-07:00, bdschuym@pandora.be
[BRIDGE]: Fix LL_RESERVED_SPACE usage in netfilter code.
ChangeSet@1.1726.4.2, 2004-05-21 14:39:28-07:00, yoshfuji@linux-ipv6.org
[IPV4]: Fix deadlock in IP tunnel error path.
ChangeSet@1.1726.1.42, 2004-05-21 14:29:23-07:00, torvalds@ppc970.osdl.org
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.
ChangeSet@1.1726.1.41, 2004-05-21 14:09:43-07:00, ysato@users.sourceforge.jp
[PATCH] H8/300 module support update
- add module support code
- add H8/300 ELF infomation
- fix kcore ELF format
ChangeSet@1.1726.1.40, 2004-05-21 14:09:31-07:00, ysato@users.sourceforge.jp
[PATCH] H8/300 new ide driver support
- new config items
- interface setup
- io cleanup
ChangeSet@1.1726.1.39, 2004-05-21 14:09:20-07:00, ysato@users.sourceforge.jp
[PATCH] H8/300 mtd setup fix
- config symbol fix
ChangeSet@1.1726.3.1, 2004-05-21 17:03:30-04:00, jgarzik@redhat.com
Merge redhat.com:/spare/repo/linux-2.6
into redhat.com:/spare/repo/libata-2.6
ChangeSet@1.1608.8.18, 2004-05-21 14:03:26-07:00, davidm@tiger.hpl.hp.com
ia64: Update defconfig
ChangeSet@1.1608.8.17, 2004-05-21 14:01:30-07:00, davidm@tiger.hpl.hp.com
ia64: Kill a warning when arch/ia64/kernel/machvec.c gets compiled on UP.
ChangeSet@1.1726.1.38, 2004-05-21 14:00:25-07:00, torvalds@ppc970.osdl.org
Undo separate backing_dev_info for ramdisk.c.
The code was incomplete. Let's re-do it when the other pieces
are in place.
Cset exclude: akpm@osdl.org[torvalds]|ChangeSet|20040521202003|24125
ChangeSet@1.1726.2.1, 2004-05-21 16:54:36-04:00, jgarzik@redhat.com
Merge redhat.com:/spare/repo/linux-2.6
into redhat.com:/spare/repo/i810-audio-2.6
ChangeSet@1.1608.8.16, 2004-05-21 13:28:01-07:00, peterc@gelato.unsw.edu.au
ia64: Make cond_syscall() declare a dummy prototype so GCC doesn't complain.
ChangeSet@1.1726.1.37, 2004-05-21 13:24:27-07:00, akpm@osdl.org
[PATCH] ramfs lfs limit
From: Andrea Arcangeli <andrea@suse.de>
this fixes the 2G limit on ramfs
ChangeSet@1.1726.1.36, 2004-05-21 13:24:17-07:00, akpm@osdl.org
[PATCH] Neaten and fix init/main.c cpu bringup message
From: Andrew Theurer <habanero@us.ibm.com>
Use num_online_cpus in smp_init instead of counting cpus which may or may not
really be brought up.
ChangeSet@1.1726.1.35, 2004-05-21 13:24:06-07:00, akpm@osdl.org
[PATCH] Fix power/shutdown.c comments
From: Roger Luethi <rl@hellgate.ch>
Make the comments in drivers/base/power/shutdown.c somewhat less wrong.
There's still room for improvement :-/.
ChangeSet@1.1726.1.34, 2004-05-21 13:23:55-07:00, akpm@osdl.org
[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).
ChangeSet@1.1726.1.33, 2004-05-21 13:23:44-07:00, akpm@osdl.org
[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.
ChangeSet@1.1726.1.32, 2004-05-21 13:23:33-07:00, akpm@osdl.org
[PATCH] msr.c touchups
A few things which Lindent got wrong.
ChangeSet@1.1726.1.31, 2004-05-21 13:23:23-07:00, akpm@osdl.org
[PATCH] Feed arch/i386/kernel/msr.c through Lindent
ChangeSet@1.1726.1.30, 2004-05-21 13:23:12-07:00, akpm@osdl.org
[PATCH] trivial: swsusp section usage
From: Rusty Russell <rusty@rustcorp.com.au>
From: Pavel Machek <pavel@ucw.cz>
This patch fixes init section usage in swsusp.c: "read_suspend_image()" can
be __init.
ChangeSet@1.1726.1.29, 2004-05-21 13:23:01-07:00, akpm@osdl.org
[PATCH] trivial: fix counter in build_zonelists()
From: Rusty Russell <rusty@rustcorp.com.au>
From: Stephen Leonard <stephen@phynp6.phy-astr.gsu.edu>
This fixes a counter that is unnecessarily incremented in build_zonelists().
ChangeSet@1.1726.1.28, 2004-05-21 13:22:51-07:00, akpm@osdl.org
[PATCH] trivial: add CC Trivial Patch Monkey to SubmittingPatches
From: Rusty Russell <rusty@rustcorp.com.au>
From: maximilian attems <janitor@sternwelten.at>
The "Trivial Patch Monkey" is neither documented in MAINTAINERS nor was there
a note in SubmittingPatches.
ChangeSet@1.1726.1.27, 2004-05-21 13:22:40-07:00, akpm@osdl.org
[PATCH] trivial: drivers/media/video_ir-kbd-gpio.c: kill duplicate include
From: Rusty Russell <rusty@rustcorp.com.au>
From: a.othieno@bluewin.ch (Arthur Othieno)
ChangeSet@1.1726.1.26, 2004-05-21 13:22:29-07:00, akpm@osdl.org
[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.
Sam
ChangeSet@1.1726.1.25, 2004-05-21 13:22:19-07:00, akpm@osdl.org
[PATCH] trivial: fix /proc documentation lies about file-nr
From: Rusty Russell <rusty@rustcorp.com.au>
From: Tommi Virtanen <tv@tv.debian.net>
ChangeSet@1.1726.1.24, 2004-05-21 13:22:08-07:00, akpm@osdl.org
[PATCH] trivial: Fix #endif comment in linux_moduleparam.h
From: Rusty Russell <rusty@rustcorp.com.au>
From: Pavel Machek <pavel@ucw.cz>
If we are providing "helpful" comment, it should better be correct.
ChangeSet@1.1726.1.23, 2004-05-21 13:21:57-07:00, akpm@osdl.org
[PATCH] trivial: MAINTAINERS fbdev - web site change
From: Rusty Russell <rusty@rustcorp.com.au>
From: David Eger <eger@theboonies.us>
Doesn't resolve.
ChangeSet@1.1726.1.22, 2004-05-21 13:21:47-07:00, akpm@osdl.org
[PATCH] trivial: fix old URLs in initrd doc
From: Rusty Russell <rusty@rustcorp.com.au>
From: Marco Cova <marco.cova@studio.unibo.it>
ChangeSet@1.1726.1.21, 2004-05-21 13:21:34-07:00, akpm@osdl.org
[PATCH] trivial: add parantheses for if (necessary for cross-compilation)
From: Rusty Russell <rusty@rustcorp.com.au>
From: Martin Schaffner <schaffner@gmx.li>
ChangeSet@1.1726.1.20, 2004-05-21 13:21:21-07:00, akpm@osdl.org
[PATCH] trivial: scripts_kernel-doc should strip comments inside structs'
From: Rusty Russell <rusty@rustcorp.com.au>
From: <adobriyan@mail.ru>
Long block comment before declaration moves it out of page in pdfs.
Alexey
$ ./linux-2.6.6-rc2/scripts/kernel-doc.orig -text test.c
struct stuff:
struct stuff {
int a;
/** comment here*/char b;
};
Members:
a
aaaa
b
bbbbb
Description:
stuff
$ ./linux-2.6.6-rc2/scripts/kernel-doc -text test.c
struct stuff:
struct stuff {
int a;
char b;
};
Members:
a
aaaa
b
bbbbb
Description:
stuff
ChangeSet@1.1726.1.19, 2004-05-21 13:21:10-07:00, akpm@osdl.org
[PATCH] trivial: Fix name of biovec slab
From: Rusty Russell <rusty@rustcorp.com.au>
From: "Chen, Kenneth W" <kenneth.w.chen@intel.com>
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.
ChangeSet@1.1726.1.18, 2004-05-21 13:21:00-07:00, akpm@osdl.org
[PATCH] cleanup double semicolons
From: Nuno Monteiro <nuno@itsari.org>
Remove lots of double-semicolons.
ChangeSet@1.1726.1.17, 2004-05-21 13:20:48-07:00, akpm@osdl.org
[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.
ChangeSet@1.1726.1.16, 2004-05-21 13:20:38-07:00, akpm@osdl.org
[PATCH] fbmem: rename sys_inbuf() and sys_outbuf()
From: David Mosberger <davidm@napali.hpl.hp.com>
These aren't syscalls, so rename them. And make them static.
ChangeSet@1.1726.1.15, 2004-05-21 13:20:26-07:00, akpm@osdl.org
[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.
ChangeSet@1.1726.1.14, 2004-05-21 13:20:14-07:00, akpm@osdl.org
[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.
ChangeSet@1.1726.1.13, 2004-05-21 13:20:03-07:00, akpm@osdl.org
[PATCH] ramdisk: separate the blockdev backing_dev_info from the hosted inodes'
Give appropriate and separate backing_dev_info's to both the ramdisk blockdev
inode and to the files which live atop the ramdisk.
Everything works now.
ChangeSet@1.1726.1.12, 2004-05-21 13:19:51-07:00, akpm@osdl.org
[PATCH] ramdisk: implement writepages()
Implement an empty ->writepages() so that attempts to write back ramdisk pages
have less work to do.
ChangeSet@1.1726.1.11, 2004-05-21 13:19:40-07:00, akpm@osdl.org
[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.
ChangeSet@1.1726.1.10, 2004-05-21 13:19:28-07:00, akpm@osdl.org
[PATCH] ramdisk: use kmap_atomic() in rd_blkdev_pagecache_IO()
We don't actualy need to kmap the blockdev inode's pages at all, because
they're ~__GFP_HIGHMEM. But it's future-safe, and cheap.
ChangeSet@1.1726.1.9, 2004-05-21 13:19:17-07:00, akpm@osdl.org
[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).
ChangeSet@1.1726.1.8, 2004-05-21 13:19:06-07:00, akpm@osdl.org
[PATCH] ramdisk memory allocation fixes
Allocating pagecache pages within the disk request_fn is deadlocky and prone
to page allocation failures, causing write I/O errors.
Attempt to improve things by fiddling with gfp masks.
ChangeSet@1.1726.1.7, 2004-05-21 13:18:55-07:00, akpm@osdl.org
[PATCH] ramdisk fixes
- Remove the ramdisk special-case in fs-writeback.c - it will soon be
unneeded.
- Fix rd_ioctl() to return -ENOTTY on invalid ioctl types, not -EINVAL.
- Make ramdisk Kconfig friendlier.
ChangeSet@1.1726.1.6, 2004-05-21 13:18:44-07:00, akpm@osdl.org
[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.
ChangeSet@1.1726.1.5, 2004-05-21 13:18:33-07:00, akpm@osdl.org
[PATCH] ppc64: trivial cleanup
From: David Gibson <david@gibson.dropbear.id.au>
The ppc64 head.S contains an enable_32b_mode function which is used
nowhere. This patch removes it.
ChangeSet@1.1726.1.4, 2004-05-21 13:18:21-07:00, akpm@osdl.org
[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.
ChangeSet@1.1726.1.3, 2004-05-21 13:18:10-07:00, akpm@osdl.org
[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.
ChangeSet@1.1726.1.2, 2004-05-21 13:17:59-07:00, akpm@osdl.org
[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).
ChangeSet@1.1726.1.1, 2004-05-21 13:17:47-07:00, akpm@osdl.org
[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.
ChangeSet@1.1730, 2004-05-21 09:47:55+01:00, nico@org.rmk.(none)
[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.
ChangeSet@1.1729, 2004-05-21 09:44:10+01:00, nico@org.rmk.(none)
[ARM PATCH] 1870/1: defconfig for Mainstone
Patch from Nicolas Pitre
ChangeSet@1.1728, 2004-05-21 09:40:03+01:00, nico@org.rmk.(none)
[ARM PATCH] 1868/1: support for LEDs on Mainstone
Patch from Nicolas Pitre
ChangeSet@1.1727, 2004-05-21 09:35:39+01:00, nico@org.rmk.(none)
[ARM PATCH] 1867/1: support for the Intel Mainstone (PXA27x based) eval board
Patch from Nicolas Pitre
ChangeSet@1.1726, 2004-05-20 22:22:11-07:00, akpm@osdl.org
[PATCH] ide-disk.c: don't put disks in STANDBY mode on reboot
From: Bartlomiej Zolnierkiewicz <B.Zolnierkiewicz@elka.pw.edu.pl>
From: Rene Herman <rene.herman@keyaccess.nl>
Prevent the disks from spinning down across a reboot.
ChangeSet@1.1717.1.108, 2004-05-20 17:40:39-04:00, trond.myklebust@fys.uio.no
From: Dave Jones <davej@redhat.com>
Remove a local 1k array.
ChangeSet@1.1608.8.15, 2004-05-20 14:05:41-07:00, davidm@tiger.hpl.hp.com
ia64: Reserve syscall number for kexec_load().
ChangeSet@1.1608.8.14, 2004-05-20 13:50:49-07:00, davidm@tiger.hpl.hp.com
ia64: Fix bug in fsys_rt_sigprocmask() reported by Andreas Schwab.
ChangeSet@1.1717.10.6, 2004-05-20 15:46:12-05:00, shaggy@austin.ibm.com
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.
ChangeSet@1.1717.1.107, 2004-05-20 15:54:44-04:00, trond.myklebust@fys.uio.no
From: Arjan van de Ven <arjanv@redhat.com> and akpm
nfs/read.c: dynamically allocate the big structs
ChangeSet@1.1717.1.106, 2004-05-20 15:54:10-04:00, trond.myklebust@fys.uio.no
nfs_writepage_sync stack reduction
Patch from akpm
ChangeSet@1.1717.1.105, 2004-05-20 15:52:52-04:00, trond.myklebust@fys.uio.no
RPCSEC_GSS: The expiration time passed down in the
gss context is (duh!) in seconds, not jiffies!
Patch by Bruce Fields
ChangeSet@1.1717.1.104, 2004-05-20 15:52:15-04:00, trond.myklebust@fys.uio.no
RPCSEC_GSS: Split out integrity code in wrap and
unwrap procedures; otherwise they're going to
be ridiculously long after we add privacy support.
Patch by Bruce Fields
ChangeSet@1.1717.1.103, 2004-05-20 15:51:05-04:00, trond.myklebust@fys.uio.no
RPCSEC_GSS: Move EXPORT_SYMBOL's to place where functions
are defined.
Patch by Bruce Fields
ChangeSet@1.1717.1.102, 2004-05-20 15:49:58-04:00, trond.myklebust@fys.uio.no
RPCSEC_GSS: Fix module reference counting.
Clean up the interface to the GSSAPI code.
Patch by Bruce Fields
ChangeSet@1.1717.1.101, 2004-05-20 15:49:16-04:00, trond.myklebust@fys.uio.no
RPCSEC_GSS: Make a couple functions in the krb5 code more
generally useful. This will help prepare for the spkm3
and lipkey mechanisms.
Patch by Bruce Fields
ChangeSet@1.1717.1.100, 2004-05-20 15:48:31-04:00, trond.myklebust@fys.uio.no
RPCSEC_GSS: this adds some new trace messages and
makes existing ones consistent with other
trace messages in the RPC client.
Patch by Chuck Lever
ChangeSet@1.1717.1.99, 2004-05-20 15:47:44-04:00, trond.myklebust@fys.uio.no
NFS: Patch by Steve Dickson to improve error reporting
when mounting an NFS filesystem.
ChangeSet@1.1717.1.98, 2004-05-20 15:47:06-04:00, trond.myklebust@fys.uio.no
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.
ChangeSet@1.1717.1.97, 2004-05-20 15:46:05-04:00, trond.myklebust@fys.uio.no
NFSv4: Fix a bug in the open reboot-recovery code.
ChangeSet@1.1717.1.96, 2004-05-20 15:45:19-04:00, trond.myklebust@fys.uio.no
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.
Patch by Chuck Lever
ChangeSet@1.1717.1.95, 2004-05-20 15:43:48-04:00, trond.myklebust@fys.uio.no
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.
Patch by Olaf Kirch.
ChangeSet@1.1717.1.94, 2004-05-20 15:39:02-04:00, trond.myklebust@fys.uio.no
RPC: Ensure that if we reconnect, we delay by at least 15
seconds in order to avoid flooding of servers.
ChangeSet@1.1717.1.93, 2004-05-20 12:02:07-07:00, trond.myklebust@fys.uio.no
[PATCH] Fix NFS long symlinks checks
The NFS readlink() methods all take a buffer length argument. Use that
instead of assuming PAGE_SIZE...
We need to return ENAMETOOLONG rather than EIO.
ChangeSet@1.1717.8.3, 2004-05-20 10:53:00-07:00, dvrabel@arcom.com
[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.
ChangeSet@1.1717.8.2, 2004-05-20 10:33:31-07:00, dvrabel@arcom.com
[ARM] Fix IXP4xx CLOCK_TICK_RATE to match HW 66.66... MHz
ChangeSet@1.1717.1.92, 2004-05-20 08:28:38-07:00, neilb@cse.unsw.edu.au
[PATCH] Invalid notify_change(symlink, [ATTR_MODE]) in nfsd
Make sure NFS client doesn't see errors from mode setting on new symlinks.
When nfsd creates a symlink, it tries to set the mode as the mode is
carried in the NFS request and some filesystems store a mode.
If the filesystem refuses to set the mode (e.g. -EOPNOTSUPP), this
error should not be returned to the client.
ChangeSet@1.1717.10.5, 2004-05-20 10:05:02-05:00, shaggy@austin.ibm.com
JFS: [CHECKER] Memory leak on commonly executed path
The jfs_log structure was never being freed at unmount time.
ChangeSet@1.1717.17.5, 2004-05-20 18:41:07+09:00, yoshfuji@linux-ipv6.org
[IPV6] ensure to evaluate the checksum for sockets with the IPV6_CHECKSUM option.
ChangeSet@1.1717.17.4, 2004-05-20 18:33:44+09:00, yoshfuji@linux-ipv6.org
[IPV6] put appropriate checksum for rawv6 sockets even if it was not initialized.
ChangeSet@1.1717.17.3, 2004-05-20 18:30:34+09:00, yoshfuji@linux-ipv6.org
[IPV6] unify csum_ipv6_magic() code path for rawv6 sockets.
ChangeSet@1.1717.17.2, 2004-05-20 18:23:35+09:00, yoshfuji@linux-ipv6.org
[IPV6] unify XXX_push_pending_frames() code path for rawv6 sockets.
ChangeSet@1.1717.17.1, 2004-05-20 18:20:15+09:00, yoshfuji@linux-ipv6.org
[IPV6] handle return value from ip6_push_pending_frames().
ChangeSet@1.1717.16.2, 2004-05-19 23:28:11-07:00, mhuth@mvista.com
[IPV6]: Fix sock identity checking bug in tcp_ipv6_check_established.
ChangeSet@1.1717.16.1, 2004-05-19 23:22:32-07:00, peterm@redhat.com
[NETLINK]: Fix typo in netlink_unicast.
ChangeSet@1.1717.15.4, 2004-05-19 21:11:32-07:00, pat@computer-refuge.org
[SPARC64]: Verify that boot CPU number is less than NR_CPUS.
ChangeSet@1.1717.1.89, 2004-05-19 21:02:27-07:00, vfort@provident-solutions.com
[PATCH] mxser.c kernel-2.6.5
This adds support for the CP-104 Moxa Smartio serial cards. Just add
the PCI ID information.
ChangeSet@1.1717.15.3, 2004-05-19 20:59:01-07:00, zli4@cs.uiuc.edu
[SPARC]: Fix prom_prom_taken[].theres_more setting.
ChangeSet@1.1717.15.2, 2004-05-19 20:56:34-07:00, davem@nuts.davemloft.net
[SPARC64]: Mark sort_memlist static.
ChangeSet@1.1717.15.1, 2004-05-19 20:55:29-07:00, davem@nuts.davemloft.net
[SPARC64]: Update defconfig.
ChangeSet@1.1717.1.88, 2004-05-19 20:35:43-07:00, paulus@samba.org
[PATCH] ppc64: move kmem_bufctl_t inside #ifndef __ASSEMBLY__
When the kmem_bufctl_t typedef got added to include/asm-ppc64/types.h,
it got added outside the #ifndef __ASSEMBLY__ section, causing
assembler errors. This patch, from David Gibson, moves it inside the
#ifndef __ASSEMBLY__ region.
ChangeSet@1.1717.1.87, 2004-05-19 20:15:25-07:00, gerg@snapgear.com
[PATCH] m68knommu: add newlines to debug trace in comempci.c
Add newlines to some printk debug trace of comempci.c driver.
ChangeSet@1.1717.1.86, 2004-05-19 20:15:14-07:00, gerg@snapgear.com
[PATCH] m68knommu: remove un-used libgcc symbols
Remove a lot of un-used and un-needed libgcc funstions from export list
for m68knommu syms.
ChangeSet@1.1717.1.85, 2004-05-19 20:15:04-07:00, gerg@snapgear.com
[PATCH] m68knommu: correct build line for Dragonbakk frame buffer driver
Correct build lines for Motorola Dragonball 68x328 frame buffer driver.
Patch from Georges Menie <georges@menie.org>
ChangeSet@1.1717.1.84, 2004-05-19 20:14:53-07:00, gerg@snapgear.com
[PATCH] m68knommu: remove ColdFire specific atomic functions
Remove ColdFire specific code sections for atomic_add and atomc_sub.
These are not needed, the m68k asm code for these functions is ColdFire
clean.
ChangeSet@1.1717.1.83, 2004-05-19 20:14:42-07:00, gerg@snapgear.com
[PATCH] m68knommu: un-define IO instructions when using smc driver
We should un-define all the x86 style IO routines when redefining local
versions.
ChangeSet@1.1717.1.82, 2004-05-19 20:14:31-07:00, gerg@snapgear.com
[PATCH] m68knommu: add init points for Dragonball frame buffer driver
Create init points for the Motorola Dragonball 68x328 frame
buffer driver.
Patch from Georges Menie <georges@menie.org>
ChangeSet@1.1717.1.81, 2004-05-19 20:14:21-07:00, gerg@snapgear.com
[PATCH] m68knommu: add find_next_bit() to bitops.h
A couple of fixups for asm-m68knommu/bitops.h:
. re-order definition of fls(), to be outside __KERNEL__
. add code for find_next_bit()
ChangeSet@1.1717.1.80, 2004-05-19 20:14:10-07:00, gerg@snapgear.com
[PATCH] m68knommu: big clean/fix of Dragonball frame buffer driver
Big cleanup of the Motorola DragonBall 68x328 frame buffer. It was
quite broken before.
Patch from Georges Menie <georges@menie.org>.
ChangeSet@1.1717.1.79, 2004-05-19 20:13:59-07:00, gerg@snapgear.com
[PATCH] m68knommu: fix cache flush for 5407 ColdFire CPU
Fix the cache flushing code for the ColdFire 5407 CPU.
The cpushl instruction arguments are wrong, causing it to miss some
cache lines.
ChangeSet@1.1717.1.78, 2004-05-19 20:13:49-07:00, gerg@snapgear.com
[PATCH] ucLinux: return 0 on success from do_munmap() for nommu version
Added a nommu version of sysctl_max_map_count.
Fix return value from do_munmap(), it should return 0 on success not
EINVAL.
ChangeSet@1.1717.1.77, 2004-05-19 20:10:35-07:00, akpm@osdl.org
[PATCH] raid locking fix.
From: Neil Brown <neilb@cse.unsw.edu.au>
Fix bug #2661
Raid currently calls ->unplug_fn under spin_lock_irqsave(), but unplug_fns
can sleep.
After a morning of scratching my head and trying to come up with some that
does less locking, the following is the best I can come up with. I'm not
proud of it but it should work.
If I move "nr_pending" out or rdev into the per-personality structures
(e.g. mirror_info), and if I had "atomic_inc_if_nonzero" I could do with
without locking so much, but random atomic* functions don't seem trivial
ChangeSet@1.1717.1.75, 2004-05-19 16:43:49-07:00, akpm@osdl.org
[PATCH] s390 atomic_inc_and_test() fix
From: David Mosberger <davidm@napali.hpl.hp.com>
ChangeSet@1.1717.1.74, 2004-05-19 16:42:48-07:00, akpm@osdl.org
[PATCH] sir_dev locking fix
From: Martin Diehl <lists@mdiehl.de>
There was a spin_unlock missing in the raw mode tx-completion path. Probably
it slipped through because the raw mode stuff is never reached with my Actisys
hardware.
ChangeSet@1.1717.1.73, 2004-05-19 16:42:37-07:00, akpm@osdl.org
[PATCH] s390: network driver
From: Martin Schwidefsky <schwidefsky@de.ibm.com>
Network driver changes:
- iucv: Make grab_param function SMP safe.
- lcs: Fix null-pointer dereference after unsuccessful set_online.
- qeth: Fix kmalloc flags in qeth_alloc_reply.
- qeth: Show broadcase capability also in route4/6 sysfs attributes.
- qeth: Remove debug code.
- qeth: Add option to qetharp user space interface to strip unused
fields from query arp records.
- qeth: Add shortcut in outbound path for HiperSockets.
- qeth: Add more info to qeth_perf_stats.
- qeth: Add support for direct SNMP interface to OSA express cards.
ChangeSet@1.1717.1.72, 2004-05-19 16:42:26-07:00, akpm@osdl.org
[PATCH] s390: zfcp host adapater
From: Martin Schwidefsky <schwidefsky@de.ibm.com>
zfcp host adapter change:
- Remove misplaced dot in error message.
- Remove unused performance statistics code.
ChangeSet@1.1717.1.71, 2004-05-19 16:42:15-07:00, akpm@osdl.org
[PATCH] s390: dasd driver
From: Martin Schwidefsky <schwidefsky@de.ibm.com>
dasd device driver changes:
- Reset pointer from ccw device to dasd_devmap on device removal.
ChangeSet@1.1717.1.70, 2004-05-19 16:42:05-07:00, akpm@osdl.org
[PATCH] s390: core s390
From: Martin Schwidefsky <schwidefsky@de.ibm.com>
s390 core changes:
- Fix system call trace / audit interface.
- Fix find_first_bit / find_next_bit inlines assembly constraints.
ChangeSet@1.1717.1.69, 2004-05-19 16:41:54-07:00, akpm@osdl.org
[PATCH] use-before-uninitialized value in ext3(2)_find_ goal
From: Mingming Cao <cmm@us.ibm.com>
There is a uninitialized goal value being referenced in both ext3 and ext2
find goal block functions (ext3_find_goal() and ext2_find_goal()).
In the non-sequential write case, these functions check the goal value(non
zero) before calling ext3(2)_find_near() to find the goal block to
allocate.
Since the goal value is uninitialized(non zero), the ext3(2)_find_near() is
never being called in the non-sequential write, thus ext3(2)_find_goal()
failed to guide a goal block in the random write case.
ext3(2)_new_block() takes the junk goal value and will turn it to goal 0
since it's normally beyond the filesystem block number limit. The fix is
trivial.
ChangeSet@1.1717.1.68, 2004-05-19 16:41:43-07:00, akpm@osdl.org
[PATCH] Fix overzealous use of online cpu iterators
From: Rusty Russell <rusty@rustcorp.com.au>
The IA64 hotplug CPU merge seems to have included some core changes: in
particular the recalc_bh_state() needs to sum for all (including offline)
cpus, since we don't empty the counters on CPU down. The totals printed by
/proc/stat (the first loop) should include offline cpus, too (apparently
printing out the per-cpu lines for offline cpus confuses top).
ChangeSet@1.1717.1.67, 2004-05-19 16:41:33-07:00, akpm@osdl.org
[PATCH] vga16fb-fix
The recent ARM-specific fix broke ia32. Hopefully the ARM team can find an
arch-specific implementation of VGA_MAP_MEM() which makes it work.
ChangeSet@1.1717.1.66, 2004-05-19 16:41:22-07:00, akpm@osdl.org
[PATCH] VFS cache sizing fix for small machines
From: Matt Mackall <mpm@selenic.com>
Doing the algebra:
c = (a - b) * 3/2
a' = a - c = a - 3/2(a - b) = (2a - 3a + 3b)/2 = (3b - a)/2
a' >= 0
3b - a >= 0
3b >= a
b >= a/3
nr_free_pages() >= mempages/3
We can indeed get into trouble if we try to load a large kernel on a very
small box (ie kernel reserves more than 2/3 of usable memory). Surprisingly I
haven't hit this, but here's a fix.
ChangeSet@1.1717.1.65, 2004-05-19 16:41:11-07:00, akpm@osdl.org
[PATCH] svc_recv() fix
From: "J. Bruce Fields" <bfields@fieldses.org>
svc_recv may call svc_sock_release before rqstp->rq_res is initialized.
ChangeSet@1.1717.1.64, 2004-05-19 16:41:00-07:00, akpm@osdl.org
[PATCH] kNFSd: Add a warning when upcalls fail,
From: NeilBrown <neilb@cse.unsw.edu.au>
From: "J. Bruce Fields" <bfields@fieldses.org>
To help the user diagnose problems caused by user-level daemons not running.
ChangeSet@1.1717.1.63, 2004-05-19 16:40:49-07:00, akpm@osdl.org
[PATCH] kNFSd: Remove check on number of threads waiting on user-space.
From: NeilBrown <neilb@cse.unsw.edu.au>
From: "J. Bruce Fields" <bfields@fieldses.org>
Currently we are counting the number of threads already asleep and returning
an immediate NFS4ERR_DELAY (==JUKEBOX) error if more than half are already
asleep.
This patch removes that logic, so instead we only return NFS4ERR_DELAY if an
upcall times out (if it takes more than a second to return).
With the thread counting there is the risk that even when all the relevant
subsystems are responsive, the client may still see occasional NFS4ERR_DELAY
returns just because, by coincidence, several upcalls were initiated at the
same time. I expect clients will delay several seconds before retrying after
NFS4ERR_DELAY, so this will be quite noticeable to users. Sporadic long
delays like this are likely to lead users to suspect a problem somewhere, when
in fact there is none.
The current scheme ensures that we can still process requests not depending on
upcalls, even when all threads would otherwise be tied up waiting on upcalls.
However, this is not something that should happen under normal circumstances;
if a server spends a significant portion of its time with all threads waiting
for upcalls, this a sign that something is seriously wrong.
In such a circumstance (e.g., an ldap server dies), we can, at least, bound
the waiting time to a second without the need for counting threads.
In short, removing the thread-counting will allow us to behave predictably
when things are working, while still allowing some progress when they don't.
It would be a worthwhile project to measure the amount of time threads spend
waiting for upcalls (or for reads, for that matter); if a significant portion
of the time they spend handling requests is spent sleeping, then there's an
opportunity to improve nfsd performance: if we can break the one-to-one
mapping between requests and threads, then we can lower the number of threads
required to keep the nfs server busy.
However, both the currently available options for doing this are problematic:
returning JUKEBOX/DELAY errors at random times will lead to unpredictable
performance, and saving a copy of the request to be processed from scratch
again later is wasteful and makes it difficult to provide correct semantics,
especially in the NFSv4 case.
So for now I believe waits with short timeouts are the best option.
ChangeSet@1.1717.1.62, 2004-05-19 16:40:39-07:00, akpm@osdl.org
[PATCH] kNFSd: Reduce timeout when waiting for idmapper userspace daemon.
From: NeilBrown <neilb@cse.unsw.edu.au>
From: "J. Bruce Fields" <bfields@fieldses.org>
1 second should be plenty of time; if we're going to take longer than that
it's probably better just to return NFS4ERR_DELAY and let the client retry
anyway.
ChangeSet@1.1717.1.61, 2004-05-19 16:40:28-07:00, akpm@osdl.org
[PATCH] kNFSd: Improve idmapper behaviour on failure.
From: NeilBrown <neilb@cse.unsw.edu.au>
From: "J. Bruce Fields" <bfields@fieldses.org>
Slightly better behavior on failed mapping (which may happen either because
idmapd is not running, or because there it has told us it doesn't know the
mapping.):
on name->id (setattr), return BADNAME. (I used ESRCH to
communicate BADNAME, just because it was the first error in
include/asm-generic/errno-base.h that had something to
do with nonexistance of something, and that we weren't
already using.)
id->name (getattr), return a string representation of the numerical
id. This is probably useless to the client, especially
since we're unlikely to accept such a string on a setattr,
but perhaps some client will find it mildly helpful.
ChangeSet@1.1717.1.60, 2004-05-19 16:40:17-07:00, akpm@osdl.org
[PATCH] kNFSd: Fix race conditions in idmapper
From: NeilBrown <neilb@cse.unsw.edu.au>
From: "J. Bruce Fields" <bfields@fieldses.org>
Also fix leaks on error; split up code a bit to make it easier to verify
correctness.
ChangeSet@1.1717.1.59, 2004-05-19 16:40:08-07:00, akpm@osdl.org
[PATCH] kNFSd: Protect reference to exp across calls to nfsd_cross_mnt
From: NeilBrown <neilb@cse.unsw.edu.au>
nfsd_cross_mnt can release the reference to the passed svc_export structure
when it returns a different svc_export structure. So we need to make sure we
have a counted reference before, and drop the reference afterwards.
ChangeSet@1.1717.1.58, 2004-05-19 16:39:57-07:00, akpm@osdl.org
[PATCH] kNFSd: Change fh_compose to NOT consume a reference to the dentry.
From: NeilBrown <neilb@cse.unsw.edu.au>
fh_compose currently consumes a reference to the dentry but not the export
point. This is both inconsistent and confusing.
It is better if a routine like this doesn't consume reference points, so with
this patch, it doesn't. This fixes a couple of very subtle and unusual
reference counting errors.
ChangeSet@1.1717.1.57, 2004-05-19 16:39:46-07:00, akpm@osdl.org
[PATCH] kNFSd: Allow larger writes to sunrpc/svc caches.
From: NeilBrown <neilb@cse.unsw.edu.au>
We currently serialize all writes to these caches with queue_io_sem, so we
only needed one buffer.
There is some need for larger-than-one-page writes, so we can just statically
allocate a buffer.
ChangeSet@1.1717.1.56, 2004-05-19 16:39:35-07:00, akpm@osdl.org
[PATCH] kNFSd: Make sure CACHE_NEGATIVE is cleared when a cache entry is updates.
From: NeilBrown <neilb@cse.unsw.edu.au>
This is important for update-in-place caches which may change from being
negative to posative.
Thanks to "J. Bruce Fields" <bfields@fieldses.org> and Olaf Kirch
<okir@suse.de>
ChangeSet@1.1717.1.55, 2004-05-19 16:39:25-07:00, akpm@osdl.org
[PATCH] kNFSd: Use correct _bh locking on sv_lock.
From: NeilBrown <neilb@cse.unsw.edu.au>
With the _bh, we can deadlock.
ChangeSet@1.1717.1.54, 2004-05-19 16:39:14-07:00, akpm@osdl.org
[PATCH] initialise mca_bus_type even if !MCA_bus
From: "Randy.Dunlap" <rddunlap@osdl.org>
We need to call mca_system_init() to register MCA bus struct, otherwise
find_mca_adapter() oopses with a NULL ptr dereference.
Fixes this oops reported last week:
http://marc.theaimsgroup.com/?l=linux-kernel&m=108455738606747&w=2
Thanks to James Bottomley for pointing this out.
ChangeSet@1.1717.1.53, 2004-05-19 16:39:03-07:00, akpm@osdl.org
[PATCH] drivers/cdrom/aztcd.c warning fix.
From: "Luiz Fernando N. Capitulino" <lcapitulino@prefeitura.sp.gov.br>
drivers/cdrom/azctd.c:379: warning: `pa_ok' defined but not used
ChangeSet@1.1717.1.52, 2004-05-19 16:38:53-07:00, akpm@osdl.org
[PATCH] do_generic_mapping_read() cleanup
We just tested the page's uptodateness, no point in doing it again.
ChangeSet@1.1717.1.51, 2004-05-19 16:38:42-07:00, akpm@osdl.org
[PATCH] efivars: add MODULE_VERSION, remove unnecessary check in exit
From: Matt Domsch <Matt_Domsch@dell.com>
* Adds MODULE_VERSION
* Remove check for efi_enabled in efivars_exit() - we aborted module load at
init based on this already.
ChangeSet@1.1717.1.50, 2004-05-19 16:38:32-07:00, akpm@osdl.org
[PATCH] EDD: remove unused SCSI header files
From: Matt Domsch <Matt_Domsch@dell.com>
EDD: Remove no longer needed SCSI header file inclusion.
Thanks to ArjanV for reminding me.
ChangeSet@1.1717.1.49, 2004-05-19 16:38:21-07:00, akpm@osdl.org
[PATCH] SubmittingDrivers completeness
From: Jonathan Corbet <corbet@lwn.net>
I noticed a patch went in to Documentation/SubmittingDrivers which tweaked
the URL for KernelTraffic. Here's a self-serving patch which makes that
section more complete; to be fair, I added two other sites too. Just in
case it's useful.
ChangeSet@1.1717.1.48, 2004-05-19 16:38:10-07:00, akpm@osdl.org
[PATCH] Quota fix 3 - quota file corruption
From: Jan Kara <jack@ucw.cz>
This patch fixes possible quota files corruption which could happen when root
did not have any inodes&space allocated.
Originally this could not happen as structure would not be written to disk in
that case but with journalled quota we need to write even all-zero structure.
The fix is not very nice but change of the format on disk is probably worse (I
made a mistake with not including the usage-bitmaps into format :().
ChangeSet@1.1717.1.47, 2004-05-19 16:37:59-07:00, akpm@osdl.org
[PATCH] SELinux: fix error handling in selinuxfs
From: Stephen Smalley <sds@epoch.ncsc.mil>
This patch against 2.6.6 fixes error handling for two out-of-memory conditions
in selinuxfs, avoiding potential deadlock due to returning without releasing a
semaphore. The patch was submitted by Karl MacMillan of Tresys.
ChangeSet@1.1717.1.46, 2004-05-19 16:37:49-07:00, akpm@osdl.org
[PATCH] correct ps2esdi module parm name
From: "Randy.Dunlap" <rddunlap@osdl.org>
The module parameter name is incorrect (looks like a thinko).
ChangeSet@1.1717.1.45, 2004-05-19 16:37:38-07:00, akpm@osdl.org
[PATCH] Subject: [PATCH] kbuild SUBDIRS="more/ than/ one/"
From: Andreas Gruenbacher <agruen@suse.de>
Here is a patch that re-adds support for more than one directory in SUBDIRS.
We have a number of packages that use this.
The FORCE dependency of crmodverdir seems unnecessary; removing.
(acked by Sam)
ChangeSet@1.1717.1.44, 2004-05-19 16:37:28-07:00, akpm@osdl.org
[PATCH] mark the `planb' video driver broken
From: Christoph Hellwig <hch@lst.de>
This one is missing updates from the v4l1 interfaces in 2.4 to the 2.6ish
v4l2 and thus doesn't compile. While we're at it also remove the
MOD_{INC,DEC}_USE_COUNT calls in it that were bogus even in 2.4 to avoid
false positives in grep.
ChangeSet@1.1717.1.43, 2004-05-19 16:37:17-07:00, akpm@osdl.org
[PATCH] don't mention MOD_INC_USE_COUNT/MOD_DEC_USE_COUNT in docs
From: Christoph Hellwig <hch@lst.de>
If we want new drivers to not use obsolete interfaces we're better off not
mentioning it in the documentation.
ChangeSet@1.1717.1.42, 2004-05-19 16:37:06-07:00, akpm@osdl.org
[PATCH] replace MOD_INC_USE_COUNT in cyber2000fb
From: Christoph Hellwig <hch@lst.de>
This driver is unloadable for the pci case, but not if vlb cards are found so
we can't use the module_exit removal to lock it into memory.
Replace the MOD_INC_USE_COUNT with __module_get in it's module_init routine.
ChangeSet@1.1717.1.41, 2004-05-19 16:36:55-07:00, akpm@osdl.org
[PATCH] Remove blk_run_queues() remnants
It no longer exists.
ChangeSet@1.1717.1.40, 2004-05-19 16:36:45-07:00, akpm@osdl.org
[PATCH] fore200e.c warning fix
drivers/atm/fore200e.c: In function `fore200e_close':
drivers/atm/fore200e.c:1659: warning: use of cast expressions as lvalues is deprecated
ChangeSet@1.1717.1.39, 2004-05-19 16:36:34-07:00, akpm@osdl.org
[PATCH] reserve syscall slots for kexec
From: "Randy.Dunlap" <rddunlap@osdl.org>
kexec is a fairly major and popular feature. People are shipping it in
products, although it is not known if Linux distributors plan to ship it.
The patch reserves the kexec syscall slots to pin the ABI down for
everyone.
- add kexec_load prototype to syscalls.h
- add LINUX_REBOOT_CMD_KEXEC to reboot.h
- add kexec_load syscall for ia32, ia64, x86_64, ppc32, ppc64
ChangeSet@1.1717.1.38, 2004-05-19 16:36:23-07:00, akpm@osdl.org
[PATCH] Fix for Makefiles to get KBUILD_OUTPUT working
From: Mathieu Chouquet-Stringer <mchouque@online.fr>
If you use O=/someotherdir or KBUILD_OUTPUT=/someotherdir on the following
architectures: alpha, mips, sh and cris, the build process is probably
going to fail at one point or another, depending on the target you used,
because make can't find scripts/Makefile.build or scripts/Makefile.clean.
The following patch fixes this, I greped the whole tree and these four were
the only "offenders" I found.
ChangeSet@1.1717.1.37, 2004-05-19 16:36:12-07:00, akpm@osdl.org
[PATCH] BeFS MAINTAINERS update
From: "Sergey S. Kostyliov" <rathamahata@php4.ru>
ChangeSet@1.1717.1.36, 2004-05-19 16:36:00-07:00, akpm@osdl.org
[PATCH] Work around gcc 3.3.3-hammer sched miscompilation on x86-64
From: Andi Kleen <ak@muc.de>
The new domain scheduler got miscompiled on x86-64 with gcc 3.3.3-hammer,
which is shipping with some distributions. The kernel deadlocks eventually
under light stress on SMP systems with the right options.
After some experiments it seems this simple change avoids the
miscompilation. It also doesn't pessimize the code unduly for other
architectures.
ChangeSet@1.1717.1.35, 2004-05-19 16:35:49-07:00, akpm@osdl.org
[PATCH] slab: add kmem_cache_alloc_node
From: Manfred Spraul <manfred@colorfullife.com>
The attached patch adds a simple kmem_cache_alloc_node function: allocate
memory on a given node. The function is intended for cpu bound structures.
It's used for alloc_percpu and for the slab-internal per-cpu structures.
Jack Steiner reported a ~3% performance increase for AIM7 on a 64-way
Itanium 2.
Port maintainers: The patch could cause problems if CPU_UP_PREPARE is
called for a cpu on a node before the corresponding memory is attached
and/or if alloc_pages_node doesn't fall back to memory from another node if
there is no memory in the requested node. I think noone does that, but I'm
not sure.
ChangeSet@1.1717.1.34, 2004-05-19 16:35:39-07:00, akpm@osdl.org
[PATCH] slab: allow arch override for kmem_bufctl_t
From: Manfred Spraul <manfred@colorfullife.com>
The slab allocator keeps track of the free objects in a slab with a linked
list of integers (typedef'ed to kmem_bufctl_t). Right now unsigned int is
used for kmem_bufctl_t, i.e. 4 bytes per-object overhead.
The attached patch implements a per-arch definition of for this type:
Theoretically, unsigned short is sufficient for kmem_bufctl_t and this would
reduce the per-object overhead to 2 bytes. But some archs cannot operate on
16-bit values efficiently, thus it's not possible to switch everyone to
ushort.
The chosen types are a result of dicussions with the various arch maintainers.
ChangeSet@1.1717.1.33, 2004-05-19 16:35:27-07:00, akpm@osdl.org
[PATCH] slab: enable runtime cache line size on i386
From: Manfred Spraul <manfred@colorfullife.com>
the attached patch switches the SLAB_HWCACHE_ALIGN alignment from the
compile time L1 cache line size to the runtime detected value for i386.
x86-64 already uses the runtime detection.
ChangeSet@1.1717.1.32, 2004-05-19 16:35:17-07:00, akpm@osdl.org
[PATCH] Fix arithmetic in shrink_zone()
From: Nick Piggin <nickpiggin@yahoo.com.au>
If the zone has a very small number of inactive pages, local variable
`ratio' can be huge and we do way too much scanning. So much so that Ingo
hit an NMI watchdog expiry, although that was because the zone would have a
had a single refcount-zero page in it, and that logic recently got fixed up
via get_page_testone().
Nick's patch simply puts a sane-looking upper bound on the number of pages
which we'll scan in this round.
It fixes another failure case: if the inactive list becomes very small
compared to the size of the active list, active list scanning (and therefore
inactive list refilling) also becomes small.
This patch causes inactive list scanning to be keyed off the size of the
active+inactive lists. It has the plus of hiding active and inactive
balancing implementation from the higher level scanning code. It will
slightly change other aspects of scanning behaviour, but probably not
significantly.
ChangeSet@1.1717.1.31, 2004-05-19 16:35:06-07:00, akpm@osdl.org
[PATCH] dentry size tuning
Experimenting with various values of DENTRY_STORAGE
dentry size objs/slab dentry size * objs/slab inline string
148 26 3848 32
152 26 3952 36
156 25 3900 40
160 24 4000 44
We're currently at 160. The patch fairly arbitrarily takes it down to 152, so
we can fit a 35-char name into the inline part of the dentry.
Also, go back to the old way of sizing d_iname so that any arch-specific
compiler-forced alignemnts are honoured.
ChangeSet@1.1717.1.30, 2004-05-19 16:34:55-07:00, akpm@osdl.org
[PATCH] Fix madvise length checking
Fix http://bugme.osdl.org/show_bug.cgi?id=2710.
When the user passed madvise a length of -1 through -4095, madvise blindly
rounds this up to 0 then "succeeds".
ChangeSet@1.1717.1.29, 2004-05-19 16:34:45-07:00, akpm@osdl.org
[PATCH] Remove hardcoded offsets from i386 asm
From: Brian Gerst <bgerst@didntduck.org>
Generate offsets for thread_info, cpuinfo_x86, and a few others instead of
hardcoding them.
ChangeSet@1.1717.1.28, 2004-05-19 16:34:34-07:00, akpm@osdl.org
[PATCH] fix radio-cadet `readq' namespace clash
It conflicts with the readq() I/O function.
ChangeSet@1.1717.1.27, 2004-05-19 16:34:23-07:00, akpm@osdl.org
[PATCH] security: add disable param to capabilities module
From: Chris Wright <chrisw@osdl.org>
Add disable param to capabilities module. Similar to the SELinux param for
disabling at boot time. This allows vendors to ship single binary image with
capabilities compiled statically, and disable it if they provide another
security model compiled as module.
ChangeSet@1.1717.1.26, 2004-05-19 16:34:12-07:00, akpm@osdl.org
[PATCH] speed up readahead for seeky loads
From: Ram Pai <linuxram@us.ibm.com>
Currently the readahead code tends to read one more page than it should with
seeky database-style loads. This was to prevent bogus readahead triggering
when we step into the last page of the current window.
The patch removes that workaround and fixes up the suboptimal logic instead.
wrt the "rounding errors" mentioned in this patch, Ram provided the following
description:
Say the i/o size is 20 pages.
Our algorithm starts by a initial average i/o size of 'ra_pages/2' which
is mostly say 16.
Now every time we take a average, the 'average' progresses as follows
(16+20)/2=18
(18+20)/2=19
(19+20)/2=19
(19+20)/2=19.....
and the rounding error makes it never touch 20
Benchmarking sitrep:
IOZONE
run on a nfs mounted filesystem:
client machine 2proc, 733MHz, 2GB memory
server machine 8proc, 700Mhz, 8GB memory
./iozone -c -t1 -s 4096m -r 128k
ChangeSet@1.1717.1.25, 2004-05-19 16:34:02-07:00, akpm@osdl.org
[PATCH] dpt_i2o warning fixes
drivers/scsi/dpt_i2o.c: In function `adpt_queue':
drivers/scsi/dpt_i2o.c:442: warning: use of cast expressions as lvalues is deprecated
drivers/scsi/dpt_i2o.c: In function `adpt_scsi_register':
drivers/scsi/dpt_i2o.c:2213: warning: use of cast expressions as lvalues is deprecated
ChangeSet@1.1717.1.24, 2004-05-19 16:33:51-07:00, akpm@osdl.org
[PATCH] Mark CONFIG_MAC_SERIAL (drivers/macintosh/macserial.c) as broken
From: Arthur Othieno <a.othieno@bluewin.ch>
CONFIG_MAC_SERIAL (drivers/macintosh/macserial.c) is marked obsolete and
currently doesn't build.
benh says: "I though build got fixed recently ... well, anyway, the driver is
indeed obsolete, there's a new one in drivers/serial now."
ChangeSet@1.1717.1.23, 2004-05-19 16:33:40-07:00, akpm@osdl.org
[PATCH] PPC32: Minor OCP cleanups
From: Matt Porter <mporter@kernel.crashing.org>
Fixes a warning and a printk format in OCP.
ChangeSet@1.1717.1.22, 2004-05-19 16:33:30-07:00, akpm@osdl.org
[PATCH] PPC64 iSeries virtual ethernet locking fix
From: Olaf Hering <olh@suse.de>
Missing spin_unlock in the error path.
ChangeSet@1.1717.1.21, 2004-05-19 16:33:19-07:00, akpm@osdl.org
[PATCH] PPC64: iSeries virtual ethernet transmit errors
From: Stephen Rothwell <sfr@au1.ibm.com>
This patch stops the iseries_veth driver trying to send every packet to too
many logical partitions. Consequently, the number of transmit errors falls to
(about) zero from a very large number. This should also improve performance a
bit as the driver is no longer doing 31 extra skb_clone()s and skb_free()s for
each packet.
ChangeSet@1.1717.1.20, 2004-05-19 16:33:08-07:00, akpm@osdl.org
[PATCH] PPC32: Get full register set on bad kernel accesses
From: Paul Mackerras <paulus@sam