diff options
author | Christoph Hellwig <hch@lst.de> | 2008-05-08 01:26:32 -0400 |
---|---|---|
committer | Jeremy Kerr <jk@ozlabs.org> | 2008-05-08 01:26:32 -0400 |
commit | 7a28a1549f9514f3b0dd3dde5c7337ba5d44fba3 (patch) | |
tree | 7a1e56a8ba110a7d1525f35d6ea6b4e7d761999e /arch/powerpc | |
parent | 826be063eee9b4c2703fd86cfc9723bc391ff1cb (diff) |
[POWERPC] spufs: don't requeue victim contex in find_victim if it's not in spu_run
We should not requeue the victim context in find_victim if the owner is
not in spu_run. It's first not needed because leaving the context on
the spu is an optimization and second is harmful because it means the
owner could re-enter spu_run when the context is on the runqueue and
trip the BUG_ON in __spu_update_sched_info.
Signed-off-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
Diffstat (limited to 'arch/powerpc')
-rw-r--r-- | arch/powerpc/platforms/cell/spufs/sched.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/arch/powerpc/platforms/cell/spufs/sched.c b/arch/powerpc/platforms/cell/spufs/sched.c index 1df7d6d152c7..8a05ac863a27 100644 --- a/arch/powerpc/platforms/cell/spufs/sched.c +++ b/arch/powerpc/platforms/cell/spufs/sched.c | |||
@@ -659,7 +659,8 @@ static struct spu *find_victim(struct spu_context *ctx) | |||
659 | 659 | ||
660 | victim->stats.invol_ctx_switch++; | 660 | victim->stats.invol_ctx_switch++; |
661 | spu->stats.invol_ctx_switch++; | 661 | spu->stats.invol_ctx_switch++; |
662 | spu_add_to_rq(victim); | 662 | if (test_bit(SPU_SCHED_SPU_RUN, &ctx->sched_flags)) |
663 | spu_add_to_rq(victim); | ||
663 | 664 | ||
664 | mutex_unlock(&victim->state_mutex); | 665 | mutex_unlock(&victim->state_mutex); |
665 | 666 | ||