diff options
Diffstat (limited to 'drivers/gpu/drm/drm_crtc_helper.c')
-rw-r--r-- | drivers/gpu/drm/drm_crtc_helper.c | 20 |
1 files changed, 17 insertions, 3 deletions
diff --git a/drivers/gpu/drm/drm_crtc_helper.c b/drivers/gpu/drm/drm_crtc_helper.c index eb1c062e04b2..78b37f3febd3 100644 --- a/drivers/gpu/drm/drm_crtc_helper.c +++ b/drivers/gpu/drm/drm_crtc_helper.c | |||
@@ -29,6 +29,7 @@ | |||
29 | * Jesse Barnes <jesse.barnes@intel.com> | 29 | * Jesse Barnes <jesse.barnes@intel.com> |
30 | */ | 30 | */ |
31 | 31 | ||
32 | #include <linux/kernel.h> | ||
32 | #include <linux/export.h> | 33 | #include <linux/export.h> |
33 | #include <linux/moduleparam.h> | 34 | #include <linux/moduleparam.h> |
34 | 35 | ||
@@ -88,8 +89,15 @@ bool drm_helper_encoder_in_use(struct drm_encoder *encoder) | |||
88 | struct drm_connector *connector; | 89 | struct drm_connector *connector; |
89 | struct drm_device *dev = encoder->dev; | 90 | struct drm_device *dev = encoder->dev; |
90 | 91 | ||
91 | WARN_ON(!mutex_is_locked(&dev->mode_config.mutex)); | 92 | /* |
92 | WARN_ON(!drm_modeset_is_locked(&dev->mode_config.connection_mutex)); | 93 | * We can expect this mutex to be locked if we are not panicking. |
94 | * Locking is currently fubar in the panic handler. | ||
95 | */ | ||
96 | if (!oops_in_progress) { | ||
97 | WARN_ON(!mutex_is_locked(&dev->mode_config.mutex)); | ||
98 | WARN_ON(!drm_modeset_is_locked(&dev->mode_config.connection_mutex)); | ||
99 | } | ||
100 | |||
93 | list_for_each_entry(connector, &dev->mode_config.connector_list, head) | 101 | list_for_each_entry(connector, &dev->mode_config.connector_list, head) |
94 | if (connector->encoder == encoder) | 102 | if (connector->encoder == encoder) |
95 | return true; | 103 | return true; |
@@ -113,7 +121,13 @@ bool drm_helper_crtc_in_use(struct drm_crtc *crtc) | |||
113 | struct drm_encoder *encoder; | 121 | struct drm_encoder *encoder; |
114 | struct drm_device *dev = crtc->dev; | 122 | struct drm_device *dev = crtc->dev; |
115 | 123 | ||
116 | WARN_ON(!mutex_is_locked(&dev->mode_config.mutex)); | 124 | /* |
125 | * We can expect this mutex to be locked if we are not panicking. | ||
126 | * Locking is currently fubar in the panic handler. | ||
127 | */ | ||
128 | if (!oops_in_progress) | ||
129 | WARN_ON(!mutex_is_locked(&dev->mode_config.mutex)); | ||
130 | |||
117 | list_for_each_entry(encoder, &dev->mode_config.encoder_list, head) | 131 | list_for_each_entry(encoder, &dev->mode_config.encoder_list, head) |
118 | if (encoder->crtc == crtc && drm_helper_encoder_in_use(encoder)) | 132 | if (encoder->crtc == crtc && drm_helper_encoder_in_use(encoder)) |
119 | return true; | 133 | return true; |