[git pull] Please pull powerpc.git merge branch
Paul Mackerras
paulus at samba.org
Mon Sep 8 21:56:56 EST 2008
Linus,
Please pull from the 'merge' branch of
git://git.kernel.org/pub/scm/linux/kernel/git/paulus/powerpc.git merge
There is one commit there from Hugh Dickins that fixes a build
problem, plus three from the Cell guys fixing a couple of races and a
reference count leak in arch/powerpc/platforms/cell/spufs/sched.c.
The reference count leak is a regression from 2.6.26, and the races
can apparently lead to an unkillable process (looping in the kernel)
or to a panic.
Thanks,
Paul.
arch/powerpc/boot/Makefile | 2 +-
arch/powerpc/platforms/cell/spufs/sched.c | 29 +++++++++++++++++++++++------
2 files changed, 24 insertions(+), 7 deletions(-)
commit 4ff23fa93011e2367fea056e72c92709178972d9
Author: Hugh Dickins <hugh at veritas.com>
Date: Sun Sep 7 00:35:48 2008 +0100
powerpc: Fix rare boot build breakage
A make -j20 powerpc kernel build broke a couple of months ago saying:
In file included from arch/powerpc/boot/gunzip_util.h:13,
from arch/powerpc/boot/prpmc2800.c:21:
arch/powerpc/boot/zlib.h:85: error: expected ?:?, ?,?, ?;?, ?}? or ?__attribute__? before ?*? token
arch/powerpc/boot/zlib.h:630: warning: type defaults to ?int? in declaration of ?Byte?
arch/powerpc/boot/zlib.h:630: error: expected ?;?, ?,? or ?)? before ?*? token
It happened again yesterday: too rare for me to confirm the fix, but
it looks like the list of dependants on gunzip_util.h was incomplete.
Signed-off-by: Hugh Dickins <hugh at veritas.com>
Signed-off-by: Paul Mackerras <paulus at samba.org>
commit b2e601d14deb2083e2a537b47869ab3895d23a28
Author: Andre Detsch <adetsch at br.ibm.com>
Date: Thu Sep 4 21:16:27 2008 +0000
powerpc/spufs: Fix possible scheduling of a context to multiple SPEs
We currently have a race when scheduling a context to a SPE -
after we have found a runnable context in spusched_tick, the same
context may have been scheduled by spu_activate().
This may result in a panic if we try to unschedule a context that has
been freed in the meantime.
This change exits spu_schedule() if the context has already been
scheduled, so we don't end up scheduling it twice.
Signed-off-by: Andre Detsch <adetsch at br.ibm.com>
Signed-off-by: Jeremy Kerr <jk at ozlabs.org>
commit b65fe0356b5b732d7e1e0224c6a1cf2eb5255984
Author: Jeremy Kerr <jk at ozlabs.org>
Date: Thu Sep 4 15:02:47 2008 +1000
powerpc/spufs: Fix race for a free SPU
We currently have a race for a free SPE. With one thread doing a
spu_yield(), and another doing a spu_activate():
thread 1 thread 2
spu_yield(oldctx) spu_activate(ctx)
__spu_deactivate(oldctx)
spu_unschedule(oldctx, spu)
spu->alloc_state = SPU_FREE
spu = spu_get_idle(ctx)
- searches for a SPE in
state SPU_FREE, gets
the context just
freed by thread 1
spu_schedule(ctx, spu)
spu->alloc_state = SPU_USED
spu_schedule(newctx, spu)
- assumes spu is still free
- tries to schedule context on
already-used spu
This change introduces a 'free_spu' flag to spu_unschedule, to indicate
whether or not the function should free the spu after descheduling the
context. We only set this flag if we're not going to re-schedule
another context on this SPU.
Add a comment to document this behaviour.
Signed-off-by: Jeremy Kerr <jk at ozlabs.org>
commit 9f43e3914dceb0f8191875b3cdf4325b48d0d70a
Author: Jeremy Kerr <jk at ozlabs.org>
Date: Tue Sep 2 11:57:09 2008 +1000
powerpc/spufs: Fix multiple get_spu_context()
Commit 8d5636fbca202f61fdb808fc9e20c0142291d802 introduced a reference
count on SPU contexts during find_victim, but this may cause a leak in
the reference count if we later find a better contender for a context to
unschedule.
Change the reference to after we've found our victim context, so we
don't do the extra get_spu_context().
Signed-off-by: Jeremy Kerr <jk at ozlabs.org>
More information about the Linuxppc-dev
mailing list