// SPDX-License-Identifier: MIT /* * Copyright © 2023 Intel Corporation */ #include <drm/drm_modeset_lock.h> #include "intel_display_types.h" #include "intel_modeset_lock.h" void _intel_modeset_lock_begin(struct drm_modeset_acquire_ctx *ctx, struct intel_atomic_state *state, unsigned int flags, int *ret) { drm_modeset_acquire_init(ctx, flags); if (state) state->base.acquire_ctx = ctx; *ret = -EDEADLK; } bool _intel_modeset_lock_loop(int *ret) { if (*ret == -EDEADLK) { *ret = 0; return true; } return false; } void _intel_modeset_lock_end(struct drm_modeset_acquire_ctx *ctx, struct intel_atomic_state *state, int *ret) { if (*ret == -EDEADLK) { if (state) drm_atomic_state_clear(&state->base); *ret = drm_modeset_backoff(ctx); if (*ret == 0) { *ret = -EDEADLK; return; } } drm_modeset_drop_locks(ctx); drm_modeset_acquire_fini(ctx); }