On Thu, 2013-01-10 at 17:00 +0800, Li Zhong wrote: > Use local_paca directly in arch_spin_unlock_wait(), as all processors have the > same value for the field shared_proc, so we don't need care racy here.
Of course that won't build if CONFIG_PPC_SPLPAR isn't defined... Maybe you could change the definition of the SHARED_PROCESSOR macro itself. The only possible "risk" would be a stale lppaca if we preempt & hot unplug the CPU at the wrong time (provided we no longer stop_machine either), I suppose if that's a real concern we could delay freeing of lppaca's via RCU or such. Ben. > Reported-by: Paul E. McKenney <paul...@linux.vnet.ibm.com> > Signed-off-by: Li Zhong <zh...@linux.vnet.ibm.com> > --- > arch/powerpc/lib/locks.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/arch/powerpc/lib/locks.c b/arch/powerpc/lib/locks.c > index bb7cfec..850bea6 100644 > --- a/arch/powerpc/lib/locks.c > +++ b/arch/powerpc/lib/locks.c > @@ -72,7 +72,7 @@ void arch_spin_unlock_wait(arch_spinlock_t *lock) > { > while (lock->slock) { > HMT_low(); > - if (SHARED_PROCESSOR) > + if (local_paca->lppaca_ptr->shared_proc) > __spin_yield(lock); > } > HMT_medium(); _______________________________________________ Linuxppc-dev mailing list Linuxppc-dev@lists.ozlabs.org https://lists.ozlabs.org/listinfo/linuxppc-dev