[PATCH v2 3/3] powerpc/spinlocks: Fix oops in shared-processor spinlocks
Michael Ellerman
mpe at ellerman.id.au
Fri Aug 2 21:38:43 AEST 2019
"Christopher M. Riedl" <cmr at informatik.wtf> writes:
> diff --git a/arch/powerpc/include/asm/spinlock.h b/arch/powerpc/include/asm/spinlock.h
> index 0a8270183770..6aed8a83b180 100644
> --- a/arch/powerpc/include/asm/spinlock.h
> +++ b/arch/powerpc/include/asm/spinlock.h
> @@ -124,6 +122,22 @@ static inline bool is_shared_processor(void)
> #endif
> }
>
> +static inline void spin_yield(arch_spinlock_t *lock)
> +{
> + if (is_shared_processor())
> + splpar_spin_yield(lock);
> + else
> + barrier();
> +}
...
> static inline void arch_spin_lock(arch_spinlock_t *lock)
> {
> while (1) {
> @@ -132,7 +146,7 @@ static inline void arch_spin_lock(arch_spinlock_t *lock)
> do {
> HMT_low();
> if (is_shared_processor())
> - __spin_yield(lock);
> + spin_yield(lock);
This leaves us with a double test of is_shared_processor() doesn't it?
cheers
More information about the Linuxppc-dev
mailing list