On Mon, 27 Nov 2017, Will Deacon wrote:
> Sebastian: could you try the diff below, please? If that fixes s390, then
> we can debate the merits of GENERIC_LOCKBREAK independently of fixing this
> issue.
> 
> Thanks,
> 
> Will
> 
> --->8
> 
> diff --git a/kernel/locking/spinlock.c b/kernel/locking/spinlock.c
> index 1fd1a7543cdd..0ebb253e2199 100644
> --- a/kernel/locking/spinlock.c
> +++ b/kernel/locking/spinlock.c
> @@ -68,8 +68,8 @@ void __lockfunc __raw_##op##_lock(locktype##_t *lock)       
>                 \
>                                                                       \
>               if (!(lock)->break_lock)                                \
>                       (lock)->break_lock = 1;                         \
> -             while ((lock)->break_lock)                              \
> -                     arch_##op##_relax(&lock->raw_lock);             \
> +                                                                     \
> +             arch_##op##_relax(&lock->raw_lock);                     \
>       }                                                               \
>       (lock)->break_lock = 0;                                         \
>  }                                                                    \
> @@ -88,8 +88,8 @@ unsigned long __lockfunc 
> __raw_##op##_lock_irqsave(locktype##_t *lock)      \
>                                                                       \
>               if (!(lock)->break_lock)                                \
>                       (lock)->break_lock = 1;                         \
> -             while ((lock)->break_lock)                              \
> -                     arch_##op##_relax(&lock->raw_lock);             \
> +                                                                     \
> +             arch_##op##_relax(&lock->raw_lock);                     \
>       }                                                               \
>       (lock)->break_lock = 0;                                         \
>       return flags;                                                   \

I tested that on top of 4.15.0-rc1 and it worked!

Sebastian

Reply via email to