diff options
author | Jeremy Kerr <jk@ozlabs.org> | 2007-12-20 02:39:59 -0500 |
---|---|---|
committer | Paul Mackerras <paulus@samba.org> | 2007-12-21 03:46:20 -0500 |
commit | d6ad39bc53521275d14fde86bfb94d9b2ddb7a08 (patch) | |
tree | 07dcc592b343395cb7fbfb3053aa21103fb94352 /include/asm-powerpc | |
parent | 8af30675c3e7b945bbaf6f57b724f246e56eb209 (diff) |
[POWERPC] spufs: rework class 0 and 1 interrupt handling
Based on original patches from
Arnd Bergmann <arnd.bergman@de.ibm.com>; and
Luke Browning <lukebr@linux.vnet.ibm.com>
Currently, spu contexts need to be loaded to the SPU in order to take
class 0 and class 1 exceptions.
This change makes the actual interrupt-handlers much simpler (ie,
set the exception information in the context save area), and defers the
handling code to the spufs_handle_class[01] functions, called from
spufs_run_spu.
This should improve the concurrency of the spu scheduling leading to
greater SPU utilization when SPUs are overcommited.
Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
Signed-off-by: Paul Mackerras <paulus@samba.org>
Diffstat (limited to 'include/asm-powerpc')
-rw-r--r-- | include/asm-powerpc/spu.h | 3 | ||||
-rw-r--r-- | include/asm-powerpc/spu_csa.h | 2 |
2 files changed, 1 insertions, 4 deletions
diff --git a/include/asm-powerpc/spu.h b/include/asm-powerpc/spu.h index 816e3dc1f66f..277460476aec 100644 --- a/include/asm-powerpc/spu.h +++ b/include/asm-powerpc/spu.h | |||
@@ -146,7 +146,6 @@ struct spu { | |||
146 | void (* ibox_callback)(struct spu *spu); | 146 | void (* ibox_callback)(struct spu *spu); |
147 | void (* stop_callback)(struct spu *spu); | 147 | void (* stop_callback)(struct spu *spu); |
148 | void (* mfc_callback)(struct spu *spu); | 148 | void (* mfc_callback)(struct spu *spu); |
149 | void (* dma_callback)(struct spu *spu, int type); | ||
150 | 149 | ||
151 | char irq_c0[8]; | 150 | char irq_c0[8]; |
152 | char irq_c1[8]; | 151 | char irq_c1[8]; |
@@ -197,8 +196,6 @@ struct cbe_spu_info { | |||
197 | extern struct cbe_spu_info cbe_spu_info[]; | 196 | extern struct cbe_spu_info cbe_spu_info[]; |
198 | 197 | ||
199 | void spu_init_channels(struct spu *spu); | 198 | void spu_init_channels(struct spu *spu); |
200 | int spu_irq_class_0_bottom(struct spu *spu); | ||
201 | int spu_irq_class_1_bottom(struct spu *spu); | ||
202 | void spu_irq_setaffinity(struct spu *spu, int cpu); | 199 | void spu_irq_setaffinity(struct spu *spu, int cpu); |
203 | 200 | ||
204 | void spu_setup_kernel_slbs(struct spu *spu, struct spu_lscsa *lscsa, | 201 | void spu_setup_kernel_slbs(struct spu *spu, struct spu_lscsa *lscsa, |
diff --git a/include/asm-powerpc/spu_csa.h b/include/asm-powerpc/spu_csa.h index 34da5c685170..0ab6bff86078 100644 --- a/include/asm-powerpc/spu_csa.h +++ b/include/asm-powerpc/spu_csa.h | |||
@@ -254,7 +254,7 @@ struct spu_state { | |||
254 | u64 spu_chnldata_RW[32]; | 254 | u64 spu_chnldata_RW[32]; |
255 | u32 spu_mailbox_data[4]; | 255 | u32 spu_mailbox_data[4]; |
256 | u32 pu_mailbox_data[1]; | 256 | u32 pu_mailbox_data[1]; |
257 | u64 dar, dsisr; | 257 | u64 dar, dsisr, class_0_pending; |
258 | unsigned long suspend_time; | 258 | unsigned long suspend_time; |
259 | spinlock_t register_lock; | 259 | spinlock_t register_lock; |
260 | }; | 260 | }; |