summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm
diff options
context:
space:
mode:
authorAnder Conselvan de Oliveira2015-06-16 10:49:44 +0200
committerJani Nikula2015-06-17 13:20:54 +0200
commit0d26fb891a119d78d8e4b345cfd0be0f2112cb7a (patch)
tree1f328ed935305553d5a2010a155f6b9f7b0b0182 /drivers/gpu/drm
parentdrm/i915: Don't check modeset state in the hw state force restore path (diff)
downloadkernel-qcow2-linux-0d26fb891a119d78d8e4b345cfd0be0f2112cb7a.tar.gz
kernel-qcow2-linux-0d26fb891a119d78d8e4b345cfd0be0f2112cb7a.tar.xz
kernel-qcow2-linux-0d26fb891a119d78d8e4b345cfd0be0f2112cb7a.zip
drm/i915: Don't update staged config during force restore modesets
The force restore path relies on the staged config to preserve the configuration used before a suspend/resume cycle. The update done to it in intel_modeset_fixup_state() would cause that information to be lost after the first modeset, making it impossible to restore the modes for pipes B and C. References: https://bugs.freedesktop.org/show_bug.cgi?id=90468 Signed-off-by: Ander Conselvan de Oliveira <ander.conselvan.de.oliveira@intel.com> Reviewed-by: Matt Roper <matthew.d.roper@intel.com> Signed-off-by: Jani Nikula <jani.nikula@intel.com>
Diffstat (limited to 'drivers/gpu/drm')
-rw-r--r--drivers/gpu/drm/i915/intel_display.c8
1 files changed, 3 insertions, 5 deletions
diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
index bcf1041b5a1a..ff7175b6a013 100644
--- a/drivers/gpu/drm/i915/intel_display.c
+++ b/drivers/gpu/drm/i915/intel_display.c
@@ -11386,10 +11386,6 @@ static void intel_modeset_fixup_state(struct drm_atomic_state *state)
crtc->base.enabled = crtc->base.state->enable;
crtc->config = to_intel_crtc_state(crtc->base.state);
}
-
- /* Copy the new configuration to the staged state, to keep the few
- * pieces of code that haven't been converted yet happy */
- intel_modeset_update_staged_output_state(state->dev);
}
static void
@@ -12654,8 +12650,10 @@ static int intel_set_mode_with_config(struct drm_crtc *crtc,
ret = __intel_set_mode(crtc, pipe_config);
- if (ret == 0 && force_restore)
+ if (ret == 0 && force_restore) {
+ intel_modeset_update_staged_output_state(crtc->dev);
intel_modeset_check_state(crtc->dev);
+ }
return ret;
}