Lines Matching refs:lock
291 struct drm_modeset_lock *lock; in drm_modeset_drop_locks() local
293 lock = list_first_entry(&ctx->locked, in drm_modeset_drop_locks()
296 drm_modeset_unlock(lock); in drm_modeset_drop_locks()
301 static inline int modeset_lock(struct drm_modeset_lock *lock, in modeset_lock() argument
312 if (!ww_mutex_trylock(&lock->mutex)) in modeset_lock()
317 ret = ww_mutex_lock_slow_interruptible(&lock->mutex, &ctx->ww_ctx); in modeset_lock()
319 ret = ww_mutex_lock_interruptible(&lock->mutex, &ctx->ww_ctx); in modeset_lock()
321 ww_mutex_lock_slow(&lock->mutex, &ctx->ww_ctx); in modeset_lock()
324 ret = ww_mutex_lock(&lock->mutex, &ctx->ww_ctx); in modeset_lock()
327 WARN_ON(!list_empty(&lock->head)); in modeset_lock()
328 list_add(&lock->head, &ctx->locked); in modeset_lock()
337 ctx->contended = lock; in modeset_lock()
395 int drm_modeset_lock(struct drm_modeset_lock *lock, in drm_modeset_lock() argument
399 return modeset_lock(lock, ctx, false, false); in drm_modeset_lock()
401 ww_mutex_lock(&lock->mutex, NULL); in drm_modeset_lock()
413 int drm_modeset_lock_interruptible(struct drm_modeset_lock *lock, in drm_modeset_lock_interruptible() argument
417 return modeset_lock(lock, ctx, true, false); in drm_modeset_lock_interruptible()
419 return ww_mutex_lock_interruptible(&lock->mutex, NULL); in drm_modeset_lock_interruptible()
427 void drm_modeset_unlock(struct drm_modeset_lock *lock) in drm_modeset_unlock() argument
429 list_del_init(&lock->head); in drm_modeset_unlock()
430 ww_mutex_unlock(&lock->mutex); in drm_modeset_unlock()