Lines Matching refs:ctx

74 	struct drm_modeset_acquire_ctx *ctx;  in __drm_modeset_lock_all()  local
77 ctx = kzalloc(sizeof(*ctx), in __drm_modeset_lock_all()
79 if (!ctx) in __drm_modeset_lock_all()
89 drm_modeset_acquire_init(ctx, 0); in __drm_modeset_lock_all()
90 ctx->trylock_only = trylock; in __drm_modeset_lock_all()
93 ret = drm_modeset_lock(&config->connection_mutex, ctx); in __drm_modeset_lock_all()
96 ret = drm_modeset_lock_all_crtcs(dev, ctx); in __drm_modeset_lock_all()
105 config->acquire_ctx = ctx; in __drm_modeset_lock_all()
113 drm_modeset_backoff(ctx); in __drm_modeset_lock_all()
144 struct drm_modeset_acquire_ctx *ctx = config->acquire_ctx; in drm_modeset_unlock_all() local
146 if (WARN_ON(!ctx)) in drm_modeset_unlock_all()
150 drm_modeset_drop_locks(ctx); in drm_modeset_unlock_all()
151 drm_modeset_acquire_fini(ctx); in drm_modeset_unlock_all()
153 kfree(ctx); in drm_modeset_unlock_all()
175 struct drm_modeset_acquire_ctx *ctx; in drm_modeset_lock_crtc() local
178 ctx = kzalloc(sizeof(*ctx), GFP_KERNEL); in drm_modeset_lock_crtc()
179 if (WARN_ON(!ctx)) in drm_modeset_lock_crtc()
182 drm_modeset_acquire_init(ctx, 0); in drm_modeset_lock_crtc()
185 ret = drm_modeset_lock(&crtc->mutex, ctx); in drm_modeset_lock_crtc()
190 ret = drm_modeset_lock(&plane->mutex, ctx); in drm_modeset_lock_crtc()
195 ret = drm_modeset_lock(&plane->crtc->mutex, ctx); in drm_modeset_lock_crtc()
206 crtc->acquire_ctx = ctx; in drm_modeset_lock_crtc()
212 drm_modeset_backoff(ctx); in drm_modeset_lock_crtc()
248 struct drm_modeset_acquire_ctx *ctx = crtc->acquire_ctx; in drm_modeset_unlock_crtc() local
250 if (WARN_ON(!ctx)) in drm_modeset_unlock_crtc()
254 drm_modeset_drop_locks(ctx); in drm_modeset_unlock_crtc()
255 drm_modeset_acquire_fini(ctx); in drm_modeset_unlock_crtc()
257 kfree(ctx); in drm_modeset_unlock_crtc()
288 void drm_modeset_acquire_init(struct drm_modeset_acquire_ctx *ctx, in drm_modeset_acquire_init() argument
291 memset(ctx, 0, sizeof(*ctx)); in drm_modeset_acquire_init()
292 ww_acquire_init(&ctx->ww_ctx, &crtc_ww_class); in drm_modeset_acquire_init()
293 INIT_LIST_HEAD(&ctx->locked); in drm_modeset_acquire_init()
301 void drm_modeset_acquire_fini(struct drm_modeset_acquire_ctx *ctx) in drm_modeset_acquire_fini() argument
303 ww_acquire_fini(&ctx->ww_ctx); in drm_modeset_acquire_fini()
313 void drm_modeset_drop_locks(struct drm_modeset_acquire_ctx *ctx) in drm_modeset_drop_locks() argument
315 WARN_ON(ctx->contended); in drm_modeset_drop_locks()
316 while (!list_empty(&ctx->locked)) { in drm_modeset_drop_locks()
319 lock = list_first_entry(&ctx->locked, in drm_modeset_drop_locks()
328 struct drm_modeset_acquire_ctx *ctx, in modeset_lock() argument
333 WARN_ON(ctx->contended); in modeset_lock()
335 if (ctx->trylock_only) { in modeset_lock()
341 ret = ww_mutex_lock_slow_interruptible(&lock->mutex, &ctx->ww_ctx); in modeset_lock()
343 ret = ww_mutex_lock_interruptible(&lock->mutex, &ctx->ww_ctx); in modeset_lock()
345 ww_mutex_lock_slow(&lock->mutex, &ctx->ww_ctx); in modeset_lock()
348 ret = ww_mutex_lock(&lock->mutex, &ctx->ww_ctx); in modeset_lock()
352 list_add(&lock->head, &ctx->locked); in modeset_lock()
361 ctx->contended = lock; in modeset_lock()
367 static int modeset_backoff(struct drm_modeset_acquire_ctx *ctx, in modeset_backoff() argument
370 struct drm_modeset_lock *contended = ctx->contended; in modeset_backoff()
372 ctx->contended = NULL; in modeset_backoff()
377 drm_modeset_drop_locks(ctx); in modeset_backoff()
379 return modeset_lock(contended, ctx, interruptible, true); in modeset_backoff()
390 void drm_modeset_backoff(struct drm_modeset_acquire_ctx *ctx) in drm_modeset_backoff() argument
392 modeset_backoff(ctx, false); in drm_modeset_backoff()
402 int drm_modeset_backoff_interruptible(struct drm_modeset_acquire_ctx *ctx) in drm_modeset_backoff_interruptible() argument
404 return modeset_backoff(ctx, true); in drm_modeset_backoff_interruptible()
420 struct drm_modeset_acquire_ctx *ctx) in drm_modeset_lock() argument
422 if (ctx) in drm_modeset_lock()
423 return modeset_lock(lock, ctx, false, false); in drm_modeset_lock()
438 struct drm_modeset_acquire_ctx *ctx) in drm_modeset_lock_interruptible() argument
440 if (ctx) in drm_modeset_lock_interruptible()
441 return modeset_lock(lock, ctx, true, false); in drm_modeset_lock_interruptible()
461 struct drm_modeset_acquire_ctx *ctx) in drm_modeset_lock_all_crtcs() argument
469 ret = drm_modeset_lock(&crtc->mutex, ctx); in drm_modeset_lock_all_crtcs()
475 ret = drm_modeset_lock(&plane->mutex, ctx); in drm_modeset_lock_all_crtcs()