Skip to content

Commit 673cdde

Browse files
committed
Revert "drm/i915: Disable DC states for all commits"
This reverts commit 0fc6fea which is commit a2b6e99 upstream. It is reported to cause regression issues, so it should be reverted from the 6.1.y tree for now. Reported-by: Thorsten Leemhuis <regressions@leemhuis.info> Link: https://lore.kernel.org/r/f0870e8f-0c66-57fd-f95d-18d014a11939@leemhuis.info Link: https://gitlab.freedesktop.org/drm/intel/-/issues/8419 Cc: Manasi Navare <navaremanasi@google.com> Cc: Drew Davenport <ddavenport@chromium.org> Cc: Jouni Högander <jouni.hogander@intel.com> Cc: Imre Deak <imre.deak@intel.com> Cc: Ville Syrjälä <ville.syrjala@linux.intel.com> Cc: Jani Nikula <jani.nikula@intel.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
1 parent af72151 commit 673cdde

File tree

1 file changed

+3
-25
lines changed

1 file changed

+3
-25
lines changed

drivers/gpu/drm/i915/display/intel_display.c

Lines changed: 3 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -7123,8 +7123,6 @@ static void intel_update_crtc(struct intel_atomic_state *state,
71237123

71247124
intel_fbc_update(state, crtc);
71257125

7126-
drm_WARN_ON(&i915->drm, !intel_display_power_is_enabled(i915, POWER_DOMAIN_DC_OFF));
7127-
71287126
if (!modeset &&
71297127
(new_crtc_state->uapi.color_mgmt_changed ||
71307128
new_crtc_state->update_pipe))
@@ -7501,28 +7499,8 @@ static void intel_atomic_commit_tail(struct intel_atomic_state *state)
75017499
drm_atomic_helper_wait_for_dependencies(&state->base);
75027500
drm_dp_mst_atomic_wait_for_dependencies(&state->base);
75037501

7504-
/*
7505-
* During full modesets we write a lot of registers, wait
7506-
* for PLLs, etc. Doing that while DC states are enabled
7507-
* is not a good idea.
7508-
*
7509-
* During fastsets and other updates we also need to
7510-
* disable DC states due to the following scenario:
7511-
* 1. DC5 exit and PSR exit happen
7512-
* 2. Some or all _noarm() registers are written
7513-
* 3. Due to some long delay PSR is re-entered
7514-
* 4. DC5 entry -> DMC saves the already written new
7515-
* _noarm() registers and the old not yet written
7516-
* _arm() registers
7517-
* 5. DC5 exit -> DMC restores a mixture of old and
7518-
* new register values and arms the update
7519-
* 6. PSR exit -> hardware latches a mixture of old and
7520-
* new register values -> corrupted frame, or worse
7521-
* 7. New _arm() registers are finally written
7522-
* 8. Hardware finally latches a complete set of new
7523-
* register values, and subsequent frames will be OK again
7524-
*/
7525-
wakeref = intel_display_power_get(dev_priv, POWER_DOMAIN_DC_OFF);
7502+
if (state->modeset)
7503+
wakeref = intel_display_power_get(dev_priv, POWER_DOMAIN_MODESET);
75267504

75277505
intel_atomic_prepare_plane_clear_colors(state);
75287506

@@ -7661,8 +7639,8 @@ static void intel_atomic_commit_tail(struct intel_atomic_state *state)
76617639
* the culprit.
76627640
*/
76637641
intel_uncore_arm_unclaimed_mmio_detection(&dev_priv->uncore);
7642+
intel_display_power_put(dev_priv, POWER_DOMAIN_MODESET, wakeref);
76647643
}
7665-
intel_display_power_put(dev_priv, POWER_DOMAIN_DC_OFF, wakeref);
76667644
intel_runtime_pm_put(&dev_priv->runtime_pm, state->wakeref);
76677645

76687646
/*

0 commit comments

Comments
 (0)