51 lines · c
1// SPDX-License-Identifier: MIT2/*3 * Copyright © 2023 Intel Corporation4 */5 6#include <drm/drm_modeset_lock.h>7 8#include "intel_display_types.h"9#include "intel_modeset_lock.h"10 11void _intel_modeset_lock_begin(struct drm_modeset_acquire_ctx *ctx,12 struct intel_atomic_state *state,13 unsigned int flags, int *ret)14{15 drm_modeset_acquire_init(ctx, flags);16 17 if (state)18 state->base.acquire_ctx = ctx;19 20 *ret = -EDEADLK;21}22 23bool _intel_modeset_lock_loop(int *ret)24{25 if (*ret == -EDEADLK) {26 *ret = 0;27 return true;28 }29 30 return false;31}32 33void _intel_modeset_lock_end(struct drm_modeset_acquire_ctx *ctx,34 struct intel_atomic_state *state,35 int *ret)36{37 if (*ret == -EDEADLK) {38 if (state)39 drm_atomic_state_clear(&state->base);40 41 *ret = drm_modeset_backoff(ctx);42 if (*ret == 0) {43 *ret = -EDEADLK;44 return;45 }46 }47 48 drm_modeset_drop_locks(ctx);49 drm_modeset_acquire_fini(ctx);50}51