|
|
|
@ -1587,38 +1587,6 @@ drm_atomic_add_affected_planes(struct drm_atomic_state *state, |
|
|
|
|
} |
|
|
|
|
EXPORT_SYMBOL(drm_atomic_add_affected_planes); |
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* drm_atomic_legacy_backoff - locking backoff for legacy ioctls |
|
|
|
|
* @state: atomic state |
|
|
|
|
* |
|
|
|
|
* This function should be used by legacy entry points which don't understand |
|
|
|
|
* -EDEADLK semantics. For simplicity this one will grab all modeset locks after |
|
|
|
|
* the slowpath completed. |
|
|
|
|
*/ |
|
|
|
|
void drm_atomic_legacy_backoff(struct drm_atomic_state *state) |
|
|
|
|
{ |
|
|
|
|
struct drm_device *dev = state->dev; |
|
|
|
|
int ret; |
|
|
|
|
bool global = false; |
|
|
|
|
|
|
|
|
|
if (WARN_ON(dev->mode_config.acquire_ctx == state->acquire_ctx)) { |
|
|
|
|
global = true; |
|
|
|
|
|
|
|
|
|
dev->mode_config.acquire_ctx = NULL; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
retry: |
|
|
|
|
drm_modeset_backoff(state->acquire_ctx); |
|
|
|
|
|
|
|
|
|
ret = drm_modeset_lock_all_ctx(dev, state->acquire_ctx); |
|
|
|
|
if (ret) |
|
|
|
|
goto retry; |
|
|
|
|
|
|
|
|
|
if (global) |
|
|
|
|
dev->mode_config.acquire_ctx = state->acquire_ctx; |
|
|
|
|
} |
|
|
|
|
EXPORT_SYMBOL(drm_atomic_legacy_backoff); |
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* drm_atomic_check_only - check whether a given config would work |
|
|
|
|
* @state: atomic configuration to check |
|
|
|
|