[Cbe-oss-dev] [PATCH] spusched: kill spu_reacquire_runnable
Christoph Hellwig
hch at lst.de
Sat Nov 24 01:51:51 EST 2007
With Luke's scheduler changes spu_reacquire_runnable is not required
anymore as the full spu activation is done either by the thread calling
spu_activate or late in the spu scheduler thread.
Regression tested using Jeremy's testsuite.
Signed-off-by: Christoph Hellwig <hch at lst.de>
Index: linux-2.6/arch/powerpc/platforms/cell/spufs/context.c
===================================================================
--- linux-2.6.orig/arch/powerpc/platforms/cell/spufs/context.c 2007-11-23 14:40:19.000000000 +0100
+++ linux-2.6/arch/powerpc/platforms/cell/spufs/context.c 2007-11-23 14:41:44.000000000 +0100
@@ -134,37 +134,6 @@
}
/**
- * spu_acquire_runnable - lock spu contex and make sure it is in runnable state
- * @ctx: spu contex to lock
- *
- * Note:
- * Returns 0 and with the context locked on success
- * Returns negative error and with the context _unlocked_ on failure.
- */
-int spu_acquire_runnable(struct spu_context *ctx, unsigned long flags)
-{
- int ret = -EINVAL;
-
- spu_acquire(ctx);
- if (ctx->state == SPU_STATE_SAVED) {
- /*
- * Context is about to be freed, so we can't acquire it anymore.
- */
- if (!ctx->owner)
- goto out_unlock;
- ret = spu_activate(ctx, flags);
- if (ret)
- goto out_unlock;
- }
-
- return 0;
-
- out_unlock:
- spu_release(ctx);
- return ret;
-}
-
-/**
* spu_acquire_saved - lock spu contex and make sure it is in saved state
* @ctx: spu contex to lock
*/
Index: linux-2.6/arch/powerpc/platforms/cell/spufs/run.c
===================================================================
--- linux-2.6.orig/arch/powerpc/platforms/cell/spufs/run.c 2007-11-23 14:40:19.000000000 +0100
+++ linux-2.6/arch/powerpc/platforms/cell/spufs/run.c 2007-11-23 14:41:44.000000000 +0100
@@ -237,26 +237,6 @@
return 0;
}
-static int spu_reacquire_runnable(struct spu_context *ctx, u32 *npc,
- u32 *status)
-{
- int ret;
-
- ret = spu_run_fini(ctx, npc, status);
- if (ret)
- return ret;
-
- if (*status & (SPU_STATUS_STOPPED_BY_STOP | SPU_STATUS_STOPPED_BY_HALT))
- return *status;
-
- ret = spu_acquire_runnable(ctx, 0);
- if (ret)
- return ret;
-
- spuctx_switch_state(ctx, SPU_UTIL_USER);
- return 0;
-}
-
/*
* SPU syscall restarting is tricky because we violate the basic
* assumption that the signal handler is running on the interrupted
@@ -402,13 +382,6 @@
ret = -ERESTARTSYS;
break;
}
-
- if (unlikely(ctx->state != SPU_STATE_RUNNABLE)) {
- ret = spu_reacquire_runnable(ctx, npc, &status);
- if (ret)
- goto out2;
- }
-
} while (1);
if ((status & SPU_STATUS_STOPPED_BY_STOP) &&
@@ -421,7 +394,6 @@
ret = spu_run_fini(ctx, npc, &status);
spu_yield(ctx);
-out2:
if ((ret == 0) ||
((ret == -ERESTARTSYS) &&
((status & SPU_STATUS_STOPPED_BY_HALT) ||
Index: linux-2.6/arch/powerpc/platforms/cell/spufs/spufs.h
===================================================================
--- linux-2.6.orig/arch/powerpc/platforms/cell/spufs/spufs.h 2007-11-23 14:40:19.000000000 +0100
+++ linux-2.6/arch/powerpc/platforms/cell/spufs/spufs.h 2007-11-23 14:41:44.000000000 +0100
@@ -246,7 +246,6 @@
void spu_unmap_mappings(struct spu_context *ctx);
void spu_forget(struct spu_context *ctx);
-int spu_acquire_runnable(struct spu_context *ctx, unsigned long flags);
void spu_acquire_saved(struct spu_context *ctx);
void spu_release_saved(struct spu_context *ctx);
More information about the cbe-oss-dev
mailing list