[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>
This commit is contained in:
committed by
Paul Mackerras
parent
8af30675c3
commit
d6ad39bc53
@@ -146,7 +146,6 @@ struct spu {
|
||||
void (* ibox_callback)(struct spu *spu);
|
||||
void (* stop_callback)(struct spu *spu);
|
||||
void (* mfc_callback)(struct spu *spu);
|
||||
void (* dma_callback)(struct spu *spu, int type);
|
||||
|
||||
char irq_c0[8];
|
||||
char irq_c1[8];
|
||||
@@ -197,8 +196,6 @@ struct cbe_spu_info {
|
||||
extern struct cbe_spu_info cbe_spu_info[];
|
||||
|
||||
void spu_init_channels(struct spu *spu);
|
||||
int spu_irq_class_0_bottom(struct spu *spu);
|
||||
int spu_irq_class_1_bottom(struct spu *spu);
|
||||
void spu_irq_setaffinity(struct spu *spu, int cpu);
|
||||
|
||||
void spu_setup_kernel_slbs(struct spu *spu, struct spu_lscsa *lscsa,
|
||||
|
||||
@@ -254,7 +254,7 @@ struct spu_state {
|
||||
u64 spu_chnldata_RW[32];
|
||||
u32 spu_mailbox_data[4];
|
||||
u32 pu_mailbox_data[1];
|
||||
u64 dar, dsisr;
|
||||
u64 dar, dsisr, class_0_pending;
|
||||
unsigned long suspend_time;
|
||||
spinlock_t register_lock;
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user