On Tue, May 30, 2023 at 01:49:07PM +0000, Rudi Heitbaum wrote: Hi Rudi, Could you open a ticket at https://gitlab.freedesktop.org/drm/intel/-/issues/new attaching a dmesg log after booting with drm.debug=0xe, with the messages from boot-up until the issue happens? Thanks, Imre > Hi Imre/Dave, > > Ref: [v4,01/14] drm/i915: Fix PIPEDMC disabling for a bigjoiner configuration > [git pull] drm fixes for 6.4-rc4 > drm-fixes-2023-05-26: > drm fixes for 6.4-rc4 > > This patch has caused a regression between 6.4-rc3 and 6.4-rc4. Other > tested kernels include 6.3.4 work fine. Dropping the patch allows the decode > playback of media via Kodi. Without dropping the patch - the media > starts and stutters then ceases to play. > > There is an additional issue that 6.4-rc4 audio playback is also failing > (where 6.4-rc3 was fine), I have not yet tracked this down. > > This is all on: > DMI: Intel(R) Client Systems NUC12WSKi7/NUC12WSBi7, BIOS WSADL357.0087.2023.0306.1931 03/06/2023 > 12th Gen Intel(R) Core(TM) i7-1260P (family: 0x6, model: 0x9a, stepping: 0x3) > microcode: updated early: 0x429 -> 0x42a, date = 2023-02-14 > > Regards > > Rudi > > On Wed, May 10, 2023 at 01:31:18PM +0300, Imre Deak wrote: > > 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> > > --- > > drivers/gpu/drm/i915/display/intel_display.c | 12 ++++++++++-- > > 1 file changed, 10 insertions(+), 2 deletions(-) > > > > diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c > > index 1d5d42a408035..116fa52290b84 100644 > > --- a/drivers/gpu/drm/i915/display/intel_display.c > > +++ b/drivers/gpu/drm/i915/display/intel_display.c > > @@ -1702,9 +1702,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)