| /* SPDX-License-Identifier: GPL-2.0 */ | |
| #ifndef _ASM_X86_RQSPINLOCK_H | |
| #define _ASM_X86_RQSPINLOCK_H | |
| #include <asm/paravirt.h> | |
| #ifdef CONFIG_PARAVIRT | |
| DECLARE_STATIC_KEY_FALSE(virt_spin_lock_key); | |
| #define resilient_virt_spin_lock_enabled resilient_virt_spin_lock_enabled | |
| static __always_inline bool resilient_virt_spin_lock_enabled(void) | |
| { | |
| return static_branch_likely(&virt_spin_lock_key); | |
| } | |
| #ifdef CONFIG_QUEUED_SPINLOCKS | |
| typedef struct qspinlock rqspinlock_t; | |
| #else | |
| typedef struct rqspinlock rqspinlock_t; | |
| #endif | |
| extern int resilient_tas_spin_lock(rqspinlock_t *lock); | |
| #define resilient_virt_spin_lock resilient_virt_spin_lock | |
| static inline int resilient_virt_spin_lock(rqspinlock_t *lock) | |
| { | |
| return resilient_tas_spin_lock(lock); | |
| } | |
| #endif /* CONFIG_PARAVIRT */ | |
| #include <asm-generic/rqspinlock.h> | |
| #endif /* _ASM_X86_RQSPINLOCK_H */ |