diff options
author | Arnd Bergmann <arnd@arndb.de> | 2005-12-05 22:52:25 -0500 |
---|---|---|
committer | Paul Mackerras <paulus@samba.org> | 2006-01-08 22:52:55 -0500 |
commit | 5110459f181ef1f11200bb3dec61953f08cc49e7 (patch) | |
tree | 73356ce50b3fb5055b4a6f39f237f046615f797d /include | |
parent | 3b3d22cb84a0bb12f6bbb2b1158972894bec3f21 (diff) |
[PATCH] spufs: Improved SPU preemptability.
This patch makes it easier to preempt an SPU context by
having the scheduler hold ctx->state_sema for much shorter
periods of time.
As part of this restructuring, the control logic for the "run"
operation is moved from arch/ppc64/kernel/spu_base.c to
fs/spufs/file.c. Of course the base retains "bottom half"
handlers for class{0,1} irqs. The new run loop will re-acquire
an SPU if preempted.
From: Mark Nutter <mnutter@us.ibm.com>
Signed-off-by: Arnd Bergmann <arndb@de.ibm.com>
Signed-off-by: Paul Mackerras <paulus@samba.org>
Diffstat (limited to 'include')
-rw-r--r-- | include/asm-powerpc/spu.h | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/include/asm-powerpc/spu.h b/include/asm-powerpc/spu.h index 092ec97be326..dd91ed8563d2 100644 --- a/include/asm-powerpc/spu.h +++ b/include/asm-powerpc/spu.h | |||
@@ -135,9 +135,9 @@ struct spu { | |||
135 | spinlock_t register_lock; | 135 | spinlock_t register_lock; |
136 | 136 | ||
137 | u32 stop_code; | 137 | u32 stop_code; |
138 | wait_queue_head_t stop_wq; | ||
139 | void (* wbox_callback)(struct spu *spu); | 138 | void (* wbox_callback)(struct spu *spu); |
140 | void (* ibox_callback)(struct spu *spu); | 139 | void (* ibox_callback)(struct spu *spu); |
140 | void (* stop_callback)(struct spu *spu); | ||
141 | 141 | ||
142 | char irq_c0[8]; | 142 | char irq_c0[8]; |
143 | char irq_c1[8]; | 143 | char irq_c1[8]; |
@@ -146,7 +146,8 @@ struct spu { | |||
146 | 146 | ||
147 | struct spu *spu_alloc(void); | 147 | struct spu *spu_alloc(void); |
148 | void spu_free(struct spu *spu); | 148 | void spu_free(struct spu *spu); |
149 | int spu_run(struct spu *spu); | 149 | int spu_irq_class_0_bottom(struct spu *spu); |
150 | int spu_irq_class_1_bottom(struct spu *spu); | ||
150 | 151 | ||
151 | extern struct spufs_calls { | 152 | extern struct spufs_calls { |
152 | asmlinkage long (*create_thread)(const char __user *name, | 153 | asmlinkage long (*create_thread)(const char __user *name, |