diff options
author | Mark Nutter <mnutter@us.ibm.com> | 2006-10-04 17:26:12 +0200 |
---|---|---|
committer | Paul Mackerras <paulus@samba.org> | 2006-10-05 01:21:00 +0200 |
commit | a68cf983f635930ea35f9e96b27d96598550dea0 (patch) | |
tree | 531ea91b3f293130a0828c7579c514830b31e9e1 /include/asm-powerpc/spu.h | |
parent | [POWERPC] spufs: cell spu problem state mapping updates (diff) | |
download | linux-a68cf983f635930ea35f9e96b27d96598550dea0.tar.xz linux-a68cf983f635930ea35f9e96b27d96598550dea0.zip |
[POWERPC] spufs: scheduler support for NUMA.
This patch adds NUMA support to the the spufs scheduler.
The new arch/powerpc/platforms/cell/spufs/sched.c is greatly
simplified, in an attempt to reduce complexity while adding
support for NUMA scheduler domains. SPUs are allocated starting
from the calling thread's node, moving to others as supported by
current->cpus_allowed. Preemption is gone as it was buggy, but
should be re-enabled in another patch when stable.
The new arch/powerpc/platforms/cell/spu_base.c maintains idle
lists on a per-node basis, and allows caller to specify which
node(s) an SPU should be allocated from, while passing -1 tells
spu_alloc() that any node is allowed.
Since the patch removes the currently implemented preemptive
scheduling, it is technically a regression, but practically
all users have since migrated to this version, as it is
part of the IBM SDK and the yellowdog distribution, so there
is not much point holding it back while the new preemptive
scheduling patch gets delayed further.
Signed-off-by: Arnd Bergmann <arnd.bergmann@de.ibm.com>
Signed-off-by: Paul Mackerras <paulus@samba.org>
Diffstat (limited to '')
-rw-r--r-- | include/asm-powerpc/spu.h | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/include/asm-powerpc/spu.h b/include/asm-powerpc/spu.h index b42b53c40f5d..f6c0a95e8209 100644 --- a/include/asm-powerpc/spu.h +++ b/include/asm-powerpc/spu.h @@ -147,6 +147,7 @@ struct spu { }; struct spu *spu_alloc(void); +struct spu *spu_alloc_node(int node); void spu_free(struct spu *spu); int spu_irq_class_0_bottom(struct spu *spu); int spu_irq_class_1_bottom(struct spu *spu); |