Patch "drm/i915: Fix PIPEDMC disabling for a bigjoiner configuration" has been added to the 6.3-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    drm/i915: Fix PIPEDMC disabling for a bigjoiner configuration

to the 6.3-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     drm-i915-fix-pipedmc-disabling-for-a-bigjoiner-confi.patch
and it can be found in the queue-6.3 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit 7caa7b678703376811823b322f92e62222339349
Author: Imre Deak <imre.deak@xxxxxxxxx>
Date:   Wed May 10 13:31:18 2023 +0300

    drm/i915: Fix PIPEDMC disabling for a bigjoiner configuration
    
    [ Upstream commit 45dfbd992923f4df174db4e23b96fca7e30d73e2 ]
    
    For a bigjoiner configuration display->crtc_disable() will be called
    first for the slave CRTCs and then for the master CRTC. However slave
    CRTCs will be actually disabled only after the master CRTC is disabled
    (from the encoder disable hooks called with the master CRTC state).
    Hence the slave PIPEDMCs can be disabled only after the master CRTC is
    disabled, make this so.
    
    intel_encoders_post_pll_disable() must be called only for the master
    CRTC, as for the other two encoder disable hooks. While at it fix this
    up as well. This didn't cause a problem, since
    intel_encoders_post_pll_disable() will call the corresponding hook only
    for an encoder/connector connected to the given CRTC, however slave
    CRTCs will have no associated encoder/connector.
    
    Fixes: 3af2ff0840be ("drm/i915: Enable a PIPEDMC whenever its corresponding pipe is enabled")
    Cc: Rodrigo Vivi <rodrigo.vivi@xxxxxxxxx>
    Cc: Ville Syrjälä <ville.syrjala@xxxxxxxxxxxxxxx>
    Reviewed-by: Ville Syrjälä <ville.syrjala@xxxxxxxxxxxxxxx>
    Signed-off-by: Imre Deak <imre.deak@xxxxxxxxx>
    Link: https://patchwork.freedesktop.org/patch/msgid/20230510103131.1618266-2-imre.deak@xxxxxxxxx
    (cherry picked from commit 7eeef32719f6af935a1554813e6bc206446339cd)
    Signed-off-by: Joonas Lahtinen <joonas.lahtinen@xxxxxxxxxxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c
index 963680ea6fedd..c84b581c61c6b 100644
--- a/drivers/gpu/drm/i915/display/intel_display.c
+++ b/drivers/gpu/drm/i915/display/intel_display.c
@@ -2022,9 +2022,17 @@ static void hsw_crtc_disable(struct intel_atomic_state *state,
 
 	intel_disable_shared_dpll(old_crtc_state);
 
-	intel_encoders_post_pll_disable(state, crtc);
+	if (!intel_crtc_is_bigjoiner_slave(old_crtc_state)) {
+		struct intel_crtc *slave_crtc;
+
+		intel_encoders_post_pll_disable(state, crtc);
 
-	intel_dmc_disable_pipe(i915, crtc->pipe);
+		intel_dmc_disable_pipe(i915, crtc->pipe);
+
+		for_each_intel_crtc_in_pipe_mask(&i915->drm, slave_crtc,
+						 intel_crtc_bigjoiner_slave_pipes(old_crtc_state))
+			intel_dmc_disable_pipe(i915, slave_crtc->pipe);
+	}
 }
 
 static void i9xx_pfit_enable(const struct intel_crtc_state *crtc_state)



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux