Lines Matching refs:lock
282 struct drm_modeset_lock *lock; in drm_modeset_drop_locks() local
284 lock = list_first_entry(&ctx->locked, in drm_modeset_drop_locks()
287 drm_modeset_unlock(lock); in drm_modeset_drop_locks()
292 static inline int modeset_lock(struct drm_modeset_lock *lock, in modeset_lock() argument
304 if (!ww_mutex_trylock(&lock->mutex, NULL)) in modeset_lock()
309 ret = ww_mutex_lock_slow_interruptible(&lock->mutex, &ctx->ww_ctx); in modeset_lock()
311 ret = ww_mutex_lock_interruptible(&lock->mutex, &ctx->ww_ctx); in modeset_lock()
313 ww_mutex_lock_slow(&lock->mutex, &ctx->ww_ctx); in modeset_lock()
316 ret = ww_mutex_lock(&lock->mutex, &ctx->ww_ctx); in modeset_lock()
319 WARN_ON(!list_empty(&lock->head)); in modeset_lock()
320 list_add(&lock->head, &ctx->locked); in modeset_lock()
329 ctx->contended = lock; in modeset_lock()
368 void drm_modeset_lock_init(struct drm_modeset_lock *lock) in drm_modeset_lock_init() argument
370 ww_mutex_init(&lock->mutex, &crtc_ww_class); in drm_modeset_lock_init()
371 INIT_LIST_HEAD(&lock->head); in drm_modeset_lock_init()
394 int drm_modeset_lock(struct drm_modeset_lock *lock, in drm_modeset_lock() argument
398 return modeset_lock(lock, ctx, ctx->interruptible, false); in drm_modeset_lock()
400 ww_mutex_lock(&lock->mutex, NULL); in drm_modeset_lock()
414 int drm_modeset_lock_single_interruptible(struct drm_modeset_lock *lock) in drm_modeset_lock_single_interruptible() argument
416 return ww_mutex_lock_interruptible(&lock->mutex, NULL); in drm_modeset_lock_single_interruptible()
424 void drm_modeset_unlock(struct drm_modeset_lock *lock) in drm_modeset_unlock() argument
426 list_del_init(&lock->head); in drm_modeset_unlock()
427 ww_mutex_unlock(&lock->mutex); in drm_modeset_unlock()
476 ret = drm_modeset_lock(&privobj->lock, ctx); in drm_modeset_lock_all_ctx()