The current utrace patch contains the hunk --- linux-2.6.orig/arch/powerpc/platforms/cell/spufs/run.c +++ linux-2.6/arch/powerpc/platforms/cell/spufs/run.c @@ -70,6 +70,7 @@ static inline int spu_run_fini(struct sp if (signal_pending(current)) ret = -ERESTARTSYS; +#if 0 /* XXX */ if (unlikely(current->ptrace & PT_PTRACED)) { if ((*status & SPU_STATUS_STOPPED_BY_STOP) && (*status >> SPU_STOP_STATUS_SHIFT) == 0x3fff) { @@ -77,6 +78,7 @@ static inline int spu_run_fini(struct sp ret = -ERESTARTSYS; } } +#endif return ret; } which breaks support for breakpoints in SPU programs. I discussed this with Ulrich Weigand, the spu-gdb maintainer. The result is that we should not check for (current->ptrace & PT_PTRACED) at all in this code. Please replace the patchlet above with this one: --- a/arch/powerpc/platforms/cell/spufs/run.c +++ b/arch/powerpc/platforms/cell/spufs/run.c @@ -70,12 +70,10 @@ static inline int spu_run_fini(struct sp if (signal_pending(current)) ret = -ERESTARTSYS; - if (unlikely(current->ptrace & PT_PTRACED)) { - if ((*status & SPU_STATUS_STOPPED_BY_STOP) - && (*status >> SPU_STOP_STATUS_SHIFT) == 0x3fff) { - force_sig(SIGTRAP, current); - ret = -ERESTARTSYS; - } + if ((*status & SPU_STATUS_STOPPED_BY_STOP) + && (*status >> SPU_STOP_STATUS_SHIFT) == 0x3fff) { + force_sig(SIGTRAP, current); + ret = -ERESTARTSYS; } return ret; }
Committed; thanks.