From: "Govindapillai, Vinod" <vinod.govindapillai@intel.com>
To: "ville.syrjala@linux.intel.com" <ville.syrjala@linux.intel.com>,
"intel-gfx@lists.freedesktop.org"
<intel-gfx@lists.freedesktop.org>
Cc: "intel-xe@lists.freedesktop.org" <intel-xe@lists.freedesktop.org>
Subject: Re: [PATCH 9/9] drm/i915/wm: Allow SAGV with multiple pipes on pre-icl
Date: Wed, 8 Apr 2026 12:10:33 +0000 [thread overview]
Message-ID: <bc2ec020b57fc3a68dc00862aabdab6458901914.camel@intel.com> (raw)
In-Reply-To: <20260324134843.2364-10-ville.syrjala@linux.intel.com>
On Tue, 2026-03-24 at 15:48 +0200, Ville Syrjala wrote:
> From: Ville Syrjälä <ville.syrjala@linux.intel.com>
>
> There was never any documented reason for limiting SAGV to
> single active pipe configuration on pre-icl. Allow SAGV
> with multiple active pipes.
>
> At least my CFL NUC seems happy with this when using
> multiple displays. The machine actually has working
> SAGV because the memory clock can be observed changing
> via SA_PERF_STATUS/mchbar:0x5918.
>
> Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
> ---
> drivers/gpu/drm/i915/display/intel_bw.c | 40 -----------------------
> --
> 1 file changed, 40 deletions(-)
>
Reviewed-by: Vinod Govindapillai <vinod.govindapillai@intel.com>
> diff --git a/drivers/gpu/drm/i915/display/intel_bw.c
> b/drivers/gpu/drm/i915/display/intel_bw.c
> index 07b4531a4376..bf7683ddcb67 100644
> --- a/drivers/gpu/drm/i915/display/intel_bw.c
> +++ b/drivers/gpu/drm/i915/display/intel_bw.c
> @@ -28,9 +28,6 @@ struct intel_bw_state {
> */
> u8 pipe_sagv_reject;
>
> - /* bitmask of active pipes */
> - u8 active_pipes;
> -
> /*
> * From MTL onwards, to lock a QGV point, punit expects the
> peak BW of
> * the selected QGV point as the parameter in multiples of
> 100MB/s
> @@ -1265,31 +1262,6 @@ static int intel_bw_check_data_rate(struct
> intel_atomic_state *state, bool *chan
> return 0;
> }
>
> -static int intel_bw_modeset_checks(struct intel_atomic_state *state)
> -{
> - const struct intel_bw_state *old_bw_state;
> - struct intel_bw_state *new_bw_state;
> - int ret;
> -
> - if (!intel_any_crtc_active_changed(state))
> - return 0;
> -
> - new_bw_state = intel_atomic_get_bw_state(state);
> - if (IS_ERR(new_bw_state))
> - return PTR_ERR(new_bw_state);
> -
> - old_bw_state = intel_atomic_get_old_bw_state(state);
> -
> - new_bw_state->active_pipes =
> - intel_calc_active_pipes(state, old_bw_state-
> >active_pipes);
> -
> - ret = intel_atomic_lock_global_state(&new_bw_state->base);
> - if (ret)
> - return ret;
> -
> - return 0;
> -}
> -
> static int intel_bw_check_sagv_mask(struct intel_atomic_state
> *state)
> {
> struct intel_display *display = to_intel_display(state);
> @@ -1346,10 +1318,6 @@ int intel_bw_atomic_check(struct
> intel_atomic_state *state)
> if (DISPLAY_VER(display) < 9)
> return 0;
>
> - ret = intel_bw_modeset_checks(state);
> - if (ret)
> - return ret;
> -
> ret = intel_bw_check_sagv_mask(state);
> if (ret)
> return ret;
> @@ -1410,7 +1378,6 @@ void intel_bw_update_hw_state(struct
> intel_display *display)
> if (DISPLAY_VER(display) < 9)
> return;
>
> - bw_state->active_pipes = 0;
> bw_state->pipe_sagv_reject = 0;
>
> for_each_intel_crtc(display->drm, crtc) {
> @@ -1418,9 +1385,6 @@ void intel_bw_update_hw_state(struct
> intel_display *display)
> to_intel_crtc_state(crtc->base.state);
> enum pipe pipe = crtc->pipe;
>
> - if (crtc_state->hw.active)
> - bw_state->active_pipes |= BIT(pipe);
> -
> if (DISPLAY_VER(display) >= 11)
> intel_bw_crtc_update(bw_state, crtc_state);
>
> @@ -1504,10 +1468,6 @@ bool intel_bw_pmdemand_needs_update(struct
> intel_atomic_state *state)
> bool intel_bw_can_enable_sagv(struct intel_display *display,
> const struct intel_bw_state *bw_state)
> {
> - if (DISPLAY_VER(display) < 11 &&
> - bw_state->active_pipes && !is_power_of_2(bw_state-
> >active_pipes))
> - return false;
> -
> return bw_state->pipe_sagv_reject == 0;
> }
>
next prev parent reply other threads:[~2026-04-08 12:10 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-03-24 13:48 [PATCH 0/9] drm/i915/wm: Watermark/SAGV fixes/cleanups/etc Ville Syrjala
2026-03-24 13:48 ` [PATCH 1/9] drm/i915/wm: Reject SAGV consistently when block_time_us==0 Ville Syrjala
2026-04-08 9:56 ` Govindapillai, Vinod
2026-03-24 13:48 ` [PATCH 2/9] drm/i915/wm: Don't compute separate SAGV watermarks for RKL Ville Syrjala
2026-04-08 11:48 ` Govindapillai, Vinod
2026-03-24 13:48 ` [PATCH 3/9] drm/i915/wm: Consolidate SAGV pipe active/interlace checks to common code Ville Syrjala
2026-04-08 11:49 ` Govindapillai, Vinod
2026-03-24 13:48 ` [PATCH 4/9] drm/i915/wm: Verify the correct plane DDB entry Ville Syrjala
2026-04-08 11:53 ` Govindapillai, Vinod
2026-03-24 13:48 ` [PATCH 5/9] drm/i915/wm: Extract skl_wm_level_verify() Ville Syrjala
2026-04-08 11:55 ` Govindapillai, Vinod
2026-03-24 13:48 ` [PATCH 6/9] drm/i915/wm: Extract skl_ddb_entry_verify() Ville Syrjala
2026-04-08 11:57 ` Govindapillai, Vinod
2026-03-24 13:48 ` [PATCH 7/9] drm/i915/wm: Verify 'ddb_y' as well as 'ddb' Ville Syrjala
2026-04-08 11:59 ` Govindapillai, Vinod
2026-03-24 13:48 ` [PATCH 8/9] drm/i915/wm: Reduce copy-pasta in skl_print_plane_wm_changes() Ville Syrjala
2026-04-08 12:04 ` Govindapillai, Vinod
2026-03-24 13:48 ` [PATCH 9/9] drm/i915/wm: Allow SAGV with multiple pipes on pre-icl Ville Syrjala
2026-04-08 12:10 ` Govindapillai, Vinod [this message]
2026-03-24 13:58 ` ✗ CI.checkpatch: warning for drm/i915/wm: Watermark/SAGV fixes/cleanups/etc Patchwork
2026-03-24 14:00 ` ✓ CI.KUnit: success " Patchwork
2026-03-24 14:40 ` ✓ Xe.CI.BAT: " Patchwork
2026-03-24 16:38 ` ✓ i915.CI.BAT: " Patchwork
2026-03-25 1:32 ` ✓ i915.CI.Full: " Patchwork
2026-03-25 2:08 ` ✓ Xe.CI.FULL: " 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=bc2ec020b57fc3a68dc00862aabdab6458901914.camel@intel.com \
--to=vinod.govindapillai@intel.com \
--cc=intel-gfx@lists.freedesktop.org \
--cc=intel-xe@lists.freedesktop.org \
--cc=ville.syrjala@linux.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.