From: "Ville Syrjälä" <ville.syrjala@linux.intel.com>
To: "Kulkarni, Vandita" <vandita.kulkarni@intel.com>
Cc: "intel-gfx@lists.freedesktop.org" <intel-gfx@lists.freedesktop.org>
Subject: Re: [PATCH v2 01/17] drm/i915: Update pipes in reverse order for bigjoiner
Date: Fri, 5 Apr 2024 22:45:29 +0300 [thread overview]
Message-ID: <ZhBU2aPQSelporZX@intel.com> (raw)
In-Reply-To: <SJ0PR11MB678987E66265BC27DDB3D0EB8D032@SJ0PR11MB6789.namprd11.prod.outlook.com>
On Fri, Apr 05, 2024 at 01:42:49PM +0000, Kulkarni, Vandita wrote:
> > -----Original Message-----
> > From: Intel-gfx <intel-gfx-bounces@lists.freedesktop.org> On Behalf Of Ville
> > Syrjala
> > Sent: Friday, April 5, 2024 3:04 AM
> > To: intel-gfx@lists.freedesktop.org
> > Subject: [PATCH v2 01/17] drm/i915: Update pipes in reverse order for
> > bigjoiner
> >
> > From: Ville Syrjälä <ville.syrjala@linux.intel.com>
> >
> > With bigjoiner the master crtc is the one that will send out the uapi
> > event/etc. We want that to happen after all the slaves are done, so let's try
> > to do the commits in reverse order so that the master comes last.
> >
> > Even worse, the modeset helper will simply complete the commit on the
> > slave pipe immediately as it consider the crtc to be inactive (it can't see our
> > crtc_state->hw.active/etc.).
> >
> > With regular sync updates this generally doesn't matter all that much as the
> > slave pipe should typically finish its work during the same frame as the
> > master pipe. However in case the slave pipe's commit slips into the next
> > frame we end up in a bit of trouble. This is most visible with either async flips
> > (currently disabled with bigjoiner exactly for this reason), and DSB gamma
> > updates. With DSB the problem happens because the DSB itself will wait until
> > the next start vblank before starting to execute. So if the master pipe already
> > finished its commit and the DSB on the slave pipe is still waiting for the next
> > vblank we will assume the DSB as gotten stuck and terminate it.
> >
> > Reversing the commit order should ameliarate this for the most part as the
> > master pipe is guaranteed to start its commit after the slave pipe started. The
> > one thing that can still screw us over is the fact that we aren't necessarily
> > going to commit the pipes in the reverse order as the actual order is dictated
> > by the DDB overlap avoidance.
> > But that can only happen while other pipes are being enabled/disabled, and
> > so in the normal steady state we should be safe.
> >
> > The full fix will involve making the commit machinery aware of the slave
> > pipes and not finish their commits prematurely. But that will involve a bit
> > more work than this. And this commit order reversal will still be beneficial to
> > avoid userspace getting an -EBUSY from the following page flip if the second
> > pipe's commit does stretch into the next frame.
> >
>
> LGTM.
> Reviewed-by: Vandita Kulkarni <vandita.kulkarni@intel.com>
>
> I had just one query though,
> Will there be a case where we can get vblank between slave update and master update,
> if so do you think there will be any problem due to that?
It can happen, in which case you may observe a vertical tear.
Since we've disabled all the fancy transcoder level stuff
(vrr/lrr/etc.) that should be the worst of it.
--
Ville Syrjälä
Intel
next prev parent reply other threads:[~2024-04-05 19:45 UTC|newest]
Thread overview: 35+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-04-04 21:34 [PATCH v2 00/17] drm/i915: Bigjoiner modeset sequence redesign and MST support Ville Syrjala
2024-04-04 21:34 ` [PATCH v2 01/17] drm/i915: Update pipes in reverse order for bigjoiner Ville Syrjala
2024-04-05 12:56 ` Murthy, Arun R
2024-04-08 12:46 ` Ville Syrjälä
2024-04-05 13:42 ` Kulkarni, Vandita
2024-04-05 19:45 ` Ville Syrjälä [this message]
2024-04-04 21:34 ` [PATCH v2 02/17] drm/i915/psr: Disable PSR when bigjoiner is used Ville Syrjala
2024-04-05 6:58 ` Hogander, Jouni
2024-04-05 12:58 ` Murthy, Arun R
2024-04-05 13:00 ` Murthy, Arun R
2024-04-05 15:45 ` Murthy, Arun R
2024-04-05 19:34 ` Ville Syrjälä
2024-04-08 5:09 ` Hogander, Jouni
2024-04-04 21:34 ` [PATCH v2 03/17] drm/i915: Disable port sync " Ville Syrjala
2024-04-04 21:34 ` [PATCH v2 04/17] drm/i915: Disable live M/N updates when using bigjoiner Ville Syrjala
2024-04-04 21:34 ` [PATCH v2 05/17] drm/i915/vrr: Disable VRR " Ville Syrjala
2024-04-04 21:34 ` [PATCH v2 06/17] drm/i915: Fix intel_modeset_pipe_config_late() for bigjoiner Ville Syrjala
2024-04-04 21:34 ` [PATCH v2 07/17] drm/i915: s/intel_dp_can_bigjoiner()/intel_dp_has_bigjoiner()/ Ville Syrjala
2024-04-04 21:34 ` [PATCH v2 08/17] drm/i915: Extract intel_dp_joiner_needs_dsc() Ville Syrjala
2024-04-04 21:34 ` [PATCH v2 09/17] drm/i915/mst: Check intel_dp_joiner_needs_dsc() Ville Syrjala
2024-04-04 21:34 ` [PATCH v2 10/17] drm/i915: Pass connector to intel_dp_need_bigjoiner() Ville Syrjala
2024-04-04 21:34 ` [PATCH v2 11/17] drm/i915: Introduce intel_crtc_joined_pipe_mask() Ville Syrjala
2024-04-04 21:34 ` [PATCH v2 12/17] drm/i915: Extract intel_ddi_post_disable_hdmi_or_sst() Ville Syrjala
2024-04-04 21:34 ` [PATCH v2 13/17] drm/i915: Utilize intel_crtc_joined_pipe_mask() more Ville Syrjala
2024-04-04 21:34 ` [PATCH v2 14/17] drm/i915: Handle joined pipes inside hsw_crtc_disable() Ville Syrjala
2024-04-04 21:34 ` [PATCH v2 15/17] drm/i915: Handle joined pipes inside hsw_crtc_enable() Ville Syrjala
2024-04-04 21:34 ` [PATCH v2 16/17] drm/i915/mst: Add bigjoiner handling to MST modeset sequence Ville Syrjala
2024-04-04 21:34 ` [PATCH v2 17/17] drm/i915: Allow bigjoiner for MST Ville Syrjala
2024-04-04 22:16 ` ✗ Fi.CI.CHECKPATCH: warning for drm/i915: Bigjoiner modeset sequence redesign and MST support (rev2) Patchwork
2024-04-04 22:16 ` ✗ Fi.CI.SPARSE: " Patchwork
2024-04-04 22:25 ` ✗ Fi.CI.BAT: failure " Patchwork
2024-04-05 1:46 ` ✗ Fi.CI.CHECKPATCH: warning for drm/i915: Bigjoiner modeset sequence redesign and MST support (rev3) Patchwork
2024-04-05 1:46 ` ✗ Fi.CI.SPARSE: " Patchwork
2024-04-05 1:51 ` ✓ Fi.CI.BAT: success " Patchwork
2024-04-05 14:25 ` ✗ Fi.CI.IGT: failure " Patchwork
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=ZhBU2aPQSelporZX@intel.com \
--to=ville.syrjala@linux.intel.com \
--cc=intel-gfx@lists.freedesktop.org \
--cc=vandita.kulkarni@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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.