diff options
author | Ville Syrjälä <ville.syrjala@linux.intel.com> | 2013-09-17 11:33:44 -0400 |
---|---|---|
committer | Daniel Vetter <daniel.vetter@ffwll.ch> | 2013-09-18 04:00:30 -0400 |
commit | f2f5f771c5fc0fa252cde3d0d0452dcc785cc17a (patch) | |
tree | c1cda56aef83009dbb461a4edc1fcf6f541c5c67 /drivers/gpu/drm | |
parent | cc173961a68034c1171a421f0dbed39edfb60880 (diff) |
drm/i915: Don't enable the cursor on a disable pipe
On HSW enabling a plane on a disabled pipe may hang the entire system.
And there's no good reason for doing it ever, so just don't.
v2: Move the crtc active checks to intel_crtc_cursor_{set,move} to
avoid confusing people during modeset
Cc: stable@vger.kernel.org
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Tested-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
Reviewed-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Diffstat (limited to 'drivers/gpu/drm')
-rw-r--r-- | drivers/gpu/drm/i915/intel_display.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c index a38056d68dd8..d8a1d98693e7 100644 --- a/drivers/gpu/drm/i915/intel_display.c +++ b/drivers/gpu/drm/i915/intel_display.c | |||
@@ -6929,7 +6929,8 @@ static int intel_crtc_cursor_set(struct drm_crtc *crtc, | |||
6929 | intel_crtc->cursor_width = width; | 6929 | intel_crtc->cursor_width = width; |
6930 | intel_crtc->cursor_height = height; | 6930 | intel_crtc->cursor_height = height; |
6931 | 6931 | ||
6932 | intel_crtc_update_cursor(crtc, intel_crtc->cursor_bo != NULL); | 6932 | if (intel_crtc->active) |
6933 | intel_crtc_update_cursor(crtc, intel_crtc->cursor_bo != NULL); | ||
6933 | 6934 | ||
6934 | return 0; | 6935 | return 0; |
6935 | fail_unpin: | 6936 | fail_unpin: |
@@ -6948,7 +6949,8 @@ static int intel_crtc_cursor_move(struct drm_crtc *crtc, int x, int y) | |||
6948 | intel_crtc->cursor_x = x; | 6949 | intel_crtc->cursor_x = x; |
6949 | intel_crtc->cursor_y = y; | 6950 | intel_crtc->cursor_y = y; |
6950 | 6951 | ||
6951 | intel_crtc_update_cursor(crtc, intel_crtc->cursor_bo != NULL); | 6952 | if (intel_crtc->active) |
6953 | intel_crtc_update_cursor(crtc, intel_crtc->cursor_bo != NULL); | ||
6952 | 6954 | ||
6953 | return 0; | 6955 | return 0; |
6954 | } | 6956 | } |