Lines Matching refs:ctx
119 DEBUG_LOCKS_WARN_ON(ww->ctx); in ww_mutex_lock_acquired()
158 struct ww_acquire_ctx *ctx) in ww_mutex_set_context_fastpath() argument
163 ww_mutex_lock_acquired(lock, ctx); in ww_mutex_set_context_fastpath()
165 lock->ctx = ctx; in ww_mutex_set_context_fastpath()
202 struct ww_acquire_ctx *ctx) in ww_mutex_set_context_slowpath() argument
206 ww_mutex_lock_acquired(lock, ctx); in ww_mutex_set_context_slowpath()
207 lock->ctx = ctx; in ww_mutex_set_context_slowpath()
337 if (READ_ONCE(ww->ctx)) in mutex_optimistic_spin()
459 if (lock->ctx) { in ww_mutex_unlock()
461 DEBUG_LOCKS_WARN_ON(!lock->ctx->acquired); in ww_mutex_unlock()
463 if (lock->ctx->acquired > 0) in ww_mutex_unlock()
464 lock->ctx->acquired--; in ww_mutex_unlock()
465 lock->ctx = NULL; in ww_mutex_unlock()
481 __ww_mutex_lock_check_stamp(struct mutex *lock, struct ww_acquire_ctx *ctx) in __ww_mutex_lock_check_stamp() argument
484 struct ww_acquire_ctx *hold_ctx = READ_ONCE(ww->ctx); in __ww_mutex_lock_check_stamp()
489 if (unlikely(ctx == hold_ctx)) in __ww_mutex_lock_check_stamp()
492 if (ctx->stamp - hold_ctx->stamp <= LONG_MAX && in __ww_mutex_lock_check_stamp()
493 (ctx->stamp != hold_ctx->stamp || ctx > hold_ctx)) { in __ww_mutex_lock_check_stamp()
495 DEBUG_LOCKS_WARN_ON(ctx->contending_lock); in __ww_mutex_lock_check_stamp()
496 ctx->contending_lock = ww; in __ww_mutex_lock_check_stamp()
654 ww_mutex_deadlock_injection(struct ww_mutex *lock, struct ww_acquire_ctx *ctx) in ww_mutex_deadlock_injection() argument
659 if (ctx->deadlock_inject_countdown-- == 0) { in ww_mutex_deadlock_injection()
660 tmp = ctx->deadlock_inject_interval; in ww_mutex_deadlock_injection()
666 ctx->deadlock_inject_interval = tmp; in ww_mutex_deadlock_injection()
667 ctx->deadlock_inject_countdown = tmp; in ww_mutex_deadlock_injection()
668 ctx->contending_lock = lock; in ww_mutex_deadlock_injection()
680 __ww_mutex_lock(struct ww_mutex *lock, struct ww_acquire_ctx *ctx) in __ww_mutex_lock() argument
686 0, &ctx->dep_map, _RET_IP_, ctx, 1); in __ww_mutex_lock()
687 if (!ret && ctx->acquired > 1) in __ww_mutex_lock()
688 return ww_mutex_deadlock_injection(lock, ctx); in __ww_mutex_lock()
695 __ww_mutex_lock_interruptible(struct ww_mutex *lock, struct ww_acquire_ctx *ctx) in __ww_mutex_lock_interruptible() argument
701 0, &ctx->dep_map, _RET_IP_, ctx, 1); in __ww_mutex_lock_interruptible()
703 if (!ret && ctx->acquired > 1) in __ww_mutex_lock_interruptible()
704 return ww_mutex_deadlock_injection(lock, ctx); in __ww_mutex_lock_interruptible()
839 __ww_mutex_lock_slowpath(struct ww_mutex *lock, struct ww_acquire_ctx *ctx) in __ww_mutex_lock_slowpath() argument
842 NULL, _RET_IP_, ctx, 1); in __ww_mutex_lock_slowpath()
847 struct ww_acquire_ctx *ctx) in __ww_mutex_lock_interruptible_slowpath() argument
850 NULL, _RET_IP_, ctx, 1); in __ww_mutex_lock_interruptible_slowpath()
914 __ww_mutex_lock(struct ww_mutex *lock, struct ww_acquire_ctx *ctx) in __ww_mutex_lock() argument
923 ww_mutex_set_context_fastpath(lock, ctx); in __ww_mutex_lock()
926 ret = __ww_mutex_lock_slowpath(lock, ctx); in __ww_mutex_lock()
932 __ww_mutex_lock_interruptible(struct ww_mutex *lock, struct ww_acquire_ctx *ctx) in __ww_mutex_lock_interruptible() argument
941 ww_mutex_set_context_fastpath(lock, ctx); in __ww_mutex_lock_interruptible()
944 ret = __ww_mutex_lock_interruptible_slowpath(lock, ctx); in __ww_mutex_lock_interruptible()