> > + if (unlikely(test_bit(SPU_SCHED_NOTIFY_ACTIVE, > > + &ctx->sched_flags))) { > > + clear_bit(SPU_SCHED_NOTIFY_ACTIVE, &ctx->sched_flags); > > this should use test_and_clear_bit This also looks like an abuse of atomics to effectively implement a lock or did I miss something ? Ben.