public inbox for intel-gfx@lists.freedesktop.org
 help / color / mirror / Atom feed
From: "Ville Syrjälä" <ville.syrjala@linux.intel.com>
To: "Lisovskiy, Stanislav" <stanislav.lisovskiy@intel.com>
Cc: jani.nikula@intel.com, intel-gfx@lists.freedesktop.org
Subject: Re: [Intel-gfx] [PATCH] drm/i915: Fix the disabling sequence for Bigjoiner
Date: Thu, 6 Jul 2023 21:02:29 +0300	[thread overview]
Message-ID: <ZKcBtYnyHAvSP5xM@intel.com> (raw)
In-Reply-To: <ZKaYMXeALQnEvYie@intel.com>

On Thu, Jul 06, 2023 at 01:32:17PM +0300, Lisovskiy, Stanislav wrote:
> On Thu, Jul 06, 2023 at 11:47:26AM +0300, Imre Deak wrote:
> > On Thu, Jul 06, 2023 at 11:24:21AM +0300, Lisovskiy, Stanislav wrote:
> > > On Wed, Jul 05, 2023 at 06:32:51PM +0300, Imre Deak wrote:
> > > > On Thu, May 25, 2023 at 01:10:36PM +0300, Stanislav Lisovskiy wrote:
> > > > > According to BSpec 49190, when enabling crtcs, we first setup
> > > > > slave and then master crtc, however for disabling it should go
> > > > > vice versa, i.e first master, then slave, however current code
> > > > > does disabling in a same way as enabling. Fix this, by skipping
> > > > > non-master crtcs, instead of non-slaves.
> > > > > 
> > > > > Signed-off-by: Stanislav Lisovskiy <stanislav.lisovskiy@intel.com>
> > > > > ---
> > > > >  drivers/gpu/drm/i915/display/intel_display.c | 2 +-
> > > > >  1 file changed, 1 insertion(+), 1 deletion(-)
> > > > > 
> > > > > diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c
> > > > > index 0490c6412ab5..68958ba0ef49 100644
> > > > > --- a/drivers/gpu/drm/i915/display/intel_display.c
> > > > > +++ b/drivers/gpu/drm/i915/display/intel_display.c
> > > > > @@ -6662,7 +6662,7 @@ static void intel_commit_modeset_disables(struct intel_atomic_state *state)
> > > > >  		 */
> > > > >  		if (!is_trans_port_sync_slave(old_crtc_state) &&
> > > > >  		    !intel_dp_mst_is_slave_trans(old_crtc_state) &&
> > > > > -		    !intel_crtc_is_bigjoiner_slave(old_crtc_state))
> > > > > +		    !intel_crtc_is_bigjoiner_master(old_crtc_state))
> > > > 
> > > > I don't see what does this fix. The sequence is correct at the moment
> > > > and this change would break it, leaving the encoder PLL enabled
> > > > incorrectly when the encoder->post_pll_disable() hook is called. Hence
> > > > it's NAK from side.
> > > 
> > > Well, as I pointed out the BSpec 49190 instructs us to disable master
> > > first, then slave. Current code skips all non-slaves in first cycle,
> > > i.e it disables first slaves and then masters. Which is _wrong_.
> > 
> > This is correct at the moment, followed in the encoder's disable hook
> > which is only assigned to the master CRTC.
> 
> Yep, I see now why it was implemented this way.
> We basically handle everything in a single hook, taking care of the correct
> sequence. As I understood otherwise we are going to have problems with the pll
> subsystem, i.e we can't disable pll for master before the slaves(basically means
> our pll subsystem contradicts what the crtc/pipe/encoder sequence requires).
> 
> I still think this is bery counterintuitive implementation, i.e when there is a single
> hook for master taking care of everything, while slaves are just noop. 
> This makes the whole thing very prone for screwing things up.
> Ideally we should still have fully functional hooks for all slaves. 
> If the pll stuff requires special treatment, that probably should be dealt somehow
> separately(don't have any solution for that yet), but definitely we shouldn't live
> further like that. Things might get even more complicated in future.

IMO what we should aim for is to call the high level crtc hooks only for
the master crtc (ie. essentially the transcoder), and then iterate through
the pipes inside the hooks at the approptiate points. To do that
cleanly we want to split the code along the pipe-transcoder boundary
as much as possible.

-- 
Ville Syrjälä
Intel

  reply	other threads:[~2023-07-06 18:03 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-05-25 10:10 [Intel-gfx] [PATCH] drm/i915: Fix the disabling sequence for Bigjoiner Stanislav Lisovskiy
2023-05-25 19:08 ` [Intel-gfx] ✓ Fi.CI.BAT: success for " Patchwork
2023-05-26  4:15 ` [Intel-gfx] ✓ Fi.CI.IGT: " Patchwork
2023-07-05 13:26 ` [Intel-gfx] [PATCH] " Luca Coelho
2023-07-05 15:32 ` Imre Deak
2023-07-06  8:24   ` Lisovskiy, Stanislav
2023-07-06  8:47     ` Imre Deak
2023-07-06  8:50       ` Lisovskiy, Stanislav
2023-07-06 10:32       ` Lisovskiy, Stanislav
2023-07-06 18:02         ` Ville Syrjälä [this message]
2023-07-07  9:53           ` Lisovskiy, Stanislav
2023-07-06  8:33   ` Lisovskiy, Stanislav

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=ZKcBtYnyHAvSP5xM@intel.com \
    --to=ville.syrjala@linux.intel.com \
    --cc=intel-gfx@lists.freedesktop.org \
    --cc=jani.nikula@intel.com \
    --cc=stanislav.lisovskiy@intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox