[Cbe-oss-dev] [PATCH] spufs: don't yield nosched context

Jeremy Kerr jk at ozlabs.org
Tue Jun 5 11:25:59 EST 2007


From: Christoph Hellwig <hch at lst.de>

Nosched context sould never be scheduled out, thus we must not
deactivate them in spu_yield ever.

Signed-off-by: Christoph Hellwig <hch at lst.de>
Signed-off-by: Jeremy Kerr <jk at ozlabs.org>

---

Paulus - this is also a contender for 2.6.22 bugfixes.

---

 arch/powerpc/platforms/cell/spufs/sched.c |    8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

Index: linux-2.6-spufs/arch/powerpc/platforms/cell/spufs/sched.c
===================================================================
--- linux-2.6-spufs.orig/arch/powerpc/platforms/cell/spufs/sched.c
+++ linux-2.6-spufs/arch/powerpc/platforms/cell/spufs/sched.c
@@ -430,9 +430,11 @@ void spu_deactivate(struct spu_context *
  */
 void spu_yield(struct spu_context *ctx)
 {
-	mutex_lock(&ctx->state_mutex);
-	__spu_deactivate(ctx, 0, MAX_PRIO);
-	mutex_unlock(&ctx->state_mutex);
+	if (!(ctx->flags & SPU_CREATE_NOSCHED)) {
+		mutex_lock(&ctx->state_mutex);
+		__spu_deactivate(ctx, 0, MAX_PRIO);
+		mutex_unlock(&ctx->state_mutex);
+	}
 }
 
 void spu_sched_tick(struct work_struct *work)



More information about the cbe-oss-dev mailing list