From: Jani Nikula <jani.nikula@linux.intel.com>
To: Vinod Govindapillai <vinod.govindapillai@intel.com>,
intel-gfx@lists.freedesktop.org, intel-xe@lists.freedesktop.org
Cc: vinod.govindapillai@intel.com, uma.shankar@intel.com,
jani.saarinen@intel.com
Subject: Re: [PATCH v2] drm/i915/display: implement wa_18038517565
Date: Tue, 11 Feb 2025 17:50:59 +0200 [thread overview]
Message-ID: <878qqc1nvg.fsf@intel.com> (raw)
In-Reply-To: <20250211152400.460496-1-vinod.govindapillai@intel.com>
On Tue, 11 Feb 2025, Vinod Govindapillai <vinod.govindapillai@intel.com> wrote:
> Disable FBC compressor clock gating before enabling FBC and
> clear it after disabling FBC.
>
> v2: update the DG2 registers for this wa
>
> Bspec: 74212, 72197, 69741, 65555
> Signed-off-by: Vinod Govindapillai <vinod.govindapillai@intel.com>
> ---
> drivers/gpu/drm/i915/display/intel_fbc.c | 23 +++++++++++++++++++++++
> drivers/gpu/drm/i915/i915_reg.h | 7 +++++++
> 2 files changed, 30 insertions(+)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_fbc.c b/drivers/gpu/drm/i915/display/intel_fbc.c
> index df05904bac8a..ac11110159f1 100644
> --- a/drivers/gpu/drm/i915/display/intel_fbc.c
> +++ b/drivers/gpu/drm/i915/display/intel_fbc.c
> @@ -522,6 +522,21 @@ static void ilk_fbc_activate(struct intel_fbc *fbc)
> DPFC_CTL_EN | g4x_dpfc_ctl(fbc));
> }
>
> +static void fbc_compressor_clkgate_disable_wa(struct intel_fbc *fbc,
> + bool disable)
> +{
> + struct intel_display *display = fbc->display;
> +
> + if (display->platform.dg2)
> + intel_de_rmw(fbc->display, GEN9_CLKGATE_DIS_4,
You already have display local variable, use it.
> + DG2_DPFC_GATING_DIS,
> + disable ? DG2_DPFC_GATING_DIS : 0);
> + else if (DISPLAY_VER(display) >= 14)
> + intel_de_rmw(fbc->display, MTL_PIPE_CLKGATE_DIS2(fbc->id),
Ditto.
> + MTL_DPFC_GATING_DIS,
> + disable ? MTL_DPFC_GATING_DIS : 0);
> +}
> +
> static void ilk_fbc_deactivate(struct intel_fbc *fbc)
> {
> struct intel_display *display = fbc->display;
> @@ -532,6 +547,10 @@ static void ilk_fbc_deactivate(struct intel_fbc *fbc)
> if (dpfc_ctl & DPFC_CTL_EN) {
> dpfc_ctl &= ~DPFC_CTL_EN;
> intel_de_write(display, ILK_DPFC_CONTROL(fbc->id), dpfc_ctl);
> +
> + /* wa_18038517565 Enable DPFC clock gating after FBC disable */
> + if (display->platform.dg2 || DISPLAY_VER(display) >= 14)
> + fbc_compressor_clkgate_disable_wa(fbc, false);
> }
> }
>
> @@ -912,6 +931,10 @@ static void intel_fbc_program_workarounds(struct intel_fbc *fbc)
> if (DISPLAY_VER(display) >= 11 && !IS_DG2(i915))
> intel_de_rmw(display, ILK_DPFC_CHICKEN(fbc->id),
> 0, DPFC_CHICKEN_FORCE_SLB_INVALIDATION);
> +
> + /* wa_18038517565 Disable DPFC clock gating before FBC enable */
> + if (display->platform.dg2 || DISPLAY_VER(display) >= 14)
> + fbc_compressor_clkgate_disable_wa(fbc, true);
> }
>
> static void __intel_fbc_cleanup_cfb(struct intel_fbc *fbc)
> diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h
> index 670cd2371f94..6a95bf472258 100644
> --- a/drivers/gpu/drm/i915/i915_reg.h
> +++ b/drivers/gpu/drm/i915/i915_reg.h
> @@ -1043,6 +1043,7 @@
>
> #define GEN9_CLKGATE_DIS_4 _MMIO(0x4653C)
> #define BXT_GMBUS_GATING_DIS (1 << 14)
> +#define DG2_DPFC_GATING_DIS REG_BIT(31)
>
> #define GEN9_CLKGATE_DIS_5 _MMIO(0x46540)
> #define DPCE_GATING_DIS REG_BIT(17)
> @@ -4273,6 +4274,12 @@ enum skl_power_gate {
> #define MTL_CLKGATE_DIS_TRANS(dev_priv, trans) _MMIO_TRANS2(dev_priv, trans, _MTL_CLKGATE_DIS_TRANS_A)
> #define MTL_CLKGATE_DIS_TRANS_DMASC_GATING_DIS REG_BIT(7)
>
> +#define _MTL_PIPE_CLKGATE_DIS2_A 0x60114
> +#define _MTL_PIPE_CLKGATE_DIS2_B 0x61114
> +#define MTL_PIPE_CLKGATE_DIS2(pipe) \
> + _MMIO_PIPE(pipe, _MTL_PIPE_CLKGATE_DIS2_A, _MTL_PIPE_CLKGATE_DIS2_B)
In the register definitions, please err towards longer lines.
> +#define MTL_DPFC_GATING_DIS REG_BIT(6)
> +
> #define MTL_MEM_SS_INFO_GLOBAL _MMIO(0x45700)
> #define MTL_N_OF_ENABLED_QGV_POINTS_MASK REG_GENMASK(11, 8)
> #define MTL_N_OF_POPULATED_CH_MASK REG_GENMASK(7, 4)
--
Jani Nikula, Intel
next prev parent reply other threads:[~2025-02-11 15:51 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-02-11 15:24 [PATCH v2] drm/i915/display: implement wa_18038517565 Vinod Govindapillai
2025-02-11 15:29 ` ✓ CI.Patch_applied: success for drm/i915/display: implement wa_18038517565 (rev2) Patchwork
2025-02-11 15:29 ` ✓ CI.checkpatch: " Patchwork
2025-02-11 15:31 ` ✓ CI.KUnit: " Patchwork
2025-02-11 15:47 ` ✓ CI.Build: " Patchwork
2025-02-11 15:49 ` ✗ CI.Hooks: failure " Patchwork
2025-02-11 15:50 ` ✗ CI.checksparse: warning " Patchwork
2025-02-11 15:50 ` Jani Nikula [this message]
2025-02-11 15:53 ` ✗ Fi.CI.SPARSE: " Patchwork
2025-02-11 16:09 ` ✓ Xe.CI.BAT: success " Patchwork
2025-02-11 17:34 ` ✓ i915.CI.BAT: " Patchwork
2025-02-11 20:18 ` ✗ i915.CI.Full: failure " Patchwork
2025-02-11 23:55 ` ✗ 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=878qqc1nvg.fsf@intel.com \
--to=jani.nikula@linux.intel.com \
--cc=intel-gfx@lists.freedesktop.org \
--cc=intel-xe@lists.freedesktop.org \
--cc=jani.saarinen@intel.com \
--cc=uma.shankar@intel.com \
--cc=vinod.govindapillai@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.