[PATCH powerpc ] Avoid debug_smp_processor_id() check in arch_spin_unlock_wait()
Benjamin Herrenschmidt
benh at kernel.crashing.org
Thu Jan 24 14:47:11 EST 2013
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 <paulmck at linux.vnet.ibm.com>
> Signed-off-by: Li Zhong <zhong at 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();
More information about the Linuxppc-dev
mailing list