29,10 → 29,11 |
struct drm_modeset_lock; |
|
/** |
* drm_modeset_acquire_ctx - locking context (see ww_acquire_ctx) |
* struct drm_modeset_acquire_ctx - locking context (see ww_acquire_ctx) |
* @ww_ctx: base acquire ctx |
* @contended: used internally for -EDEADLK handling |
* @locked: list of held locks |
* @trylock_only: trylock mode used in atomic contexts/panic notifiers |
* |
* Each thread competing for a set of locks must use one acquire |
* ctx. And if any lock fxn returns -EDEADLK, it must backoff and |
53,10 → 54,15 |
* list of held locks (drm_modeset_lock) |
*/ |
struct list_head locked; |
|
/** |
* Trylock mode, use only for panic handlers! |
*/ |
bool trylock_only; |
}; |
|
/** |
* drm_modeset_lock - used for locking modeset resources. |
* struct drm_modeset_lock - used for locking modeset resources. |
* @mutex: resource locking |
* @head: used to hold it's place on state->locked list when |
* part of an atomic update |
120,6 → 126,19 |
void drm_modeset_unlock(struct drm_modeset_lock *lock); |
|
struct drm_device; |
struct drm_crtc; |
struct drm_plane; |
|
void drm_modeset_lock_all(struct drm_device *dev); |
int __drm_modeset_lock_all(struct drm_device *dev, bool trylock); |
void drm_modeset_unlock_all(struct drm_device *dev); |
void drm_modeset_lock_crtc(struct drm_crtc *crtc, |
struct drm_plane *plane); |
void drm_modeset_unlock_crtc(struct drm_crtc *crtc); |
void drm_warn_on_modeset_not_all_locked(struct drm_device *dev); |
struct drm_modeset_acquire_ctx * |
drm_modeset_legacy_acquire_ctx(struct drm_crtc *crtc); |
|
int drm_modeset_lock_all_crtcs(struct drm_device *dev, |
struct drm_modeset_acquire_ctx *ctx); |
|