summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjsg <jsg@openbsd.org>2013-11-11 02:48:04 +0000
committerjsg <jsg@openbsd.org>2013-11-11 02:48:04 +0000
commit02f5cd52cce209a924bd06682eaa149d63d24a71 (patch)
tree9af229a2d8539f92c1d14f9c5e44b27d803d866c
parentdrm/i915: Fix context sizes on HSW (diff)
downloadwireguard-openbsd-02f5cd52cce209a924bd06682eaa149d63d24a71.tar.xz
wireguard-openbsd-02f5cd52cce209a924bd06682eaa149d63d24a71.zip
drm/i915: do not update cursor in crtc mode set
The cursor is disabled before crtc mode set in crtc disable (and we assert this is the case), and enabled afterwards in crtc enable. Do not update it in crtc mode set. 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: Add note about HSW hangs - vsyrjala From Jani Nikula 0be01fc195fd4ea1aec1f8be7c03ca8f920a9486 in ubuntu 3.8 cc173961a68034c1171a421f0dbed39edfb60880 in mainline linux
-rw-r--r--sys/dev/pci/drm/i915/intel_display.c11
1 files changed, 1 insertions, 10 deletions
diff --git a/sys/dev/pci/drm/i915/intel_display.c b/sys/dev/pci/drm/i915/intel_display.c
index 30c9adc7740..7da9b668756 100644
--- a/sys/dev/pci/drm/i915/intel_display.c
+++ b/sys/dev/pci/drm/i915/intel_display.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: intel_display.c,v 1.15 2013/11/02 22:58:10 kettenis Exp $ */
+/* $OpenBSD: intel_display.c,v 1.16 2013/11/11 02:48:04 jsg Exp $ */
/*
* Copyright © 2006-2007 Intel Corporation
*
@@ -4855,9 +4855,6 @@ static int i9xx_crtc_mode_set(struct drm_crtc *crtc,
return -EINVAL;
}
- /* Ensure that the cursor is valid for the new mode before changing... */
- intel_crtc_update_cursor(crtc, true);
-
if (is_lvds && dev_priv->lvds_downclock_avail) {
/*
* Ensure we match the reduced clock's P to the target clock.
@@ -5752,9 +5749,6 @@ static int ironlake_crtc_mode_set(struct drm_crtc *crtc,
return -EINVAL;
}
- /* Ensure that the cursor is valid for the new mode before changing... */
- intel_crtc_update_cursor(crtc, true);
-
/* determine panel color depth */
dither = intel_choose_pipe_bpp_dither(crtc, fb, &intel_crtc->bpp,
adjusted_mode);
@@ -5955,9 +5949,6 @@ static int haswell_crtc_mode_set(struct drm_crtc *crtc,
}
}
- /* Ensure that the cursor is valid for the new mode before changing... */
- intel_crtc_update_cursor(crtc, true);
-
/* determine panel color depth */
dither = intel_choose_pipe_bpp_dither(crtc, fb, &intel_crtc->bpp,
adjusted_mode);