Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=85687ff2b4eab47f4d637a0d3a482bb955d3cbd4
Commit:     85687ff2b4eab47f4d637a0d3a482bb955d3cbd4
Parent:     e66686b414f10f1ef2cd0aa77a03a67e17304773
Author:     Luke Browning <[EMAIL PROTECTED]>
AuthorDate: Fri Feb 8 15:50:41 2008 +1100
Committer:  Paul Mackerras <[EMAIL PROTECTED]>
CommitDate: Fri Feb 8 19:52:36 2008 +1100

    [POWERPC] spufs: Fix timing dependent false return from spufs_run_spu
    
    Stop bits are only valid when the running bit is not set.  Status bits
    carry over from one invocation of spufs_run_spu() to another, so the
    RUNNING bit gets added to the previous state of the register which may
    have been a remote library call.  In this case, it looks like another
    library routine should be invoked, but the spe is actually running.
    
    This fixes a problem with a testcase that exercises the scheduler.
    
    Signed-off-by: Luke Browning <[EMAIL PROTECTED]>
    Signed-off-by: Jeremy Kerr <[EMAIL PROTECTED]>
    Signed-off-by: Paul Mackerras <[EMAIL PROTECTED]>
---
 arch/powerpc/platforms/cell/spufs/run.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/arch/powerpc/platforms/cell/spufs/run.c 
b/arch/powerpc/platforms/cell/spufs/run.c
index f401e51..fca22e1 100644
--- a/arch/powerpc/platforms/cell/spufs/run.c
+++ b/arch/powerpc/platforms/cell/spufs/run.c
@@ -53,7 +53,7 @@ int spu_stopped(struct spu_context *ctx, u32 *stat)
 
        stopped = SPU_STATUS_INVALID_INSTR | SPU_STATUS_SINGLE_STEP |
                SPU_STATUS_STOPPED_BY_HALT | SPU_STATUS_STOPPED_BY_STOP;
-       if (*stat & stopped)
+       if (!(*stat & SPU_STATUS_RUNNING) && (*stat & stopped))
                return 1;
 
        dsisr = ctx->csa.dsisr;
-
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to