|
@@ -263,7 +263,6 @@ static void spu_prio_wait(struct spu_context *ctx)
|
|
|
{
|
|
|
DEFINE_WAIT(wait);
|
|
|
|
|
|
- set_bit(SPU_SCHED_WAKE, &ctx->sched_flags);
|
|
|
prepare_to_wait_exclusive(&ctx->stop_wq, &wait, TASK_INTERRUPTIBLE);
|
|
|
if (!signal_pending(current)) {
|
|
|
mutex_unlock(&ctx->state_mutex);
|
|
@@ -272,7 +271,6 @@ static void spu_prio_wait(struct spu_context *ctx)
|
|
|
}
|
|
|
__set_current_state(TASK_RUNNING);
|
|
|
remove_wait_queue(&ctx->stop_wq, &wait);
|
|
|
- clear_bit(SPU_SCHED_WAKE, &ctx->sched_flags);
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -292,7 +290,7 @@ static void spu_reschedule(struct spu *spu)
|
|
|
best = sched_find_first_bit(spu_prio->bitmap);
|
|
|
if (best < MAX_PRIO) {
|
|
|
struct spu_context *ctx = spu_grab_context(best);
|
|
|
- if (ctx && test_bit(SPU_SCHED_WAKE, &ctx->sched_flags))
|
|
|
+ if (ctx)
|
|
|
wake_up(&ctx->stop_wq);
|
|
|
}
|
|
|
spin_unlock(&spu_prio->runq_lock);
|
|
@@ -414,8 +412,7 @@ int spu_activate(struct spu_context *ctx, unsigned long flags)
|
|
|
}
|
|
|
|
|
|
spu_add_to_rq(ctx);
|
|
|
- if (!(flags & SPU_ACTIVATE_NOWAKE))
|
|
|
- spu_prio_wait(ctx);
|
|
|
+ spu_prio_wait(ctx);
|
|
|
spu_del_from_rq(ctx);
|
|
|
} while (!signal_pending(current));
|
|
|
|