----- On Sep 21, 2017, at 11:27 AM, Paul E. McKenney paulmck@xxxxxxxxxxxxxxxxxx wrote: > On Thu, Sep 21, 2017 at 03:11:43PM +0000, Mathieu Desnoyers wrote: >> ----- On Sep 21, 2017, at 8:13 AM, Peter Zijlstra peterz@xxxxxxxxxxxxx wrote: >> >> > On Mon, Sep 18, 2017 at 06:36:47PM -0400, Mathieu Desnoyers wrote: >> >> @@ -3373,6 +3362,7 @@ static void __sched notrace __schedule(bool preempt) >> >> >> >> /* Also unlocks the rq: */ >> >> rq = context_switch(rq, prev, next, &rf); >> >> + membarrier_arch_sched_in(prev, next); >> > >> > That's wrong iirc; we just switched stacks, you cannot use @prev and >> > @next. >> >> Yes, it did indeed explode spectacularly at boot in testing. RFC v3 fixes that. > > Good to hear that there is a useful test. ;-) For the issue identified by PeterZ, just booting the machine was enough to touch a task_struct after it was put, which exploded. After fixing this, I ran through the membarrier selftests: they run fine. Then I did a test branch for liburcu [1] which uses the private cmd with registration. Both 'make check' and 'make regtest' run fine on Power8. Thanks, Mathieu [1] https://github.com/compudj/userspace-rcu-dev/tree/test-urcu-reg-priv > > Thanx, Paul > >> Thanks, >> >> Mathieu >> >> >> > >> >> } else { >> >> rq->clock_update_flags &= ~(RQCF_ACT_SKIP|RQCF_REQ_SKIP); >> > > rq_unlock_irq(rq, &rf); >> >> -- >> Mathieu Desnoyers >> EfficiOS Inc. >> http://www.efficios.com -- Mathieu Desnoyers EfficiOS Inc. http://www.efficios.com