aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/drm_crtc_helper.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/drm/drm_crtc_helper.c')
-rw-r--r--drivers/gpu/drm/drm_crtc_helper.c20
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;