This is fix for a regression introduced by 27321ae88c70104df "drm/i915: Use the disable callback for disabling planes." Disabling invisible planes may cause recalculation of watermarks, which is a problem because the software state is not yet in sync with the hardware state. This may result in a black screen during kernel boot and plymouth splash until any input action is performed in X. Explicitly checking for plane visibility fixes the regression. This is a patch for v4.2 only, v4.3 needs a different fix because it was fixed by d032ffa04cf7c6f "drm/i915: Handle disabling planes better, v2." but later broken again in 4cf0ebbd4fafbdf "drm/i915: Rework plane readout." This will be fixed in v4.3 by: "drm/i915: Add .get_hw_state() method for planes" Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=91952 Cc: João Paulo Rechi Vita <jprvita@xxxxxxxxxxxx> Cc: stable@xxxxxxxxxxxxxxx # v4.2 only --- drivers/gpu/drm/i915/intel_display.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c index 87476ff181dd..a5f97cfd86d8 100644 --- a/drivers/gpu/drm/i915/intel_display.c +++ b/drivers/gpu/drm/i915/intel_display.c @@ -4863,7 +4863,8 @@ static void intel_crtc_disable_planes(struct drm_crtc *crtc) intel_crtc_dpms_overlay_disable(intel_crtc); for_each_intel_plane(dev, intel_plane) { - if (intel_plane->pipe == pipe) { + if (intel_plane->pipe == pipe && + to_intel_plane_state(intel_plane->base.state)->visible) { struct drm_crtc *from = intel_plane->base.crtc; intel_plane->disable_plane(&intel_plane->base, -- 2.1.0 _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/intel-gfx