| /linux/arch/x86/include/asm/ |
| H A D | paravirt-spinlock.h | 11 struct qspinlock; 14 void (*queued_spin_lock_slowpath)(struct qspinlock *lock, u32 val); 26 extern void native_queued_spin_lock_slowpath(struct qspinlock *lock, u32 val); 28 extern void __pv_queued_spin_lock_slowpath(struct qspinlock *lock, u32 val); 29 extern void __raw_callee_save___pv_queued_spin_unlock(struct qspinlock *lock); 32 static __always_inline void pv_queued_spin_lock_slowpath(struct qspinlock *lock, in pv_queued_spin_lock_slowpath() 38 static __always_inline void pv_queued_spin_unlock(struct qspinlock *lock) in pv_queued_spin_unlock() 59 static inline void native_queued_spin_unlock(struct qspinlock *lock) in native_queued_spin_unlock() 64 static inline void queued_spin_lock_slowpath(struct qspinlock *lock, u32 val) in queued_spin_lock_slowpath() 69 static inline void queued_spin_unlock(struct qspinlock *lock) in queued_spin_unlock() [all …]
|
| H A D | qspinlock_paravirt.h | 7 void __lockfunc __pv_queued_spin_unlock_slowpath(struct qspinlock *lock, u8 locked); 63 extern void __lockfunc __pv_queued_spin_unlock(struct qspinlock *lock);
|
| H A D | rqspinlock.h | 17 typedef struct qspinlock rqspinlock_t;
|
| H A D | qspinlock.h | 17 static __always_inline u32 queued_fetch_set_pending_acquire(struct qspinlock *lock) in queued_fetch_set_pending_acquire()
|
| /linux/kernel/locking/ |
| H A D | qspinlock_paravirt.h | 81 static inline bool pv_hybrid_queued_unfair_trylock(struct qspinlock *lock) in pv_hybrid_queued_unfair_trylock() 110 static __always_inline void set_pending(struct qspinlock *lock) in set_pending() 120 static __always_inline bool trylock_clear_pending(struct qspinlock *lock) in trylock_clear_pending() 128 static __always_inline void set_pending(struct qspinlock *lock) in set_pending() 133 static __always_inline bool trylock_clear_pending(struct qspinlock *lock) in trylock_clear_pending() 168 struct qspinlock *lock; 208 static struct qspinlock **pv_hash(struct qspinlock *lock, struct pv_node *node) in pv_hash() 215 struct qspinlock *old = NULL; in pv_hash() 236 static struct pv_node *pv_unhash(struct qspinlock *lock) in pv_unhash() 357 static void pv_kick_node(struct qspinlock *lock, struct mcs_spinlock *node) in pv_kick_node() [all …]
|
| H A D | qspinlock.h | 86 static __always_inline void clear_pending(struct qspinlock *lock) in clear_pending() 99 static __always_inline void clear_pending_set_locked(struct qspinlock *lock) in clear_pending_set_locked() 114 static __always_inline u32 xchg_tail(struct qspinlock *lock, u32 tail) in xchg_tail() 132 static __always_inline void clear_pending(struct qspinlock *lock) in clear_pending() 143 static __always_inline void clear_pending_set_locked(struct qspinlock *lock) in clear_pending_set_locked() 158 static __always_inline u32 xchg_tail(struct qspinlock *lock, u32 tail) in xchg_tail() 184 static __always_inline u32 queued_fetch_set_pending_acquire(struct qspinlock *lock) in queued_fetch_set_pending_acquire() 196 static __always_inline void set_locked(struct qspinlock *lock) in set_locked()
|
| H A D | qspinlock.c | 90 static __always_inline void __pv_kick_node(struct qspinlock *lock, in __pv_kick_node() 92 static __always_inline u32 __pv_wait_head_or_lock(struct qspinlock *lock, in __pv_wait_head_or_lock() 130 void __lockfunc queued_spin_lock_slowpath(struct qspinlock *lock, u32 val) in queued_spin_lock_slowpath()
|
| H A D | Makefile | 27 obj-$(CONFIG_QUEUED_SPINLOCKS) += qspinlock.o
|
| /linux/arch/powerpc/include/asm/ |
| H A D | qspinlock.h | 71 static __always_inline int queued_spin_is_locked(struct qspinlock *lock) in queued_spin_is_locked() 76 static __always_inline int queued_spin_value_unlocked(struct qspinlock lock) in queued_spin_value_unlocked() 81 static __always_inline int queued_spin_is_contended(struct qspinlock *lock) in queued_spin_is_contended() 92 static __always_inline int __queued_spin_trylock_nosteal(struct qspinlock *lock) in __queued_spin_trylock_nosteal() 114 static __always_inline int __queued_spin_trylock_steal(struct qspinlock *lock) in __queued_spin_trylock_steal() 138 static __always_inline int queued_spin_trylock(struct qspinlock *lock) in queued_spin_trylock() 146 void queued_spin_lock_slowpath(struct qspinlock *lock); 148 static __always_inline void queued_spin_lock(struct qspinlock *lock) in queued_spin_lock() 154 static inline void queued_spin_unlock(struct qspinlock *lock) in queued_spin_unlock()
|
| H A D | qspinlock_types.h | 8 typedef struct qspinlock { struct
|
| /linux/include/asm-generic/ |
| H A D | qspinlock.h | 51 static __always_inline int queued_spin_is_locked(struct qspinlock *lock) in queued_spin_is_locked() 71 static __always_inline int queued_spin_value_unlocked(struct qspinlock lock) in queued_spin_value_unlocked() 81 static __always_inline int queued_spin_is_contended(struct qspinlock *lock) in queued_spin_is_contended() 90 static __always_inline int queued_spin_trylock(struct qspinlock *lock) in queued_spin_trylock() 100 extern void queued_spin_lock_slowpath(struct qspinlock *lock, u32 val); 107 static __always_inline void queued_spin_lock(struct qspinlock *lock) in queued_spin_lock() 123 static __always_inline void queued_spin_unlock(struct qspinlock *lock) in queued_spin_unlock() 133 static __always_inline bool virt_spin_lock(struct qspinlock *lock) in virt_spin_lock()
|
| H A D | rqspinlock.h | 33 struct qspinlock; 35 typedef struct qspinlock rqspinlock_t;
|
| H A D | qspinlock_types.h | 14 typedef struct qspinlock { struct
|
| /linux/arch/powerpc/lib/ |
| H A D | qspinlock.c | 18 struct qspinlock *lock; 123 static __always_inline u32 trylock_clean_tail(struct qspinlock *lock, u32 tail) in trylock_clean_tail() 162 static __always_inline u32 publish_tail_cpu(struct qspinlock *lock, u32 tail) in publish_tail_cpu() 182 static __always_inline u32 set_mustq(struct qspinlock *lock) in set_mustq() 198 static __always_inline u32 clear_mustq(struct qspinlock *lock) in clear_mustq() 214 static __always_inline bool try_set_sleepy(struct qspinlock *lock, u32 old) in try_set_sleepy() 236 static __always_inline void seen_sleepy_owner(struct qspinlock *lock, u32 val) in seen_sleepy_owner() 261 static struct qnode *get_tail_qnode(struct qspinlock *lock, int prev_cpu) in get_tail_qnode() 285 static __always_inline bool __yield_to_locked_owner(struct qspinlock *lock, u32 val, bool paravirt,… in __yield_to_locked_owner() 338 static __always_inline bool yield_to_locked_owner(struct qspinlock *lock, u32 val, bool paravirt) in yield_to_locked_owner() [all …]
|
| H A D | Makefile | 56 obj-$(CONFIG_SMP) += qspinlock.o
|
| /linux/arch/mips/include/asm/ |
| H A D | spinlock.h | 21 static inline void queued_spin_unlock(struct qspinlock *lock) in queued_spin_unlock()
|
| H A D | Kbuild | 14 generic-y += qspinlock.h
|
| /linux/kernel/bpf/ |
| H A D | rqspinlock.h | 28 static __always_inline bool try_cmpxchg_tail(struct qspinlock *lock, u32 tail, u32 new_tail) in try_cmpxchg_tail()
|
| /linux/arch/loongarch/include/asm/ |
| H A D | qspinlock.h | 13 static inline bool virt_spin_lock(struct qspinlock *lock) in virt_spin_lock()
|
| /linux/arch/xtensa/include/asm/ |
| H A D | Kbuild | 8 generic-y += qspinlock.h
|
| /linux/arch/csky/include/asm/ |
| H A D | Kbuild | 10 generic-y += qspinlock.h
|
| /linux/arch/x86/kernel/ |
| H A D | paravirt-spinlocks.c | 22 __visible void __native_queued_spin_unlock(struct qspinlock *lock) in __native_queued_spin_unlock()
|
| /linux/arch/riscv/include/asm/ |
| H A D | Kbuild | 16 generic-y += qspinlock.h
|
| /linux/arch/arm64/include/asm/ |
| H A D | Kbuild | 15 generic-y += qspinlock.h
|
| /linux/Documentation/admin-guide/ |
| H A D | kernel-parameters.txt | 4632 Disables the qspinlock slow path using PV optimizations
|