• Home
  • Raw
  • Download

Lines Matching refs:ctx

81 	struct drm_modeset_acquire_ctx *ctx;  in drm_modeset_lock_all()  local
84 ctx = kzalloc(sizeof(*ctx), GFP_KERNEL | __GFP_NOFAIL); in drm_modeset_lock_all()
85 if (WARN_ON(!ctx)) in drm_modeset_lock_all()
90 drm_modeset_acquire_init(ctx, 0); in drm_modeset_lock_all()
93 ret = drm_modeset_lock_all_ctx(dev, ctx); in drm_modeset_lock_all()
96 drm_modeset_backoff(ctx); in drm_modeset_lock_all()
100 drm_modeset_acquire_fini(ctx); in drm_modeset_lock_all()
101 kfree(ctx); in drm_modeset_lock_all()
111 config->acquire_ctx = ctx; in drm_modeset_lock_all()
134 struct drm_modeset_acquire_ctx *ctx = config->acquire_ctx; in drm_modeset_unlock_all() local
136 if (WARN_ON(!ctx)) in drm_modeset_unlock_all()
140 drm_modeset_drop_locks(ctx); in drm_modeset_unlock_all()
141 drm_modeset_acquire_fini(ctx); in drm_modeset_unlock_all()
143 kfree(ctx); in drm_modeset_unlock_all()
165 struct drm_modeset_acquire_ctx *ctx; in drm_modeset_lock_crtc() local
168 ctx = kzalloc(sizeof(*ctx), GFP_KERNEL); in drm_modeset_lock_crtc()
169 if (WARN_ON(!ctx)) in drm_modeset_lock_crtc()
172 drm_modeset_acquire_init(ctx, 0); in drm_modeset_lock_crtc()
175 ret = drm_modeset_lock(&crtc->mutex, ctx); in drm_modeset_lock_crtc()
180 ret = drm_modeset_lock(&plane->mutex, ctx); in drm_modeset_lock_crtc()
185 ret = drm_modeset_lock(&plane->crtc->mutex, ctx); in drm_modeset_lock_crtc()
196 crtc->acquire_ctx = ctx; in drm_modeset_lock_crtc()
202 drm_modeset_backoff(ctx); in drm_modeset_lock_crtc()
238 struct drm_modeset_acquire_ctx *ctx = crtc->acquire_ctx; in drm_modeset_unlock_crtc() local
240 if (WARN_ON(!ctx)) in drm_modeset_unlock_crtc()
244 drm_modeset_drop_locks(ctx); in drm_modeset_unlock_crtc()
245 drm_modeset_acquire_fini(ctx); in drm_modeset_unlock_crtc()
247 kfree(ctx); in drm_modeset_unlock_crtc()
278 void drm_modeset_acquire_init(struct drm_modeset_acquire_ctx *ctx, in drm_modeset_acquire_init() argument
281 memset(ctx, 0, sizeof(*ctx)); in drm_modeset_acquire_init()
282 ww_acquire_init(&ctx->ww_ctx, &crtc_ww_class); in drm_modeset_acquire_init()
283 INIT_LIST_HEAD(&ctx->locked); in drm_modeset_acquire_init()
291 void drm_modeset_acquire_fini(struct drm_modeset_acquire_ctx *ctx) in drm_modeset_acquire_fini() argument
293 ww_acquire_fini(&ctx->ww_ctx); in drm_modeset_acquire_fini()
303 void drm_modeset_drop_locks(struct drm_modeset_acquire_ctx *ctx) in drm_modeset_drop_locks() argument
305 WARN_ON(ctx->contended); in drm_modeset_drop_locks()
306 while (!list_empty(&ctx->locked)) { in drm_modeset_drop_locks()
309 lock = list_first_entry(&ctx->locked, in drm_modeset_drop_locks()
318 struct drm_modeset_acquire_ctx *ctx, in modeset_lock() argument
323 WARN_ON(ctx->contended); in modeset_lock()
325 if (ctx->trylock_only) { in modeset_lock()
326 lockdep_assert_held(&ctx->ww_ctx); in modeset_lock()
333 ret = ww_mutex_lock_slow_interruptible(&lock->mutex, &ctx->ww_ctx); in modeset_lock()
335 ret = ww_mutex_lock_interruptible(&lock->mutex, &ctx->ww_ctx); in modeset_lock()
337 ww_mutex_lock_slow(&lock->mutex, &ctx->ww_ctx); in modeset_lock()
340 ret = ww_mutex_lock(&lock->mutex, &ctx->ww_ctx); in modeset_lock()
344 list_add(&lock->head, &ctx->locked); in modeset_lock()
353 ctx->contended = lock; in modeset_lock()
359 static int modeset_backoff(struct drm_modeset_acquire_ctx *ctx, in modeset_backoff() argument
362 struct drm_modeset_lock *contended = ctx->contended; in modeset_backoff()
364 ctx->contended = NULL; in modeset_backoff()
369 drm_modeset_drop_locks(ctx); in modeset_backoff()
371 return modeset_lock(contended, ctx, interruptible, true); in modeset_backoff()
382 void drm_modeset_backoff(struct drm_modeset_acquire_ctx *ctx) in drm_modeset_backoff() argument
384 modeset_backoff(ctx, false); in drm_modeset_backoff()
394 int drm_modeset_backoff_interruptible(struct drm_modeset_acquire_ctx *ctx) in drm_modeset_backoff_interruptible() argument
396 return modeset_backoff(ctx, true); in drm_modeset_backoff_interruptible()
412 struct drm_modeset_acquire_ctx *ctx) in drm_modeset_lock() argument
414 if (ctx) in drm_modeset_lock()
415 return modeset_lock(lock, ctx, false, false); in drm_modeset_lock()
430 struct drm_modeset_acquire_ctx *ctx) in drm_modeset_lock_interruptible() argument
432 if (ctx) in drm_modeset_lock_interruptible()
433 return modeset_lock(lock, ctx, true, false); in drm_modeset_lock_interruptible()
469 struct drm_modeset_acquire_ctx *ctx) in drm_modeset_lock_all_ctx() argument
475 ret = drm_modeset_lock(&dev->mode_config.connection_mutex, ctx); in drm_modeset_lock_all_ctx()
480 ret = drm_modeset_lock(&crtc->mutex, ctx); in drm_modeset_lock_all_ctx()
486 ret = drm_modeset_lock(&plane->mutex, ctx); in drm_modeset_lock_all_ctx()