Re: [PATCH v3 04/13] locking/spinlock: introduce spin_lock_init_with_key

From: Martin Rodriguez Reboredo
Date: Sun Apr 09 2023 - 12:48:16 EST


On 4/8/23 04:53, Wedson Almeida Filho wrote:
> From: Wedson Almeida Filho <walmeida@xxxxxxxxxxxxx>
>
> Rust cannot call C macros, so it has its own macro to create a new lock
> class when a spin lock is initialised. This new function allows Rust
> code to pass the lock class it generates to the C implementation.
>
> Cc: Peter Zijlstra <peterz@xxxxxxxxxxxxx>
> Cc: Ingo Molnar <mingo@xxxxxxxxxx>
> Cc: Will Deacon <will@xxxxxxxxxx>
> Cc: Waiman Long <longman@xxxxxxxxxx>
> Signed-off-by: Wedson Almeida Filho <walmeida@xxxxxxxxxxxxx>
> ---
> v1 -> v2: No changes
> v2 -> v3: No changes
>
> include/linux/spinlock.h | 9 +++++++--
> 1 file changed, 7 insertions(+), 2 deletions(-)
>
> diff --git a/include/linux/spinlock.h b/include/linux/spinlock.h
> index be48f1cb1878..cdc92d095133 100644
> --- a/include/linux/spinlock.h
> +++ b/include/linux/spinlock.h
> @@ -327,12 +327,17 @@ static __always_inline raw_spinlock_t *spinlock_check(spinlock_t *lock)
>
> #ifdef CONFIG_DEBUG_SPINLOCK
>
> +static inline void spin_lock_init_with_key(spinlock_t *lock, const char *name,
> + struct lock_class_key *key)
> +{
> + __raw_spin_lock_init(spinlock_check(lock), name, key, LD_WAIT_CONFIG);
> +}
> +
> # define spin_lock_init(lock) \
> do { \
> static struct lock_class_key __key; \
> \
> - __raw_spin_lock_init(spinlock_check(lock), \
> - #lock, &__key, LD_WAIT_CONFIG); \
> + spin_lock_init_with_key(lock, #lock, &__key); \
> } while (0)
>
> #else

Reviewed-by: Martin Rodriguez Reboredo <yakoyoku@xxxxxxxxx>