Lines Matching refs:ts
92 static bool is_lock_released(rqspinlock_t *lock, u32 mask, struct rqspinlock_timeout *ts) in is_lock_released() argument
100 struct rqspinlock_timeout *ts) in check_deadlock_AA() argument
122 struct rqspinlock_timeout *ts) in check_deadlock_ABBA() argument
145 if (is_lock_released(lock, mask, ts)) in check_deadlock_ABBA()
202 struct rqspinlock_timeout *ts) in check_deadlock() argument
206 ret = check_deadlock_AA(lock, mask, ts); in check_deadlock()
209 ret = check_deadlock_ABBA(lock, mask, ts); in check_deadlock()
217 struct rqspinlock_timeout *ts) in check_timeout() argument
220 u64 prev = ts->cur; in check_timeout()
222 if (!ts->timeout_end) { in check_timeout()
223 ts->cur = time; in check_timeout()
224 ts->timeout_end = time + ts->duration; in check_timeout()
228 if (time > ts->timeout_end) in check_timeout()
236 ts->cur = time; in check_timeout()
237 return check_deadlock(lock, mask, ts); in check_timeout()
248 #define RES_CHECK_TIMEOUT(ts, ret, mask) \ argument
250 if (!(ts).spin++) \
251 (ret) = check_timeout((lock), (mask), &(ts)); \
255 #define RES_CHECK_TIMEOUT(ts, ret, mask) \ argument
256 ({ (ret) = check_timeout((lock), (mask), &(ts)); })
263 #define RES_INIT_TIMEOUT(ts) ({ (ts).spin = 0; }) argument
269 #define RES_RESET_TIMEOUT(ts, _duration) ({ (ts).timeout_end = 0; (ts).duration = _duration; }) argument
277 struct rqspinlock_timeout ts; in resilient_tas_spin_lock() local
280 RES_INIT_TIMEOUT(ts); in resilient_tas_spin_lock()
288 RES_RESET_TIMEOUT(ts, NSEC_PER_SEC); in resilient_tas_spin_lock()
293 if (RES_CHECK_TIMEOUT(ts, ret, ~0u)) in resilient_tas_spin_lock()
351 struct rqspinlock_timeout ts; in resilient_queued_spin_lock_slowpath() local
360 RES_INIT_TIMEOUT(ts); in resilient_queued_spin_lock_slowpath()
420 RES_RESET_TIMEOUT(ts, RES_DEF_TIMEOUT); in resilient_queued_spin_lock_slowpath()
421 res_smp_cond_load_acquire(&lock->locked, !VAL || RES_CHECK_TIMEOUT(ts, ret, _Q_LOCKED_MASK)); in resilient_queued_spin_lock_slowpath()
476 RES_RESET_TIMEOUT(ts, RES_DEF_TIMEOUT); in resilient_queued_spin_lock_slowpath()
478 if (RES_CHECK_TIMEOUT(ts, ret, ~0u)) { in resilient_queued_spin_lock_slowpath()
574 RES_RESET_TIMEOUT(ts, RES_DEF_TIMEOUT * 2); in resilient_queued_spin_lock_slowpath()
576 RES_CHECK_TIMEOUT(ts, ret, _Q_LOCKED_PENDING_MASK)); in resilient_queued_spin_lock_slowpath()