Loading arch/powerpc/platforms/cell/spu_base.c +0 −12 Original line number Diff line number Diff line Loading @@ -160,13 +160,6 @@ static int __spu_trap_data_seg(struct spu *spu, unsigned long ea) pr_debug("%s\n", __FUNCTION__); if (test_bit(SPU_CONTEXT_SWITCH_ACTIVE, &spu->flags)) { /* SLBs are pre-loaded for context switch, so * we should never get here! */ printk("%s: invalid access during switch!\n", __func__); return 1; } slb.esid = (ea & ESID_MASK) | SLB_ESID_V; switch(REGION_ID(ea)) { Loading Loading @@ -226,11 +219,6 @@ static int __spu_trap_data_map(struct spu *spu, unsigned long ea, u64 dsisr) return 0; } if (test_bit(SPU_CONTEXT_SWITCH_ACTIVE, &spu->flags)) { printk("%s: invalid access during switch!\n", __func__); return 1; } spu->class_0_pending = 0; spu->dar = ea; spu->dsisr = dsisr; Loading arch/powerpc/platforms/cell/spufs/run.c +1 −0 Original line number Diff line number Diff line Loading @@ -234,6 +234,7 @@ static int spu_run_fini(struct spu_context *ctx, u32 *npc, *npc = ctx->ops->npc_read(ctx); spuctx_switch_state(ctx, SPU_UTIL_IDLE_LOADED); ctx->policy = SCHED_IDLE; spu_release(ctx); if (signal_pending(current)) Loading arch/powerpc/platforms/cell/spufs/sched.c +3 −5 Original line number Diff line number Diff line Loading @@ -856,21 +856,18 @@ static noinline void spusched_tick(struct spu_context *ctx) { struct spu_context *new = NULL; struct spu *spu = NULL; u32 status; if (spu_acquire(ctx)) BUG(); /* a kernel thread never has signals pending */ if (ctx->state != SPU_STATE_RUNNABLE) goto out; if (spu_stopped(ctx, &status)) goto out; if (ctx->flags & SPU_CREATE_NOSCHED) goto out; if (ctx->policy == SCHED_FIFO) goto out; if (--ctx->time_slice) if (--ctx->time_slice && ctx->policy != SCHED_IDLE) goto out; spu = ctx->spu; Loading @@ -880,6 +877,7 @@ static noinline void spusched_tick(struct spu_context *ctx) new = grab_runnable_context(ctx->prio + 1, spu->node); if (new) { spu_unschedule(spu, ctx); if (ctx->policy != SCHED_IDLE) spu_add_to_rq(ctx); } else { spu_context_nospu_trace(spusched_tick__newslice, ctx); Loading arch/powerpc/platforms/cell/spufs/switch.c +3 −3 Original line number Diff line number Diff line Loading @@ -720,8 +720,9 @@ static inline void set_switch_active(struct spu_state *csa, struct spu *spu) * Restore, Step 23. * Change the software context switch pending flag * to context switch active. * * This implementation does not uses a switch active flag. */ set_bit(SPU_CONTEXT_SWITCH_ACTIVE, &spu->flags); clear_bit(SPU_CONTEXT_SWITCH_PENDING, &spu->flags); mb(); } Loading Loading @@ -1739,9 +1740,8 @@ static inline void reset_switch_active(struct spu_state *csa, struct spu *spu) { /* Restore, Step 74: * Reset the "context switch active" flag. * Not performed by this implementation. */ clear_bit(SPU_CONTEXT_SWITCH_ACTIVE, &spu->flags); mb(); } static inline void reenable_interrupts(struct spu_state *csa, struct spu *spu) Loading include/asm-powerpc/spu.h +1 −2 Original line number Diff line number Diff line Loading @@ -98,9 +98,8 @@ #define MFC_PRIV_ATTN_EVENT 0x00000800 #define MFC_MULTI_SRC_EVENT 0x00001000 /* Flags indicating progress during context switch. */ /* Flag indicating progress during context switch. */ #define SPU_CONTEXT_SWITCH_PENDING 0UL #define SPU_CONTEXT_SWITCH_ACTIVE 1UL struct spu_context; struct spu_runqueue; Loading Loading
arch/powerpc/platforms/cell/spu_base.c +0 −12 Original line number Diff line number Diff line Loading @@ -160,13 +160,6 @@ static int __spu_trap_data_seg(struct spu *spu, unsigned long ea) pr_debug("%s\n", __FUNCTION__); if (test_bit(SPU_CONTEXT_SWITCH_ACTIVE, &spu->flags)) { /* SLBs are pre-loaded for context switch, so * we should never get here! */ printk("%s: invalid access during switch!\n", __func__); return 1; } slb.esid = (ea & ESID_MASK) | SLB_ESID_V; switch(REGION_ID(ea)) { Loading Loading @@ -226,11 +219,6 @@ static int __spu_trap_data_map(struct spu *spu, unsigned long ea, u64 dsisr) return 0; } if (test_bit(SPU_CONTEXT_SWITCH_ACTIVE, &spu->flags)) { printk("%s: invalid access during switch!\n", __func__); return 1; } spu->class_0_pending = 0; spu->dar = ea; spu->dsisr = dsisr; Loading
arch/powerpc/platforms/cell/spufs/run.c +1 −0 Original line number Diff line number Diff line Loading @@ -234,6 +234,7 @@ static int spu_run_fini(struct spu_context *ctx, u32 *npc, *npc = ctx->ops->npc_read(ctx); spuctx_switch_state(ctx, SPU_UTIL_IDLE_LOADED); ctx->policy = SCHED_IDLE; spu_release(ctx); if (signal_pending(current)) Loading
arch/powerpc/platforms/cell/spufs/sched.c +3 −5 Original line number Diff line number Diff line Loading @@ -856,21 +856,18 @@ static noinline void spusched_tick(struct spu_context *ctx) { struct spu_context *new = NULL; struct spu *spu = NULL; u32 status; if (spu_acquire(ctx)) BUG(); /* a kernel thread never has signals pending */ if (ctx->state != SPU_STATE_RUNNABLE) goto out; if (spu_stopped(ctx, &status)) goto out; if (ctx->flags & SPU_CREATE_NOSCHED) goto out; if (ctx->policy == SCHED_FIFO) goto out; if (--ctx->time_slice) if (--ctx->time_slice && ctx->policy != SCHED_IDLE) goto out; spu = ctx->spu; Loading @@ -880,6 +877,7 @@ static noinline void spusched_tick(struct spu_context *ctx) new = grab_runnable_context(ctx->prio + 1, spu->node); if (new) { spu_unschedule(spu, ctx); if (ctx->policy != SCHED_IDLE) spu_add_to_rq(ctx); } else { spu_context_nospu_trace(spusched_tick__newslice, ctx); Loading
arch/powerpc/platforms/cell/spufs/switch.c +3 −3 Original line number Diff line number Diff line Loading @@ -720,8 +720,9 @@ static inline void set_switch_active(struct spu_state *csa, struct spu *spu) * Restore, Step 23. * Change the software context switch pending flag * to context switch active. * * This implementation does not uses a switch active flag. */ set_bit(SPU_CONTEXT_SWITCH_ACTIVE, &spu->flags); clear_bit(SPU_CONTEXT_SWITCH_PENDING, &spu->flags); mb(); } Loading Loading @@ -1739,9 +1740,8 @@ static inline void reset_switch_active(struct spu_state *csa, struct spu *spu) { /* Restore, Step 74: * Reset the "context switch active" flag. * Not performed by this implementation. */ clear_bit(SPU_CONTEXT_SWITCH_ACTIVE, &spu->flags); mb(); } static inline void reenable_interrupts(struct spu_state *csa, struct spu *spu) Loading
include/asm-powerpc/spu.h +1 −2 Original line number Diff line number Diff line Loading @@ -98,9 +98,8 @@ #define MFC_PRIV_ATTN_EVENT 0x00000800 #define MFC_MULTI_SRC_EVENT 0x00001000 /* Flags indicating progress during context switch. */ /* Flag indicating progress during context switch. */ #define SPU_CONTEXT_SWITCH_PENDING 0UL #define SPU_CONTEXT_SWITCH_ACTIVE 1UL struct spu_context; struct spu_runqueue; Loading