/* SPDX-License-Identifier: GPL-2.0 */ #ifndef _ASM_X86_RQSPINLOCK_H #define _ASM_X86_RQSPINLOCK_H #include #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 #endif /* _ASM_X86_RQSPINLOCK_H */