diff options
author | Daniel Vetter <daniel.vetter@ffwll.ch> | 2013-01-20 11:32:21 -0500 |
---|---|---|
committer | Daniel Vetter <daniel.vetter@ffwll.ch> | 2013-02-13 18:07:50 -0500 |
commit | 6aed8ec3f76a22217c9ae183d32b1aa990bed069 (patch) | |
tree | 429627e96391fd615275c1150d9482651696e623 /drivers/gpu/drm/drm_crtc.c | |
parent | b9e5071386007729110e86fd2c55c687085624e3 (diff) |
drm: review locking for drm_fb_helper_restore_fbdev_mode
... it's required. Fix up exynos and the cma helper, and add a
corresponding WARN_ON to drm_fb_helper_restore_fbdev_mode.
Note that tegra calls the fbdev cma helper restore function also from
it's driver-load callback. Which is a bit against current practice,
since usually the call is only from ->lastclose, and initial setup is
done by drm_fb_helper_initial_config.
Also add the relevant drm DocBook entry.
v2: Add promised WARN to restore_fbdev_mode.
Reviewed-by: Rob Clark <robdclark@gmail.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Diffstat (limited to 'drivers/gpu/drm/drm_crtc.c')
-rw-r--r-- | drivers/gpu/drm/drm_crtc.c | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/drivers/gpu/drm/drm_crtc.c b/drivers/gpu/drm/drm_crtc.c index 9c797f6fea75..f17077307c65 100644 --- a/drivers/gpu/drm/drm_crtc.c +++ b/drivers/gpu/drm/drm_crtc.c | |||
@@ -68,9 +68,23 @@ void drm_modeset_unlock_all(struct drm_device *dev) | |||
68 | 68 | ||
69 | mutex_unlock(&dev->mode_config.mutex); | 69 | mutex_unlock(&dev->mode_config.mutex); |
70 | } | 70 | } |
71 | |||
72 | EXPORT_SYMBOL(drm_modeset_unlock_all); | 71 | EXPORT_SYMBOL(drm_modeset_unlock_all); |
73 | 72 | ||
73 | /** | ||
74 | * drm_warn_on_modeset_not_all_locked - check that all modeset locks are locked | ||
75 | * @dev: device | ||
76 | */ | ||
77 | void drm_warn_on_modeset_not_all_locked(struct drm_device *dev) | ||
78 | { | ||
79 | struct drm_crtc *crtc; | ||
80 | |||
81 | list_for_each_entry(crtc, &dev->mode_config.crtc_list, head) | ||
82 | WARN_ON(!mutex_is_locked(&crtc->mutex)); | ||
83 | |||
84 | WARN_ON(!mutex_is_locked(&dev->mode_config.mutex)); | ||
85 | } | ||
86 | EXPORT_SYMBOL(drm_warn_on_modeset_not_all_locked); | ||
87 | |||
74 | /* Avoid boilerplate. I'm tired of typing. */ | 88 | /* Avoid boilerplate. I'm tired of typing. */ |
75 | #define DRM_ENUM_NAME_FN(fnname, list) \ | 89 | #define DRM_ENUM_NAME_FN(fnname, list) \ |
76 | char *fnname(int val) \ | 90 | char *fnname(int val) \ |