Intel-GFX Archive on lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 2/2] drm/i915/psr: Implment WA to help reach PC10
  2024-06-06  8:29 [PATCH 0/2] Implement WA to fix increased power usage Suraj Kandpal
@ 2024-06-06  8:29 ` Suraj Kandpal
  2024-06-06 11:09   ` Jani Nikula
                     ` (3 more replies)
  0 siblings, 4 replies; 24+ messages in thread
From: Suraj Kandpal @ 2024-06-06  8:29 UTC (permalink / raw)
  To: intel-gfx; +Cc: animesh.manna, arun.r.murthy, jouni.hogander, Suraj Kandpal

To reach PC10 when PKG_C_LATENCY is configure we must do the following
things
1) Enter PSR1 only when delayed_vblank < 6 lines and DC5 can be entered
2) Allow PSR2 deep sleep when DC5 can be entered
3) DC5 can be entered when all transocoder have either PSR1, PSR2 or
eDP 1.5 PR ALPM enabled and VBI is disabled and flips and pushes are
not happening.

WA: 16023497226
Signed-off-by: Suraj Kandpal <suraj.kandpal@intel.com>
---
 drivers/gpu/drm/i915/display/intel_psr.c | 75 +++++++++++++++++++++++-
 1 file changed, 73 insertions(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_psr.c b/drivers/gpu/drm/i915/display/intel_psr.c
index 6fc88f6c6b26..b22745c019df 100644
--- a/drivers/gpu/drm/i915/display/intel_psr.c
+++ b/drivers/gpu/drm/i915/display/intel_psr.c
@@ -811,12 +811,81 @@ static u8 psr_compute_idle_frames(struct intel_dp *intel_dp)
 	return idle_frames;
 }
 
+static bool intel_psr_check_delayed_vblank_limit(struct drm_i915_private *i915,
+						 enum transcoder cpu_transcoder)
+{
+	return intel_de_read(i915, TRANS_SET_CONTEXT_LATENCY(cpu_transcoder)) >= 6;
+}
+
+static bool intel_psr_is_dpkgc_configured(struct drm_i915_private *i915)
+{
+	return intel_de_read(i915, LNL_PKG_C_LATENCY) == U32_MAX;
+}
+
+static bool intel_psr_is_dc5_entry_possible(struct drm_i915_private *i915)
+{
+	struct intel_crtc *intel_crtc;
+	bool ret = true;
+
+	for_each_intel_crtc(&i915->drm, intel_crtc) {
+		struct intel_encoder *encoder;
+		struct drm_crtc *crtc = &intel_crtc->base;
+		enum pipe pipe = intel_crtc->pipe;
+
+		if (!crtc->active)
+			continue;
+
+		if (!(i915->display.irq.de_irq_mask[pipe] & GEN8_PIPE_VBLANK))
+			ret = false;
+
+		for_each_encoder_on_crtc(&i915->drm, crtc, encoder) {
+			struct intel_dp *intel_dp = enc_to_intel_dp(_encoder);
+			struct intel_psr *psr = &intel_dp->psr;
+
+			if (!psr->enabled)
+				ret = false;
+		}
+	}
+
+	return ret;
+}
+
+static bool wa_16023497226_check(struct intel_dp *intel_dp, bool psr1)
+{
+	struct drm_i915_private *i915 = dp_to_i915(intel_dp);
+	enum transcoder cpu_transcoder = intel_dp->psr.transcoder;
+
+	if (DISPLAY_VER(i915) != 20)
+		return true;
+
+	if (is_dpkg_c_configured(i915)) {
+		if (psr1 &&
+		    (intel_psr_check_delayed_vblank_limit(i915, cpu_transcoder) ||
+		     intel_psr_is_dc5_entry_possible(i915)))
+			return true;
+		else if (!psr1 && is_dc5_entry_possible(i915))
+			return true;
+		else
+			return false;
+	}
+
+	return true;
+}
+
 static bool hsw_activate_psr1(struct intel_dp *intel_dp)
 {
 	struct drm_i915_private *dev_priv = dp_to_i915(intel_dp);
 	enum transcoder cpu_transcoder = intel_dp->psr.transcoder;
 	u32 max_sleep_time = 0x1f;
-	u32 val = EDP_PSR_ENABLE;
+	u32 val = 0;
+
+	/* WA: 16023497226*/
+	if (wa_16023497226_check(intel_dp, true)) {
+		val = EDP_PSR_ENABLE;
+	} else {
+		drm_dbg_kms(&dev_priv->drm, "PSR1 was not activated\n");
+		return false;
+	}
 
 	val |= EDP_PSR_IDLE_FRAMES(psr_compute_idle_frames(intel_dp));
 
@@ -910,7 +979,9 @@ static void hsw_activate_psr2(struct intel_dp *intel_dp)
 	u32 val = EDP_PSR2_ENABLE;
 	u32 psr_val = 0;
 
-	val |= EDP_PSR2_IDLE_FRAMES(psr_compute_idle_frames(intel_dp));
+	/* WA: 16023497226*/
+	if (wa_16023497226_check(intel_dp, false))
+		val |= EDP_PSR2_IDLE_FRAMES(psr_compute_idle_frames(intel_dp));
 
 	if (DISPLAY_VER(dev_priv) < 14 && !IS_ALDERLAKE_P(dev_priv))
 		val |= EDP_SU_TRACK_ENABLE;
-- 
2.43.2


^ permalink raw reply related	[flat|nested] 24+ messages in thread

* Re: [PATCH 2/2] drm/i915/psr: Implment WA to help reach PC10
  2024-06-06  8:29 ` [PATCH 2/2] drm/i915/psr: Implment WA to help reach PC10 Suraj Kandpal
@ 2024-06-06 11:09   ` Jani Nikula
  2024-06-10  4:54     ` Kandpal, Suraj
  2024-06-06 21:48   ` kernel test robot
                     ` (2 subsequent siblings)
  3 siblings, 1 reply; 24+ messages in thread
From: Jani Nikula @ 2024-06-06 11:09 UTC (permalink / raw)
  To: Suraj Kandpal, intel-gfx
  Cc: animesh.manna, arun.r.murthy, jouni.hogander, Suraj Kandpal

On Thu, 06 Jun 2024, Suraj Kandpal <suraj.kandpal@intel.com> wrote:
> To reach PC10 when PKG_C_LATENCY is configure we must do the following
> things
> 1) Enter PSR1 only when delayed_vblank < 6 lines and DC5 can be entered
> 2) Allow PSR2 deep sleep when DC5 can be entered
> 3) DC5 can be entered when all transocoder have either PSR1, PSR2 or
> eDP 1.5 PR ALPM enabled and VBI is disabled and flips and pushes are
> not happening.
>
> WA: 16023497226
> Signed-off-by: Suraj Kandpal <suraj.kandpal@intel.com>
> ---
>  drivers/gpu/drm/i915/display/intel_psr.c | 75 +++++++++++++++++++++++-
>  1 file changed, 73 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_psr.c b/drivers/gpu/drm/i915/display/intel_psr.c
> index 6fc88f6c6b26..b22745c019df 100644
> --- a/drivers/gpu/drm/i915/display/intel_psr.c
> +++ b/drivers/gpu/drm/i915/display/intel_psr.c
> @@ -811,12 +811,81 @@ static u8 psr_compute_idle_frames(struct intel_dp *intel_dp)
>  	return idle_frames;
>  }
>  
> +static bool intel_psr_check_delayed_vblank_limit(struct drm_i915_private *i915,
> +						 enum transcoder cpu_transcoder)
> +{
> +	return intel_de_read(i915, TRANS_SET_CONTEXT_LATENCY(cpu_transcoder)) >= 6;

Please don't use the hardware to preserve the state for you. It will get
really complicated to maintain.

> +}
> +
> +static bool intel_psr_is_dpkgc_configured(struct drm_i915_private *i915)
> +{
> +	return intel_de_read(i915, LNL_PKG_C_LATENCY) == U32_MAX;

Ditto.

> +}
> +
> +static bool intel_psr_is_dc5_entry_possible(struct drm_i915_private *i915)
> +{
> +	struct intel_crtc *intel_crtc;
> +	bool ret = true;
> +
> +	for_each_intel_crtc(&i915->drm, intel_crtc) {
> +		struct intel_encoder *encoder;
> +		struct drm_crtc *crtc = &intel_crtc->base;
> +		enum pipe pipe = intel_crtc->pipe;
> +
> +		if (!crtc->active)
> +			continue;
> +
> +		if (!(i915->display.irq.de_irq_mask[pipe] & GEN8_PIPE_VBLANK))

You have no business looking directly at that. It's for display irq code
*only*.

> +			ret = false;
> +
> +		for_each_encoder_on_crtc(&i915->drm, crtc, encoder) {
> +			struct intel_dp *intel_dp = enc_to_intel_dp(_encoder);
> +			struct intel_psr *psr = &intel_dp->psr;
> +
> +			if (!psr->enabled)
> +				ret = false;
> +		}
> +	}
> +
> +	return ret;
> +}
> +
> +static bool wa_16023497226_check(struct intel_dp *intel_dp, bool psr1)
> +{
> +	struct drm_i915_private *i915 = dp_to_i915(intel_dp);
> +	enum transcoder cpu_transcoder = intel_dp->psr.transcoder;
> +
> +	if (DISPLAY_VER(i915) != 20)
> +		return true;
> +
> +	if (is_dpkg_c_configured(i915)) {
> +		if (psr1 &&
> +		    (intel_psr_check_delayed_vblank_limit(i915, cpu_transcoder) ||
> +		     intel_psr_is_dc5_entry_possible(i915)))
> +			return true;
> +		else if (!psr1 && is_dc5_entry_possible(i915))
> +			return true;
> +		else
> +			return false;
> +	}
> +
> +	return true;
> +}
> +
>  static bool hsw_activate_psr1(struct intel_dp *intel_dp)
>  {
>  	struct drm_i915_private *dev_priv = dp_to_i915(intel_dp);
>  	enum transcoder cpu_transcoder = intel_dp->psr.transcoder;
>  	u32 max_sleep_time = 0x1f;
> -	u32 val = EDP_PSR_ENABLE;
> +	u32 val = 0;
> +
> +	/* WA: 16023497226*/
> +	if (wa_16023497226_check(intel_dp, true)) {
> +		val = EDP_PSR_ENABLE;
> +	} else {
> +		drm_dbg_kms(&dev_priv->drm, "PSR1 was not activated\n");

Please add reason.

> +		return false;
> +	}

Switch the condition around and use early return.

>  
>  	val |= EDP_PSR_IDLE_FRAMES(psr_compute_idle_frames(intel_dp));
>  
> @@ -910,7 +979,9 @@ static void hsw_activate_psr2(struct intel_dp *intel_dp)
>  	u32 val = EDP_PSR2_ENABLE;
>  	u32 psr_val = 0;
>  
> -	val |= EDP_PSR2_IDLE_FRAMES(psr_compute_idle_frames(intel_dp));
> +	/* WA: 16023497226*/
> +	if (wa_16023497226_check(intel_dp, false))
> +		val |= EDP_PSR2_IDLE_FRAMES(psr_compute_idle_frames(intel_dp));
>  
>  	if (DISPLAY_VER(dev_priv) < 14 && !IS_ALDERLAKE_P(dev_priv))
>  		val |= EDP_SU_TRACK_ENABLE;

-- 
Jani Nikula, Intel

^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [PATCH 2/2] drm/i915/psr: Implment WA to help reach PC10
  2024-06-06  8:29 ` [PATCH 2/2] drm/i915/psr: Implment WA to help reach PC10 Suraj Kandpal
  2024-06-06 11:09   ` Jani Nikula
@ 2024-06-06 21:48   ` kernel test robot
  2024-06-06 22:40   ` kernel test robot
  2024-06-07  0:46   ` kernel test robot
  3 siblings, 0 replies; 24+ messages in thread
From: kernel test robot @ 2024-06-06 21:48 UTC (permalink / raw)
  To: Suraj Kandpal, intel-gfx
  Cc: oe-kbuild-all, animesh.manna, arun.r.murthy, jouni.hogander,
	Suraj Kandpal

Hi Suraj,

kernel test robot noticed the following build errors:

[auto build test ERROR on drm-intel/for-linux-next]
[also build test ERROR on drm-intel/for-linux-next-fixes drm-tip/drm-tip linus/master v6.10-rc2 next-20240606]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]

url:    https://github.com/intel-lab-lkp/linux/commits/Suraj-Kandpal/drm-i915-psr-Add-return-bool-value-for-hsw_activate_psr1/20240606-163351
base:   git://anongit.freedesktop.org/drm-intel for-linux-next
patch link:    https://lore.kernel.org/r/20240606082926.1816416-4-suraj.kandpal%40intel.com
patch subject: [PATCH 2/2] drm/i915/psr: Implment WA to help reach PC10
config: microblaze-allmodconfig (https://download.01.org/0day-ci/archive/20240607/202406070543.soJpPCOs-lkp@intel.com/config)
compiler: microblaze-linux-gcc (GCC) 13.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20240607/202406070543.soJpPCOs-lkp@intel.com/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202406070543.soJpPCOs-lkp@intel.com/

All errors (new ones prefixed by >>):

   In file included from drivers/gpu/drm/i915/display/intel_psr.c:35:
   drivers/gpu/drm/i915/display/intel_psr.c: In function 'intel_psr_check_delayed_vblank_limit':
>> drivers/gpu/drm/xe/compat-i915-headers/../../i915/i915_reg.h:4158:62: error: 'dev_priv' undeclared (first use in this function); did you mean 'dev_crit'?
    4158 | #define TRANS_SET_CONTEXT_LATENCY(tran)         _MMIO_TRANS2(dev_priv, tran, _TRANS_A_SET_CONTEXT_LATENCY)
         |                                                              ^~~~~~~~
   drivers/gpu/drm/i915/display/intel_de.h:31:69: note: in definition of macro 'intel_de_read'
      31 | #define intel_de_read(p,...) __intel_de_read(__to_intel_display(p), __VA_ARGS__)
         |                                                                     ^~~~~~~~~~~
   drivers/gpu/drm/xe/compat-i915-headers/../../i915/display/intel_display_reg_defs.h:42:49: note: in expansion of macro '_MMIO'
      42 | #define _MMIO_TRANS2(display, tran, reg)        _MMIO(DISPLAY_INFO(display)->trans_offsets[(tran)] - \
         |                                                 ^~~~~
   drivers/gpu/drm/i915/display/intel_display_device.h:185:42: note: in expansion of macro '__to_intel_display'
     185 | #define DISPLAY_INFO(i915)              (__to_intel_display(i915)->info.__device_info)
         |                                          ^~~~~~~~~~~~~~~~~~
   drivers/gpu/drm/xe/compat-i915-headers/../../i915/display/intel_display_reg_defs.h:42:55: note: in expansion of macro 'DISPLAY_INFO'
      42 | #define _MMIO_TRANS2(display, tran, reg)        _MMIO(DISPLAY_INFO(display)->trans_offsets[(tran)] - \
         |                                                       ^~~~~~~~~~~~
   drivers/gpu/drm/xe/compat-i915-headers/../../i915/i915_reg.h:4158:49: note: in expansion of macro '_MMIO_TRANS2'
    4158 | #define TRANS_SET_CONTEXT_LATENCY(tran)         _MMIO_TRANS2(dev_priv, tran, _TRANS_A_SET_CONTEXT_LATENCY)
         |                                                 ^~~~~~~~~~~~
   drivers/gpu/drm/i915/display/intel_psr.c:817:36: note: in expansion of macro 'TRANS_SET_CONTEXT_LATENCY'
     817 |         return intel_de_read(i915, TRANS_SET_CONTEXT_LATENCY(cpu_transcoder)) >= 6;
         |                                    ^~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/gpu/drm/xe/compat-i915-headers/../../i915/i915_reg.h:4158:62: note: each undeclared identifier is reported only once for each function it appears in
    4158 | #define TRANS_SET_CONTEXT_LATENCY(tran)         _MMIO_TRANS2(dev_priv, tran, _TRANS_A_SET_CONTEXT_LATENCY)
         |                                                              ^~~~~~~~
   drivers/gpu/drm/i915/display/intel_de.h:31:69: note: in definition of macro 'intel_de_read'
      31 | #define intel_de_read(p,...) __intel_de_read(__to_intel_display(p), __VA_ARGS__)
         |                                                                     ^~~~~~~~~~~
   drivers/gpu/drm/xe/compat-i915-headers/../../i915/display/intel_display_reg_defs.h:42:49: note: in expansion of macro '_MMIO'
      42 | #define _MMIO_TRANS2(display, tran, reg)        _MMIO(DISPLAY_INFO(display)->trans_offsets[(tran)] - \
         |                                                 ^~~~~
   drivers/gpu/drm/i915/display/intel_display_device.h:185:42: note: in expansion of macro '__to_intel_display'
     185 | #define DISPLAY_INFO(i915)              (__to_intel_display(i915)->info.__device_info)
         |                                          ^~~~~~~~~~~~~~~~~~
   drivers/gpu/drm/xe/compat-i915-headers/../../i915/display/intel_display_reg_defs.h:42:55: note: in expansion of macro 'DISPLAY_INFO'
      42 | #define _MMIO_TRANS2(display, tran, reg)        _MMIO(DISPLAY_INFO(display)->trans_offsets[(tran)] - \
         |                                                       ^~~~~~~~~~~~
   drivers/gpu/drm/xe/compat-i915-headers/../../i915/i915_reg.h:4158:49: note: in expansion of macro '_MMIO_TRANS2'
    4158 | #define TRANS_SET_CONTEXT_LATENCY(tran)         _MMIO_TRANS2(dev_priv, tran, _TRANS_A_SET_CONTEXT_LATENCY)
         |                                                 ^~~~~~~~~~~~
   drivers/gpu/drm/i915/display/intel_psr.c:817:36: note: in expansion of macro 'TRANS_SET_CONTEXT_LATENCY'
     817 |         return intel_de_read(i915, TRANS_SET_CONTEXT_LATENCY(cpu_transcoder)) >= 6;
         |                                    ^~~~~~~~~~~~~~~~~~~~~~~~~
>> drivers/gpu/drm/i915/display/intel_psr.c:815:66: error: parameter 'cpu_transcoder' set but not used [-Werror=unused-but-set-parameter]
     815 |                                                  enum transcoder cpu_transcoder)
         |                                                  ~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~
   drivers/gpu/drm/i915/display/intel_psr.c: In function 'intel_psr_is_dpkgc_configured':
>> drivers/gpu/drm/i915/display/intel_psr.c:822:36: error: 'LNL_PKG_C_LATENCY' undeclared (first use in this function)
     822 |         return intel_de_read(i915, LNL_PKG_C_LATENCY) == U32_MAX;
         |                                    ^~~~~~~~~~~~~~~~~
   drivers/gpu/drm/i915/display/intel_de.h:31:69: note: in definition of macro 'intel_de_read'
      31 | #define intel_de_read(p,...) __intel_de_read(__to_intel_display(p), __VA_ARGS__)
         |                                                                     ^~~~~~~~~~~
   drivers/gpu/drm/i915/display/intel_psr.c: In function 'intel_psr_is_dc5_entry_possible':
>> drivers/gpu/drm/i915/display/intel_psr.c:835:26: error: 'struct drm_crtc' has no member named 'active'
     835 |                 if (!crtc->active)
         |                          ^~
>> drivers/gpu/drm/i915/display/intel_psr.c:842:69: error: '_encoder' undeclared (first use in this function); did you mean 'encoder'?
     842 |                         struct intel_dp *intel_dp = enc_to_intel_dp(_encoder);
         |                                                                     ^~~~~~~~
         |                                                                     encoder
   drivers/gpu/drm/i915/display/intel_psr.c: In function 'wa_16023497226_check':
>> drivers/gpu/drm/i915/display/intel_psr.c:861:13: error: implicit declaration of function 'is_dpkg_c_configured' [-Werror=implicit-function-declaration]
     861 |         if (is_dpkg_c_configured(i915)) {
         |             ^~~~~~~~~~~~~~~~~~~~
>> drivers/gpu/drm/i915/display/intel_psr.c:866:35: error: implicit declaration of function 'is_dc5_entry_possible'; did you mean 'intel_psr_is_dc5_entry_possible'? [-Werror=implicit-function-declaration]
     866 |                 else if (!psr1 && is_dc5_entry_possible(i915))
         |                                   ^~~~~~~~~~~~~~~~~~~~~
         |                                   intel_psr_is_dc5_entry_possible
   drivers/gpu/drm/i915/display/intel_psr.c: In function 'intel_psr_check_delayed_vblank_limit':
   drivers/gpu/drm/i915/display/intel_psr.c:818:1: warning: control reaches end of non-void function [-Wreturn-type]
     818 | }
         | ^
   drivers/gpu/drm/i915/display/intel_psr.c: At top level:
>> drivers/gpu/drm/i915/display/intel_psr.c:820:13: error: 'intel_psr_is_dpkgc_configured' defined but not used [-Werror=unused-function]
     820 | static bool intel_psr_is_dpkgc_configured(struct drm_i915_private *i915)
         |             ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   cc1: all warnings being treated as errors


vim +4158 drivers/gpu/drm/xe/compat-i915-headers/../../i915/i915_reg.h

dae847991a4327 Paulo Zanoni          2012-10-15  4153  
1d53ccdc400c87 José Roberto de Souza 2021-06-16  4154  #define _TRANS_A_SET_CONTEXT_LATENCY		0x6007C
1d53ccdc400c87 José Roberto de Souza 2021-06-16  4155  #define _TRANS_B_SET_CONTEXT_LATENCY		0x6107C
1d53ccdc400c87 José Roberto de Souza 2021-06-16  4156  #define _TRANS_C_SET_CONTEXT_LATENCY		0x6207C
1d53ccdc400c87 José Roberto de Souza 2021-06-16  4157  #define _TRANS_D_SET_CONTEXT_LATENCY		0x6307C
407569ff790979 Jani Nikula           2024-04-23 @4158  #define TRANS_SET_CONTEXT_LATENCY(tran)		_MMIO_TRANS2(dev_priv, tran, _TRANS_A_SET_CONTEXT_LATENCY)
1d53ccdc400c87 José Roberto de Souza 2021-06-16  4159  #define  TRANS_SET_CONTEXT_LATENCY_MASK		REG_GENMASK(15, 0)
1d53ccdc400c87 José Roberto de Souza 2021-06-16  4160  #define  TRANS_SET_CONTEXT_LATENCY_VALUE(x)	REG_FIELD_PREP(TRANS_SET_CONTEXT_LATENCY_MASK, (x))
1d53ccdc400c87 José Roberto de Souza 2021-06-16  4161  

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [PATCH 2/2] drm/i915/psr: Implment WA to help reach PC10
  2024-06-06  8:29 ` [PATCH 2/2] drm/i915/psr: Implment WA to help reach PC10 Suraj Kandpal
  2024-06-06 11:09   ` Jani Nikula
  2024-06-06 21:48   ` kernel test robot
@ 2024-06-06 22:40   ` kernel test robot
  2024-06-07  0:46   ` kernel test robot
  3 siblings, 0 replies; 24+ messages in thread
From: kernel test robot @ 2024-06-06 22:40 UTC (permalink / raw)
  To: Suraj Kandpal, intel-gfx
  Cc: oe-kbuild-all, animesh.manna, arun.r.murthy, jouni.hogander,
	Suraj Kandpal

Hi Suraj,

kernel test robot noticed the following build warnings:

[auto build test WARNING on drm-intel/for-linux-next]
[also build test WARNING on drm-intel/for-linux-next-fixes drm-tip/drm-tip linus/master v6.10-rc2 next-20240606]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]

url:    https://github.com/intel-lab-lkp/linux/commits/Suraj-Kandpal/drm-i915-psr-Add-return-bool-value-for-hsw_activate_psr1/20240606-163351
base:   git://anongit.freedesktop.org/drm-intel for-linux-next
patch link:    https://lore.kernel.org/r/20240606082926.1816416-4-suraj.kandpal%40intel.com
patch subject: [PATCH 2/2] drm/i915/psr: Implment WA to help reach PC10
config: x86_64-defconfig (https://download.01.org/0day-ci/archive/20240607/202406070642.9SbQep4F-lkp@intel.com/config)
compiler: gcc-13 (Ubuntu 13.2.0-4ubuntu3) 13.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20240607/202406070642.9SbQep4F-lkp@intel.com/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202406070642.9SbQep4F-lkp@intel.com/

All warnings (new ones prefixed by >>):

   In file included from drivers/gpu/drm/i915/display/intel_psr.c:35:
   drivers/gpu/drm/i915/display/intel_psr.c: In function 'intel_psr_check_delayed_vblank_limit':
   drivers/gpu/drm/i915/i915_reg.h:4158:62: error: 'dev_priv' undeclared (first use in this function); did you mean 'dev_crit'?
    4158 | #define TRANS_SET_CONTEXT_LATENCY(tran)         _MMIO_TRANS2(dev_priv, tran, _TRANS_A_SET_CONTEXT_LATENCY)
         |                                                              ^~~~~~~~
   drivers/gpu/drm/i915/display/intel_de.h:31:69: note: in definition of macro 'intel_de_read'
      31 | #define intel_de_read(p,...) __intel_de_read(__to_intel_display(p), __VA_ARGS__)
         |                                                                     ^~~~~~~~~~~
   drivers/gpu/drm/i915/display/intel_display_reg_defs.h:42:49: note: in expansion of macro '_MMIO'
      42 | #define _MMIO_TRANS2(display, tran, reg)        _MMIO(DISPLAY_INFO(display)->trans_offsets[(tran)] - \
         |                                                 ^~~~~
   drivers/gpu/drm/i915/display/intel_display_device.h:185:42: note: in expansion of macro '__to_intel_display'
     185 | #define DISPLAY_INFO(i915)              (__to_intel_display(i915)->info.__device_info)
         |                                          ^~~~~~~~~~~~~~~~~~
   drivers/gpu/drm/i915/display/intel_display_reg_defs.h:42:55: note: in expansion of macro 'DISPLAY_INFO'
      42 | #define _MMIO_TRANS2(display, tran, reg)        _MMIO(DISPLAY_INFO(display)->trans_offsets[(tran)] - \
         |                                                       ^~~~~~~~~~~~
   drivers/gpu/drm/i915/i915_reg.h:4158:49: note: in expansion of macro '_MMIO_TRANS2'
    4158 | #define TRANS_SET_CONTEXT_LATENCY(tran)         _MMIO_TRANS2(dev_priv, tran, _TRANS_A_SET_CONTEXT_LATENCY)
         |                                                 ^~~~~~~~~~~~
   drivers/gpu/drm/i915/display/intel_psr.c:817:36: note: in expansion of macro 'TRANS_SET_CONTEXT_LATENCY'
     817 |         return intel_de_read(i915, TRANS_SET_CONTEXT_LATENCY(cpu_transcoder)) >= 6;
         |                                    ^~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/gpu/drm/i915/i915_reg.h:4158:62: note: each undeclared identifier is reported only once for each function it appears in
    4158 | #define TRANS_SET_CONTEXT_LATENCY(tran)         _MMIO_TRANS2(dev_priv, tran, _TRANS_A_SET_CONTEXT_LATENCY)
         |                                                              ^~~~~~~~
   drivers/gpu/drm/i915/display/intel_de.h:31:69: note: in definition of macro 'intel_de_read'
      31 | #define intel_de_read(p,...) __intel_de_read(__to_intel_display(p), __VA_ARGS__)
         |                                                                     ^~~~~~~~~~~
   drivers/gpu/drm/i915/display/intel_display_reg_defs.h:42:49: note: in expansion of macro '_MMIO'
      42 | #define _MMIO_TRANS2(display, tran, reg)        _MMIO(DISPLAY_INFO(display)->trans_offsets[(tran)] - \
         |                                                 ^~~~~
   drivers/gpu/drm/i915/display/intel_display_device.h:185:42: note: in expansion of macro '__to_intel_display'
     185 | #define DISPLAY_INFO(i915)              (__to_intel_display(i915)->info.__device_info)
         |                                          ^~~~~~~~~~~~~~~~~~
   drivers/gpu/drm/i915/display/intel_display_reg_defs.h:42:55: note: in expansion of macro 'DISPLAY_INFO'
      42 | #define _MMIO_TRANS2(display, tran, reg)        _MMIO(DISPLAY_INFO(display)->trans_offsets[(tran)] - \
         |                                                       ^~~~~~~~~~~~
   drivers/gpu/drm/i915/i915_reg.h:4158:49: note: in expansion of macro '_MMIO_TRANS2'
    4158 | #define TRANS_SET_CONTEXT_LATENCY(tran)         _MMIO_TRANS2(dev_priv, tran, _TRANS_A_SET_CONTEXT_LATENCY)
         |                                                 ^~~~~~~~~~~~
   drivers/gpu/drm/i915/display/intel_psr.c:817:36: note: in expansion of macro 'TRANS_SET_CONTEXT_LATENCY'
     817 |         return intel_de_read(i915, TRANS_SET_CONTEXT_LATENCY(cpu_transcoder)) >= 6;
         |                                    ^~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/gpu/drm/i915/display/intel_psr.c:815:66: warning: parameter 'cpu_transcoder' set but not used [-Wunused-but-set-parameter]
     815 |                                                  enum transcoder cpu_transcoder)
         |                                                  ~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~
   drivers/gpu/drm/i915/display/intel_psr.c: In function 'intel_psr_is_dpkgc_configured':
   drivers/gpu/drm/i915/display/intel_psr.c:822:36: error: 'LNL_PKG_C_LATENCY' undeclared (first use in this function)
     822 |         return intel_de_read(i915, LNL_PKG_C_LATENCY) == U32_MAX;
         |                                    ^~~~~~~~~~~~~~~~~
   drivers/gpu/drm/i915/display/intel_de.h:31:69: note: in definition of macro 'intel_de_read'
      31 | #define intel_de_read(p,...) __intel_de_read(__to_intel_display(p), __VA_ARGS__)
         |                                                                     ^~~~~~~~~~~
   drivers/gpu/drm/i915/display/intel_psr.c: In function 'intel_psr_is_dc5_entry_possible':
   drivers/gpu/drm/i915/display/intel_psr.c:835:26: error: 'struct drm_crtc' has no member named 'active'
     835 |                 if (!crtc->active)
         |                          ^~
   drivers/gpu/drm/i915/display/intel_psr.c:842:69: error: '_encoder' undeclared (first use in this function); did you mean 'encoder'?
     842 |                         struct intel_dp *intel_dp = enc_to_intel_dp(_encoder);
         |                                                                     ^~~~~~~~
         |                                                                     encoder
   drivers/gpu/drm/i915/display/intel_psr.c: In function 'wa_16023497226_check':
   drivers/gpu/drm/i915/display/intel_psr.c:861:13: error: implicit declaration of function 'is_dpkg_c_configured' [-Werror=implicit-function-declaration]
     861 |         if (is_dpkg_c_configured(i915)) {
         |             ^~~~~~~~~~~~~~~~~~~~
   drivers/gpu/drm/i915/display/intel_psr.c:866:35: error: implicit declaration of function 'is_dc5_entry_possible'; did you mean 'intel_psr_is_dc5_entry_possible'? [-Werror=implicit-function-declaration]
     866 |                 else if (!psr1 && is_dc5_entry_possible(i915))
         |                                   ^~~~~~~~~~~~~~~~~~~~~
         |                                   intel_psr_is_dc5_entry_possible
   drivers/gpu/drm/i915/display/intel_psr.c: In function 'intel_psr_check_delayed_vblank_limit':
   drivers/gpu/drm/i915/display/intel_psr.c:818:1: warning: control reaches end of non-void function [-Wreturn-type]
     818 | }
         | ^
   drivers/gpu/drm/i915/display/intel_psr.c: At top level:
>> drivers/gpu/drm/i915/display/intel_psr.c:820:13: warning: 'intel_psr_is_dpkgc_configured' defined but not used [-Wunused-function]
     820 | static bool intel_psr_is_dpkgc_configured(struct drm_i915_private *i915)
         |             ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   cc1: some warnings being treated as errors


vim +/intel_psr_is_dpkgc_configured +820 drivers/gpu/drm/i915/display/intel_psr.c

   819	
 > 820	static bool intel_psr_is_dpkgc_configured(struct drm_i915_private *i915)
   821	{
   822		return intel_de_read(i915, LNL_PKG_C_LATENCY) == U32_MAX;
   823	}
   824	

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [PATCH 2/2] drm/i915/psr: Implment WA to help reach PC10
  2024-06-06  8:29 ` [PATCH 2/2] drm/i915/psr: Implment WA to help reach PC10 Suraj Kandpal
                     ` (2 preceding siblings ...)
  2024-06-06 22:40   ` kernel test robot
@ 2024-06-07  0:46   ` kernel test robot
  3 siblings, 0 replies; 24+ messages in thread
From: kernel test robot @ 2024-06-07  0:46 UTC (permalink / raw)
  To: Suraj Kandpal, intel-gfx
  Cc: llvm, oe-kbuild-all, animesh.manna, arun.r.murthy, jouni.hogander,
	Suraj Kandpal

Hi Suraj,

kernel test robot noticed the following build errors:

[auto build test ERROR on drm-intel/for-linux-next]
[also build test ERROR on drm-intel/for-linux-next-fixes drm-tip/drm-tip linus/master v6.10-rc2 next-20240606]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]

url:    https://github.com/intel-lab-lkp/linux/commits/Suraj-Kandpal/drm-i915-psr-Add-return-bool-value-for-hsw_activate_psr1/20240606-163351
base:   git://anongit.freedesktop.org/drm-intel for-linux-next
patch link:    https://lore.kernel.org/r/20240606082926.1816416-4-suraj.kandpal%40intel.com
patch subject: [PATCH 2/2] drm/i915/psr: Implment WA to help reach PC10
config: i386-buildonly-randconfig-002-20240607 (https://download.01.org/0day-ci/archive/20240607/202406070845.TnConzA7-lkp@intel.com/config)
compiler: clang version 18.1.5 (https://github.com/llvm/llvm-project 617a15a9eac96088ae5e9134248d8236e34b91b1)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20240607/202406070845.TnConzA7-lkp@intel.com/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202406070845.TnConzA7-lkp@intel.com/

All errors (new ones prefixed by >>):

    4158 | #define TRANS_SET_CONTEXT_LATENCY(tran)         _MMIO_TRANS2(dev_priv, tran, _TRANS_A_SET_CONTEXT_LATENCY)
         |                                                              ^
   include/linux/dev_printk.h:48:6: note: '_dev_crit' declared here
      48 | void _dev_crit(const struct device *dev, const char *fmt, ...);
         |      ^
   drivers/gpu/drm/i915/display/intel_psr.c:817:29: error: use of undeclared identifier 'dev_priv'; did you mean '_dev_crit'?
     817 |         return intel_de_read(i915, TRANS_SET_CONTEXT_LATENCY(cpu_transcoder)) >= 6;
         |                                    ^
   drivers/gpu/drm/i915/i915_reg.h:4158:55: note: expanded from macro 'TRANS_SET_CONTEXT_LATENCY'
    4158 | #define TRANS_SET_CONTEXT_LATENCY(tran)         _MMIO_TRANS2(dev_priv, tran, _TRANS_A_SET_CONTEXT_LATENCY)
         |                                                              ^
   include/linux/dev_printk.h:48:6: note: '_dev_crit' declared here
      48 | void _dev_crit(const struct device *dev, const char *fmt, ...);
         |      ^
   drivers/gpu/drm/i915/display/intel_psr.c:817:29: error: controlling expression type 'void (*)(const struct device *, const char *, ...)' not compatible with any generic association type
     817 |         return intel_de_read(i915, TRANS_SET_CONTEXT_LATENCY(cpu_transcoder)) >= 6;
         |                                    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/gpu/drm/i915/i915_reg.h:4158:55: note: expanded from macro 'TRANS_SET_CONTEXT_LATENCY'
    4158 | #define TRANS_SET_CONTEXT_LATENCY(tran)         _MMIO_TRANS2(dev_priv, tran, _TRANS_A_SET_CONTEXT_LATENCY)
         |                                                              ^~~~~~~~
   drivers/gpu/drm/i915/display/intel_display_reg_defs.h:43:26: note: expanded from macro '_MMIO_TRANS2'
      43 |                                                       DISPLAY_INFO(display)->trans_offsets[TRANSCODER_A] + \
         |                                                                    ^~~~~~~
   drivers/gpu/drm/i915/display/intel_display_device.h:185:49: note: expanded from macro 'DISPLAY_INFO'
     185 | #define DISPLAY_INFO(i915)              (__to_intel_display(i915)->info.__device_info)
         |                                                             ^~~~
   drivers/gpu/drm/i915/display/intel_display_conversion.h:16:11: note: expanded from macro '__to_intel_display'
      16 |         _Generic(p,                                                     \
         |                  ^
   drivers/gpu/drm/i915/i915_reg_defs.h:267:47: note: expanded from macro '_MMIO'
     267 | #define _MMIO(r) ((const i915_reg_t){ .reg = (r) })
         |                                               ^
   drivers/gpu/drm/i915/display/intel_de.h:31:69: note: expanded from macro 'intel_de_read'
      31 | #define intel_de_read(p,...) __intel_de_read(__to_intel_display(p), __VA_ARGS__)
         |                                                                     ^~~~~~~~~~~
   drivers/gpu/drm/i915/display/intel_psr.c:817:29: error: use of undeclared identifier 'dev_priv'; did you mean '_dev_crit'?
   drivers/gpu/drm/i915/i915_reg.h:4158:55: note: expanded from macro 'TRANS_SET_CONTEXT_LATENCY'
    4158 | #define TRANS_SET_CONTEXT_LATENCY(tran)         _MMIO_TRANS2(dev_priv, tran, _TRANS_A_SET_CONTEXT_LATENCY)
         |                                                              ^
   include/linux/dev_printk.h:48:6: note: '_dev_crit' declared here
      48 | void _dev_crit(const struct device *dev, const char *fmt, ...);
         |      ^
   drivers/gpu/drm/i915/display/intel_psr.c:817:29: error: use of undeclared identifier 'dev_priv'; did you mean '_dev_crit'?
     817 |         return intel_de_read(i915, TRANS_SET_CONTEXT_LATENCY(cpu_transcoder)) >= 6;
         |                                    ^
   drivers/gpu/drm/i915/i915_reg.h:4158:55: note: expanded from macro 'TRANS_SET_CONTEXT_LATENCY'
    4158 | #define TRANS_SET_CONTEXT_LATENCY(tran)         _MMIO_TRANS2(dev_priv, tran, _TRANS_A_SET_CONTEXT_LATENCY)
         |                                                              ^
   include/linux/dev_printk.h:48:6: note: '_dev_crit' declared here
      48 | void _dev_crit(const struct device *dev, const char *fmt, ...);
         |      ^
   drivers/gpu/drm/i915/display/intel_psr.c:817:29: error: use of undeclared identifier 'dev_priv'; did you mean '_dev_crit'?
     817 |         return intel_de_read(i915, TRANS_SET_CONTEXT_LATENCY(cpu_transcoder)) >= 6;
         |                                    ^
   drivers/gpu/drm/i915/i915_reg.h:4158:55: note: expanded from macro 'TRANS_SET_CONTEXT_LATENCY'
    4158 | #define TRANS_SET_CONTEXT_LATENCY(tran)         _MMIO_TRANS2(dev_priv, tran, _TRANS_A_SET_CONTEXT_LATENCY)
         |                                                              ^
   include/linux/dev_printk.h:48:6: note: '_dev_crit' declared here
      48 | void _dev_crit(const struct device *dev, const char *fmt, ...);
         |      ^
   drivers/gpu/drm/i915/display/intel_psr.c:817:29: error: use of undeclared identifier 'dev_priv'; did you mean '_dev_crit'?
     817 |         return intel_de_read(i915, TRANS_SET_CONTEXT_LATENCY(cpu_transcoder)) >= 6;
         |                                    ^
   drivers/gpu/drm/i915/i915_reg.h:4158:55: note: expanded from macro 'TRANS_SET_CONTEXT_LATENCY'
    4158 | #define TRANS_SET_CONTEXT_LATENCY(tran)         _MMIO_TRANS2(dev_priv, tran, _TRANS_A_SET_CONTEXT_LATENCY)
         |                                                              ^
   include/linux/dev_printk.h:48:6: note: '_dev_crit' declared here
      48 | void _dev_crit(const struct device *dev, const char *fmt, ...);
         |      ^
   drivers/gpu/drm/i915/display/intel_psr.c:817:29: error: use of undeclared identifier 'dev_priv'; did you mean '_dev_crit'?
     817 |         return intel_de_read(i915, TRANS_SET_CONTEXT_LATENCY(cpu_transcoder)) >= 6;
         |                                    ^
   drivers/gpu/drm/i915/i915_reg.h:4158:55: note: expanded from macro 'TRANS_SET_CONTEXT_LATENCY'
    4158 | #define TRANS_SET_CONTEXT_LATENCY(tran)         _MMIO_TRANS2(dev_priv, tran, _TRANS_A_SET_CONTEXT_LATENCY)
         |                                                              ^
   include/linux/dev_printk.h:48:6: note: '_dev_crit' declared here
      48 | void _dev_crit(const struct device *dev, const char *fmt, ...);
         |      ^
   drivers/gpu/drm/i915/display/intel_psr.c:817:29: error: controlling expression type 'void (*)(const struct device *, const char *, ...)' not compatible with any generic association type
     817 |         return intel_de_read(i915, TRANS_SET_CONTEXT_LATENCY(cpu_transcoder)) >= 6;
         |                                    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/gpu/drm/i915/i915_reg.h:4158:55: note: expanded from macro 'TRANS_SET_CONTEXT_LATENCY'
    4158 | #define TRANS_SET_CONTEXT_LATENCY(tran)         _MMIO_TRANS2(dev_priv, tran, _TRANS_A_SET_CONTEXT_LATENCY)
         |                                                              ^~~~~~~~
   drivers/gpu/drm/i915/display/intel_display_reg_defs.h:44:31: note: expanded from macro '_MMIO_TRANS2'
      44 |                                                       DISPLAY_MMIO_BASE(display) + (reg))
         |                                                                         ^~~~~~~
   drivers/gpu/drm/i915/display/intel_display_reg_defs.h:11:51: note: expanded from macro 'DISPLAY_MMIO_BASE'
      11 | #define DISPLAY_MMIO_BASE(dev_priv)     (DISPLAY_INFO(dev_priv)->mmio_offset)
         |                                                       ^~~~~~~~
   note: (skipping 1 expansions in backtrace; use -fmacro-backtrace-limit=0 to see all)
   drivers/gpu/drm/i915/display/intel_display_conversion.h:16:11: note: expanded from macro '__to_intel_display'
      16 |         _Generic(p,                                                     \
         |                  ^
   drivers/gpu/drm/i915/i915_reg_defs.h:267:47: note: expanded from macro '_MMIO'
     267 | #define _MMIO(r) ((const i915_reg_t){ .reg = (r) })
         |                                               ^
   drivers/gpu/drm/i915/display/intel_de.h:31:69: note: expanded from macro 'intel_de_read'
      31 | #define intel_de_read(p,...) __intel_de_read(__to_intel_display(p), __VA_ARGS__)
         |                                                                     ^~~~~~~~~~~
>> drivers/gpu/drm/i915/display/intel_psr.c:822:29: error: use of undeclared identifier 'LNL_PKG_C_LATENCY'
     822 |         return intel_de_read(i915, LNL_PKG_C_LATENCY) == U32_MAX;
         |                                    ^
   fatal error: too many errors emitted, stopping now [-ferror-limit=]
   20 errors generated.


vim +/LNL_PKG_C_LATENCY +822 drivers/gpu/drm/i915/display/intel_psr.c

   819	
   820	static bool intel_psr_is_dpkgc_configured(struct drm_i915_private *i915)
   821	{
 > 822		return intel_de_read(i915, LNL_PKG_C_LATENCY) == U32_MAX;
   823	}
   824	

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

^ permalink raw reply	[flat|nested] 24+ messages in thread

* RE: [PATCH 2/2] drm/i915/psr: Implment WA to help reach PC10
  2024-06-06 11:09   ` Jani Nikula
@ 2024-06-10  4:54     ` Kandpal, Suraj
  2024-06-14 13:41       ` Jani Nikula
  0 siblings, 1 reply; 24+ messages in thread
From: Kandpal, Suraj @ 2024-06-10  4:54 UTC (permalink / raw)
  To: Jani Nikula, intel-gfx@lists.freedesktop.org
  Cc: Manna, Animesh, Murthy, Arun R, Hogander, Jouni

> Subject: Re: [PATCH 2/2] drm/i915/psr: Implment WA to help reach PC10
> 
> On Thu, 06 Jun 2024, Suraj Kandpal <suraj.kandpal@intel.com> wrote:
> > To reach PC10 when PKG_C_LATENCY is configure we must do the following
> > things
> > 1) Enter PSR1 only when delayed_vblank < 6 lines and DC5 can be
> > entered
> > 2) Allow PSR2 deep sleep when DC5 can be entered
> > 3) DC5 can be entered when all transocoder have either PSR1, PSR2 or
> > eDP 1.5 PR ALPM enabled and VBI is disabled and flips and pushes are
> > not happening.
> >
> > WA: 16023497226
> > Signed-off-by: Suraj Kandpal <suraj.kandpal@intel.com>
> > ---
> >  drivers/gpu/drm/i915/display/intel_psr.c | 75
> > +++++++++++++++++++++++-
> >  1 file changed, 73 insertions(+), 2 deletions(-)
> >
> > diff --git a/drivers/gpu/drm/i915/display/intel_psr.c
> > b/drivers/gpu/drm/i915/display/intel_psr.c
> > index 6fc88f6c6b26..b22745c019df 100644
> > --- a/drivers/gpu/drm/i915/display/intel_psr.c
> > +++ b/drivers/gpu/drm/i915/display/intel_psr.c
> > @@ -811,12 +811,81 @@ static u8 psr_compute_idle_frames(struct
> intel_dp *intel_dp)
> >  	return idle_frames;
> >  }
> >
> > +static bool intel_psr_check_delayed_vblank_limit(struct drm_i915_private
> *i915,
> > +						 enum transcoder
> cpu_transcoder) {
> > +	return intel_de_read(i915,
> > +TRANS_SET_CONTEXT_LATENCY(cpu_transcoder)) >= 6;
> 
Hi Jani,
Thanks for the reviews

> Please don't use the hardware to preserve the state for you. It will get really
> complicated to maintain.
> 

Yes wanted to calculate the delayed vblank using the following way
Adjusted_mode->vblank_start - adjusted_mode->vblank_end
But I'll need crtc_state for that and I don't see a way of deriving it
Specially when this function is called from intel_psr_work
One way could be to have this wa check function be called from 
Intel_psr_enable_locked and save the corresponding Booleans in
Intel_psr or make in  drm_i915_private
structure and access that when intel_psr_activate is called from
Intel_psr_resume and intel_psr_work.
Do you think that could be feasible ?

> > +}
> > +
> > +static bool intel_psr_is_dpkgc_configured(struct drm_i915_private
> > +*i915) {
> > +	return intel_de_read(i915, LNL_PKG_C_LATENCY) == U32_MAX;
> 
> Ditto.
> 

Similar question as above only place that I can manage a state to see if it is configured or not
would be in drm_i915_private.

> > +}
> > +
> > +static bool intel_psr_is_dc5_entry_possible(struct drm_i915_private
> > +*i915) {
> > +	struct intel_crtc *intel_crtc;
> > +	bool ret = true;
> > +
> > +	for_each_intel_crtc(&i915->drm, intel_crtc) {
> > +		struct intel_encoder *encoder;
> > +		struct drm_crtc *crtc = &intel_crtc->base;
> > +		enum pipe pipe = intel_crtc->pipe;
> > +
> > +		if (!crtc->active)
> > +			continue;
> > +
> > +		if (!(i915->display.irq.de_irq_mask[pipe] &
> GEN8_PIPE_VBLANK))
> 
> You have no business looking directly at that. It's for display irq code *only*.
> 

Is there another way I can ensure if the vblank interrupt for the particular pipe is disabled?

> > +			ret = false;
> > +
> > +		for_each_encoder_on_crtc(&i915->drm, crtc, encoder) {
> > +			struct intel_dp *intel_dp = enc_to_intel_dp(_encoder);
> > +			struct intel_psr *psr = &intel_dp->psr;
> > +
> > +			if (!psr->enabled)
> > +				ret = false;
> > +		}
> > +	}
> > +
> > +	return ret;
> > +}
> > +
> > +static bool wa_16023497226_check(struct intel_dp *intel_dp, bool
> > +psr1) {
> > +	struct drm_i915_private *i915 = dp_to_i915(intel_dp);
> > +	enum transcoder cpu_transcoder = intel_dp->psr.transcoder;
> > +
> > +	if (DISPLAY_VER(i915) != 20)
> > +		return true;
> > +
> > +	if (is_dpkg_c_configured(i915)) {
> > +		if (psr1 &&
> > +		    (intel_psr_check_delayed_vblank_limit(i915,
> cpu_transcoder) ||
> > +		     intel_psr_is_dc5_entry_possible(i915)))
> > +			return true;
> > +		else if (!psr1 && is_dc5_entry_possible(i915))
> > +			return true;
> > +		else
> > +			return false;
> > +	}
> > +
> > +	return true;
> > +}
> > +
> >  static bool hsw_activate_psr1(struct intel_dp *intel_dp)  {
> >  	struct drm_i915_private *dev_priv = dp_to_i915(intel_dp);
> >  	enum transcoder cpu_transcoder = intel_dp->psr.transcoder;
> >  	u32 max_sleep_time = 0x1f;
> > -	u32 val = EDP_PSR_ENABLE;
> > +	u32 val = 0;
> > +
> > +	/* WA: 16023497226*/
> > +	if (wa_16023497226_check(intel_dp, true)) {
> > +		val = EDP_PSR_ENABLE;
> > +	} else {
> > +		drm_dbg_kms(&dev_priv->drm, "PSR1 was not activated\n");
> 
> Please add reason.
> 
> > +		return false;
> > +	}
> 
> Switch the condition around and use early return.
> 

Sure will do.

Regards,
Suraj Kandpal
> >
> >  	val |= EDP_PSR_IDLE_FRAMES(psr_compute_idle_frames(intel_dp));
> >
> > @@ -910,7 +979,9 @@ static void hsw_activate_psr2(struct intel_dp
> *intel_dp)
> >  	u32 val = EDP_PSR2_ENABLE;
> >  	u32 psr_val = 0;
> >
> > -	val |= EDP_PSR2_IDLE_FRAMES(psr_compute_idle_frames(intel_dp));
> > +	/* WA: 16023497226*/
> > +	if (wa_16023497226_check(intel_dp, false))
> > +		val |=
> EDP_PSR2_IDLE_FRAMES(psr_compute_idle_frames(intel_dp));
> >
> >  	if (DISPLAY_VER(dev_priv) < 14 && !IS_ALDERLAKE_P(dev_priv))
> >  		val |= EDP_SU_TRACK_ENABLE;
> 
> --
> Jani Nikula, Intel

^ permalink raw reply	[flat|nested] 24+ messages in thread

* RE: [PATCH 2/2] drm/i915/psr: Implment WA to help reach PC10
  2024-06-10  4:54     ` Kandpal, Suraj
@ 2024-06-14 13:41       ` Jani Nikula
  0 siblings, 0 replies; 24+ messages in thread
From: Jani Nikula @ 2024-06-14 13:41 UTC (permalink / raw)
  To: Kandpal, Suraj, intel-gfx@lists.freedesktop.org
  Cc: Manna, Animesh, Murthy, Arun R, Hogander, Jouni, Ville Syrjala

On Mon, 10 Jun 2024, "Kandpal, Suraj" <suraj.kandpal@intel.com> wrote:
>> Subject: Re: [PATCH 2/2] drm/i915/psr: Implment WA to help reach PC10
>> 
>> On Thu, 06 Jun 2024, Suraj Kandpal <suraj.kandpal@intel.com> wrote:
>> > To reach PC10 when PKG_C_LATENCY is configure we must do the following
>> > things
>> > 1) Enter PSR1 only when delayed_vblank < 6 lines and DC5 can be
>> > entered
>> > 2) Allow PSR2 deep sleep when DC5 can be entered
>> > 3) DC5 can be entered when all transocoder have either PSR1, PSR2 or
>> > eDP 1.5 PR ALPM enabled and VBI is disabled and flips and pushes are
>> > not happening.
>> >
>> > WA: 16023497226
>> > Signed-off-by: Suraj Kandpal <suraj.kandpal@intel.com>
>> > ---
>> >  drivers/gpu/drm/i915/display/intel_psr.c | 75
>> > +++++++++++++++++++++++-
>> >  1 file changed, 73 insertions(+), 2 deletions(-)
>> >
>> > diff --git a/drivers/gpu/drm/i915/display/intel_psr.c
>> > b/drivers/gpu/drm/i915/display/intel_psr.c
>> > index 6fc88f6c6b26..b22745c019df 100644
>> > --- a/drivers/gpu/drm/i915/display/intel_psr.c
>> > +++ b/drivers/gpu/drm/i915/display/intel_psr.c
>> > @@ -811,12 +811,81 @@ static u8 psr_compute_idle_frames(struct
>> intel_dp *intel_dp)
>> >  	return idle_frames;
>> >  }
>> >
>> > +static bool intel_psr_check_delayed_vblank_limit(struct drm_i915_private
>> *i915,
>> > +						 enum transcoder
>> cpu_transcoder) {
>> > +	return intel_de_read(i915,
>> > +TRANS_SET_CONTEXT_LATENCY(cpu_transcoder)) >= 6;
>> 
> Hi Jani,
> Thanks for the reviews
>
>> Please don't use the hardware to preserve the state for you. It will get really
>> complicated to maintain.
>> 
>
> Yes wanted to calculate the delayed vblank using the following way
> Adjusted_mode->vblank_start - adjusted_mode->vblank_end
> But I'll need crtc_state for that and I don't see a way of deriving it
> Specially when this function is called from intel_psr_work
> One way could be to have this wa check function be called from 
> Intel_psr_enable_locked and save the corresponding Booleans in
> Intel_psr or make in  drm_i915_private
> structure and access that when intel_psr_activate is called from
> Intel_psr_resume and intel_psr_work.
> Do you think that could be feasible ?

You'll be able to figure out a lot of cases up front at compute config
time, and disable PSR beforehand.

You'll know LNL_PKG_C_LATENCY (we seem to always configure it). You'll
know TRANS_SET_CONTEXT_LATENCY. You'll know whether all transcoders have
PSR enabled.

I think you'll need to split the conditions, and disable PSR as early as
possible when it should not be enabled. Then at actual enabling time,
you'll know the conditions that already have to hold, and you can check
fewer things.

This workaround is a bummer because it's permanent. It also means we
need to do this properly. Can't just poke at random stuff, because it'll
be painful forever.

BR,
Jani.

>
>> > +}
>> > +
>> > +static bool intel_psr_is_dpkgc_configured(struct drm_i915_private
>> > +*i915) {
>> > +	return intel_de_read(i915, LNL_PKG_C_LATENCY) == U32_MAX;
>> 
>> Ditto.
>> 
>
> Similar question as above only place that I can manage a state to see if it is configured or not
> would be in drm_i915_private.
>
>> > +}
>> > +
>> > +static bool intel_psr_is_dc5_entry_possible(struct drm_i915_private
>> > +*i915) {
>> > +	struct intel_crtc *intel_crtc;
>> > +	bool ret = true;
>> > +
>> > +	for_each_intel_crtc(&i915->drm, intel_crtc) {
>> > +		struct intel_encoder *encoder;
>> > +		struct drm_crtc *crtc = &intel_crtc->base;
>> > +		enum pipe pipe = intel_crtc->pipe;
>> > +
>> > +		if (!crtc->active)
>> > +			continue;
>> > +
>> > +		if (!(i915->display.irq.de_irq_mask[pipe] &
>> GEN8_PIPE_VBLANK))
>> 
>> You have no business looking directly at that. It's for display irq code *only*.
>> 
>
> Is there another way I can ensure if the vblank interrupt for the particular pipe is disabled?
>
>> > +			ret = false;
>> > +
>> > +		for_each_encoder_on_crtc(&i915->drm, crtc, encoder) {
>> > +			struct intel_dp *intel_dp = enc_to_intel_dp(_encoder);
>> > +			struct intel_psr *psr = &intel_dp->psr;
>> > +
>> > +			if (!psr->enabled)
>> > +				ret = false;
>> > +		}
>> > +	}
>> > +
>> > +	return ret;
>> > +}
>> > +
>> > +static bool wa_16023497226_check(struct intel_dp *intel_dp, bool
>> > +psr1) {
>> > +	struct drm_i915_private *i915 = dp_to_i915(intel_dp);
>> > +	enum transcoder cpu_transcoder = intel_dp->psr.transcoder;
>> > +
>> > +	if (DISPLAY_VER(i915) != 20)
>> > +		return true;
>> > +
>> > +	if (is_dpkg_c_configured(i915)) {
>> > +		if (psr1 &&
>> > +		    (intel_psr_check_delayed_vblank_limit(i915,
>> cpu_transcoder) ||
>> > +		     intel_psr_is_dc5_entry_possible(i915)))
>> > +			return true;
>> > +		else if (!psr1 && is_dc5_entry_possible(i915))
>> > +			return true;
>> > +		else
>> > +			return false;
>> > +	}
>> > +
>> > +	return true;
>> > +}
>> > +
>> >  static bool hsw_activate_psr1(struct intel_dp *intel_dp)  {
>> >  	struct drm_i915_private *dev_priv = dp_to_i915(intel_dp);
>> >  	enum transcoder cpu_transcoder = intel_dp->psr.transcoder;
>> >  	u32 max_sleep_time = 0x1f;
>> > -	u32 val = EDP_PSR_ENABLE;
>> > +	u32 val = 0;
>> > +
>> > +	/* WA: 16023497226*/
>> > +	if (wa_16023497226_check(intel_dp, true)) {
>> > +		val = EDP_PSR_ENABLE;
>> > +	} else {
>> > +		drm_dbg_kms(&dev_priv->drm, "PSR1 was not activated\n");
>> 
>> Please add reason.
>> 
>> > +		return false;
>> > +	}
>> 
>> Switch the condition around and use early return.
>> 
>
> Sure will do.
>
> Regards,
> Suraj Kandpal
>> >
>> >  	val |= EDP_PSR_IDLE_FRAMES(psr_compute_idle_frames(intel_dp));
>> >
>> > @@ -910,7 +979,9 @@ static void hsw_activate_psr2(struct intel_dp
>> *intel_dp)
>> >  	u32 val = EDP_PSR2_ENABLE;
>> >  	u32 psr_val = 0;
>> >
>> > -	val |= EDP_PSR2_IDLE_FRAMES(psr_compute_idle_frames(intel_dp));
>> > +	/* WA: 16023497226*/
>> > +	if (wa_16023497226_check(intel_dp, false))
>> > +		val |=
>> EDP_PSR2_IDLE_FRAMES(psr_compute_idle_frames(intel_dp));
>> >
>> >  	if (DISPLAY_VER(dev_priv) < 14 && !IS_ALDERLAKE_P(dev_priv))
>> >  		val |= EDP_SU_TRACK_ENABLE;
>> 
>> --
>> Jani Nikula, Intel

-- 
Jani Nikula, Intel

^ permalink raw reply	[flat|nested] 24+ messages in thread

* [PATCH 0/2] Implement WA to fix increased power usage
@ 2024-06-19  4:37 Suraj Kandpal
  2024-06-19  4:37 ` [PATCH 1/2] drm/i915/psr: Add return bool value for hsw_activate_psr1 Suraj Kandpal
                   ` (4 more replies)
  0 siblings, 5 replies; 24+ messages in thread
From: Suraj Kandpal @ 2024-06-19  4:37 UTC (permalink / raw)
  To: intel-gfx
  Cc: animesh.manna, arun.r.murthy, jouni.hogander, jani.nikula,
	Suraj Kandpal

When DPKGC is enabled we see an increase in power consumption for
PSR1: When gap between vblank and delayed vblank is >= 6
PSR2: When deep sleep is enabled.
WA adds condition to avoid the above conditions

WA: 16023497226
Signed-off-by: Suraj Kandpal <suraj.kandpal@intel.com>

Suraj Kandpal (2):
  drm/i915/psr: Add return bool value for hsw_activate_psr1
  drm/i915/psr: Implment WA to help reach PC10

 .../drm/i915/display/intel_display_types.h    |  2 +
 drivers/gpu/drm/i915/display/intel_psr.c      | 91 ++++++++++++++++++-
 2 files changed, 89 insertions(+), 4 deletions(-)

-- 
2.43.2


^ permalink raw reply	[flat|nested] 24+ messages in thread

* [PATCH 1/2] drm/i915/psr: Add return bool value for hsw_activate_psr1
  2024-06-19  4:37 [PATCH 0/2] Implement WA to fix increased power usage Suraj Kandpal
@ 2024-06-19  4:37 ` Suraj Kandpal
  2024-08-22  5:09   ` Shankar, Uma
  2024-06-19  4:37 ` [PATCH 2/2] drm/i915/psr: Implment WA to help reach PC10 Suraj Kandpal
                   ` (3 subsequent siblings)
  4 siblings, 1 reply; 24+ messages in thread
From: Suraj Kandpal @ 2024-06-19  4:37 UTC (permalink / raw)
  To: intel-gfx
  Cc: animesh.manna, arun.r.murthy, jouni.hogander, jani.nikula,
	Suraj Kandpal

Convert hsw_activate_psr1 from void to bool as going forward
there is a chance psr1 is not enabled.

Signed-off-by: Suraj Kandpal <suraj.kandpal@intel.com>
---
 drivers/gpu/drm/i915/display/intel_psr.c | 9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_psr.c b/drivers/gpu/drm/i915/display/intel_psr.c
index 920186c2264d..080bf5e51148 100644
--- a/drivers/gpu/drm/i915/display/intel_psr.c
+++ b/drivers/gpu/drm/i915/display/intel_psr.c
@@ -808,7 +808,7 @@ static u8 psr_compute_idle_frames(struct intel_dp *intel_dp)
 	return idle_frames;
 }
 
-static void hsw_activate_psr1(struct intel_dp *intel_dp)
+static bool hsw_activate_psr1(struct intel_dp *intel_dp)
 {
 	struct drm_i915_private *dev_priv = dp_to_i915(intel_dp);
 	enum transcoder cpu_transcoder = intel_dp->psr.transcoder;
@@ -836,6 +836,8 @@ static void hsw_activate_psr1(struct intel_dp *intel_dp)
 
 	intel_de_rmw(dev_priv, psr_ctl_reg(dev_priv, cpu_transcoder),
 		     ~EDP_PSR_RESTORE_PSR_ACTIVE_CTX_MASK, val);
+
+	return true;
 }
 
 static u32 intel_psr2_get_tp_time(struct intel_dp *intel_dp)
@@ -1560,6 +1562,7 @@ static void intel_psr_activate(struct intel_dp *intel_dp)
 {
 	struct drm_i915_private *dev_priv = dp_to_i915(intel_dp);
 	enum transcoder cpu_transcoder = intel_dp->psr.transcoder;
+	bool ret = true;
 
 	drm_WARN_ON(&dev_priv->drm,
 		    transcoder_has_psr2(dev_priv, cpu_transcoder) &&
@@ -1578,9 +1581,9 @@ static void intel_psr_activate(struct intel_dp *intel_dp)
 	else if (intel_dp->psr.sel_update_enabled)
 		hsw_activate_psr2(intel_dp);
 	else
-		hsw_activate_psr1(intel_dp);
+		ret = hsw_activate_psr1(intel_dp);
 
-	intel_dp->psr.active = true;
+	intel_dp->psr.active = ret;
 }
 
 static u32 wa_16013835468_bit_get(struct intel_dp *intel_dp)
-- 
2.43.2


^ permalink raw reply related	[flat|nested] 24+ messages in thread

* [PATCH 2/2] drm/i915/psr: Implment WA to help reach PC10
  2024-06-19  4:37 [PATCH 0/2] Implement WA to fix increased power usage Suraj Kandpal
  2024-06-19  4:37 ` [PATCH 1/2] drm/i915/psr: Add return bool value for hsw_activate_psr1 Suraj Kandpal
@ 2024-06-19  4:37 ` Suraj Kandpal
  2024-08-22  5:19   ` Shankar, Uma
  2024-08-22  8:45   ` Hogander, Jouni
  2024-06-19  5:42 ` ✗ Fi.CI.BAT: failure for Implement WA to fix increased power usage (rev2) Patchwork
                   ` (2 subsequent siblings)
  4 siblings, 2 replies; 24+ messages in thread
From: Suraj Kandpal @ 2024-06-19  4:37 UTC (permalink / raw)
  To: intel-gfx
  Cc: animesh.manna, arun.r.murthy, jouni.hogander, jani.nikula,
	Suraj Kandpal

To reach PC10 when PKG_C_LATENCY is configure we must do the following
things
1) Enter PSR1 only when delayed_vblank < 6 lines and DC5 can be entered
2) Allow PSR2 deep sleep when DC5 can be entered
3) DC5 can be entered when all transocoder have either PSR1, PSR2 or
eDP 1.5 PR ALPM enabled and VBI is disabled and flips and pushes are
not happening.

--v2
-Switch condition and do an early return [Jani]
-Do some checks in compute_config [Jani]
-Do not use register reads as a method of checking states for
DPKGC or delayed vblank [Jani]
-Use another way to see is vblank interrupts are disabled or not [Jani]

WA: 16023497226
Signed-off-by: Suraj Kandpal <suraj.kandpal@intel.com>
---
 .../drm/i915/display/intel_display_types.h    |  2 +
 drivers/gpu/drm/i915/display/intel_psr.c      | 82 ++++++++++++++++++-
 2 files changed, 83 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/i915/display/intel_display_types.h b/drivers/gpu/drm/i915/display/intel_display_types.h
index 46b3cbeb4a82..031f8e889b65 100644
--- a/drivers/gpu/drm/i915/display/intel_display_types.h
+++ b/drivers/gpu/drm/i915/display/intel_display_types.h
@@ -1708,6 +1708,8 @@ struct intel_psr {
 	bool sink_support;
 	bool source_support;
 	bool enabled;
+	bool delayed_vblank;
+	bool is_dpkgc_configured;
 	bool paused;
 	enum pipe pipe;
 	enum transcoder transcoder;
diff --git a/drivers/gpu/drm/i915/display/intel_psr.c b/drivers/gpu/drm/i915/display/intel_psr.c
index 080bf5e51148..4ddea6737386 100644
--- a/drivers/gpu/drm/i915/display/intel_psr.c
+++ b/drivers/gpu/drm/i915/display/intel_psr.c
@@ -808,6 +808,73 @@ static u8 psr_compute_idle_frames(struct intel_dp *intel_dp)
 	return idle_frames;
 }
 
+static bool intel_psr_check_delayed_vblank_limit(struct intel_crtc_state *crtc_state)
+{
+	struct drm_display_mode *adjusted_mode = &crtc_state->hw.adjusted_mode;
+
+	return (adjusted_mode->crtc_vblank_start - adjusted_mode->crtc_vdisplay) >= 6;
+}
+
+/*
+ * PKG_C_LATENCY is configured only when DISPLAY_VER >= 20 and
+ * VRR is not enabled
+ */
+static bool intel_psr_is_dpkgc_configured(struct drm_i915_private *i915)
+{
+	struct intel_crtc *intel_crtc;
+
+	if (DISPLAY_VER(i915) < 20)
+		return false;
+
+	for_each_intel_crtc(&i915->drm, intel_crtc) {
+		struct intel_crtc_state *crtc_state;
+
+		if (!intel_crtc->active)
+			continue;
+
+		crtc_state = intel_crtc->config;
+
+		if (crtc_state->vrr.enable)
+			return false;
+	}
+
+	return true;
+}
+
+/*
+ * DC5 entry is only possible if vblank interrupt is disabled
+ * and either psr1, psr2, edp 1.5 pr alpm is enabled on all
+ * enabled encoders.
+ */
+static bool intel_psr_is_dc5_entry_possible(struct drm_i915_private *i915)
+{
+	struct intel_crtc *intel_crtc;
+
+	for_each_intel_crtc(&i915->drm, intel_crtc) {
+		struct intel_encoder *encoder;
+		struct drm_crtc *crtc = &intel_crtc->base;
+		struct drm_vblank_crtc *vblank;
+
+		if (!intel_crtc->active)
+			continue;
+
+		vblank = drm_crtc_vblank_crtc(crtc);
+
+		if (vblank->enabled)
+			return false;
+
+		for_each_encoder_on_crtc(&i915->drm, crtc, encoder) {
+			struct intel_dp *intel_dp = enc_to_intel_dp(encoder);
+			struct intel_psr *psr = &intel_dp->psr;
+
+			if (!psr->enabled)
+				return false;
+		}
+	}
+
+	return true;
+}
+
 static bool hsw_activate_psr1(struct intel_dp *intel_dp)
 {
 	struct drm_i915_private *dev_priv = dp_to_i915(intel_dp);
@@ -815,6 +882,14 @@ static bool hsw_activate_psr1(struct intel_dp *intel_dp)
 	u32 max_sleep_time = 0x1f;
 	u32 val = EDP_PSR_ENABLE;
 
+	/* WA: 16023497226*/
+	if (intel_dp->psr.is_dpkgc_configured &&
+	    (intel_dp->psr.delayed_vblank || intel_psr_is_dc5_entry_possible(dev_priv))) {
+		drm_dbg_kms(&dev_priv->drm,
+			    "PSR1 not activated as it doesn't meet requirements of WA:16023497226\n");
+		return false;
+	}
+
 	val |= EDP_PSR_IDLE_FRAMES(psr_compute_idle_frames(intel_dp));
 
 	if (DISPLAY_VER(dev_priv) < 20)
@@ -907,7 +982,10 @@ static void hsw_activate_psr2(struct intel_dp *intel_dp)
 	u32 val = EDP_PSR2_ENABLE;
 	u32 psr_val = 0;
 
-	val |= EDP_PSR2_IDLE_FRAMES(psr_compute_idle_frames(intel_dp));
+	/* WA: 16023497226*/
+	if (intel_dp->psr.is_dpkgc_configured &&
+	    intel_psr_is_dc5_entry_possible(dev_priv))
+		val |= EDP_PSR2_IDLE_FRAMES(psr_compute_idle_frames(intel_dp));
 
 	if (DISPLAY_VER(dev_priv) < 14 && !IS_ALDERLAKE_P(dev_priv))
 		val |= EDP_SU_TRACK_ENABLE;
@@ -1502,6 +1580,8 @@ void intel_psr_compute_config(struct intel_dp *intel_dp,
 		return;
 
 	crtc_state->has_sel_update = intel_sel_update_config_valid(intel_dp, crtc_state);
+	intel_dp->psr.delayed_vblank = intel_psr_check_delayed_vblank_limit(crtc_state);
+	intel_dp->psr.is_dpkgc_configured = intel_psr_is_dpkgc_configured(dev_priv);
 }
 
 void intel_psr_get_config(struct intel_encoder *encoder,
-- 
2.43.2


^ permalink raw reply related	[flat|nested] 24+ messages in thread

* ✗ Fi.CI.BAT: failure for Implement WA to fix increased power usage (rev2)
  2024-06-19  4:37 [PATCH 0/2] Implement WA to fix increased power usage Suraj Kandpal
  2024-06-19  4:37 ` [PATCH 1/2] drm/i915/psr: Add return bool value for hsw_activate_psr1 Suraj Kandpal
  2024-06-19  4:37 ` [PATCH 2/2] drm/i915/psr: Implment WA to help reach PC10 Suraj Kandpal
@ 2024-06-19  5:42 ` Patchwork
  2024-07-29 11:43 ` ✓ Fi.CI.BAT: success for Implement WA to fix increased power usage (rev3) Patchwork
  2024-07-30  5:30 ` ✗ Fi.CI.IGT: failure " Patchwork
  4 siblings, 0 replies; 24+ messages in thread
From: Patchwork @ 2024-06-19  5:42 UTC (permalink / raw)
  To: Suraj Kandpal; +Cc: intel-gfx

[-- Attachment #1: Type: text/plain, Size: 12763 bytes --]

== Series Details ==

Series: Implement WA to fix increased power usage (rev2)
URL   : https://patchwork.freedesktop.org/series/134541/
State : failure

== Summary ==

CI Bug Log - changes from CI_DRM_14966 -> Patchwork_134541v2
====================================================

Summary
-------

  **FAILURE**

  Serious unknown changes coming with Patchwork_134541v2 absolutely need to be
  verified manually.
  
  If you think the reported changes have nothing to do with the changes
  introduced in Patchwork_134541v2, please notify your bug team (I915-ci-infra@lists.freedesktop.org) to allow them
  to document this new failure mode, which will reduce false positives in CI.

  External URL: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v2/index.html

Participating hosts (43 -> 38)
------------------------------

  Additional (2): bat-dg2-8 bat-dg1-7 
  Missing    (7): fi-bsw-n3050 fi-snb-2520m fi-elk-e7500 fi-cfl-8109u bat-jsl-3 bat-dg2-11 bat-jsl-1 

Possible new issues
-------------------

  Here are the unknown changes that may have been introduced in Patchwork_134541v2:

### IGT changes ###

#### Possible regressions ####

  * igt@kms_pipe_crc_basic@hang-read-crc@pipe-d-dp-1:
    - bat-dg2-8:          NOTRUN -> [FAIL][1]
   [1]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v2/bat-dg2-8/igt@kms_pipe_crc_basic@hang-read-crc@pipe-d-dp-1.html

  
Known issues
------------

  Here are the changes found in Patchwork_134541v2 that come from known issues:

### IGT changes ###

#### Issues hit ####

  * igt@gem_lmem_swapping@parallel-random-engines:
    - bat-arlh-2:         NOTRUN -> [SKIP][2] ([i915#10213]) +3 other tests skip
   [2]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v2/bat-arlh-2/igt@gem_lmem_swapping@parallel-random-engines.html

  * igt@gem_mmap@basic:
    - bat-dg1-7:          NOTRUN -> [SKIP][3] ([i915#4083])
   [3]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v2/bat-dg1-7/igt@gem_mmap@basic.html
    - bat-dg2-8:          NOTRUN -> [SKIP][4] ([i915#4083])
   [4]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v2/bat-dg2-8/igt@gem_mmap@basic.html

  * igt@gem_mmap_gtt@basic:
    - bat-dg2-8:          NOTRUN -> [SKIP][5] ([i915#4077]) +2 other tests skip
   [5]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v2/bat-dg2-8/igt@gem_mmap_gtt@basic.html

  * igt@gem_tiled_fence_blits@basic:
    - bat-dg1-7:          NOTRUN -> [SKIP][6] ([i915#4077]) +2 other tests skip
   [6]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v2/bat-dg1-7/igt@gem_tiled_fence_blits@basic.html

  * igt@gem_tiled_pread_basic:
    - bat-dg1-7:          NOTRUN -> [SKIP][7] ([i915#4079]) +1 other test skip
   [7]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v2/bat-dg1-7/igt@gem_tiled_pread_basic.html
    - bat-dg2-8:          NOTRUN -> [SKIP][8] ([i915#4079]) +1 other test skip
   [8]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v2/bat-dg2-8/igt@gem_tiled_pread_basic.html

  * igt@i915_pm_rps@basic-api:
    - bat-dg1-7:          NOTRUN -> [SKIP][9] ([i915#6621])
   [9]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v2/bat-dg1-7/igt@i915_pm_rps@basic-api.html
    - bat-dg2-8:          NOTRUN -> [SKIP][10] ([i915#6621])
   [10]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v2/bat-dg2-8/igt@i915_pm_rps@basic-api.html

  * igt@kms_addfb_basic@addfb25-x-tiled-mismatch-legacy:
    - bat-dg1-7:          NOTRUN -> [SKIP][11] ([i915#4212]) +7 other tests skip
   [11]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v2/bat-dg1-7/igt@kms_addfb_basic@addfb25-x-tiled-mismatch-legacy.html

  * igt@kms_addfb_basic@addfb25-y-tiled-small-legacy:
    - bat-dg2-8:          NOTRUN -> [SKIP][12] ([i915#5190])
   [12]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v2/bat-dg2-8/igt@kms_addfb_basic@addfb25-y-tiled-small-legacy.html

  * igt@kms_addfb_basic@basic-y-tiled-legacy:
    - bat-dg2-8:          NOTRUN -> [SKIP][13] ([i915#4215] / [i915#5190])
   [13]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v2/bat-dg2-8/igt@kms_addfb_basic@basic-y-tiled-legacy.html
    - bat-dg1-7:          NOTRUN -> [SKIP][14] ([i915#4215])
   [14]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v2/bat-dg1-7/igt@kms_addfb_basic@basic-y-tiled-legacy.html

  * igt@kms_addfb_basic@framebuffer-vs-set-tiling:
    - bat-dg2-8:          NOTRUN -> [SKIP][15] ([i915#4212]) +7 other tests skip
   [15]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v2/bat-dg2-8/igt@kms_addfb_basic@framebuffer-vs-set-tiling.html

  * igt@kms_cursor_legacy@basic-busy-flip-before-cursor-legacy:
    - bat-dg2-8:          NOTRUN -> [SKIP][16] ([i915#4103] / [i915#4213]) +1 other test skip
   [16]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v2/bat-dg2-8/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-legacy.html
    - bat-dg1-7:          NOTRUN -> [SKIP][17] ([i915#4103] / [i915#4213]) +1 other test skip
   [17]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v2/bat-dg1-7/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-legacy.html

  * igt@kms_dsc@dsc-basic:
    - bat-dg1-7:          NOTRUN -> [SKIP][18] ([i915#3555] / [i915#3840])
   [18]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v2/bat-dg1-7/igt@kms_dsc@dsc-basic.html

  * igt@kms_force_connector_basic@force-load-detect:
    - bat-dg2-8:          NOTRUN -> [SKIP][19]
   [19]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v2/bat-dg2-8/igt@kms_force_connector_basic@force-load-detect.html
    - bat-dg1-7:          NOTRUN -> [SKIP][20]
   [20]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v2/bat-dg1-7/igt@kms_force_connector_basic@force-load-detect.html

  * igt@kms_force_connector_basic@prune-stale-modes:
    - bat-dg2-8:          NOTRUN -> [SKIP][21] ([i915#5274])
   [21]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v2/bat-dg2-8/igt@kms_force_connector_basic@prune-stale-modes.html

  * igt@kms_hdmi_inject@inject-audio:
    - bat-dg1-7:          NOTRUN -> [SKIP][22] ([i915#433])
   [22]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v2/bat-dg1-7/igt@kms_hdmi_inject@inject-audio.html

  * igt@kms_pm_backlight@basic-brightness:
    - bat-dg1-7:          NOTRUN -> [SKIP][23] ([i915#5354])
   [23]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v2/bat-dg1-7/igt@kms_pm_backlight@basic-brightness.html
    - bat-dg2-8:          NOTRUN -> [SKIP][24] ([i915#5354])
   [24]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v2/bat-dg2-8/igt@kms_pm_backlight@basic-brightness.html

  * igt@kms_psr@psr-primary-page-flip:
    - bat-dg1-7:          NOTRUN -> [SKIP][25] ([i915#1072] / [i915#9732]) +3 other tests skip
   [25]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v2/bat-dg1-7/igt@kms_psr@psr-primary-page-flip.html

  * igt@kms_psr@psr-sprite-plane-onoff:
    - bat-dg2-8:          NOTRUN -> [SKIP][26] ([i915#1072] / [i915#9673] / [i915#9732]) +3 other tests skip
   [26]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v2/bat-dg2-8/igt@kms_psr@psr-sprite-plane-onoff.html

  * igt@kms_setmode@basic-clone-single-crtc:
    - bat-dg2-8:          NOTRUN -> [SKIP][27] ([i915#3555])
   [27]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v2/bat-dg2-8/igt@kms_setmode@basic-clone-single-crtc.html
    - bat-dg1-7:          NOTRUN -> [SKIP][28] ([i915#3555])
   [28]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v2/bat-dg1-7/igt@kms_setmode@basic-clone-single-crtc.html

  * igt@prime_vgem@basic-fence-flip:
    - bat-dg1-7:          NOTRUN -> [SKIP][29] ([i915#3708]) +3 other tests skip
   [29]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v2/bat-dg1-7/igt@prime_vgem@basic-fence-flip.html
    - bat-dg2-8:          NOTRUN -> [SKIP][30] ([i915#3708])
   [30]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v2/bat-dg2-8/igt@prime_vgem@basic-fence-flip.html

  * igt@prime_vgem@basic-fence-mmap:
    - bat-dg1-7:          NOTRUN -> [SKIP][31] ([i915#3708] / [i915#4077]) +1 other test skip
   [31]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v2/bat-dg1-7/igt@prime_vgem@basic-fence-mmap.html
    - bat-dg2-8:          NOTRUN -> [SKIP][32] ([i915#3708] / [i915#4077]) +1 other test skip
   [32]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v2/bat-dg2-8/igt@prime_vgem@basic-fence-mmap.html

  * igt@prime_vgem@basic-write:
    - bat-dg2-8:          NOTRUN -> [SKIP][33] ([i915#3291] / [i915#3708]) +2 other tests skip
   [33]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v2/bat-dg2-8/igt@prime_vgem@basic-write.html

  
#### Possible fixes ####

  * igt@kms_cursor_legacy@basic-flip-before-cursor-atomic:
    - {bat-mtlp-9}:       [DMESG-WARN][34] ([i915#11009]) -> [PASS][35] +1 other test pass
   [34]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14966/bat-mtlp-9/igt@kms_cursor_legacy@basic-flip-before-cursor-atomic.html
   [35]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v2/bat-mtlp-9/igt@kms_cursor_legacy@basic-flip-before-cursor-atomic.html

  * igt@kms_cursor_legacy@basic-flip-before-cursor-legacy:
    - {bat-mtlp-9}:       [SKIP][36] ([i915#10580]) -> [PASS][37] +1 other test pass
   [36]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14966/bat-mtlp-9/igt@kms_cursor_legacy@basic-flip-before-cursor-legacy.html
   [37]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v2/bat-mtlp-9/igt@kms_cursor_legacy@basic-flip-before-cursor-legacy.html

  * igt@kms_pipe_crc_basic@hang-read-crc@pipe-c-dp-6:
    - {bat-mtlp-9}:       [DMESG-FAIL][38] ([i915#11009]) -> [PASS][39] +1 other test pass
   [38]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14966/bat-mtlp-9/igt@kms_pipe_crc_basic@hang-read-crc@pipe-c-dp-6.html
   [39]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v2/bat-mtlp-9/igt@kms_pipe_crc_basic@hang-read-crc@pipe-c-dp-6.html

  * igt@vgem_basic@unload:
    - bat-arlh-2:         [INCOMPLETE][40] -> [PASS][41]
   [40]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14966/bat-arlh-2/igt@vgem_basic@unload.html
   [41]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v2/bat-arlh-2/igt@vgem_basic@unload.html

  
  {name}: This element is suppressed. This means it is ignored when computing
          the status of the difference (SUCCESS, WARNING, or FAILURE).

  [i915#10213]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10213
  [i915#10580]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10580
  [i915#1072]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/1072
  [i915#10979]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10979
  [i915#11009]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11009
  [i915#3291]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3291
  [i915#3555]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3555
  [i915#3708]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3708
  [i915#3840]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3840
  [i915#4077]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4077
  [i915#4079]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4079
  [i915#4083]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4083
  [i915#4103]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4103
  [i915#4212]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4212
  [i915#4213]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4213
  [i915#4215]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4215
  [i915#433]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/433
  [i915#5190]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5190
  [i915#5274]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5274
  [i915#5354]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5354
  [i915#6621]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6621
  [i915#9159]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9159
  [i915#9673]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9673
  [i915#9732]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9732


Build changes
-------------

  * Linux: CI_DRM_14966 -> Patchwork_134541v2

  CI-20190529: 20190529
  CI_DRM_14966: dda50ece82ce607e91f956206cc5cabd639cba6d @ git://anongit.freedesktop.org/gfx-ci/linux
  IGT_7891: 732f3aaf49c9cc62ff3518a56ece1a825c08d22e @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
  Patchwork_134541v2: dda50ece82ce607e91f956206cc5cabd639cba6d @ git://anongit.freedesktop.org/gfx-ci/linux

== Logs ==

For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v2/index.html

[-- Attachment #2: Type: text/html, Size: 15519 bytes --]

^ permalink raw reply	[flat|nested] 24+ messages in thread

* ✓ Fi.CI.BAT: success for Implement WA to fix increased power usage (rev3)
  2024-06-19  4:37 [PATCH 0/2] Implement WA to fix increased power usage Suraj Kandpal
                   ` (2 preceding siblings ...)
  2024-06-19  5:42 ` ✗ Fi.CI.BAT: failure for Implement WA to fix increased power usage (rev2) Patchwork
@ 2024-07-29 11:43 ` Patchwork
  2024-07-30  5:30 ` ✗ Fi.CI.IGT: failure " Patchwork
  4 siblings, 0 replies; 24+ messages in thread
From: Patchwork @ 2024-07-29 11:43 UTC (permalink / raw)
  To: Kandpal, Suraj; +Cc: intel-gfx

[-- Attachment #1: Type: text/plain, Size: 13728 bytes --]

== Series Details ==

Series: Implement WA to fix increased power usage (rev3)
URL   : https://patchwork.freedesktop.org/series/134541/
State : success

== Summary ==

CI Bug Log - changes from CI_DRM_15146 -> Patchwork_134541v3
====================================================

Summary
-------

  **WARNING**

  Minor unknown changes coming with Patchwork_134541v3 need to be verified
  manually.
  
  If you think the reported changes have nothing to do with the changes
  introduced in Patchwork_134541v3, please notify your bug team (I915-ci-infra@lists.freedesktop.org) to allow them
  to document this new failure mode, which will reduce false positives in CI.

  External URL: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/index.html

Participating hosts (40 -> 40)
------------------------------

  Additional (3): bat-arlh-3 bat-arls-2 fi-kbl-8809g 
  Missing    (3): bat-dg2-11 fi-snb-2520m fi-elk-e7500 

Possible new issues
-------------------

  Here are the unknown changes that may have been introduced in Patchwork_134541v3:

### IGT changes ###

#### Warnings ####

  * igt@runner@aborted:
    - fi-kbl-x1275:       [FAIL][1] ([i915#11781]) -> [FAIL][2]
   [1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15146/fi-kbl-x1275/igt@runner@aborted.html
   [2]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/fi-kbl-x1275/igt@runner@aborted.html
    - fi-cfl-8109u:       [FAIL][3] ([i915#11781]) -> [FAIL][4]
   [3]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15146/fi-cfl-8109u/igt@runner@aborted.html
   [4]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/fi-cfl-8109u/igt@runner@aborted.html
    - fi-ivb-3770:        [FAIL][5] ([i915#11781]) -> [FAIL][6]
   [5]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15146/fi-ivb-3770/igt@runner@aborted.html
   [6]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/fi-ivb-3770/igt@runner@aborted.html
    - fi-kbl-guc:         [FAIL][7] ([i915#11781]) -> [FAIL][8]
   [7]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15146/fi-kbl-guc/igt@runner@aborted.html
   [8]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/fi-kbl-guc/igt@runner@aborted.html
    - fi-ilk-650:         [FAIL][9] ([i915#11781]) -> [FAIL][10]
   [9]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15146/fi-ilk-650/igt@runner@aborted.html
   [10]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/fi-ilk-650/igt@runner@aborted.html
    - fi-tgl-1115g4:      [FAIL][11] ([i915#11781]) -> [FAIL][12]
   [11]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15146/fi-tgl-1115g4/igt@runner@aborted.html
   [12]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/fi-tgl-1115g4/igt@runner@aborted.html
    - fi-blb-e6850:       [FAIL][13] ([i915#11781]) -> [FAIL][14]
   [13]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15146/fi-blb-e6850/igt@runner@aborted.html
   [14]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/fi-blb-e6850/igt@runner@aborted.html
    - fi-bsw-n3050:       [FAIL][15] ([i915#11781]) -> [FAIL][16]
   [15]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15146/fi-bsw-n3050/igt@runner@aborted.html
   [16]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/fi-bsw-n3050/igt@runner@aborted.html
    - fi-pnv-d510:        [FAIL][17] ([i915#11781]) -> [FAIL][18]
   [17]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15146/fi-pnv-d510/igt@runner@aborted.html
   [18]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/fi-pnv-d510/igt@runner@aborted.html
    - fi-glk-j4005:       [FAIL][19] ([i915#11781]) -> [FAIL][20]
   [19]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15146/fi-glk-j4005/igt@runner@aborted.html
   [20]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/fi-glk-j4005/igt@runner@aborted.html
    - fi-kbl-7567u:       [FAIL][21] ([i915#11781]) -> [FAIL][22]
   [21]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15146/fi-kbl-7567u/igt@runner@aborted.html
   [22]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/fi-kbl-7567u/igt@runner@aborted.html
    - bat-apl-1:          [FAIL][23] ([i915#11781]) -> [FAIL][24]
   [23]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15146/bat-apl-1/igt@runner@aborted.html
   [24]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/bat-apl-1/igt@runner@aborted.html
    - bat-atsm-1:         [FAIL][25] ([i915#11781]) -> [FAIL][26]
   [25]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15146/bat-atsm-1/igt@runner@aborted.html
   [26]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/bat-atsm-1/igt@runner@aborted.html
    - fi-cfl-guc:         [FAIL][27] ([i915#11781]) -> [FAIL][28]
   [27]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15146/fi-cfl-guc/igt@runner@aborted.html
   [28]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/fi-cfl-guc/igt@runner@aborted.html

  
#### Suppressed ####

  The following results come from untrusted machines, tests, or statuses.
  They do not affect the overall result.

  * igt@i915_selftest@live@gt_timelines:
    - {bat-arlh-3}:       NOTRUN -> [INCOMPLETE][29]
   [29]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/bat-arlh-3/igt@i915_selftest@live@gt_timelines.html

  
Known issues
------------

  Here are the changes found in Patchwork_134541v3 that come from known issues:

### IGT changes ###

#### Issues hit ####

  * igt@debugfs_test@basic-hwmon:
    - bat-arls-2:         NOTRUN -> [SKIP][30] ([i915#9318])
   [30]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/bat-arls-2/igt@debugfs_test@basic-hwmon.html

  * igt@gem_huc_copy@huc-copy:
    - fi-kbl-8809g:       NOTRUN -> [SKIP][31] ([i915#2190])
   [31]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/fi-kbl-8809g/igt@gem_huc_copy@huc-copy.html

  * igt@gem_lmem_swapping@basic:
    - fi-kbl-8809g:       NOTRUN -> [SKIP][32] ([i915#4613]) +3 other tests skip
   [32]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/fi-kbl-8809g/igt@gem_lmem_swapping@basic.html

  * igt@gem_lmem_swapping@verify-random:
    - bat-arls-2:         NOTRUN -> [SKIP][33] ([i915#10213]) +3 other tests skip
   [33]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/bat-arls-2/igt@gem_lmem_swapping@verify-random.html

  * igt@gem_mmap@basic:
    - bat-arls-2:         NOTRUN -> [SKIP][34] ([i915#11343] / [i915#4083])
   [34]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/bat-arls-2/igt@gem_mmap@basic.html

  * igt@gem_mmap_gtt@basic:
    - bat-arls-2:         NOTRUN -> [SKIP][35] ([i915#10196] / [i915#4077]) +2 other tests skip
   [35]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/bat-arls-2/igt@gem_mmap_gtt@basic.html

  * igt@gem_render_tiled_blits@basic:
    - bat-arls-2:         NOTRUN -> [SKIP][36] ([i915#10197] / [i915#10211] / [i915#4079])
   [36]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/bat-arls-2/igt@gem_render_tiled_blits@basic.html

  * igt@gem_tiled_pread_basic:
    - bat-arls-2:         NOTRUN -> [SKIP][37] ([i915#10206] / [i915#4079])
   [37]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/bat-arls-2/igt@gem_tiled_pread_basic.html

  * igt@i915_pm_rps@basic-api:
    - bat-arls-2:         NOTRUN -> [SKIP][38] ([i915#10209])
   [38]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/bat-arls-2/igt@i915_pm_rps@basic-api.html

  * igt@i915_selftest@live@hangcheck:
    - bat-arls-2:         NOTRUN -> [DMESG-WARN][39] ([i915#11349] / [i915#11378])
   [39]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/bat-arls-2/igt@i915_selftest@live@hangcheck.html

  * igt@kms_addfb_basic@addfb25-y-tiled-small-legacy:
    - bat-arls-2:         NOTRUN -> [SKIP][40] ([i915#10200]) +9 other tests skip
   [40]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/bat-arls-2/igt@kms_addfb_basic@addfb25-y-tiled-small-legacy.html

  * igt@kms_cursor_legacy@basic-busy-flip-before-cursor-legacy:
    - bat-arls-2:         NOTRUN -> [SKIP][41] ([i915#10202] / [i915#11346]) +1 other test skip
   [41]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/bat-arls-2/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-legacy.html

  * igt@kms_dsc@dsc-basic:
    - bat-arls-2:         NOTRUN -> [SKIP][42] ([i915#11346] / [i915#9886])
   [42]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/bat-arls-2/igt@kms_dsc@dsc-basic.html

  * igt@kms_force_connector_basic@force-load-detect:
    - fi-kbl-8809g:       NOTRUN -> [SKIP][43] +30 other tests skip
   [43]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/fi-kbl-8809g/igt@kms_force_connector_basic@force-load-detect.html
    - bat-arls-2:         NOTRUN -> [SKIP][44] ([i915#10207] / [i915#11346])
   [44]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/bat-arls-2/igt@kms_force_connector_basic@force-load-detect.html

  * igt@kms_psr@psr-primary-mmap-gtt@edp-1:
    - bat-arls-2:         NOTRUN -> [SKIP][45] ([i915#10196] / [i915#4077] / [i915#9688])
   [45]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/bat-arls-2/igt@kms_psr@psr-primary-mmap-gtt@edp-1.html

  * igt@kms_setmode@basic-clone-single-crtc:
    - bat-arls-2:         NOTRUN -> [SKIP][46] ([i915#10208] / [i915#8809])
   [46]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/bat-arls-2/igt@kms_setmode@basic-clone-single-crtc.html

  * igt@prime_vgem@basic-fence-mmap:
    - bat-arls-2:         NOTRUN -> [SKIP][47] ([i915#10196] / [i915#3708] / [i915#4077]) +1 other test skip
   [47]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/bat-arls-2/igt@prime_vgem@basic-fence-mmap.html

  * igt@prime_vgem@basic-fence-read:
    - bat-arls-2:         NOTRUN -> [SKIP][48] ([i915#10212] / [i915#3708])
   [48]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/bat-arls-2/igt@prime_vgem@basic-fence-read.html

  * igt@prime_vgem@basic-read:
    - bat-arls-2:         NOTRUN -> [SKIP][49] ([i915#10214] / [i915#3708])
   [49]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/bat-arls-2/igt@prime_vgem@basic-read.html

  * igt@prime_vgem@basic-write:
    - bat-arls-2:         NOTRUN -> [SKIP][50] ([i915#10216] / [i915#3708])
   [50]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/bat-arls-2/igt@prime_vgem@basic-write.html

  
  {name}: This element is suppressed. This means it is ignored when computing
          the status of the difference (SUCCESS, WARNING, or FAILURE).

  [i915#10196]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10196
  [i915#10197]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10197
  [i915#10200]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10200
  [i915#10202]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10202
  [i915#10206]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10206
  [i915#10207]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10207
  [i915#10208]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10208
  [i915#10209]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10209
  [i915#10211]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10211
  [i915#10212]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10212
  [i915#10213]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10213
  [i915#10214]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10214
  [i915#10216]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10216
  [i915#11343]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11343
  [i915#11346]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11346
  [i915#11349]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11349
  [i915#11378]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11378
  [i915#11666]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11666
  [i915#11671]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11671
  [i915#11681]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11681
  [i915#11723]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11723
  [i915#11724]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11724
  [i915#11725]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11725
  [i915#11726]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11726
  [i915#11781]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11781
  [i915#2190]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2190
  [i915#3708]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3708
  [i915#4077]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4077
  [i915#4079]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4079
  [i915#4083]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4083
  [i915#4613]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4613
  [i915#8809]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8809
  [i915#9318]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9318
  [i915#9688]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9688
  [i915#9886]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9886


Build changes
-------------

  * Linux: CI_DRM_15146 -> Patchwork_134541v3

  CI-20190529: 20190529
  CI_DRM_15146: 6f226dd91cbd83b14b375dac4246f617f0b98288 @ git://anongit.freedesktop.org/gfx-ci/linux
  IGT_7940: 2a73158fa69a2b8e20d5a0bdf773ee194bfe13c2 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
  Patchwork_134541v3: 6f226dd91cbd83b14b375dac4246f617f0b98288 @ git://anongit.freedesktop.org/gfx-ci/linux

== Logs ==

For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/index.html

[-- Attachment #2: Type: text/html, Size: 16086 bytes --]

^ permalink raw reply	[flat|nested] 24+ messages in thread

* ✗ Fi.CI.IGT: failure for Implement WA to fix increased power usage (rev3)
  2024-06-19  4:37 [PATCH 0/2] Implement WA to fix increased power usage Suraj Kandpal
                   ` (3 preceding siblings ...)
  2024-07-29 11:43 ` ✓ Fi.CI.BAT: success for Implement WA to fix increased power usage (rev3) Patchwork
@ 2024-07-30  5:30 ` Patchwork
  4 siblings, 0 replies; 24+ messages in thread
From: Patchwork @ 2024-07-30  5:30 UTC (permalink / raw)
  To: Kandpal, Suraj; +Cc: intel-gfx

[-- Attachment #1: Type: text/plain, Size: 83584 bytes --]

== Series Details ==

Series: Implement WA to fix increased power usage (rev3)
URL   : https://patchwork.freedesktop.org/series/134541/
State : failure

== Summary ==

CI Bug Log - changes from CI_DRM_15146_full -> Patchwork_134541v3_full
====================================================

Summary
-------

  **FAILURE**

  Serious unknown changes coming with Patchwork_134541v3_full absolutely need to be
  verified manually.
  
  If you think the reported changes have nothing to do with the changes
  introduced in Patchwork_134541v3_full, please notify your bug team (I915-ci-infra@lists.freedesktop.org) to allow them
  to document this new failure mode, which will reduce false positives in CI.

  

Participating hosts (10 -> 10)
------------------------------

  No changes in participating hosts

Possible new issues
-------------------

  Here are the unknown changes that may have been introduced in Patchwork_134541v3_full:

### IGT changes ###

#### Possible regressions ####

  * igt@gem_eio@suspend:
    - shard-dg1:          [PASS][1] -> [FAIL][2]
   [1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15146/shard-dg1-13/igt@gem_eio@suspend.html
   [2]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-dg1-13/igt@gem_eio@suspend.html

  * igt@kms_flip@flip-vs-suspend@b-edp1:
    - shard-mtlp:         [PASS][3] -> [FAIL][4] +4 other tests fail
   [3]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15146/shard-mtlp-1/igt@kms_flip@flip-vs-suspend@b-edp1.html
   [4]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-mtlp-8/igt@kms_flip@flip-vs-suspend@b-edp1.html

  * igt@kms_psr@psr2-cursor-blt@edp-1:
    - shard-mtlp:         NOTRUN -> [FAIL][5] +2 other tests fail
   [5]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-mtlp-3/igt@kms_psr@psr2-cursor-blt@edp-1.html

  * igt@kms_psr_stress_test@flip-primary-invalidate-overlay:
    - shard-mtlp:         [PASS][6] -> [SKIP][7]
   [6]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15146/shard-mtlp-7/igt@kms_psr_stress_test@flip-primary-invalidate-overlay.html
   [7]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-mtlp-6/igt@kms_psr_stress_test@flip-primary-invalidate-overlay.html

  * igt@kms_psr_stress_test@invalidate-primary-flip-overlay:
    - shard-mtlp:         NOTRUN -> [SKIP][8]
   [8]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-mtlp-3/igt@kms_psr_stress_test@invalidate-primary-flip-overlay.html

  
#### Warnings ####

  * igt@kms_big_fb@linear-8bpp-rotate-90:
    - shard-mtlp:         [SKIP][9] -> [ABORT][10]
   [9]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15146/shard-mtlp-2/igt@kms_big_fb@linear-8bpp-rotate-90.html
   [10]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-mtlp-1/igt@kms_big_fb@linear-8bpp-rotate-90.html

  * igt@kms_pm_dc@dc3co-vpb-simulation:
    - shard-mtlp:         [SKIP][11] ([i915#9292]) -> [SKIP][12]
   [11]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15146/shard-mtlp-3/igt@kms_pm_dc@dc3co-vpb-simulation.html
   [12]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-mtlp-7/igt@kms_pm_dc@dc3co-vpb-simulation.html

  
Known issues
------------

  Here are the changes found in Patchwork_134541v3_full that come from known issues:

### IGT changes ###

#### Issues hit ####

  * igt@api_intel_bb@blit-reloc-keep-cache:
    - shard-rkl:          NOTRUN -> [SKIP][13] ([i915#8411])
   [13]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-rkl-4/igt@api_intel_bb@blit-reloc-keep-cache.html

  * igt@api_intel_bb@object-reloc-purge-cache:
    - shard-dg1:          NOTRUN -> [SKIP][14] ([i915#8411])
   [14]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-dg1-13/igt@api_intel_bb@object-reloc-purge-cache.html

  * igt@debugfs_test@basic-hwmon:
    - shard-mtlp:         NOTRUN -> [SKIP][15] ([i915#9318])
   [15]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-mtlp-2/igt@debugfs_test@basic-hwmon.html

  * igt@device_reset@unbind-cold-reset-rebind:
    - shard-rkl:          NOTRUN -> [SKIP][16] ([i915#11078])
   [16]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-rkl-3/igt@device_reset@unbind-cold-reset-rebind.html
    - shard-mtlp:         NOTRUN -> [SKIP][17] ([i915#11078])
   [17]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-mtlp-4/igt@device_reset@unbind-cold-reset-rebind.html

  * igt@drm_fdinfo@all-busy-check-all:
    - shard-dg2:          NOTRUN -> [SKIP][18] ([i915#8414])
   [18]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-dg2-11/igt@drm_fdinfo@all-busy-check-all.html

  * igt@drm_fdinfo@isolation@rcs0:
    - shard-mtlp:         NOTRUN -> [SKIP][19] ([i915#8414]) +5 other tests skip
   [19]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-mtlp-3/igt@drm_fdinfo@isolation@rcs0.html

  * igt@drm_fdinfo@virtual-busy-all:
    - shard-dg1:          NOTRUN -> [SKIP][20] ([i915#8414])
   [20]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-dg1-13/igt@drm_fdinfo@virtual-busy-all.html

  * igt@gem_ccs@block-copy-compressed:
    - shard-mtlp:         NOTRUN -> [SKIP][21] ([i915#3555] / [i915#9323])
   [21]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-mtlp-4/igt@gem_ccs@block-copy-compressed.html
    - shard-rkl:          NOTRUN -> [SKIP][22] ([i915#3555] / [i915#9323])
   [22]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-rkl-3/igt@gem_ccs@block-copy-compressed.html

  * igt@gem_ccs@block-multicopy-compressed:
    - shard-mtlp:         NOTRUN -> [SKIP][23] ([i915#9323])
   [23]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-mtlp-3/igt@gem_ccs@block-multicopy-compressed.html

  * igt@gem_ccs@ctrl-surf-copy-new-ctx:
    - shard-rkl:          NOTRUN -> [SKIP][24] ([i915#9323])
   [24]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-rkl-4/igt@gem_ccs@ctrl-surf-copy-new-ctx.html

  * igt@gem_ccs@suspend-resume:
    - shard-dg1:          NOTRUN -> [SKIP][25] ([i915#9323])
   [25]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-dg1-13/igt@gem_ccs@suspend-resume.html

  * igt@gem_create@create-ext-set-pat:
    - shard-dg2:          NOTRUN -> [SKIP][26] ([i915#8562])
   [26]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-dg2-10/igt@gem_create@create-ext-set-pat.html

  * igt@gem_ctx_freq@sysfs@gt0:
    - shard-dg2:          [PASS][27] -> [FAIL][28] ([i915#9561])
   [27]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15146/shard-dg2-6/igt@gem_ctx_freq@sysfs@gt0.html
   [28]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-dg2-6/igt@gem_ctx_freq@sysfs@gt0.html

  * igt@gem_ctx_persistence@heartbeat-many:
    - shard-dg1:          NOTRUN -> [SKIP][29] ([i915#8555])
   [29]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-dg1-13/igt@gem_ctx_persistence@heartbeat-many.html

  * igt@gem_ctx_persistence@heartbeat-stop:
    - shard-dg2:          NOTRUN -> [SKIP][30] ([i915#8555])
   [30]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-dg2-11/igt@gem_ctx_persistence@heartbeat-stop.html

  * igt@gem_ctx_sseu@engines:
    - shard-rkl:          NOTRUN -> [SKIP][31] ([i915#280])
   [31]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-rkl-4/igt@gem_ctx_sseu@engines.html

  * igt@gem_ctx_sseu@mmap-args:
    - shard-mtlp:         NOTRUN -> [SKIP][32] ([i915#280])
   [32]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-mtlp-2/igt@gem_ctx_sseu@mmap-args.html

  * igt@gem_exec_balancer@parallel:
    - shard-rkl:          NOTRUN -> [SKIP][33] ([i915#4525]) +1 other test skip
   [33]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-rkl-5/igt@gem_exec_balancer@parallel.html

  * igt@gem_exec_capture@capture-invisible@lmem0:
    - shard-dg1:          NOTRUN -> [SKIP][34] ([i915#6334]) +1 other test skip
   [34]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-dg1-13/igt@gem_exec_capture@capture-invisible@lmem0.html

  * igt@gem_exec_fair@basic-none-solo:
    - shard-dg2:          NOTRUN -> [SKIP][35] ([i915#3539] / [i915#4852]) +3 other tests skip
   [35]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-dg2-11/igt@gem_exec_fair@basic-none-solo.html

  * igt@gem_exec_fair@basic-none-vip:
    - shard-mtlp:         NOTRUN -> [SKIP][36] ([i915#4473] / [i915#4771]) +2 other tests skip
   [36]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-mtlp-2/igt@gem_exec_fair@basic-none-vip.html

  * igt@gem_exec_fair@basic-pace-share@rcs0:
    - shard-rkl:          [PASS][37] -> [FAIL][38] ([i915#2842])
   [37]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15146/shard-rkl-4/igt@gem_exec_fair@basic-pace-share@rcs0.html
   [38]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-rkl-3/igt@gem_exec_fair@basic-pace-share@rcs0.html
    - shard-tglu:         [PASS][39] -> [FAIL][40] ([i915#2842])
   [39]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15146/shard-tglu-8/igt@gem_exec_fair@basic-pace-share@rcs0.html
   [40]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-tglu-8/igt@gem_exec_fair@basic-pace-share@rcs0.html

  * igt@gem_exec_fair@basic-pace-solo@rcs0:
    - shard-tglu:         NOTRUN -> [FAIL][41] ([i915#2842])
   [41]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-tglu-7/igt@gem_exec_fair@basic-pace-solo@rcs0.html

  * igt@gem_exec_fair@basic-pace@rcs0:
    - shard-rkl:          NOTRUN -> [FAIL][42] ([i915#2842]) +4 other tests fail
   [42]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-rkl-5/igt@gem_exec_fair@basic-pace@rcs0.html

  * igt@gem_exec_fence@submit:
    - shard-dg2:          NOTRUN -> [SKIP][43] ([i915#4812]) +1 other test skip
   [43]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-dg2-10/igt@gem_exec_fence@submit.html

  * igt@gem_exec_fence@submit3:
    - shard-mtlp:         NOTRUN -> [SKIP][44] ([i915#4812])
   [44]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-mtlp-4/igt@gem_exec_fence@submit3.html

  * igt@gem_exec_reloc@basic-active:
    - shard-dg2:          NOTRUN -> [SKIP][45] ([i915#3281]) +3 other tests skip
   [45]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-dg2-10/igt@gem_exec_reloc@basic-active.html

  * igt@gem_exec_reloc@basic-wc-gtt-noreloc:
    - shard-mtlp:         NOTRUN -> [SKIP][46] ([i915#3281]) +6 other tests skip
   [46]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-mtlp-2/igt@gem_exec_reloc@basic-wc-gtt-noreloc.html

  * igt@gem_exec_reloc@basic-write-gtt:
    - shard-dg1:          NOTRUN -> [SKIP][47] ([i915#3281]) +4 other tests skip
   [47]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-dg1-13/igt@gem_exec_reloc@basic-write-gtt.html

  * igt@gem_exec_reloc@basic-write-read-noreloc:
    - shard-rkl:          NOTRUN -> [SKIP][48] ([i915#3281]) +3 other tests skip
   [48]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-rkl-5/igt@gem_exec_reloc@basic-write-read-noreloc.html

  * igt@gem_exec_schedule@preempt-queue-chain:
    - shard-mtlp:         NOTRUN -> [SKIP][49] ([i915#4537] / [i915#4812]) +1 other test skip
   [49]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-mtlp-2/igt@gem_exec_schedule@preempt-queue-chain.html

  * igt@gem_fence_thrash@bo-write-verify-none:
    - shard-mtlp:         NOTRUN -> [SKIP][50] ([i915#4860]) +1 other test skip
   [50]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-mtlp-3/igt@gem_fence_thrash@bo-write-verify-none.html

  * igt@gem_huc_copy@huc-copy:
    - shard-tglu:         NOTRUN -> [SKIP][51] ([i915#2190])
   [51]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-tglu-7/igt@gem_huc_copy@huc-copy.html

  * igt@gem_lmem_swapping@basic@lmem0:
    - shard-dg2:          [PASS][52] -> [FAIL][53] ([i915#10378])
   [52]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15146/shard-dg2-1/igt@gem_lmem_swapping@basic@lmem0.html
   [53]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-dg2-5/igt@gem_lmem_swapping@basic@lmem0.html

  * igt@gem_lmem_swapping@heavy-verify-multi-ccs@lmem0:
    - shard-dg1:          NOTRUN -> [SKIP][54] ([i915#4565])
   [54]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-dg1-13/igt@gem_lmem_swapping@heavy-verify-multi-ccs@lmem0.html

  * igt@gem_lmem_swapping@heavy-verify-multi@lmem0:
    - shard-dg1:          [PASS][55] -> [FAIL][56] ([i915#10378])
   [55]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15146/shard-dg1-15/igt@gem_lmem_swapping@heavy-verify-multi@lmem0.html
   [56]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-dg1-18/igt@gem_lmem_swapping@heavy-verify-multi@lmem0.html

  * igt@gem_lmem_swapping@heavy-verify-random-ccs@lmem0:
    - shard-dg2:          [PASS][57] -> [FAIL][58] ([i915#10446])
   [57]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15146/shard-dg2-10/igt@gem_lmem_swapping@heavy-verify-random-ccs@lmem0.html
   [58]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-dg2-11/igt@gem_lmem_swapping@heavy-verify-random-ccs@lmem0.html

  * igt@gem_lmem_swapping@massive-random:
    - shard-mtlp:         NOTRUN -> [SKIP][59] ([i915#4613]) +2 other tests skip
   [59]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-mtlp-4/igt@gem_lmem_swapping@massive-random.html

  * igt@gem_lmem_swapping@parallel-multi:
    - shard-rkl:          NOTRUN -> [SKIP][60] ([i915#4613]) +3 other tests skip
   [60]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-rkl-4/igt@gem_lmem_swapping@parallel-multi.html

  * igt@gem_mmap_wc@read-write:
    - shard-mtlp:         NOTRUN -> [SKIP][61] ([i915#4083]) +3 other tests skip
   [61]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-mtlp-3/igt@gem_mmap_wc@read-write.html

  * igt@gem_mmap_wc@write-cpu-read-wc:
    - shard-dg2:          NOTRUN -> [SKIP][62] ([i915#4083]) +2 other tests skip
   [62]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-dg2-10/igt@gem_mmap_wc@write-cpu-read-wc.html

  * igt@gem_partial_pwrite_pread@write:
    - shard-dg2:          NOTRUN -> [SKIP][63] ([i915#3282]) +3 other tests skip
   [63]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-dg2-10/igt@gem_partial_pwrite_pread@write.html

  * igt@gem_partial_pwrite_pread@write-display:
    - shard-mtlp:         NOTRUN -> [SKIP][64] ([i915#3282]) +3 other tests skip
   [64]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-mtlp-3/igt@gem_partial_pwrite_pread@write-display.html

  * igt@gem_pread@bench:
    - shard-dg1:          NOTRUN -> [SKIP][65] ([i915#3282]) +3 other tests skip
   [65]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-dg1-13/igt@gem_pread@bench.html

  * igt@gem_pwrite@basic-random:
    - shard-rkl:          NOTRUN -> [SKIP][66] ([i915#3282]) +1 other test skip
   [66]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-rkl-3/igt@gem_pwrite@basic-random.html

  * igt@gem_pxp@create-protected-buffer:
    - shard-rkl:          NOTRUN -> [SKIP][67] ([i915#4270]) +2 other tests skip
   [67]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-rkl-5/igt@gem_pxp@create-protected-buffer.html

  * igt@gem_pxp@fail-invalid-protected-context:
    - shard-tglu:         NOTRUN -> [SKIP][68] ([i915#4270])
   [68]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-tglu-7/igt@gem_pxp@fail-invalid-protected-context.html

  * igt@gem_pxp@reject-modify-context-protection-off-2:
    - shard-dg2:          NOTRUN -> [SKIP][69] ([i915#4270])
   [69]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-dg2-11/igt@gem_pxp@reject-modify-context-protection-off-2.html

  * igt@gem_pxp@verify-pxp-stale-buf-execution:
    - shard-dg1:          NOTRUN -> [SKIP][70] ([i915#4270])
   [70]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-dg1-13/igt@gem_pxp@verify-pxp-stale-buf-execution.html

  * igt@gem_pxp@verify-pxp-stale-buf-optout-execution:
    - shard-mtlp:         NOTRUN -> [SKIP][71] ([i915#4270]) +2 other tests skip
   [71]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-mtlp-4/igt@gem_pxp@verify-pxp-stale-buf-optout-execution.html

  * igt@gem_render_copy@y-tiled-ccs-to-yf-tiled:
    - shard-mtlp:         NOTRUN -> [SKIP][72] ([i915#8428]) +2 other tests skip
   [72]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-mtlp-4/igt@gem_render_copy@y-tiled-ccs-to-yf-tiled.html

  * igt@gem_render_copy@yf-tiled-ccs-to-x-tiled:
    - shard-dg2:          NOTRUN -> [SKIP][73] ([i915#5190] / [i915#8428]) +1 other test skip
   [73]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-dg2-10/igt@gem_render_copy@yf-tiled-ccs-to-x-tiled.html

  * igt@gem_set_tiling_vs_blt@tiled-to-untiled:
    - shard-dg1:          NOTRUN -> [SKIP][74] ([i915#4079])
   [74]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-dg1-13/igt@gem_set_tiling_vs_blt@tiled-to-untiled.html

  * igt@gem_softpin@evict-snoop-interruptible:
    - shard-dg1:          NOTRUN -> [SKIP][75] ([i915#4885])
   [75]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-dg1-13/igt@gem_softpin@evict-snoop-interruptible.html

  * igt@gem_tiled_partial_pwrite_pread@writes-after-reads:
    - shard-dg1:          NOTRUN -> [SKIP][76] ([i915#4077]) +2 other tests skip
   [76]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-dg1-13/igt@gem_tiled_partial_pwrite_pread@writes-after-reads.html

  * igt@gem_tiling_max_stride:
    - shard-mtlp:         NOTRUN -> [SKIP][77] ([i915#4077]) +3 other tests skip
   [77]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-mtlp-3/igt@gem_tiling_max_stride.html

  * igt@gem_unfence_active_buffers:
    - shard-dg2:          NOTRUN -> [SKIP][78] ([i915#4879])
   [78]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-dg2-6/igt@gem_unfence_active_buffers.html

  * igt@gem_userptr_blits@create-destroy-unsync:
    - shard-rkl:          NOTRUN -> [SKIP][79] ([i915#3297]) +2 other tests skip
   [79]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-rkl-5/igt@gem_userptr_blits@create-destroy-unsync.html

  * igt@gem_userptr_blits@dmabuf-unsync:
    - shard-dg2:          NOTRUN -> [SKIP][80] ([i915#3297]) +1 other test skip
   [80]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-dg2-11/igt@gem_userptr_blits@dmabuf-unsync.html

  * igt@gem_userptr_blits@invalid-mmap-offset-unsync:
    - shard-mtlp:         NOTRUN -> [SKIP][81] ([i915#3297]) +1 other test skip
   [81]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-mtlp-3/igt@gem_userptr_blits@invalid-mmap-offset-unsync.html

  * igt@gem_userptr_blits@map-fixed-invalidate-busy:
    - shard-dg2:          NOTRUN -> [SKIP][82] ([i915#3297] / [i915#4880])
   [82]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-dg2-10/igt@gem_userptr_blits@map-fixed-invalidate-busy.html

  * igt@gem_userptr_blits@map-fixed-invalidate-overlap-busy:
    - shard-dg1:          NOTRUN -> [SKIP][83] ([i915#3297] / [i915#4880])
   [83]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-dg1-13/igt@gem_userptr_blits@map-fixed-invalidate-overlap-busy.html

  * igt@gen9_exec_parse@allowed-all:
    - shard-dg2:          NOTRUN -> [SKIP][84] ([i915#2856]) +1 other test skip
   [84]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-dg2-11/igt@gen9_exec_parse@allowed-all.html

  * igt@gen9_exec_parse@batch-zero-length:
    - shard-mtlp:         NOTRUN -> [SKIP][85] ([i915#2856]) +2 other tests skip
   [85]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-mtlp-3/igt@gen9_exec_parse@batch-zero-length.html

  * igt@gen9_exec_parse@bb-chained:
    - shard-rkl:          NOTRUN -> [SKIP][86] ([i915#2527])
   [86]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-rkl-3/igt@gen9_exec_parse@bb-chained.html

  * igt@gen9_exec_parse@bb-oversize:
    - shard-tglu:         NOTRUN -> [SKIP][87] ([i915#2527] / [i915#2856])
   [87]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-tglu-7/igt@gen9_exec_parse@bb-oversize.html

  * igt@gen9_exec_parse@unaligned-access:
    - shard-dg1:          NOTRUN -> [SKIP][88] ([i915#2527])
   [88]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-dg1-13/igt@gen9_exec_parse@unaligned-access.html

  * igt@i915_module_load@reload-with-fault-injection:
    - shard-rkl:          NOTRUN -> [ABORT][89] ([i915#9820])
   [89]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-rkl-3/igt@i915_module_load@reload-with-fault-injection.html
    - shard-mtlp:         NOTRUN -> [ABORT][90] ([i915#10131] / [i915#10887] / [i915#9820])
   [90]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-mtlp-4/igt@i915_module_load@reload-with-fault-injection.html

  * igt@i915_pm_rpm@gem-mmap-type@gtt-smem0:
    - shard-mtlp:         NOTRUN -> [SKIP][91] ([i915#8431])
   [91]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-mtlp-4/igt@i915_pm_rpm@gem-mmap-type@gtt-smem0.html

  * igt@i915_pm_rps@min-max-config-loaded:
    - shard-dg2:          NOTRUN -> [SKIP][92] ([i915#6621])
   [92]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-dg2-10/igt@i915_pm_rps@min-max-config-loaded.html

  * igt@i915_pm_rps@reset:
    - shard-mtlp:         NOTRUN -> [FAIL][93] ([i915#8346])
   [93]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-mtlp-4/igt@i915_pm_rps@reset.html

  * igt@i915_pm_rps@thresholds-idle@gt0:
    - shard-dg2:          NOTRUN -> [SKIP][94] ([i915#8925])
   [94]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-dg2-10/igt@i915_pm_rps@thresholds-idle@gt0.html

  * igt@i915_pm_rps@thresholds-park@gt0:
    - shard-mtlp:         NOTRUN -> [SKIP][95] ([i915#8925])
   [95]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-mtlp-3/igt@i915_pm_rps@thresholds-park@gt0.html

  * igt@i915_pm_rps@thresholds-park@gt1:
    - shard-mtlp:         NOTRUN -> [SKIP][96] ([i915#3555] / [i915#8925])
   [96]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-mtlp-3/igt@i915_pm_rps@thresholds-park@gt1.html

  * igt@intel_hwmon@hwmon-read:
    - shard-mtlp:         NOTRUN -> [SKIP][97] ([i915#7707])
   [97]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-mtlp-2/igt@intel_hwmon@hwmon-read.html

  * igt@kms_addfb_basic@invalid-smem-bo-on-discrete:
    - shard-mtlp:         NOTRUN -> [SKIP][98] ([i915#3826])
   [98]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-mtlp-3/igt@kms_addfb_basic@invalid-smem-bo-on-discrete.html

  * igt@kms_async_flips@async-flip-with-page-flip-events@pipe-a-edp-1-4-rc-ccs-cc:
    - shard-mtlp:         NOTRUN -> [SKIP][99] ([i915#8709]) +11 other tests skip
   [99]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-mtlp-4/igt@kms_async_flips@async-flip-with-page-flip-events@pipe-a-edp-1-4-rc-ccs-cc.html

  * igt@kms_async_flips@async-flip-with-page-flip-events@pipe-b-hdmi-a-2-y-rc-ccs-cc:
    - shard-rkl:          NOTRUN -> [SKIP][100] ([i915#8709]) +3 other tests skip
   [100]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-rkl-3/igt@kms_async_flips@async-flip-with-page-flip-events@pipe-b-hdmi-a-2-y-rc-ccs-cc.html

  * igt@kms_atomic_transition@plane-all-modeset-transition-fencing-internal-panels:
    - shard-dg2:          NOTRUN -> [SKIP][101] ([i915#1769] / [i915#3555])
   [101]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-dg2-10/igt@kms_atomic_transition@plane-all-modeset-transition-fencing-internal-panels.html

  * igt@kms_atomic_transition@plane-all-modeset-transition-fencing@pipe-a-hdmi-a-4:
    - shard-dg1:          [PASS][102] -> [FAIL][103] ([i915#5956])
   [102]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15146/shard-dg1-18/igt@kms_atomic_transition@plane-all-modeset-transition-fencing@pipe-a-hdmi-a-4.html
   [103]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-dg1-14/igt@kms_atomic_transition@plane-all-modeset-transition-fencing@pipe-a-hdmi-a-4.html

  * igt@kms_big_fb@4-tiled-8bpp-rotate-90:
    - shard-rkl:          NOTRUN -> [SKIP][104] ([i915#5286]) +2 other tests skip
   [104]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-rkl-5/igt@kms_big_fb@4-tiled-8bpp-rotate-90.html

  * igt@kms_big_fb@4-tiled-addfb-size-offset-overflow:
    - shard-tglu:         NOTRUN -> [SKIP][105] ([i915#5286]) +1 other test skip
   [105]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-tglu-7/igt@kms_big_fb@4-tiled-addfb-size-offset-overflow.html

  * igt@kms_big_fb@4-tiled-max-hw-stride-32bpp-rotate-180-hflip-async-flip:
    - shard-dg1:          NOTRUN -> [SKIP][106] ([i915#4538] / [i915#5286]) +1 other test skip
   [106]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-dg1-13/igt@kms_big_fb@4-tiled-max-hw-stride-32bpp-rotate-180-hflip-async-flip.html

  * igt@kms_big_fb@linear-32bpp-rotate-90:
    - shard-rkl:          NOTRUN -> [SKIP][107] ([i915#3638])
   [107]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-rkl-5/igt@kms_big_fb@linear-32bpp-rotate-90.html

  * igt@kms_big_fb@linear-8bpp-rotate-180:
    - shard-dg1:          NOTRUN -> [ABORT][108] ([i915#10354])
   [108]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-dg1-18/igt@kms_big_fb@linear-8bpp-rotate-180.html

  * igt@kms_big_fb@y-tiled-32bpp-rotate-180:
    - shard-mtlp:         NOTRUN -> [SKIP][109] +14 other tests skip
   [109]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-mtlp-4/igt@kms_big_fb@y-tiled-32bpp-rotate-180.html

  * igt@kms_big_fb@y-tiled-32bpp-rotate-90:
    - shard-dg2:          NOTRUN -> [SKIP][110] ([i915#4538] / [i915#5190]) +6 other tests skip
   [110]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-dg2-6/igt@kms_big_fb@y-tiled-32bpp-rotate-90.html

  * igt@kms_big_fb@y-tiled-8bpp-rotate-270:
    - shard-dg1:          NOTRUN -> [SKIP][111] ([i915#3638]) +1 other test skip
   [111]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-dg1-13/igt@kms_big_fb@y-tiled-8bpp-rotate-270.html

  * igt@kms_big_fb@yf-tiled-8bpp-rotate-270:
    - shard-dg1:          NOTRUN -> [SKIP][112] ([i915#4538]) +1 other test skip
   [112]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-dg1-13/igt@kms_big_fb@yf-tiled-8bpp-rotate-270.html

  * igt@kms_big_fb@yf-tiled-addfb-size-offset-overflow:
    - shard-mtlp:         NOTRUN -> [SKIP][113] ([i915#6187]) +3 other tests skip
   [113]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-mtlp-4/igt@kms_big_fb@yf-tiled-addfb-size-offset-overflow.html

  * igt@kms_ccs@bad-aux-stride-y-tiled-gen12-rc-ccs@pipe-d-hdmi-a-1:
    - shard-dg2:          NOTRUN -> [SKIP][114] ([i915#10307] / [i915#10434] / [i915#6095]) +6 other tests skip
   [114]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-dg2-10/igt@kms_ccs@bad-aux-stride-y-tiled-gen12-rc-ccs@pipe-d-hdmi-a-1.html

  * igt@kms_ccs@crc-sprite-planes-basic-4-tiled-mtl-rc-ccs@pipe-a-hdmi-a-2:
    - shard-rkl:          NOTRUN -> [SKIP][115] ([i915#6095]) +87 other tests skip
   [115]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-rkl-3/igt@kms_ccs@crc-sprite-planes-basic-4-tiled-mtl-rc-ccs@pipe-a-hdmi-a-2.html

  * igt@kms_ccs@crc-sprite-planes-basic-y-tiled-gen12-mc-ccs@pipe-d-hdmi-a-1:
    - shard-dg2:          NOTRUN -> [SKIP][116] ([i915#10307] / [i915#6095]) +176 other tests skip
   [116]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-dg2-10/igt@kms_ccs@crc-sprite-planes-basic-y-tiled-gen12-mc-ccs@pipe-d-hdmi-a-1.html

  * igt@kms_ccs@missing-ccs-buffer-yf-tiled-ccs@pipe-a-edp-1:
    - shard-mtlp:         NOTRUN -> [SKIP][117] ([i915#6095]) +35 other tests skip
   [117]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-mtlp-4/igt@kms_ccs@missing-ccs-buffer-yf-tiled-ccs@pipe-a-edp-1.html

  * igt@kms_ccs@random-ccs-data-4-tiled-dg2-mc-ccs@pipe-c-hdmi-a-3:
    - shard-dg1:          NOTRUN -> [SKIP][118] ([i915#6095]) +43 other tests skip
   [118]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-dg1-13/igt@kms_ccs@random-ccs-data-4-tiled-dg2-mc-ccs@pipe-c-hdmi-a-3.html

  * igt@kms_ccs@random-ccs-data-4-tiled-mtl-rc-ccs-cc@pipe-d-hdmi-a-1:
    - shard-tglu:         NOTRUN -> [SKIP][119] ([i915#6095]) +11 other tests skip
   [119]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-tglu-7/igt@kms_ccs@random-ccs-data-4-tiled-mtl-rc-ccs-cc@pipe-d-hdmi-a-1.html

  * igt@kms_cdclk@mode-transition@pipe-d-hdmi-a-1:
    - shard-dg2:          NOTRUN -> [SKIP][120] ([i915#11616] / [i915#7213]) +3 other tests skip
   [120]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-dg2-4/igt@kms_cdclk@mode-transition@pipe-d-hdmi-a-1.html

  * igt@kms_chamelium_edid@dp-edid-change-during-suspend:
    - shard-mtlp:         NOTRUN -> [SKIP][121] ([i915#7828]) +6 other tests skip
   [121]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-mtlp-3/igt@kms_chamelium_edid@dp-edid-change-during-suspend.html

  * igt@kms_chamelium_frames@dp-crc-multiple:
    - shard-dg2:          NOTRUN -> [SKIP][122] ([i915#7828]) +1 other test skip
   [122]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-dg2-11/igt@kms_chamelium_frames@dp-crc-multiple.html

  * igt@kms_chamelium_frames@hdmi-frame-dump:
    - shard-dg1:          NOTRUN -> [SKIP][123] ([i915#7828]) +2 other tests skip
   [123]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-dg1-13/igt@kms_chamelium_frames@hdmi-frame-dump.html

  * igt@kms_chamelium_hpd@dp-hpd-fast:
    - shard-tglu:         NOTRUN -> [SKIP][124] ([i915#7828]) +2 other tests skip
   [124]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-tglu-7/igt@kms_chamelium_hpd@dp-hpd-fast.html

  * igt@kms_chamelium_hpd@hdmi-hpd-fast:
    - shard-rkl:          NOTRUN -> [SKIP][125] ([i915#7828]) +4 other tests skip
   [125]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-rkl-4/igt@kms_chamelium_hpd@hdmi-hpd-fast.html

  * igt@kms_color@deep-color:
    - shard-rkl:          NOTRUN -> [SKIP][126] ([i915#3555]) +5 other tests skip
   [126]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-rkl-4/igt@kms_color@deep-color.html

  * igt@kms_content_protection@content-type-change:
    - shard-rkl:          NOTRUN -> [SKIP][127] ([i915#9424])
   [127]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-rkl-5/igt@kms_content_protection@content-type-change.html

  * igt@kms_content_protection@mei-interface:
    - shard-dg2:          NOTRUN -> [SKIP][128] ([i915#9424]) +1 other test skip
   [128]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-dg2-11/igt@kms_content_protection@mei-interface.html

  * igt@kms_content_protection@srm:
    - shard-dg1:          NOTRUN -> [SKIP][129] ([i915#7116])
   [129]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-dg1-15/igt@kms_content_protection@srm.html

  * igt@kms_content_protection@uevent:
    - shard-mtlp:         NOTRUN -> [SKIP][130] ([i915#6944] / [i915#9424]) +1 other test skip
   [130]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-mtlp-3/igt@kms_content_protection@uevent.html

  * igt@kms_cursor_crc@cursor-offscreen-512x170:
    - shard-tglu:         NOTRUN -> [SKIP][131] ([i915#11453])
   [131]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-tglu-7/igt@kms_cursor_crc@cursor-offscreen-512x170.html

  * igt@kms_cursor_crc@cursor-offscreen-512x512:
    - shard-rkl:          NOTRUN -> [SKIP][132] ([i915#11453])
   [132]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-rkl-4/igt@kms_cursor_crc@cursor-offscreen-512x512.html

  * igt@kms_cursor_crc@cursor-offscreen-64x21:
    - shard-mtlp:         NOTRUN -> [SKIP][133] ([i915#8814]) +2 other tests skip
   [133]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-mtlp-2/igt@kms_cursor_crc@cursor-offscreen-64x21.html

  * igt@kms_cursor_crc@cursor-offscreen-max-size:
    - shard-mtlp:         NOTRUN -> [SKIP][134] ([i915#3555] / [i915#8814])
   [134]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-mtlp-4/igt@kms_cursor_crc@cursor-offscreen-max-size.html

  * igt@kms_cursor_crc@cursor-rapid-movement-512x512:
    - shard-mtlp:         NOTRUN -> [SKIP][135] ([i915#3359])
   [135]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-mtlp-2/igt@kms_cursor_crc@cursor-rapid-movement-512x512.html

  * igt@kms_cursor_crc@cursor-sliding-32x10:
    - shard-dg2:          NOTRUN -> [SKIP][136] ([i915#3555])
   [136]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-dg2-10/igt@kms_cursor_crc@cursor-sliding-32x10.html

  * igt@kms_cursor_legacy@basic-busy-flip-before-cursor-legacy:
    - shard-rkl:          NOTRUN -> [SKIP][137] ([i915#4103])
   [137]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-rkl-5/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-legacy.html

  * igt@kms_cursor_legacy@cursora-vs-flipb-legacy:
    - shard-mtlp:         NOTRUN -> [SKIP][138] ([i915#9809]) +2 other tests skip
   [138]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-mtlp-3/igt@kms_cursor_legacy@cursora-vs-flipb-legacy.html

  * igt@kms_cursor_legacy@cursorb-vs-flipb-varying-size:
    - shard-dg2:          NOTRUN -> [SKIP][139] ([i915#5354]) +15 other tests skip
   [139]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-dg2-6/igt@kms_cursor_legacy@cursorb-vs-flipb-varying-size.html

  * igt@kms_display_modes@mst-extended-mode-negative:
    - shard-rkl:          NOTRUN -> [SKIP][140] ([i915#8588])
   [140]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-rkl-5/igt@kms_display_modes@mst-extended-mode-negative.html

  * igt@kms_dither@fb-8bpc-vs-panel-6bpc@pipe-a-hdmi-a-1:
    - shard-rkl:          NOTRUN -> [SKIP][141] ([i915#3804])
   [141]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-rkl-5/igt@kms_dither@fb-8bpc-vs-panel-6bpc@pipe-a-hdmi-a-1.html

  * igt@kms_draw_crc@draw-method-mmap-wc:
    - shard-dg2:          NOTRUN -> [SKIP][142] ([i915#8812])
   [142]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-dg2-10/igt@kms_draw_crc@draw-method-mmap-wc.html

  * igt@kms_dsc@dsc-fractional-bpp-with-bpc:
    - shard-mtlp:         NOTRUN -> [SKIP][143] ([i915#3840])
   [143]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-mtlp-2/igt@kms_dsc@dsc-fractional-bpp-with-bpc.html

  * igt@kms_fbcon_fbt@psr-suspend:
    - shard-tglu:         NOTRUN -> [SKIP][144] ([i915#3469])
   [144]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-tglu-7/igt@kms_fbcon_fbt@psr-suspend.html

  * igt@kms_feature_discovery@psr2:
    - shard-tglu:         NOTRUN -> [SKIP][145] ([i915#658])
   [145]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-tglu-7/igt@kms_feature_discovery@psr2.html

  * igt@kms_flip@2x-absolute-wf_vblank:
    - shard-dg1:          NOTRUN -> [SKIP][146] ([i915#9934]) +3 other tests skip
   [146]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-dg1-13/igt@kms_flip@2x-absolute-wf_vblank.html

  * igt@kms_flip@2x-flip-vs-blocking-wf-vblank:
    - shard-dg2:          NOTRUN -> [SKIP][147] +4 other tests skip
   [147]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-dg2-11/igt@kms_flip@2x-flip-vs-blocking-wf-vblank.html

  * igt@kms_flip@2x-flip-vs-expired-vblank:
    - shard-mtlp:         NOTRUN -> [SKIP][148] ([i915#3637]) +3 other tests skip
   [148]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-mtlp-3/igt@kms_flip@2x-flip-vs-expired-vblank.html

  * igt@kms_flip@flip-vs-fences:
    - shard-dg2:          NOTRUN -> [SKIP][149] ([i915#8381])
   [149]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-dg2-10/igt@kms_flip@flip-vs-fences.html

  * igt@kms_flip_scaled_crc@flip-32bpp-4tile-to-32bpp-4tiledg2rcccs-downscaling@pipe-a-default-mode:
    - shard-mtlp:         NOTRUN -> [SKIP][150] ([i915#2672]) +2 other tests skip
   [150]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-mtlp-3/igt@kms_flip_scaled_crc@flip-32bpp-4tile-to-32bpp-4tiledg2rcccs-downscaling@pipe-a-default-mode.html

  * igt@kms_flip_scaled_crc@flip-32bpp-4tile-to-32bpp-4tiledg2rcccs-upscaling@pipe-a-valid-mode:
    - shard-rkl:          NOTRUN -> [SKIP][151] ([i915#2672]) +4 other tests skip
   [151]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-rkl-4/igt@kms_flip_scaled_crc@flip-32bpp-4tile-to-32bpp-4tiledg2rcccs-upscaling@pipe-a-valid-mode.html

  * igt@kms_flip_scaled_crc@flip-32bpp-yftile-to-64bpp-yftile-upscaling@pipe-a-valid-mode:
    - shard-dg1:          NOTRUN -> [SKIP][152] ([i915#2587] / [i915#2672]) +1 other test skip
   [152]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-dg1-13/igt@kms_flip_scaled_crc@flip-32bpp-yftile-to-64bpp-yftile-upscaling@pipe-a-valid-mode.html

  * igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytilegen12rcccs-downscaling@pipe-a-default-mode:
    - shard-mtlp:         NOTRUN -> [SKIP][153] ([i915#2672] / [i915#3555]) +1 other test skip
   [153]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-mtlp-2/igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytilegen12rcccs-downscaling@pipe-a-default-mode.html

  * igt@kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-upscaling@pipe-a-valid-mode:
    - shard-dg2:          NOTRUN -> [SKIP][154] ([i915#2672]) +1 other test skip
   [154]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-dg2-11/igt@kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-upscaling@pipe-a-valid-mode.html

  * igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-32bpp-4tile-upscaling@pipe-a-valid-mode:
    - shard-tglu:         NOTRUN -> [SKIP][155] ([i915#2587] / [i915#2672])
   [155]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-tglu-7/igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-32bpp-4tile-upscaling@pipe-a-valid-mode.html

  * igt@kms_force_connector_basic@force-load-detect:
    - shard-rkl:          NOTRUN -> [SKIP][156] +19 other tests skip
   [156]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-rkl-3/igt@kms_force_connector_basic@force-load-detect.html

  * igt@kms_frontbuffer_tracking@fbc-1p-primscrn-cur-indfb-draw-pwrite:
    - shard-dg2:          [PASS][157] -> [FAIL][158] ([i915#6880]) +2 other tests fail
   [157]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15146/shard-dg2-8/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-cur-indfb-draw-pwrite.html
   [158]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-dg2-3/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-cur-indfb-draw-pwrite.html

  * igt@kms_frontbuffer_tracking@fbc-2p-primscrn-spr-indfb-onoff:
    - shard-mtlp:         NOTRUN -> [SKIP][159] ([i915#1825]) +23 other tests skip
   [159]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-mtlp-2/igt@kms_frontbuffer_tracking@fbc-2p-primscrn-spr-indfb-onoff.html

  * igt@kms_frontbuffer_tracking@fbc-rgb101010-draw-mmap-gtt:
    - shard-dg2:          NOTRUN -> [SKIP][160] ([i915#8708]) +8 other tests skip
   [160]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-dg2-10/igt@kms_frontbuffer_tracking@fbc-rgb101010-draw-mmap-gtt.html

  * igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-cur-indfb-draw-mmap-gtt:
    - shard-rkl:          NOTRUN -> [SKIP][161] ([i915#1825]) +21 other tests skip
   [161]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-rkl-5/igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-cur-indfb-draw-mmap-gtt.html

  * igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-pri-indfb-draw-mmap-gtt:
    - shard-dg1:          NOTRUN -> [SKIP][162] ([i915#8708]) +5 other tests skip
   [162]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-dg1-13/igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-pri-indfb-draw-mmap-gtt.html

  * igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-indfb-plflip-blt:
    - shard-dg1:          NOTRUN -> [SKIP][163] +8 other tests skip
   [163]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-dg1-13/igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-indfb-plflip-blt.html

  * igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-pri-indfb-draw-mmap-gtt:
    - shard-mtlp:         NOTRUN -> [SKIP][164] ([i915#8708]) +3 other tests skip
   [164]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-mtlp-4/igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-pri-indfb-draw-mmap-gtt.html

  * igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-spr-indfb-fullscreen:
    - shard-tglu:         NOTRUN -> [SKIP][165] +17 other tests skip
   [165]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-tglu-7/igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-spr-indfb-fullscreen.html

  * igt@kms_frontbuffer_tracking@psr-1p-offscren-pri-shrfb-draw-blt:
    - shard-rkl:          NOTRUN -> [SKIP][166] ([i915#3023]) +16 other tests skip
   [166]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-rkl-5/igt@kms_frontbuffer_tracking@psr-1p-offscren-pri-shrfb-draw-blt.html

  * igt@kms_frontbuffer_tracking@psr-1p-primscrn-pri-indfb-draw-blt:
    - shard-dg1:          NOTRUN -> [SKIP][167] ([i915#3458]) +2 other tests skip
   [167]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-dg1-13/igt@kms_frontbuffer_tracking@psr-1p-primscrn-pri-indfb-draw-blt.html

  * igt@kms_frontbuffer_tracking@psr-indfb-scaledprimary:
    - shard-dg2:          NOTRUN -> [SKIP][168] ([i915#3458]) +8 other tests skip
   [168]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-dg2-10/igt@kms_frontbuffer_tracking@psr-indfb-scaledprimary.html

  * igt@kms_hdr@bpc-switch:
    - shard-tglu:         NOTRUN -> [SKIP][169] ([i915#3555] / [i915#8228])
   [169]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-tglu-7/igt@kms_hdr@bpc-switch.html

  * igt@kms_hdr@static-toggle:
    - shard-dg1:          NOTRUN -> [SKIP][170] ([i915#3555] / [i915#8228])
   [170]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-dg1-13/igt@kms_hdr@static-toggle.html

  * igt@kms_hdr@static-toggle-dpms:
    - shard-dg2:          NOTRUN -> [SKIP][171] ([i915#3555] / [i915#8228]) +1 other test skip
   [171]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-dg2-7/igt@kms_hdr@static-toggle-dpms.html

  * igt@kms_plane@plane-panning-bottom-right-suspend@pipe-b:
    - shard-dg1:          [PASS][172] -> [FAIL][173] ([i915#11279])
   [172]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15146/shard-dg1-13/igt@kms_plane@plane-panning-bottom-right-suspend@pipe-b.html
   [173]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-dg1-13/igt@kms_plane@plane-panning-bottom-right-suspend@pipe-b.html

  * igt@kms_plane_lowres@tiling-none@pipe-b-edp-1:
    - shard-mtlp:         NOTRUN -> [SKIP][174] ([i915#10226] / [i915#11614] / [i915#3582]) +2 other tests skip
   [174]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-mtlp-2/igt@kms_plane_lowres@tiling-none@pipe-b-edp-1.html

  * igt@kms_plane_lowres@tiling-none@pipe-d-edp-1:
    - shard-mtlp:         NOTRUN -> [SKIP][175] ([i915#11614] / [i915#3582]) +4 other tests skip
   [175]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-mtlp-2/igt@kms_plane_lowres@tiling-none@pipe-d-edp-1.html

  * igt@kms_plane_lowres@tiling-yf:
    - shard-dg1:          NOTRUN -> [SKIP][176] ([i915#3555]) +2 other tests skip
   [176]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-dg1-13/igt@kms_plane_lowres@tiling-yf.html

  * igt@kms_plane_scaling@plane-downscale-factor-0-25-with-modifiers@pipe-a-hdmi-a-2:
    - shard-dg2:          NOTRUN -> [SKIP][177] ([i915#9423]) +24 other tests skip
   [177]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-dg2-3/igt@kms_plane_scaling@plane-downscale-factor-0-25-with-modifiers@pipe-a-hdmi-a-2.html

  * igt@kms_plane_scaling@plane-downscale-factor-0-25-with-pixel-format@pipe-a-hdmi-a-1:
    - shard-rkl:          NOTRUN -> [SKIP][178] ([i915#9423]) +7 other tests skip
   [178]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-rkl-5/igt@kms_plane_scaling@plane-downscale-factor-0-25-with-pixel-format@pipe-a-hdmi-a-1.html

  * igt@kms_plane_scaling@plane-scaler-unity-scaling-with-rotation@pipe-d-hdmi-a-4:
    - shard-dg1:          NOTRUN -> [SKIP][179] ([i915#9423]) +3 other tests skip
   [179]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-dg1-17/igt@kms_plane_scaling@plane-scaler-unity-scaling-with-rotation@pipe-d-hdmi-a-4.html

  * igt@kms_plane_scaling@planes-downscale-factor-0-25-upscale-20x20@pipe-b-hdmi-a-2:
    - shard-rkl:          NOTRUN -> [SKIP][180] ([i915#9728]) +11 other tests skip
   [180]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-rkl-3/igt@kms_plane_scaling@planes-downscale-factor-0-25-upscale-20x20@pipe-b-hdmi-a-2.html

  * igt@kms_plane_scaling@planes-downscale-factor-0-25-upscale-factor-0-25@pipe-b-hdmi-a-1:
    - shard-rkl:          NOTRUN -> [SKIP][181] ([i915#5235]) +1 other test skip
   [181]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-rkl-4/igt@kms_plane_scaling@planes-downscale-factor-0-25-upscale-factor-0-25@pipe-b-hdmi-a-1.html

  * igt@kms_plane_scaling@planes-downscale-factor-0-25-upscale-factor-0-25@pipe-c-hdmi-a-2:
    - shard-dg2:          NOTRUN -> [SKIP][182] ([i915#5235] / [i915#9423]) +2 other tests skip
   [182]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-dg2-3/igt@kms_plane_scaling@planes-downscale-factor-0-25-upscale-factor-0-25@pipe-c-hdmi-a-2.html

  * igt@kms_plane_scaling@planes-downscale-factor-0-5-unity-scaling@pipe-a-edp-1:
    - shard-mtlp:         NOTRUN -> [SKIP][183] ([i915#5235]) +9 other tests skip
   [183]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-mtlp-3/igt@kms_plane_scaling@planes-downscale-factor-0-5-unity-scaling@pipe-a-edp-1.html

  * igt@kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-25@pipe-a-hdmi-a-1:
    - shard-tglu:         NOTRUN -> [SKIP][184] ([i915#9728]) +3 other tests skip
   [184]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-tglu-7/igt@kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-25@pipe-a-hdmi-a-1.html

  * igt@kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-5@pipe-d-edp-1:
    - shard-mtlp:         NOTRUN -> [SKIP][185] ([i915#3555] / [i915#5235]) +1 other test skip
   [185]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-mtlp-3/igt@kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-5@pipe-d-edp-1.html

  * igt@kms_pm_backlight@bad-brightness:
    - shard-rkl:          NOTRUN -> [SKIP][186] ([i915#5354]) +1 other test skip
   [186]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-rkl-4/igt@kms_pm_backlight@bad-brightness.html

  * igt@kms_pm_backlight@fade-with-suspend:
    - shard-dg1:          NOTRUN -> [SKIP][187] ([i915#5354])
   [187]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-dg1-13/igt@kms_pm_backlight@fade-with-suspend.html

  * igt@kms_pm_dc@dc3co-vpb-simulation:
    - shard-rkl:          NOTRUN -> [SKIP][188] ([i915#9685]) +1 other test skip
   [188]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-rkl-5/igt@kms_pm_dc@dc3co-vpb-simulation.html

  * igt@kms_pm_dc@dc5-psr:
    - shard-dg2:          NOTRUN -> [SKIP][189] ([i915#9685])
   [189]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-dg2-11/igt@kms_pm_dc@dc5-psr.html

  * igt@kms_pm_rpm@dpms-mode-unset-non-lpsp:
    - shard-dg2:          [PASS][190] -> [SKIP][191] ([i915#9519]) +2 other tests skip
   [190]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15146/shard-dg2-3/igt@kms_pm_rpm@dpms-mode-unset-non-lpsp.html
   [191]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-dg2-4/igt@kms_pm_rpm@dpms-mode-unset-non-lpsp.html

  * igt@kms_pm_rpm@fences-dpms:
    - shard-dg2:          NOTRUN -> [SKIP][192] ([i915#4077]) +6 other tests skip
   [192]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-dg2-6/igt@kms_pm_rpm@fences-dpms.html

  * igt@kms_pm_rpm@modeset-non-lpsp:
    - shard-mtlp:         NOTRUN -> [SKIP][193] ([i915#9519])
   [193]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-mtlp-3/igt@kms_pm_rpm@modeset-non-lpsp.html
    - shard-rkl:          [PASS][194] -> [SKIP][195] ([i915#9519]) +1 other test skip
   [194]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15146/shard-rkl-1/igt@kms_pm_rpm@modeset-non-lpsp.html
   [195]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-rkl-5/igt@kms_pm_rpm@modeset-non-lpsp.html

  * igt@kms_pm_rpm@modeset-non-lpsp-stress:
    - shard-rkl:          NOTRUN -> [SKIP][196] ([i915#9519])
   [196]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-rkl-4/igt@kms_pm_rpm@modeset-non-lpsp-stress.html

  * igt@kms_prime@basic-modeset-hybrid:
    - shard-tglu:         NOTRUN -> [SKIP][197] ([i915#6524])
   [197]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-tglu-7/igt@kms_prime@basic-modeset-hybrid.html

  * igt@kms_psr2_sf@fbc-cursor-plane-move-continuous-sf:
    - shard-dg2:          NOTRUN -> [SKIP][198] ([i915#11520]) +1 other test skip
   [198]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-dg2-11/igt@kms_psr2_sf@fbc-cursor-plane-move-continuous-sf.html

  * igt@kms_psr2_sf@fbc-cursor-plane-update-sf:
    - shard-dg1:          NOTRUN -> [SKIP][199] ([i915#11520])
   [199]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-dg1-13/igt@kms_psr2_sf@fbc-cursor-plane-update-sf.html

  * igt@kms_psr2_sf@overlay-plane-move-continuous-exceed-fully-sf:
    - shard-mtlp:         NOTRUN -> [SKIP][200] ([i915#11520]) +22 other tests skip
   [200]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-mtlp-7/igt@kms_psr2_sf@overlay-plane-move-continuous-exceed-fully-sf.html
    - shard-rkl:          NOTRUN -> [SKIP][201] ([i915#11520]) +1 other test skip
   [201]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-rkl-5/igt@kms_psr2_sf@overlay-plane-move-continuous-exceed-fully-sf.html

  * igt@kms_psr2_sf@primary-plane-update-sf-dmg-area-big-fb:
    - shard-tglu:         NOTRUN -> [SKIP][202] ([i915#11520]) +1 other test skip
   [202]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-tglu-7/igt@kms_psr2_sf@primary-plane-update-sf-dmg-area-big-fb.html

  * igt@kms_psr@fbc-pr-cursor-plane-onoff:
    - shard-dg1:          NOTRUN -> [SKIP][203] ([i915#1072] / [i915#9732]) +5 other tests skip
   [203]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-dg1-13/igt@kms_psr@fbc-pr-cursor-plane-onoff.html

  * igt@kms_psr@fbc-psr-primary-mmap-gtt:
    - shard-dg2:          NOTRUN -> [SKIP][204] ([i915#1072] / [i915#9732]) +5 other tests skip
   [204]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-dg2-10/igt@kms_psr@fbc-psr-primary-mmap-gtt.html

  * igt@kms_psr@fbc-psr2-primary-blt:
    - shard-rkl:          NOTRUN -> [SKIP][205] ([i915#1072] / [i915#9732]) +14 other tests skip
   [205]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-rkl-4/igt@kms_psr@fbc-psr2-primary-blt.html

  * igt@kms_psr@pr-primary-mmap-cpu:
    - shard-mtlp:         NOTRUN -> [SKIP][206] ([i915#9688]) +9 other tests skip
   [206]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-mtlp-4/igt@kms_psr@pr-primary-mmap-cpu.html

  * igt@kms_psr@pr-sprite-mmap-cpu:
    - shard-tglu:         NOTRUN -> [SKIP][207] ([i915#9732]) +4 other tests skip
   [207]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-tglu-7/igt@kms_psr@pr-sprite-mmap-cpu.html

  * igt@kms_psr@psr-cursor-mmap-cpu:
    - shard-dg2:          NOTRUN -> [SKIP][208] ([i915#1072] / [i915#9673] / [i915#9732]) +5 other tests skip
   [208]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-dg2-11/igt@kms_psr@psr-cursor-mmap-cpu.html

  * igt@kms_psr@psr2-no-drrs@edp-1:
    - shard-mtlp:         [PASS][209] -> [FAIL][210] ([i915#10105]) +14 other tests fail
   [209]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15146/shard-mtlp-3/igt@kms_psr@psr2-no-drrs@edp-1.html
   [210]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-mtlp-6/igt@kms_psr@psr2-no-drrs@edp-1.html

  * igt@kms_rotation_crc@primary-rotation-90:
    - shard-dg2:          NOTRUN -> [SKIP][211] ([i915#11131])
   [211]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-dg2-10/igt@kms_rotation_crc@primary-rotation-90.html

  * igt@kms_rotation_crc@primary-yf-tiled-reflect-x-270:
    - shard-rkl:          NOTRUN -> [SKIP][212] ([i915#5289])
   [212]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-rkl-5/igt@kms_rotation_crc@primary-yf-tiled-reflect-x-270.html

  * igt@kms_setmode@invalid-clone-single-crtc:
    - shard-tglu:         NOTRUN -> [SKIP][213] ([i915#3555])
   [213]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-tglu-7/igt@kms_setmode@invalid-clone-single-crtc.html

  * igt@kms_tiled_display@basic-test-pattern:
    - shard-dg2:          NOTRUN -> [SKIP][214] ([i915#8623])
   [214]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-dg2-6/igt@kms_tiled_display@basic-test-pattern.html

  * igt@kms_universal_plane@cursor-fb-leak@pipe-d-hdmi-a-4:
    - shard-dg1:          NOTRUN -> [FAIL][215] ([i915#9196])
   [215]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-dg1-15/igt@kms_universal_plane@cursor-fb-leak@pipe-d-hdmi-a-4.html

  * igt@kms_vrr@flip-dpms:
    - shard-mtlp:         NOTRUN -> [SKIP][216] ([i915#3555] / [i915#8808])
   [216]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-mtlp-3/igt@kms_vrr@flip-dpms.html

  * igt@kms_vrr@max-min:
    - shard-mtlp:         NOTRUN -> [SKIP][217] ([i915#8808] / [i915#9906]) +1 other test skip
   [217]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-mtlp-4/igt@kms_vrr@max-min.html

  * igt@kms_vrr@seamless-rr-switch-drrs:
    - shard-rkl:          NOTRUN -> [SKIP][218] ([i915#9906]) +1 other test skip
   [218]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-rkl-4/igt@kms_vrr@seamless-rr-switch-drrs.html

  * igt@kms_writeback@writeback-check-output-xrgb2101010:
    - shard-dg1:          NOTRUN -> [SKIP][219] ([i915#2437] / [i915#9412])
   [219]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-dg1-13/igt@kms_writeback@writeback-check-output-xrgb2101010.html

  * igt@kms_writeback@writeback-pixel-formats:
    - shard-mtlp:         NOTRUN -> [SKIP][220] ([i915#2437] / [i915#9412])
   [220]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-mtlp-4/igt@kms_writeback@writeback-pixel-formats.html
    - shard-rkl:          NOTRUN -> [SKIP][221] ([i915#2437] / [i915#9412])
   [221]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-rkl-3/igt@kms_writeback@writeback-pixel-formats.html

  * igt@perf@gen12-group-concurrent-oa-buffer-read:
    - shard-dg2:          [PASS][222] -> [FAIL][223] ([i915#10538])
   [222]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15146/shard-dg2-8/igt@perf@gen12-group-concurrent-oa-buffer-read.html
   [223]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-dg2-2/igt@perf@gen12-group-concurrent-oa-buffer-read.html

  * igt@perf@global-sseu-config:
    - shard-dg2:          NOTRUN -> [SKIP][224] ([i915#7387])
   [224]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-dg2-11/igt@perf@global-sseu-config.html

  * igt@perf@mi-rpc:
    - shard-dg2:          NOTRUN -> [SKIP][225] ([i915#2434])
   [225]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-dg2-11/igt@perf@mi-rpc.html

  * igt@perf@unprivileged-single-ctx-counters:
    - shard-rkl:          NOTRUN -> [SKIP][226] ([i915#2433])
   [226]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-rkl-5/igt@perf@unprivileged-single-ctx-counters.html

  * igt@perf_pmu@busy-double-start@vecs1:
    - shard-dg2:          [PASS][227] -> [FAIL][228] ([i915#4349]) +3 other tests fail
   [227]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15146/shard-dg2-6/igt@perf_pmu@busy-double-start@vecs1.html
   [228]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-dg2-3/igt@perf_pmu@busy-double-start@vecs1.html

  * igt@prime_vgem@basic-fence-read:
    - shard-dg1:          NOTRUN -> [SKIP][229] ([i915#3708])
   [229]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-dg1-15/igt@prime_vgem@basic-fence-read.html

  * igt@prime_vgem@basic-read:
    - shard-rkl:          NOTRUN -> [SKIP][230] ([i915#3291] / [i915#3708])
   [230]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-rkl-4/igt@prime_vgem@basic-read.html

  * igt@prime_vgem@fence-write-hang:
    - shard-mtlp:         NOTRUN -> [SKIP][231] ([i915#3708])
   [231]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-mtlp-3/igt@prime_vgem@fence-write-hang.html

  * igt@sriov_basic@enable-vfs-autoprobe-off:
    - shard-rkl:          NOTRUN -> [SKIP][232] ([i915#9917])
   [232]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-rkl-5/igt@sriov_basic@enable-vfs-autoprobe-off.html

  * igt@sriov_basic@enable-vfs-bind-unbind-each:
    - shard-mtlp:         NOTRUN -> [SKIP][233] ([i915#9917])
   [233]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-mtlp-3/igt@sriov_basic@enable-vfs-bind-unbind-each.html

  * igt@syncobj_timeline@invalid-wait-zero-handles:
    - shard-mtlp:         NOTRUN -> [FAIL][234] ([i915#9781])
   [234]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-mtlp-2/igt@syncobj_timeline@invalid-wait-zero-handles.html

  * igt@syncobj_timeline@wait-all-for-submit-complex:
    - shard-dg1:          [PASS][235] -> [DMESG-WARN][236] ([i915#4423]) +1 other test dmesg-warn
   [235]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15146/shard-dg1-15/igt@syncobj_timeline@wait-all-for-submit-complex.html
   [236]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-dg1-14/igt@syncobj_timeline@wait-all-for-submit-complex.html

  
#### Possible fixes ####

  * igt@drm_fdinfo@idle@rcs0:
    - shard-rkl:          [FAIL][237] ([i915#7742]) -> [PASS][238] +1 other test pass
   [237]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15146/shard-rkl-2/igt@drm_fdinfo@idle@rcs0.html
   [238]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-rkl-3/igt@drm_fdinfo@idle@rcs0.html

  * igt@gem_eio@reset-stress:
    - shard-dg1:          [FAIL][239] ([i915#5784]) -> [PASS][240]
   [239]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15146/shard-dg1-16/igt@gem_eio@reset-stress.html
   [240]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-dg1-15/igt@gem_eio@reset-stress.html

  * igt@gem_exec_fair@basic-none-share@rcs0:
    - shard-rkl:          [FAIL][241] ([i915#2842]) -> [PASS][242]
   [241]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15146/shard-rkl-5/igt@gem_exec_fair@basic-none-share@rcs0.html
   [242]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-rkl-4/igt@gem_exec_fair@basic-none-share@rcs0.html

  * igt@gem_lmem_swapping@heavy-multi@lmem0:
    - shard-dg2:          [FAIL][243] ([i915#10378]) -> [PASS][244]
   [243]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15146/shard-dg2-8/igt@gem_lmem_swapping@heavy-multi@lmem0.html
   [244]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-dg2-2/igt@gem_lmem_swapping@heavy-multi@lmem0.html

  * igt@gem_softpin@noreloc-s3:
    - shard-mtlp:         [FAIL][245] -> [PASS][246]
   [245]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15146/shard-mtlp-8/igt@gem_softpin@noreloc-s3.html
   [246]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-mtlp-4/igt@gem_softpin@noreloc-s3.html

  * igt@gem_workarounds@suspend-resume:
    - shard-mtlp:         [FAIL][247] ([i915#10177]) -> [PASS][248]
   [247]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15146/shard-mtlp-8/igt@gem_workarounds@suspend-resume.html
   [248]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-mtlp-4/igt@gem_workarounds@suspend-resume.html

  * igt@i915_module_load@reload-with-fault-injection:
    - shard-dg1:          [ABORT][249] ([i915#9820]) -> [PASS][250]
   [249]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15146/shard-dg1-18/igt@i915_module_load@reload-with-fault-injection.html
   [250]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-dg1-15/igt@i915_module_load@reload-with-fault-injection.html

  * igt@kms_atomic_transition@plane-all-modeset-transition-fencing@pipe-a-hdmi-a-1:
    - shard-tglu:         [FAIL][251] -> [PASS][252]
   [251]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15146/shard-tglu-10/igt@kms_atomic_transition@plane-all-modeset-transition-fencing@pipe-a-hdmi-a-1.html
   [252]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-tglu-6/igt@kms_atomic_transition@plane-all-modeset-transition-fencing@pipe-a-hdmi-a-1.html

  * igt@kms_cursor_legacy@basic-flip-before-cursor-atomic:
    - shard-rkl:          [SKIP][253] -> [PASS][254] +5 other tests pass
   [253]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15146/shard-rkl-5/igt@kms_cursor_legacy@basic-flip-before-cursor-atomic.html
   [254]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-rkl-3/igt@kms_cursor_legacy@basic-flip-before-cursor-atomic.html

  * igt@kms_frontbuffer_tracking@fbc-1p-offscren-pri-shrfb-draw-pwrite:
    - shard-rkl:          [SKIP][255] ([i915#1849] / [i915#5354]) -> [PASS][256] +4 other tests pass
   [255]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15146/shard-rkl-5/igt@kms_frontbuffer_tracking@fbc-1p-offscren-pri-shrfb-draw-pwrite.html
   [256]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-rkl-3/igt@kms_frontbuffer_tracking@fbc-1p-offscren-pri-shrfb-draw-pwrite.html

  * igt@kms_pm_rpm@fences-dpms:
    - shard-rkl:          [SKIP][257] ([i915#1849]) -> [PASS][258]
   [257]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15146/shard-rkl-5/igt@kms_pm_rpm@fences-dpms.html
   [258]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-rkl-3/igt@kms_pm_rpm@fences-dpms.html

  * igt@kms_pm_rpm@modeset-lpsp:
    - shard-dg2:          [SKIP][259] ([i915#9519]) -> [PASS][260] +1 other test pass
   [259]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15146/shard-dg2-3/igt@kms_pm_rpm@modeset-lpsp.html
   [260]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-dg2-10/igt@kms_pm_rpm@modeset-lpsp.html
    - shard-rkl:          [SKIP][261] ([i915#9519]) -> [PASS][262] +2 other tests pass
   [261]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15146/shard-rkl-6/igt@kms_pm_rpm@modeset-lpsp.html
   [262]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-rkl-5/igt@kms_pm_rpm@modeset-lpsp.html

  * igt@perf@gen12-group-concurrent-oa-buffer-read:
    - shard-dg1:          [FAIL][263] ([i915#10538]) -> [PASS][264]
   [263]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15146/shard-dg1-15/igt@perf@gen12-group-concurrent-oa-buffer-read.html
   [264]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-dg1-18/igt@perf@gen12-group-concurrent-oa-buffer-read.html

  
#### Warnings ####

  * igt@gem_lmem_swapping@verify-random-ccs@lmem0:
    - shard-dg1:          [SKIP][265] ([i915#4565]) -> [SKIP][266] ([i915#4423] / [i915#4565])
   [265]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15146/shard-dg1-15/igt@gem_lmem_swapping@verify-random-ccs@lmem0.html
   [266]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-dg1-14/igt@gem_lmem_swapping@verify-random-ccs@lmem0.html

  * igt@kms_big_fb@4-tiled-addfb-size-overflow:
    - shard-rkl:          [SKIP][267] -> [SKIP][268] ([i915#5286]) +1 other test skip
   [267]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15146/shard-rkl-5/igt@kms_big_fb@4-tiled-addfb-size-overflow.html
   [268]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-rkl-4/igt@kms_big_fb@4-tiled-addfb-size-overflow.html

  * igt@kms_big_fb@linear-64bpp-rotate-90:
    - shard-rkl:          [SKIP][269] -> [SKIP][270] ([i915#3638]) +2 other tests skip
   [269]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15146/shard-rkl-5/igt@kms_big_fb@linear-64bpp-rotate-90.html
   [270]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-rkl-4/igt@kms_big_fb@linear-64bpp-rotate-90.html

  * igt@kms_content_protection@dp-mst-type-0:
    - shard-rkl:          [SKIP][271] -> [SKIP][272] ([i915#3116]) +1 other test skip
   [271]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15146/shard-rkl-5/igt@kms_content_protection@dp-mst-type-0.html
   [272]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-rkl-4/igt@kms_content_protection@dp-mst-type-0.html

  * igt@kms_cursor_crc@cursor-onscreen-max-size:
    - shard-rkl:          [SKIP][273] -> [SKIP][274] ([i915#3555])
   [273]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15146/shard-rkl-5/igt@kms_cursor_crc@cursor-onscreen-max-size.html
   [274]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-rkl-3/igt@kms_cursor_crc@cursor-onscreen-max-size.html

  * igt@kms_cursor_crc@cursor-random-512x512:
    - shard-dg2:          [SKIP][275] ([i915#11453] / [i915#3359]) -> [SKIP][276] ([i915#11453]) +1 other test skip
   [275]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15146/shard-dg2-11/igt@kms_cursor_crc@cursor-random-512x512.html
   [276]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-dg2-7/igt@kms_cursor_crc@cursor-random-512x512.html

  * igt@kms_frontbuffer_tracking@fbc-2p-primscrn-spr-indfb-draw-blt:
    - shard-rkl:          [SKIP][277] ([i915#1849] / [i915#5354]) -> [SKIP][278] ([i915#1825]) +11 other tests skip
   [277]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15146/shard-rkl-5/igt@kms_frontbuffer_tracking@fbc-2p-primscrn-spr-indfb-draw-blt.html
   [278]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-rkl-3/igt@kms_frontbuffer_tracking@fbc-2p-primscrn-spr-indfb-draw-blt.html

  * igt@kms_frontbuffer_tracking@fbc-2p-shrfb-fliptrack-mmap-gtt:
    - shard-rkl:          [SKIP][279] ([i915#1849] / [i915#5354]) -> [SKIP][280]
   [279]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15146/shard-rkl-5/igt@kms_frontbuffer_tracking@fbc-2p-shrfb-fliptrack-mmap-gtt.html
   [280]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-rkl-4/igt@kms_frontbuffer_tracking@fbc-2p-shrfb-fliptrack-mmap-gtt.html

  * igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-pri-shrfb-draw-mmap-cpu:
    - shard-rkl:          [SKIP][281] ([i915#1849] / [i915#5354]) -> [SKIP][282] ([i915#3023]) +5 other tests skip
   [281]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15146/shard-rkl-5/igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-pri-shrfb-draw-mmap-cpu.html
   [282]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-rkl-3/igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-pri-shrfb-draw-mmap-cpu.html

  * igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-spr-indfb-draw-pwrite:
    - shard-dg2:          [SKIP][283] ([i915#3458]) -> [SKIP][284] ([i915#10433] / [i915#3458]) +2 other tests skip
   [283]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15146/shard-dg2-3/igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-spr-indfb-draw-pwrite.html
   [284]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-dg2-4/igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-spr-indfb-draw-pwrite.html

  * igt@kms_frontbuffer_tracking@psr-1p-primscrn-pri-shrfb-draw-blt:
    - shard-dg1:          [SKIP][285] ([i915#3458]) -> [SKIP][286] ([i915#3458] / [i915#4423])
   [285]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15146/shard-dg1-15/igt@kms_frontbuffer_tracking@psr-1p-primscrn-pri-shrfb-draw-blt.html
   [286]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-dg1-14/igt@kms_frontbuffer_tracking@psr-1p-primscrn-pri-shrfb-draw-blt.html

  * igt@kms_hdr@static-toggle-suspend:
    - shard-rkl:          [SKIP][287] -> [SKIP][288] ([i915#3555] / [i915#8228])
   [287]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15146/shard-rkl-5/igt@kms_hdr@static-toggle-suspend.html
   [288]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-rkl-4/igt@kms_hdr@static-toggle-suspend.html

  * igt@kms_pm_dc@dc9-dpms:
    - shard-rkl:          [SKIP][289] ([i915#3361]) -> [SKIP][290] ([i915#4281])
   [289]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15146/shard-rkl-3/igt@kms_pm_dc@dc9-dpms.html
   [290]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-rkl-5/igt@kms_pm_dc@dc9-dpms.html

  * igt@kms_psr@psr-primary-mmap-cpu:
    - shard-dg2:          [SKIP][291] ([i915#1072] / [i915#9673] / [i915#9732]) -> [SKIP][292] ([i915#1072] / [i915#9732]) +9 other tests skip
   [291]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15146/shard-dg2-11/igt@kms_psr@psr-primary-mmap-cpu.html
   [292]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-dg2-7/igt@kms_psr@psr-primary-mmap-cpu.html

  * igt@kms_psr@psr2-cursor-plane-move:
    - shard-dg2:          [SKIP][293] ([i915#1072] / [i915#9732]) -> [SKIP][294] ([i915#1072] / [i915#9673] / [i915#9732]) +4 other tests skip
   [293]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15146/shard-dg2-10/igt@kms_psr@psr2-cursor-plane-move.html
   [294]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-dg2-11/igt@kms_psr@psr2-cursor-plane-move.html

  * igt@kms_psr@psr2-primary-mmap-gtt@edp-1:
    - shard-mtlp:         [SKIP][295] ([i915#4077] / [i915#9688]) -> [FAIL][296] ([i915#10105])
   [295]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15146/shard-mtlp-4/igt@kms_psr@psr2-primary-mmap-gtt@edp-1.html
   [296]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-mtlp-7/igt@kms_psr@psr2-primary-mmap-gtt@edp-1.html

  * igt@kms_rotation_crc@primary-y-tiled-reflect-x-270:
    - shard-dg2:          [SKIP][297] ([i915#11131] / [i915#5190]) -> [SKIP][298] ([i915#11131] / [i915#4235] / [i915#5190])
   [297]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15146/shard-dg2-10/igt@kms_rotation_crc@primary-y-tiled-reflect-x-270.html
   [298]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-dg2-11/igt@kms_rotation_crc@primary-y-tiled-reflect-x-270.html

  * igt@kms_rotation_crc@sprite-rotation-90:
    - shard-dg2:          [SKIP][299] ([i915#11131]) -> [SKIP][300] ([i915#11131] / [i915#4235])
   [299]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15146/shard-dg2-10/igt@kms_rotation_crc@sprite-rotation-90.html
   [300]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-dg2-11/igt@kms_rotation_crc@sprite-rotation-90.html

  * igt@kms_tiled_display@basic-test-pattern:
    - shard-rkl:          [SKIP][301] -> [SKIP][302] ([i915#8623])
   [301]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15146/shard-rkl-5/igt@kms_tiled_display@basic-test-pattern.html
   [302]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-rkl-3/igt@kms_tiled_display@basic-test-pattern.html

  * igt@kms_vrr@negative-basic:
    - shard-rkl:          [SKIP][303] -> [SKIP][304] ([i915#3555] / [i915#9906])
   [303]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15146/shard-rkl-5/igt@kms_vrr@negative-basic.html
   [304]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-rkl-4/igt@kms_vrr@negative-basic.html

  * igt@perf@non-zero-reason@0-rcs0:
    - shard-dg2:          [FAIL][305] ([i915#9100]) -> [FAIL][306] ([i915#7484])
   [305]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15146/shard-dg2-8/igt@perf@non-zero-reason@0-rcs0.html
   [306]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/shard-dg2-3/igt@perf@non-zero-reason@0-rcs0.html

  
  [i915#10105]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10105
  [i915#10131]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10131
  [i915#10177]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10177
  [i915#10226]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10226
  [i915#10307]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10307
  [i915#10354]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10354
  [i915#10378]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10378
  [i915#10433]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10433
  [i915#10434]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10434
  [i915#10446]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10446
  [i915#10538]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10538
  [i915#1072]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/1072
  [i915#10887]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10887
  [i915#11078]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11078
  [i915#11131]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11131
  [i915#11279]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11279
  [i915#11453]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11453
  [i915#11520]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11520
  [i915#11614]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11614
  [i915#11616]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11616
  [i915#1769]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/1769
  [i915#1825]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/1825
  [i915#1849]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/1849
  [i915#2190]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2190
  [i915#2433]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2433
  [i915#2434]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2434
  [i915#2437]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2437
  [i915#2527]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2527
  [i915#2587]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2587
  [i915#2672]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2672
  [i915#280]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/280
  [i915#2842]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2842
  [i915#2856]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2856
  [i915#3023]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3023
  [i915#3116]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3116
  [i915#3281]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3281
  [i915#3282]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3282
  [i915#3291]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3291
  [i915#3297]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3297
  [i915#3359]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3359
  [i915#3361]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3361
  [i915#3458]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3458
  [i915#3469]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3469
  [i915#3539]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3539
  [i915#3555]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3555
  [i915#3582]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3582
  [i915#3637]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3637
  [i915#3638]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3638
  [i915#3708]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3708
  [i915#3804]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3804
  [i915#3826]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3826
  [i915#3840]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3840
  [i915#4077]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4077
  [i915#4079]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4079
  [i915#4083]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4083
  [i915#4103]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4103
  [i915#4235]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4235
  [i915#4270]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4270
  [i915#4281]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4281
  [i915#4349]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4349
  [i915#4423]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4423
  [i915#4473]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4473
  [i915#4525]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4525
  [i915#4537]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4537
  [i915#4538]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4538
  [i915#4565]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4565
  [i915#4613]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4613
  [i915#4771]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4771
  [i915#4812]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4812
  [i915#4852]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4852
  [i915#4860]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4860
  [i915#4879]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4879
  [i915#4880]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4880
  [i915#4885]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4885
  [i915#5190]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5190
  [i915#5235]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5235
  [i915#5286]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5286
  [i915#5289]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5289
  [i915#5354]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5354
  [i915#5784]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5784
  [i915#5956]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5956
  [i915#6095]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6095
  [i915#6187]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6187
  [i915#6334]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6334
  [i915#6524]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6524
  [i915#658]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/658
  [i915#6621]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6621
  [i915#6880]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6880
  [i915#6944]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6944
  [i915#7116]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7116
  [i915#7213]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7213
  [i915#7387]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7387
  [i915#7484]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7484
  [i915#7707]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7707
  [i915#7742]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7742
  [i915#7828]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7828
  [i915#8228]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8228
  [i915#8346]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8346
  [i915#8381]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8381
  [i915#8411]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8411
  [i915#8414]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8414
  [i915#8428]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8428
  [i915#8431]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8431
  [i915#8555]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8555
  [i915#8562]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8562
  [i915#8588]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8588
  [i915#8623]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8623
  [i915#8708]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8708
  [i915#8709]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8709
  [i915#8808]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8808
  [i915#8812]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8812
  [i915#8814]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8814
  [i915#8925]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8925
  [i915#9100]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9100
  [i915#9196]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9196
  [i915#9292]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9292
  [i915#9318]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9318
  [i915#9323]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9323
  [i915#9412]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9412
  [i915#9423]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9423
  [i915#9424]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9424
  [i915#9519]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9519
  [i915#9561]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9561
  [i915#9673]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9673
  [i915#9685]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9685
  [i915#9688]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9688
  [i915#9728]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9728
  [i915#9732]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9732
  [i915#9781]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9781
  [i915#9809]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9809
  [i915#9820]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9820
  [i915#9906]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9906
  [i915#9917]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9917
  [i915#9934]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9934


Build changes
-------------

  * Linux: CI_DRM_15146 -> Patchwork_134541v3

  CI-20190529: 20190529
  CI_DRM_15146: 6f226dd91cbd83b14b375dac4246f617f0b98288 @ git://anongit.freedesktop.org/gfx-ci/linux
  IGT_7940: 2a73158fa69a2b8e20d5a0bdf773ee194bfe13c2 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
  Patchwork_134541v3: 6f226dd91cbd83b14b375dac4246f617f0b98288 @ git://anongit.freedesktop.org/gfx-ci/linux
  piglit_4509: fdc5a4ca11124ab8413c7988896eec4c97336694 @ git://anongit.freedesktop.org/piglit

== Logs ==

For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134541v3/index.html

[-- Attachment #2: Type: text/html, Size: 103558 bytes --]

^ permalink raw reply	[flat|nested] 24+ messages in thread

* RE: [PATCH 1/2] drm/i915/psr: Add return bool value for hsw_activate_psr1
  2024-06-19  4:37 ` [PATCH 1/2] drm/i915/psr: Add return bool value for hsw_activate_psr1 Suraj Kandpal
@ 2024-08-22  5:09   ` Shankar, Uma
  0 siblings, 0 replies; 24+ messages in thread
From: Shankar, Uma @ 2024-08-22  5:09 UTC (permalink / raw)
  To: Kandpal, Suraj, intel-gfx@lists.freedesktop.org
  Cc: Manna, Animesh, Murthy, Arun R, Hogander, Jouni,
	jani.nikula@linux.intel.com, Kandpal, Suraj



> -----Original Message-----
> From: Intel-gfx <intel-gfx-bounces@lists.freedesktop.org> On Behalf Of Suraj
> Kandpal
> Sent: Wednesday, June 19, 2024 10:08 AM
> To: intel-gfx@lists.freedesktop.org
> Cc: Manna, Animesh <animesh.manna@intel.com>; Murthy, Arun R
> <arun.r.murthy@intel.com>; Hogander, Jouni <jouni.hogander@intel.com>;
> jani.nikula@linux.intel.com; Kandpal, Suraj <suraj.kandpal@intel.com>
> Subject: [PATCH 1/2] drm/i915/psr: Add return bool value for hsw_activate_psr1
> 
> Convert hsw_activate_psr1 from void to bool as going forward there is a chance
> psr1 is not enabled.

Looks Good to me.
Reviewed-by: Uma Shankar <uma.shankar@intel.com>

> Signed-off-by: Suraj Kandpal <suraj.kandpal@intel.com>
> ---
>  drivers/gpu/drm/i915/display/intel_psr.c | 9 ++++++---
>  1 file changed, 6 insertions(+), 3 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/display/intel_psr.c
> b/drivers/gpu/drm/i915/display/intel_psr.c
> index 920186c2264d..080bf5e51148 100644
> --- a/drivers/gpu/drm/i915/display/intel_psr.c
> +++ b/drivers/gpu/drm/i915/display/intel_psr.c
> @@ -808,7 +808,7 @@ static u8 psr_compute_idle_frames(struct intel_dp
> *intel_dp)
>  	return idle_frames;
>  }
> 
> -static void hsw_activate_psr1(struct intel_dp *intel_dp)
> +static bool hsw_activate_psr1(struct intel_dp *intel_dp)
>  {
>  	struct drm_i915_private *dev_priv = dp_to_i915(intel_dp);
>  	enum transcoder cpu_transcoder = intel_dp->psr.transcoder; @@ -836,6
> +836,8 @@ static void hsw_activate_psr1(struct intel_dp *intel_dp)
> 
>  	intel_de_rmw(dev_priv, psr_ctl_reg(dev_priv, cpu_transcoder),
>  		     ~EDP_PSR_RESTORE_PSR_ACTIVE_CTX_MASK, val);
> +
> +	return true;
>  }
> 
>  static u32 intel_psr2_get_tp_time(struct intel_dp *intel_dp) @@ -1560,6
> +1562,7 @@ static void intel_psr_activate(struct intel_dp *intel_dp)  {
>  	struct drm_i915_private *dev_priv = dp_to_i915(intel_dp);
>  	enum transcoder cpu_transcoder = intel_dp->psr.transcoder;
> +	bool ret = true;
> 
>  	drm_WARN_ON(&dev_priv->drm,
>  		    transcoder_has_psr2(dev_priv, cpu_transcoder) && @@ -
> 1578,9 +1581,9 @@ static void intel_psr_activate(struct intel_dp *intel_dp)
>  	else if (intel_dp->psr.sel_update_enabled)
>  		hsw_activate_psr2(intel_dp);
>  	else
> -		hsw_activate_psr1(intel_dp);
> +		ret = hsw_activate_psr1(intel_dp);
> 
> -	intel_dp->psr.active = true;
> +	intel_dp->psr.active = ret;
>  }
> 
>  static u32 wa_16013835468_bit_get(struct intel_dp *intel_dp)
> --
> 2.43.2


^ permalink raw reply	[flat|nested] 24+ messages in thread

* RE: [PATCH 2/2] drm/i915/psr: Implment WA to help reach PC10
  2024-06-19  4:37 ` [PATCH 2/2] drm/i915/psr: Implment WA to help reach PC10 Suraj Kandpal
@ 2024-08-22  5:19   ` Shankar, Uma
  2024-08-22  6:25     ` Kandpal, Suraj
  2024-08-22  8:45   ` Hogander, Jouni
  1 sibling, 1 reply; 24+ messages in thread
From: Shankar, Uma @ 2024-08-22  5:19 UTC (permalink / raw)
  To: Kandpal, Suraj, intel-gfx@lists.freedesktop.org
  Cc: Manna, Animesh, Murthy, Arun R, Hogander, Jouni,
	jani.nikula@linux.intel.com, Kandpal, Suraj



> -----Original Message-----
> From: Intel-gfx <intel-gfx-bounces@lists.freedesktop.org> On Behalf Of Suraj
> Kandpal
> Sent: Wednesday, June 19, 2024 10:08 AM
> To: intel-gfx@lists.freedesktop.org
> Cc: Manna, Animesh <animesh.manna@intel.com>; Murthy, Arun R
> <arun.r.murthy@intel.com>; Hogander, Jouni <jouni.hogander@intel.com>;
> jani.nikula@linux.intel.com; Kandpal, Suraj <suraj.kandpal@intel.com>
> Subject: [PATCH 2/2] drm/i915/psr: Implment WA to help reach PC10

Nit: Typo in Implement

> To reach PC10 when PKG_C_LATENCY is configure we must do the following
> things
> 1) Enter PSR1 only when delayed_vblank < 6 lines and DC5 can be entered
> 2) Allow PSR2 deep sleep when DC5 can be entered
> 3) DC5 can be entered when all transocoder have either PSR1, PSR2 or eDP 1.5 PR
> ALPM enabled and VBI is disabled and flips and pushes are not happening.
> 
> --v2
> -Switch condition and do an early return [Jani] -Do some checks in
> compute_config [Jani] -Do not use register reads as a method of checking states
> for DPKGC or delayed vblank [Jani] -Use another way to see is vblank interrupts
> are disabled or not [Jani]
> 
> WA: 16023497226
> Signed-off-by: Suraj Kandpal <suraj.kandpal@intel.com>
> ---
>  .../drm/i915/display/intel_display_types.h    |  2 +
>  drivers/gpu/drm/i915/display/intel_psr.c      | 82 ++++++++++++++++++-
>  2 files changed, 83 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/gpu/drm/i915/display/intel_display_types.h
> b/drivers/gpu/drm/i915/display/intel_display_types.h
> index 46b3cbeb4a82..031f8e889b65 100644
> --- a/drivers/gpu/drm/i915/display/intel_display_types.h
> +++ b/drivers/gpu/drm/i915/display/intel_display_types.h
> @@ -1708,6 +1708,8 @@ struct intel_psr {
>  	bool sink_support;
>  	bool source_support;
>  	bool enabled;
> +	bool delayed_vblank;
> +	bool is_dpkgc_configured;
>  	bool paused;
>  	enum pipe pipe;
>  	enum transcoder transcoder;
> diff --git a/drivers/gpu/drm/i915/display/intel_psr.c
> b/drivers/gpu/drm/i915/display/intel_psr.c
> index 080bf5e51148..4ddea6737386 100644
> --- a/drivers/gpu/drm/i915/display/intel_psr.c
> +++ b/drivers/gpu/drm/i915/display/intel_psr.c
> @@ -808,6 +808,73 @@ static u8 psr_compute_idle_frames(struct intel_dp
> *intel_dp)
>  	return idle_frames;
>  }
> 
> +static bool intel_psr_check_delayed_vblank_limit(struct
> +intel_crtc_state *crtc_state) {
> +	struct drm_display_mode *adjusted_mode =
> +&crtc_state->hw.adjusted_mode;
> +
> +	return (adjusted_mode->crtc_vblank_start -
> +adjusted_mode->crtc_vdisplay) >= 6; }
> +
> +/*
> + * PKG_C_LATENCY is configured only when DISPLAY_VER >= 20 and
> + * VRR is not enabled
> + */
> +static bool intel_psr_is_dpkgc_configured(struct drm_i915_private
> +*i915) {
> +	struct intel_crtc *intel_crtc;
> +
> +	if (DISPLAY_VER(i915) < 20)
> +		return false;
> +
> +	for_each_intel_crtc(&i915->drm, intel_crtc) {
> +		struct intel_crtc_state *crtc_state;
> +
> +		if (!intel_crtc->active)
> +			continue;
> +
> +		crtc_state = intel_crtc->config;
> +
> +		if (crtc_state->vrr.enable)
> +			return false;
> +	}
> +
> +	return true;
> +}
> +
> +/*
> + * DC5 entry is only possible if vblank interrupt is disabled
> + * and either psr1, psr2, edp 1.5 pr alpm is enabled on all
> + * enabled encoders.
> + */
> +static bool intel_psr_is_dc5_entry_possible(struct drm_i915_private
> +*i915) {
> +	struct intel_crtc *intel_crtc;
> +
> +	for_each_intel_crtc(&i915->drm, intel_crtc) {
> +		struct intel_encoder *encoder;
> +		struct drm_crtc *crtc = &intel_crtc->base;
> +		struct drm_vblank_crtc *vblank;
> +
> +		if (!intel_crtc->active)
> +			continue;
> +
> +		vblank = drm_crtc_vblank_crtc(crtc);
> +
> +		if (vblank->enabled)
> +			return false;
> +
> +		for_each_encoder_on_crtc(&i915->drm, crtc, encoder) {
> +			struct intel_dp *intel_dp = enc_to_intel_dp(encoder);

All encoders on crtc may not be of type DP, need to be handled here.

> +			struct intel_psr *psr = &intel_dp->psr;
> +
> +			if (!psr->enabled)
> +				return false;
> +		}
> +	}
> +
> +	return true;
> +}
> +
>  static bool hsw_activate_psr1(struct intel_dp *intel_dp)  {
>  	struct drm_i915_private *dev_priv = dp_to_i915(intel_dp); @@ -815,6
> +882,14 @@ static bool hsw_activate_psr1(struct intel_dp *intel_dp)
>  	u32 max_sleep_time = 0x1f;
>  	u32 val = EDP_PSR_ENABLE;
> 
> +	/* WA: 16023497226*/
> +	if (intel_dp->psr.is_dpkgc_configured &&
> +	    (intel_dp->psr.delayed_vblank ||
> intel_psr_is_dc5_entry_possible(dev_priv))) {

In intel_psr_is_dc5_entry_possible function we use psr->enabled and based on that deciding
to return from PSR1 activate, logic looks suspicious. Can you re-check once.

> +		drm_dbg_kms(&dev_priv->drm,
> +			    "PSR1 not activated as it doesn't meet requirements
> of WA:16023497226\n");
> +		return false;
> +	}
> +
>  	val |= EDP_PSR_IDLE_FRAMES(psr_compute_idle_frames(intel_dp));
> 
>  	if (DISPLAY_VER(dev_priv) < 20)
> @@ -907,7 +982,10 @@ static void hsw_activate_psr2(struct intel_dp *intel_dp)
>  	u32 val = EDP_PSR2_ENABLE;
>  	u32 psr_val = 0;
> 
> -	val |= EDP_PSR2_IDLE_FRAMES(psr_compute_idle_frames(intel_dp));
> +	/* WA: 16023497226*/
> +	if (intel_dp->psr.is_dpkgc_configured &&
> +	    intel_psr_is_dc5_entry_possible(dev_priv))
> +		val |=
> EDP_PSR2_IDLE_FRAMES(psr_compute_idle_frames(intel_dp));
> 
>  	if (DISPLAY_VER(dev_priv) < 14 && !IS_ALDERLAKE_P(dev_priv))
>  		val |= EDP_SU_TRACK_ENABLE;
> @@ -1502,6 +1580,8 @@ void intel_psr_compute_config(struct intel_dp
> *intel_dp,
>  		return;
> 
>  	crtc_state->has_sel_update = intel_sel_update_config_valid(intel_dp,
> crtc_state);
> +	intel_dp->psr.delayed_vblank =
> intel_psr_check_delayed_vblank_limit(crtc_state);
> +	intel_dp->psr.is_dpkgc_configured =
> +intel_psr_is_dpkgc_configured(dev_priv);
>  }
> 
>  void intel_psr_get_config(struct intel_encoder *encoder,
> --
> 2.43.2


^ permalink raw reply	[flat|nested] 24+ messages in thread

* RE: [PATCH 2/2] drm/i915/psr: Implment WA to help reach PC10
  2024-08-22  5:19   ` Shankar, Uma
@ 2024-08-22  6:25     ` Kandpal, Suraj
  0 siblings, 0 replies; 24+ messages in thread
From: Kandpal, Suraj @ 2024-08-22  6:25 UTC (permalink / raw)
  To: Shankar, Uma, intel-gfx@lists.freedesktop.org
  Cc: Manna, Animesh, Murthy, Arun R, Hogander, Jouni,
	jani.nikula@linux.intel.com



> -----Original Message-----
> From: Shankar, Uma <uma.shankar@intel.com>
> Sent: Thursday, August 22, 2024 10:50 AM
> To: Kandpal, Suraj <suraj.kandpal@intel.com>; intel-
> gfx@lists.freedesktop.org
> Cc: Manna, Animesh <animesh.manna@intel.com>; Murthy, Arun R
> <arun.r.murthy@intel.com>; Hogander, Jouni <jouni.hogander@intel.com>;
> jani.nikula@linux.intel.com; Kandpal, Suraj <suraj.kandpal@intel.com>
> Subject: RE: [PATCH 2/2] drm/i915/psr: Implment WA to help reach PC10
> 
> 
> 
> > -----Original Message-----
> > From: Intel-gfx <intel-gfx-bounces@lists.freedesktop.org> On Behalf Of
> > Suraj Kandpal
> > Sent: Wednesday, June 19, 2024 10:08 AM
> > To: intel-gfx@lists.freedesktop.org
> > Cc: Manna, Animesh <animesh.manna@intel.com>; Murthy, Arun R
> > <arun.r.murthy@intel.com>; Hogander, Jouni
> <jouni.hogander@intel.com>;
> > jani.nikula@linux.intel.com; Kandpal, Suraj <suraj.kandpal@intel.com>
> > Subject: [PATCH 2/2] drm/i915/psr: Implment WA to help reach PC10
> 
> Nit: Typo in Implement
> 

Wil fix.
> > To reach PC10 when PKG_C_LATENCY is configure we must do the
> following
> > things
> > 1) Enter PSR1 only when delayed_vblank < 6 lines and DC5 can be
> > entered
> > 2) Allow PSR2 deep sleep when DC5 can be entered
> > 3) DC5 can be entered when all transocoder have either PSR1, PSR2 or
> > eDP 1.5 PR ALPM enabled and VBI is disabled and flips and pushes are not
> happening.
> >
> > --v2
> > -Switch condition and do an early return [Jani] -Do some checks in
> > compute_config [Jani] -Do not use register reads as a method of
> > checking states for DPKGC or delayed vblank [Jani] -Use another way to
> > see is vblank interrupts are disabled or not [Jani]
> >
> > WA: 16023497226
> > Signed-off-by: Suraj Kandpal <suraj.kandpal@intel.com>
> > ---
> >  .../drm/i915/display/intel_display_types.h    |  2 +
> >  drivers/gpu/drm/i915/display/intel_psr.c      | 82 ++++++++++++++++++-
> >  2 files changed, 83 insertions(+), 1 deletion(-)
> >
> > diff --git a/drivers/gpu/drm/i915/display/intel_display_types.h
> > b/drivers/gpu/drm/i915/display/intel_display_types.h
> > index 46b3cbeb4a82..031f8e889b65 100644
> > --- a/drivers/gpu/drm/i915/display/intel_display_types.h
> > +++ b/drivers/gpu/drm/i915/display/intel_display_types.h
> > @@ -1708,6 +1708,8 @@ struct intel_psr {
> >  	bool sink_support;
> >  	bool source_support;
> >  	bool enabled;
> > +	bool delayed_vblank;
> > +	bool is_dpkgc_configured;
> >  	bool paused;
> >  	enum pipe pipe;
> >  	enum transcoder transcoder;
> > diff --git a/drivers/gpu/drm/i915/display/intel_psr.c
> > b/drivers/gpu/drm/i915/display/intel_psr.c
> > index 080bf5e51148..4ddea6737386 100644
> > --- a/drivers/gpu/drm/i915/display/intel_psr.c
> > +++ b/drivers/gpu/drm/i915/display/intel_psr.c
> > @@ -808,6 +808,73 @@ static u8 psr_compute_idle_frames(struct
> intel_dp
> > *intel_dp)
> >  	return idle_frames;
> >  }
> >
> > +static bool intel_psr_check_delayed_vblank_limit(struct
> > +intel_crtc_state *crtc_state) {
> > +	struct drm_display_mode *adjusted_mode =
> > +&crtc_state->hw.adjusted_mode;
> > +
> > +	return (adjusted_mode->crtc_vblank_start -
> > +adjusted_mode->crtc_vdisplay) >= 6; }
> > +
> > +/*
> > + * PKG_C_LATENCY is configured only when DISPLAY_VER >= 20 and
> > + * VRR is not enabled
> > + */
> > +static bool intel_psr_is_dpkgc_configured(struct drm_i915_private
> > +*i915) {
> > +	struct intel_crtc *intel_crtc;
> > +
> > +	if (DISPLAY_VER(i915) < 20)
> > +		return false;
> > +
> > +	for_each_intel_crtc(&i915->drm, intel_crtc) {
> > +		struct intel_crtc_state *crtc_state;
> > +
> > +		if (!intel_crtc->active)
> > +			continue;
> > +
> > +		crtc_state = intel_crtc->config;
> > +
> > +		if (crtc_state->vrr.enable)
> > +			return false;
> > +	}
> > +
> > +	return true;
> > +}
> > +
> > +/*
> > + * DC5 entry is only possible if vblank interrupt is disabled
> > + * and either psr1, psr2, edp 1.5 pr alpm is enabled on all
> > + * enabled encoders.
> > + */
> > +static bool intel_psr_is_dc5_entry_possible(struct drm_i915_private
> > +*i915) {
> > +	struct intel_crtc *intel_crtc;
> > +
> > +	for_each_intel_crtc(&i915->drm, intel_crtc) {
> > +		struct intel_encoder *encoder;
> > +		struct drm_crtc *crtc = &intel_crtc->base;
> > +		struct drm_vblank_crtc *vblank;
> > +
> > +		if (!intel_crtc->active)
> > +			continue;
> > +
> > +		vblank = drm_crtc_vblank_crtc(crtc);
> > +
> > +		if (vblank->enabled)
> > +			return false;
> > +
> > +		for_each_encoder_on_crtc(&i915->drm, crtc, encoder) {
> > +			struct intel_dp *intel_dp =
> enc_to_intel_dp(encoder);
> 
> All encoders on crtc may not be of type DP, need to be handled here.
> 

Ahh ohkay will add a null check for intel_dp here and continue based on that

> > +			struct intel_psr *psr = &intel_dp->psr;
> > +
> > +			if (!psr->enabled)
> > +				return false;
> > +		}
> > +	}
> > +
> > +	return true;
> > +}
> > +
> >  static bool hsw_activate_psr1(struct intel_dp *intel_dp)  {
> >  	struct drm_i915_private *dev_priv = dp_to_i915(intel_dp); @@ -
> 815,6
> > +882,14 @@ static bool hsw_activate_psr1(struct intel_dp *intel_dp)
> >  	u32 max_sleep_time = 0x1f;
> >  	u32 val = EDP_PSR_ENABLE;
> >
> > +	/* WA: 16023497226*/
> > +	if (intel_dp->psr.is_dpkgc_configured &&
> > +	    (intel_dp->psr.delayed_vblank ||
> > intel_psr_is_dc5_entry_possible(dev_priv))) {
> 
> In intel_psr_is_dc5_entry_possible function we use psr->enabled and based
> on that deciding to return from PSR1 activate, logic looks suspicious. Can
> you re-check once.

So this is so we can see if psr can be enabled on that encoder or not which will indicate we
We can enter dc5 or not and if we can then not to activate psr1 incase dpkgc is configured
 
Regards,
Suraj Kandpal

> 
> > +		drm_dbg_kms(&dev_priv->drm,
> > +			    "PSR1 not activated as it doesn't meet
> requirements
> > of WA:16023497226\n");
> > +		return false;
> > +	}
> > +
> >  	val |= EDP_PSR_IDLE_FRAMES(psr_compute_idle_frames(intel_dp));
> >
> >  	if (DISPLAY_VER(dev_priv) < 20)
> > @@ -907,7 +982,10 @@ static void hsw_activate_psr2(struct intel_dp
> *intel_dp)
> >  	u32 val = EDP_PSR2_ENABLE;
> >  	u32 psr_val = 0;
> >
> > -	val |= EDP_PSR2_IDLE_FRAMES(psr_compute_idle_frames(intel_dp));
> > +	/* WA: 16023497226*/
> > +	if (intel_dp->psr.is_dpkgc_configured &&
> > +	    intel_psr_is_dc5_entry_possible(dev_priv))
> > +		val |=
> > EDP_PSR2_IDLE_FRAMES(psr_compute_idle_frames(intel_dp));
> >
> >  	if (DISPLAY_VER(dev_priv) < 14 && !IS_ALDERLAKE_P(dev_priv))
> >  		val |= EDP_SU_TRACK_ENABLE;
> > @@ -1502,6 +1580,8 @@ void intel_psr_compute_config(struct intel_dp
> > *intel_dp,
> >  		return;
> >
> >  	crtc_state->has_sel_update = intel_sel_update_config_valid(intel_dp,
> > crtc_state);
> > +	intel_dp->psr.delayed_vblank =
> > intel_psr_check_delayed_vblank_limit(crtc_state);
> > +	intel_dp->psr.is_dpkgc_configured =
> > +intel_psr_is_dpkgc_configured(dev_priv);
> >  }
> >
> >  void intel_psr_get_config(struct intel_encoder *encoder,
> > --
> > 2.43.2


^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [PATCH 2/2] drm/i915/psr: Implment WA to help reach PC10
  2024-06-19  4:37 ` [PATCH 2/2] drm/i915/psr: Implment WA to help reach PC10 Suraj Kandpal
  2024-08-22  5:19   ` Shankar, Uma
@ 2024-08-22  8:45   ` Hogander, Jouni
  2024-08-23  4:54     ` Kandpal, Suraj
  1 sibling, 1 reply; 24+ messages in thread
From: Hogander, Jouni @ 2024-08-22  8:45 UTC (permalink / raw)
  To: Kandpal, Suraj, intel-gfx@lists.freedesktop.org
  Cc: Murthy, Arun R, Manna, Animesh, jani.nikula@linux.intel.com

On Wed, 2024-06-19 at 10:07 +0530, Suraj Kandpal wrote:
> To reach PC10 when PKG_C_LATENCY is configure we must do the
> following
> things
> 1) Enter PSR1 only when delayed_vblank < 6 lines and DC5 can be
> entered
> 2) Allow PSR2 deep sleep when DC5 can be entered
> 3) DC5 can be entered when all transocoder have either PSR1, PSR2 or
> eDP 1.5 PR ALPM enabled and VBI is disabled and flips and pushes are
> not happening.
> 
> --v2
> -Switch condition and do an early return [Jani]
> -Do some checks in compute_config [Jani]
> -Do not use register reads as a method of checking states for
> DPKGC or delayed vblank [Jani]
> -Use another way to see is vblank interrupts are disabled or not
> [Jani]
> 
> WA: 16023497226
> Signed-off-by: Suraj Kandpal <suraj.kandpal@intel.com>
> ---
>  .../drm/i915/display/intel_display_types.h    |  2 +
>  drivers/gpu/drm/i915/display/intel_psr.c      | 82
> ++++++++++++++++++-
>  2 files changed, 83 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/gpu/drm/i915/display/intel_display_types.h
> b/drivers/gpu/drm/i915/display/intel_display_types.h
> index 46b3cbeb4a82..031f8e889b65 100644
> --- a/drivers/gpu/drm/i915/display/intel_display_types.h
> +++ b/drivers/gpu/drm/i915/display/intel_display_types.h
> @@ -1708,6 +1708,8 @@ struct intel_psr {
>         bool sink_support;
>         bool source_support;
>         bool enabled;
> +       bool delayed_vblank;
> +       bool is_dpkgc_configured;
>         bool paused;
>         enum pipe pipe;
>         enum transcoder transcoder;
> diff --git a/drivers/gpu/drm/i915/display/intel_psr.c
> b/drivers/gpu/drm/i915/display/intel_psr.c
> index 080bf5e51148..4ddea6737386 100644
> --- a/drivers/gpu/drm/i915/display/intel_psr.c
> +++ b/drivers/gpu/drm/i915/display/intel_psr.c
> @@ -808,6 +808,73 @@ static u8 psr_compute_idle_frames(struct
> intel_dp *intel_dp)
>         return idle_frames;
>  }
>  
> +static bool intel_psr_check_delayed_vblank_limit(struct
> intel_crtc_state *crtc_state)
> +{
> +       struct drm_display_mode *adjusted_mode = &crtc_state-
> >hw.adjusted_mode;
> +
> +       return (adjusted_mode->crtc_vblank_start - adjusted_mode-
> >crtc_vdisplay) >= 6;
> +}
> +
> +/*
> + * PKG_C_LATENCY is configured only when DISPLAY_VER >= 20 and
> + * VRR is not enabled
> + */
> +static bool intel_psr_is_dpkgc_configured(struct drm_i915_private
> *i915)
> +{
> +       struct intel_crtc *intel_crtc;
> +
> +       if (DISPLAY_VER(i915) < 20)
> +               return false;
> +
> +       for_each_intel_crtc(&i915->drm, intel_crtc) {
> +               struct intel_crtc_state *crtc_state;
> +
> +               if (!intel_crtc->active)
> +                       continue;
> +
> +               crtc_state = intel_crtc->config;
> +
> +               if (crtc_state->vrr.enable)
> +                       return false;
> +       }
> +
> +       return true;
> +}
> +
> +/*
> + * DC5 entry is only possible if vblank interrupt is disabled
> + * and either psr1, psr2, edp 1.5 pr alpm is enabled on all
> + * enabled encoders.
> + */
> +static bool intel_psr_is_dc5_entry_possible(struct drm_i915_private
> *i915)
> +{
> +       struct intel_crtc *intel_crtc;
> +
> +       for_each_intel_crtc(&i915->drm, intel_crtc) {
> +               struct intel_encoder *encoder;
> +               struct drm_crtc *crtc = &intel_crtc->base;
> +               struct drm_vblank_crtc *vblank;
> +
> +               if (!intel_crtc->active)
> +                       continue;
> +
> +               vblank = drm_crtc_vblank_crtc(crtc);
> +
> +               if (vblank->enabled)
> +                       return false;
> +
> +               for_each_encoder_on_crtc(&i915->drm, crtc, encoder) {
> +                       struct intel_dp *intel_dp =
> enc_to_intel_dp(encoder);
> +                       struct intel_psr *psr = &intel_dp->psr;
> +
> +                       if (!psr->enabled)
> +                               return false;
> +               }
> +       }
> +
> +       return true;
> +}
> +
>  static bool hsw_activate_psr1(struct intel_dp *intel_dp)
>  {
>         struct drm_i915_private *dev_priv = dp_to_i915(intel_dp);
> @@ -815,6 +882,14 @@ static bool hsw_activate_psr1(struct intel_dp
> *intel_dp)
>         u32 max_sleep_time = 0x1f;
>         u32 val = EDP_PSR_ENABLE;
>  
> +       /* WA: 16023497226*/
> +       if (intel_dp->psr.is_dpkgc_configured &&
> +           (intel_dp->psr.delayed_vblank ||
> intel_psr_is_dc5_entry_possible(dev_priv))) {
> +               drm_dbg_kms(&dev_priv->drm,
> +                           "PSR1 not activated as it doesn't meet
> requirements of WA:16023497226\n");
> +               return false;
> +       }
> +

I would recommend doing this in intel_psr_compute_config as a last step
and drop patch 1. Doing it this way would be safer as it's not opening
new sequence/state where psr.enabled = true and psr.active = false
after intel_psr_enable_locked.

BR,

Jouni Högander

>         val |=
> EDP_PSR_IDLE_FRAMES(psr_compute_idle_frames(intel_dp));
>  
>         if (DISPLAY_VER(dev_priv) < 20)
> @@ -907,7 +982,10 @@ static void hsw_activate_psr2(struct intel_dp
> *intel_dp)
>         u32 val = EDP_PSR2_ENABLE;
>         u32 psr_val = 0;
>  
> -       val |=
> EDP_PSR2_IDLE_FRAMES(psr_compute_idle_frames(intel_dp));
> +       /* WA: 16023497226*/
> +       if (intel_dp->psr.is_dpkgc_configured &&
> +           intel_psr_is_dc5_entry_possible(dev_priv))
> +               val |=
> EDP_PSR2_IDLE_FRAMES(psr_compute_idle_frames(intel_dp));
>  
>         if (DISPLAY_VER(dev_priv) < 14 && !IS_ALDERLAKE_P(dev_priv))
>                 val |= EDP_SU_TRACK_ENABLE;
> @@ -1502,6 +1580,8 @@ void intel_psr_compute_config(struct intel_dp
> *intel_dp,
>                 return;
>  
>         crtc_state->has_sel_update =
> intel_sel_update_config_valid(intel_dp, crtc_state);
> +       intel_dp->psr.delayed_vblank =
> intel_psr_check_delayed_vblank_limit(crtc_state);
> +       intel_dp->psr.is_dpkgc_configured =
> intel_psr_is_dpkgc_configured(dev_priv);
>  }
>  
>  void intel_psr_get_config(struct intel_encoder *encoder,


^ permalink raw reply	[flat|nested] 24+ messages in thread

* RE: [PATCH 2/2] drm/i915/psr: Implment WA to help reach PC10
  2024-08-22  8:45   ` Hogander, Jouni
@ 2024-08-23  4:54     ` Kandpal, Suraj
  2024-08-23  5:24       ` Hogander, Jouni
  0 siblings, 1 reply; 24+ messages in thread
From: Kandpal, Suraj @ 2024-08-23  4:54 UTC (permalink / raw)
  To: Hogander, Jouni, intel-gfx@lists.freedesktop.org
  Cc: Murthy, Arun R, Manna, Animesh, jani.nikula@linux.intel.com



> -----Original Message-----
> From: Hogander, Jouni <jouni.hogander@intel.com>
> Sent: Thursday, August 22, 2024 2:16 PM
> To: Kandpal, Suraj <suraj.kandpal@intel.com>; intel-
> gfx@lists.freedesktop.org
> Cc: Murthy, Arun R <arun.r.murthy@intel.com>; Manna, Animesh
> <animesh.manna@intel.com>; jani.nikula@linux.intel.com
> Subject: Re: [PATCH 2/2] drm/i915/psr: Implment WA to help reach PC10
> 
> On Wed, 2024-06-19 at 10:07 +0530, Suraj Kandpal wrote:
> > To reach PC10 when PKG_C_LATENCY is configure we must do the
> following
> > things
> > 1) Enter PSR1 only when delayed_vblank < 6 lines and DC5 can be
> > entered
> > 2) Allow PSR2 deep sleep when DC5 can be entered
> > 3) DC5 can be entered when all transocoder have either PSR1, PSR2 or
> > eDP 1.5 PR ALPM enabled and VBI is disabled and flips and pushes are
> > not happening.
> >
> > --v2
> > -Switch condition and do an early return [Jani] -Do some checks in
> > compute_config [Jani] -Do not use register reads as a method of
> > checking states for DPKGC or delayed vblank [Jani] -Use another way to
> > see is vblank interrupts are disabled or not [Jani]
> >
> > WA: 16023497226
> > Signed-off-by: Suraj Kandpal <suraj.kandpal@intel.com>
> > ---
> >  .../drm/i915/display/intel_display_types.h    |  2 +
> >  drivers/gpu/drm/i915/display/intel_psr.c      | 82
> > ++++++++++++++++++-
> >  2 files changed, 83 insertions(+), 1 deletion(-)
> >
> > diff --git a/drivers/gpu/drm/i915/display/intel_display_types.h
> > b/drivers/gpu/drm/i915/display/intel_display_types.h
> > index 46b3cbeb4a82..031f8e889b65 100644
> > --- a/drivers/gpu/drm/i915/display/intel_display_types.h
> > +++ b/drivers/gpu/drm/i915/display/intel_display_types.h
> > @@ -1708,6 +1708,8 @@ struct intel_psr {
> >         bool sink_support;
> >         bool source_support;
> >         bool enabled;
> > +       bool delayed_vblank;
> > +       bool is_dpkgc_configured;
> >         bool paused;
> >         enum pipe pipe;
> >         enum transcoder transcoder;
> > diff --git a/drivers/gpu/drm/i915/display/intel_psr.c
> > b/drivers/gpu/drm/i915/display/intel_psr.c
> > index 080bf5e51148..4ddea6737386 100644
> > --- a/drivers/gpu/drm/i915/display/intel_psr.c
> > +++ b/drivers/gpu/drm/i915/display/intel_psr.c
> > @@ -808,6 +808,73 @@ static u8 psr_compute_idle_frames(struct
> intel_dp
> > *intel_dp)
> >         return idle_frames;
> >  }
> >
> > +static bool intel_psr_check_delayed_vblank_limit(struct
> > intel_crtc_state *crtc_state)
> > +{
> > +       struct drm_display_mode *adjusted_mode = &crtc_state-
> > >hw.adjusted_mode;
> > +
> > +       return (adjusted_mode->crtc_vblank_start - adjusted_mode-
> > >crtc_vdisplay) >= 6;
> > +}
> > +
> > +/*
> > + * PKG_C_LATENCY is configured only when DISPLAY_VER >= 20 and
> > + * VRR is not enabled
> > + */
> > +static bool intel_psr_is_dpkgc_configured(struct drm_i915_private
> > *i915)
> > +{
> > +       struct intel_crtc *intel_crtc;
> > +
> > +       if (DISPLAY_VER(i915) < 20)
> > +               return false;
> > +
> > +       for_each_intel_crtc(&i915->drm, intel_crtc) {
> > +               struct intel_crtc_state *crtc_state;
> > +
> > +               if (!intel_crtc->active)
> > +                       continue;
> > +
> > +               crtc_state = intel_crtc->config;
> > +
> > +               if (crtc_state->vrr.enable)
> > +                       return false;
> > +       }
> > +
> > +       return true;
> > +}
> > +
> > +/*
> > + * DC5 entry is only possible if vblank interrupt is disabled
> > + * and either psr1, psr2, edp 1.5 pr alpm is enabled on all
> > + * enabled encoders.
> > + */
> > +static bool intel_psr_is_dc5_entry_possible(struct drm_i915_private
> > *i915)
> > +{
> > +       struct intel_crtc *intel_crtc;
> > +
> > +       for_each_intel_crtc(&i915->drm, intel_crtc) {
> > +               struct intel_encoder *encoder;
> > +               struct drm_crtc *crtc = &intel_crtc->base;
> > +               struct drm_vblank_crtc *vblank;
> > +
> > +               if (!intel_crtc->active)
> > +                       continue;
> > +
> > +               vblank = drm_crtc_vblank_crtc(crtc);
> > +
> > +               if (vblank->enabled)
> > +                       return false;
> > +
> > +               for_each_encoder_on_crtc(&i915->drm, crtc, encoder) {
> > +                       struct intel_dp *intel_dp =
> > enc_to_intel_dp(encoder);
> > +                       struct intel_psr *psr = &intel_dp->psr;
> > +
> > +                       if (!psr->enabled)
> > +                               return false;
> > +               }
> > +       }
> > +
> > +       return true;
> > +}
> > +
> >  static bool hsw_activate_psr1(struct intel_dp *intel_dp)
> >  {
> >         struct drm_i915_private *dev_priv = dp_to_i915(intel_dp); @@
> > -815,6 +882,14 @@ static bool hsw_activate_psr1(struct intel_dp
> > *intel_dp)
> >         u32 max_sleep_time = 0x1f;
> >         u32 val = EDP_PSR_ENABLE;
> >
> > +       /* WA: 16023497226*/
> > +       if (intel_dp->psr.is_dpkgc_configured &&
> > +           (intel_dp->psr.delayed_vblank ||
> > intel_psr_is_dc5_entry_possible(dev_priv))) {
> > +               drm_dbg_kms(&dev_priv->drm,
> > +                           "PSR1 not activated as it doesn't meet
> > requirements of WA:16023497226\n");
> > +               return false;
> > +       }
> > +
> 
> I would recommend doing this in intel_psr_compute_config as a last step
> and drop patch 1. Doing it this way would be safer as it's not opening new
> sequence/state where psr.enabled = true and psr.active = false after
> intel_psr_enable_locked.

The reason for this was I wanted to disable only psr1 based on if dc5 entry is possible or not.
Even if I call the dc5_entry_is_possible function from compute_config and save it in the intel_psr
state we would still end up with the seq psr.enabled = true and psr.active = false unless you see a
param which will only activate psr2 and not psr1 in such scenario ?

Regards,
Suraj Kandpal

> 
> BR,
> 
> Jouni Högander
> 
> >         val |=
> > EDP_PSR_IDLE_FRAMES(psr_compute_idle_frames(intel_dp));
> >
> >         if (DISPLAY_VER(dev_priv) < 20) @@ -907,7 +982,10 @@ static
> > void hsw_activate_psr2(struct intel_dp
> > *intel_dp)
> >         u32 val = EDP_PSR2_ENABLE;
> >         u32 psr_val = 0;
> >
> > -       val |=
> > EDP_PSR2_IDLE_FRAMES(psr_compute_idle_frames(intel_dp));
> > +       /* WA: 16023497226*/
> > +       if (intel_dp->psr.is_dpkgc_configured &&
> > +           intel_psr_is_dc5_entry_possible(dev_priv))
> > +               val |=
> > EDP_PSR2_IDLE_FRAMES(psr_compute_idle_frames(intel_dp));
> >
> >         if (DISPLAY_VER(dev_priv) < 14 && !IS_ALDERLAKE_P(dev_priv))
> >                 val |= EDP_SU_TRACK_ENABLE; @@ -1502,6 +1580,8 @@ void
> > intel_psr_compute_config(struct intel_dp *intel_dp,
> >                 return;
> >
> >         crtc_state->has_sel_update =
> > intel_sel_update_config_valid(intel_dp, crtc_state);
> > +       intel_dp->psr.delayed_vblank =
> > intel_psr_check_delayed_vblank_limit(crtc_state);
> > +       intel_dp->psr.is_dpkgc_configured =
> > intel_psr_is_dpkgc_configured(dev_priv);
> >  }
> >
> >  void intel_psr_get_config(struct intel_encoder *encoder,


^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [PATCH 2/2] drm/i915/psr: Implment WA to help reach PC10
  2024-08-23  4:54     ` Kandpal, Suraj
@ 2024-08-23  5:24       ` Hogander, Jouni
  2024-08-23  6:18         ` Kandpal, Suraj
  0 siblings, 1 reply; 24+ messages in thread
From: Hogander, Jouni @ 2024-08-23  5:24 UTC (permalink / raw)
  To: Kandpal, Suraj, intel-gfx@lists.freedesktop.org
  Cc: Murthy, Arun R, Manna, Animesh, jani.nikula@linux.intel.com

On Fri, 2024-08-23 at 04:54 +0000, Kandpal, Suraj wrote:
> 
> 
> > -----Original Message-----
> > From: Hogander, Jouni <jouni.hogander@intel.com>
> > Sent: Thursday, August 22, 2024 2:16 PM
> > To: Kandpal, Suraj <suraj.kandpal@intel.com>; intel-
> > gfx@lists.freedesktop.org
> > Cc: Murthy, Arun R <arun.r.murthy@intel.com>; Manna, Animesh
> > <animesh.manna@intel.com>; jani.nikula@linux.intel.com
> > Subject: Re: [PATCH 2/2] drm/i915/psr: Implment WA to help reach
> > PC10
> > 
> > On Wed, 2024-06-19 at 10:07 +0530, Suraj Kandpal wrote:
> > > To reach PC10 when PKG_C_LATENCY is configure we must do the
> > following
> > > things
> > > 1) Enter PSR1 only when delayed_vblank < 6 lines and DC5 can be
> > > entered
> > > 2) Allow PSR2 deep sleep when DC5 can be entered
> > > 3) DC5 can be entered when all transocoder have either PSR1, PSR2
> > > or
> > > eDP 1.5 PR ALPM enabled and VBI is disabled and flips and pushes
> > > are
> > > not happening.
> > > 
> > > --v2
> > > -Switch condition and do an early return [Jani] -Do some checks
> > > in
> > > compute_config [Jani] -Do not use register reads as a method of
> > > checking states for DPKGC or delayed vblank [Jani] -Use another
> > > way to
> > > see is vblank interrupts are disabled or not [Jani]
> > > 
> > > WA: 16023497226
> > > Signed-off-by: Suraj Kandpal <suraj.kandpal@intel.com>
> > > ---
> > >  .../drm/i915/display/intel_display_types.h    |  2 +
> > >  drivers/gpu/drm/i915/display/intel_psr.c      | 82
> > > ++++++++++++++++++-
> > >  2 files changed, 83 insertions(+), 1 deletion(-)
> > > 
> > > diff --git a/drivers/gpu/drm/i915/display/intel_display_types.h
> > > b/drivers/gpu/drm/i915/display/intel_display_types.h
> > > index 46b3cbeb4a82..031f8e889b65 100644
> > > --- a/drivers/gpu/drm/i915/display/intel_display_types.h
> > > +++ b/drivers/gpu/drm/i915/display/intel_display_types.h
> > > @@ -1708,6 +1708,8 @@ struct intel_psr {
> > >         bool sink_support;
> > >         bool source_support;
> > >         bool enabled;
> > > +       bool delayed_vblank;
> > > +       bool is_dpkgc_configured;
> > >         bool paused;
> > >         enum pipe pipe;
> > >         enum transcoder transcoder;
> > > diff --git a/drivers/gpu/drm/i915/display/intel_psr.c
> > > b/drivers/gpu/drm/i915/display/intel_psr.c
> > > index 080bf5e51148..4ddea6737386 100644
> > > --- a/drivers/gpu/drm/i915/display/intel_psr.c
> > > +++ b/drivers/gpu/drm/i915/display/intel_psr.c
> > > @@ -808,6 +808,73 @@ static u8 psr_compute_idle_frames(struct
> > intel_dp
> > > *intel_dp)
> > >         return idle_frames;
> > >  }
> > > 
> > > +static bool intel_psr_check_delayed_vblank_limit(struct
> > > intel_crtc_state *crtc_state)
> > > +{
> > > +       struct drm_display_mode *adjusted_mode = &crtc_state-
> > > > hw.adjusted_mode;
> > > +
> > > +       return (adjusted_mode->crtc_vblank_start - adjusted_mode-
> > > > crtc_vdisplay) >= 6;
> > > +}
> > > +
> > > +/*
> > > + * PKG_C_LATENCY is configured only when DISPLAY_VER >= 20 and
> > > + * VRR is not enabled
> > > + */
> > > +static bool intel_psr_is_dpkgc_configured(struct
> > > drm_i915_private
> > > *i915)
> > > +{
> > > +       struct intel_crtc *intel_crtc;
> > > +
> > > +       if (DISPLAY_VER(i915) < 20)
> > > +               return false;
> > > +
> > > +       for_each_intel_crtc(&i915->drm, intel_crtc) {
> > > +               struct intel_crtc_state *crtc_state;
> > > +
> > > +               if (!intel_crtc->active)
> > > +                       continue;
> > > +
> > > +               crtc_state = intel_crtc->config;
> > > +
> > > +               if (crtc_state->vrr.enable)
> > > +                       return false;
> > > +       }
> > > +
> > > +       return true;
> > > +}
> > > +
> > > +/*
> > > + * DC5 entry is only possible if vblank interrupt is disabled
> > > + * and either psr1, psr2, edp 1.5 pr alpm is enabled on all
> > > + * enabled encoders.
> > > + */
> > > +static bool intel_psr_is_dc5_entry_possible(struct
> > > drm_i915_private
> > > *i915)
> > > +{
> > > +       struct intel_crtc *intel_crtc;
> > > +
> > > +       for_each_intel_crtc(&i915->drm, intel_crtc) {
> > > +               struct intel_encoder *encoder;
> > > +               struct drm_crtc *crtc = &intel_crtc->base;
> > > +               struct drm_vblank_crtc *vblank;
> > > +
> > > +               if (!intel_crtc->active)
> > > +                       continue;
> > > +
> > > +               vblank = drm_crtc_vblank_crtc(crtc);
> > > +
> > > +               if (vblank->enabled)
> > > +                       return false;
> > > +
> > > +               for_each_encoder_on_crtc(&i915->drm, crtc,
> > > encoder) {
> > > +                       struct intel_dp *intel_dp =
> > > enc_to_intel_dp(encoder);
> > > +                       struct intel_psr *psr = &intel_dp->psr;
> > > +
> > > +                       if (!psr->enabled)
> > > +                               return false;
> > > +               }
> > > +       }
> > > +
> > > +       return true;
> > > +}
> > > +
> > >  static bool hsw_activate_psr1(struct intel_dp *intel_dp)
> > >  {
> > >         struct drm_i915_private *dev_priv = dp_to_i915(intel_dp);
> > > @@
> > > -815,6 +882,14 @@ static bool hsw_activate_psr1(struct intel_dp
> > > *intel_dp)
> > >         u32 max_sleep_time = 0x1f;
> > >         u32 val = EDP_PSR_ENABLE;
> > > 
> > > +       /* WA: 16023497226*/
> > > +       if (intel_dp->psr.is_dpkgc_configured &&
> > > +           (intel_dp->psr.delayed_vblank ||
> > > intel_psr_is_dc5_entry_possible(dev_priv))) {
> > > +               drm_dbg_kms(&dev_priv->drm,
> > > +                           "PSR1 not activated as it doesn't
> > > meet
> > > requirements of WA:16023497226\n");
> > > +               return false;
> > > +       }
> > > +
> > 
> > I would recommend doing this in intel_psr_compute_config as a last
> > step
> > and drop patch 1. Doing it this way would be safer as it's not
> > opening new
> > sequence/state where psr.enabled = true and psr.active = false
> > after
> > intel_psr_enable_locked.
> 
> The reason for this was I wanted to disable only psr1 based on if dc5
> entry is possible or not.
> Even if I call the dc5_entry_is_possible function from compute_config
> and save it in the intel_psr
> state we would still end up with the seq psr.enabled = true and
> psr.active = false unless you see a
> param which will only activate psr2 and not psr1 in such scenario ?
> 

I was thinking doing it like this:

+static void wa_16023497226(struct intel_crtc_state * crtc_state)
+{
+	/* PSR2 not handled here. Wa not needed for Panel Replay */
+	if (crtc_state->has_sel_update || crtc_state-
>has_panel_replay)
+	    return;
+	
+       if (intel_dp->psr.is_dpkgc_configured &&
+           (intel_dp->psr.delayed_vblank ||
+	    intel_psr_is_dc5_entry_possible(dev_priv))) {
+               drm_dbg_kms(&dev_priv->drm,
+                           "PSR1 not enabled as it doesn't meet
+			   requirements of WA:16023497226\n");
+               crtc_state->has_psr = false;
+       }
+}
+
 void intel_psr_compute_config(struct intel_dp *intel_dp,
 			      struct intel_crtc_state *crtc_state,
 			      struct drm_connector_state *conn_state)
@@ -1635,6 +1651,8 @@ void intel_psr_compute_config(struct intel_dp
*intel_dp,
 		return;
 
 	crtc_state->has_sel_update =
intel_sel_update_config_valid(intel_dp, crtc_state);
+
+	wa_16023497226(crtc_state);
 }
 
 void intel_psr_get_config(struct intel_encoder *encoder,

Do you see this would be possible? Current PSR2 handling in your
patches is ok to me.

BR,

Jouni Högander

> Regards,
> Suraj Kandpal
> 
> > 
> > BR,
> > 
> > Jouni Högander
> > 
> > >         val |=
> > > EDP_PSR_IDLE_FRAMES(psr_compute_idle_frames(intel_dp));
> > > 
> > >         if (DISPLAY_VER(dev_priv) < 20) @@ -907,7 +982,10 @@
> > > static
> > > void hsw_activate_psr2(struct intel_dp
> > > *intel_dp)
> > >         u32 val = EDP_PSR2_ENABLE;
> > >         u32 psr_val = 0;
> > > 
> > > -       val |=
> > > EDP_PSR2_IDLE_FRAMES(psr_compute_idle_frames(intel_dp));
> > > +       /* WA: 16023497226*/
> > > +       if (intel_dp->psr.is_dpkgc_configured &&
> > > +           intel_psr_is_dc5_entry_possible(dev_priv))
> > > +               val |=
> > > EDP_PSR2_IDLE_FRAMES(psr_compute_idle_frames(intel_dp));
> > > 
> > >         if (DISPLAY_VER(dev_priv) < 14 &&
> > > !IS_ALDERLAKE_P(dev_priv))
> > >                 val |= EDP_SU_TRACK_ENABLE; @@ -1502,6 +1580,8 @@
> > > void
> > > intel_psr_compute_config(struct intel_dp *intel_dp,
> > >                 return;
> > > 
> > >         crtc_state->has_sel_update =
> > > intel_sel_update_config_valid(intel_dp, crtc_state);
> > > +       intel_dp->psr.delayed_vblank =
> > > intel_psr_check_delayed_vblank_limit(crtc_state);
> > > +       intel_dp->psr.is_dpkgc_configured =
> > > intel_psr_is_dpkgc_configured(dev_priv);
> > >  }
> > > 
> > >  void intel_psr_get_config(struct intel_encoder *encoder,
> 


^ permalink raw reply	[flat|nested] 24+ messages in thread

* RE: [PATCH 2/2] drm/i915/psr: Implment WA to help reach PC10
  2024-08-23  5:24       ` Hogander, Jouni
@ 2024-08-23  6:18         ` Kandpal, Suraj
  2024-08-23  7:20           ` Hogander, Jouni
  0 siblings, 1 reply; 24+ messages in thread
From: Kandpal, Suraj @ 2024-08-23  6:18 UTC (permalink / raw)
  To: Hogander, Jouni, intel-gfx@lists.freedesktop.org
  Cc: Murthy, Arun R, Manna, Animesh, jani.nikula@linux.intel.com



> -----Original Message-----
> From: Hogander, Jouni <jouni.hogander@intel.com>
> Sent: Friday, August 23, 2024 10:54 AM
> To: Kandpal, Suraj <suraj.kandpal@intel.com>; intel-gfx@lists.freedesktop.org
> Cc: Murthy, Arun R <arun.r.murthy@intel.com>; Manna, Animesh
> <animesh.manna@intel.com>; jani.nikula@linux.intel.com
> Subject: Re: [PATCH 2/2] drm/i915/psr: Implment WA to help reach PC10
> 
> On Fri, 2024-08-23 at 04:54 +0000, Kandpal, Suraj wrote:
> >
> >
> > > -----Original Message-----
> > > From: Hogander, Jouni <jouni.hogander@intel.com>
> > > Sent: Thursday, August 22, 2024 2:16 PM
> > > To: Kandpal, Suraj <suraj.kandpal@intel.com>; intel-
> > > gfx@lists.freedesktop.org
> > > Cc: Murthy, Arun R <arun.r.murthy@intel.com>; Manna, Animesh
> > > <animesh.manna@intel.com>; jani.nikula@linux.intel.com
> > > Subject: Re: [PATCH 2/2] drm/i915/psr: Implment WA to help reach
> > > PC10
> > >
> > > On Wed, 2024-06-19 at 10:07 +0530, Suraj Kandpal wrote:
> > > > To reach PC10 when PKG_C_LATENCY is configure we must do the
> > > following
> > > > things
> > > > 1) Enter PSR1 only when delayed_vblank < 6 lines and DC5 can be
> > > > entered
> > > > 2) Allow PSR2 deep sleep when DC5 can be entered
> > > > 3) DC5 can be entered when all transocoder have either PSR1, PSR2
> > > > or eDP 1.5 PR ALPM enabled and VBI is disabled and flips and
> > > > pushes are not happening.
> > > >
> > > > --v2
> > > > -Switch condition and do an early return [Jani] -Do some checks in
> > > > compute_config [Jani] -Do not use register reads as a method of
> > > > checking states for DPKGC or delayed vblank [Jani] -Use another
> > > > way to see is vblank interrupts are disabled or not [Jani]
> > > >
> > > > WA: 16023497226
> > > > Signed-off-by: Suraj Kandpal <suraj.kandpal@intel.com>
> > > > ---
> > > >  .../drm/i915/display/intel_display_types.h    |  2 +
> > > >  drivers/gpu/drm/i915/display/intel_psr.c      | 82
> > > > ++++++++++++++++++-
> > > >  2 files changed, 83 insertions(+), 1 deletion(-)
> > > >
> > > > diff --git a/drivers/gpu/drm/i915/display/intel_display_types.h
> > > > b/drivers/gpu/drm/i915/display/intel_display_types.h
> > > > index 46b3cbeb4a82..031f8e889b65 100644
> > > > --- a/drivers/gpu/drm/i915/display/intel_display_types.h
> > > > +++ b/drivers/gpu/drm/i915/display/intel_display_types.h
> > > > @@ -1708,6 +1708,8 @@ struct intel_psr {
> > > >         bool sink_support;
> > > >         bool source_support;
> > > >         bool enabled;
> > > > +       bool delayed_vblank;
> > > > +       bool is_dpkgc_configured;
> > > >         bool paused;
> > > >         enum pipe pipe;
> > > >         enum transcoder transcoder; diff --git
> > > > a/drivers/gpu/drm/i915/display/intel_psr.c
> > > > b/drivers/gpu/drm/i915/display/intel_psr.c
> > > > index 080bf5e51148..4ddea6737386 100644
> > > > --- a/drivers/gpu/drm/i915/display/intel_psr.c
> > > > +++ b/drivers/gpu/drm/i915/display/intel_psr.c
> > > > @@ -808,6 +808,73 @@ static u8 psr_compute_idle_frames(struct
> > > intel_dp
> > > > *intel_dp)
> > > >         return idle_frames;
> > > >  }
> > > >
> > > > +static bool intel_psr_check_delayed_vblank_limit(struct
> > > > intel_crtc_state *crtc_state)
> > > > +{
> > > > +       struct drm_display_mode *adjusted_mode = &crtc_state-
> > > > > hw.adjusted_mode;
> > > > +
> > > > +       return (adjusted_mode->crtc_vblank_start - adjusted_mode-
> > > > > crtc_vdisplay) >= 6;
> > > > +}
> > > > +
> > > > +/*
> > > > + * PKG_C_LATENCY is configured only when DISPLAY_VER >= 20 and
> > > > + * VRR is not enabled
> > > > + */
> > > > +static bool intel_psr_is_dpkgc_configured(struct
> > > > drm_i915_private
> > > > *i915)
> > > > +{
> > > > +       struct intel_crtc *intel_crtc;
> > > > +
> > > > +       if (DISPLAY_VER(i915) < 20)
> > > > +               return false;
> > > > +
> > > > +       for_each_intel_crtc(&i915->drm, intel_crtc) {
> > > > +               struct intel_crtc_state *crtc_state;
> > > > +
> > > > +               if (!intel_crtc->active)
> > > > +                       continue;
> > > > +
> > > > +               crtc_state = intel_crtc->config;
> > > > +
> > > > +               if (crtc_state->vrr.enable)
> > > > +                       return false;
> > > > +       }
> > > > +
> > > > +       return true;
> > > > +}
> > > > +
> > > > +/*
> > > > + * DC5 entry is only possible if vblank interrupt is disabled
> > > > + * and either psr1, psr2, edp 1.5 pr alpm is enabled on all
> > > > + * enabled encoders.
> > > > + */
> > > > +static bool intel_psr_is_dc5_entry_possible(struct
> > > > drm_i915_private
> > > > *i915)
> > > > +{
> > > > +       struct intel_crtc *intel_crtc;
> > > > +
> > > > +       for_each_intel_crtc(&i915->drm, intel_crtc) {
> > > > +               struct intel_encoder *encoder;
> > > > +               struct drm_crtc *crtc = &intel_crtc->base;
> > > > +               struct drm_vblank_crtc *vblank;
> > > > +
> > > > +               if (!intel_crtc->active)
> > > > +                       continue;
> > > > +
> > > > +               vblank = drm_crtc_vblank_crtc(crtc);
> > > > +
> > > > +               if (vblank->enabled)
> > > > +                       return false;
> > > > +
> > > > +               for_each_encoder_on_crtc(&i915->drm, crtc,
> > > > encoder) {
> > > > +                       struct intel_dp *intel_dp =
> > > > enc_to_intel_dp(encoder);
> > > > +                       struct intel_psr *psr = &intel_dp->psr;
> > > > +
> > > > +                       if (!psr->enabled)
> > > > +                               return false;
> > > > +               }
> > > > +       }
> > > > +
> > > > +       return true;
> > > > +}
> > > > +
> > > >  static bool hsw_activate_psr1(struct intel_dp *intel_dp)
> > > >  {
> > > >         struct drm_i915_private *dev_priv = dp_to_i915(intel_dp);
> > > > @@
> > > > -815,6 +882,14 @@ static bool hsw_activate_psr1(struct intel_dp
> > > > *intel_dp)
> > > >         u32 max_sleep_time = 0x1f;
> > > >         u32 val = EDP_PSR_ENABLE;
> > > >
> > > > +       /* WA: 16023497226*/
> > > > +       if (intel_dp->psr.is_dpkgc_configured &&
> > > > +           (intel_dp->psr.delayed_vblank ||
> > > > intel_psr_is_dc5_entry_possible(dev_priv))) {
> > > > +               drm_dbg_kms(&dev_priv->drm,
> > > > +                           "PSR1 not activated as it doesn't
> > > > meet
> > > > requirements of WA:16023497226\n");
> > > > +               return false;
> > > > +       }
> > > > +
> > >
> > > I would recommend doing this in intel_psr_compute_config as a last
> > > step and drop patch 1. Doing it this way would be safer as it's not
> > > opening new sequence/state where psr.enabled = true and psr.active =
> > > false after intel_psr_enable_locked.
> >
> > The reason for this was I wanted to disable only psr1 based on if dc5
> > entry is possible or not.
> > Even if I call the dc5_entry_is_possible function from compute_config
> > and save it in the intel_psr state we would still end up with the seq
> > psr.enabled = true and psr.active = false unless you see a param which
> > will only activate psr2 and not psr1 in such scenario ?
> >
> 
> I was thinking doing it like this:
> 
> +static void wa_16023497226(struct intel_crtc_state * crtc_state) {
> +	/* PSR2 not handled here. Wa not needed for Panel Replay */
> +	if (crtc_state->has_sel_update || crtc_state-
> >has_panel_replay)
> +	    return;
> +
> +       if (intel_dp->psr.is_dpkgc_configured &&
> +           (intel_dp->psr.delayed_vblank ||
> +	    intel_psr_is_dc5_entry_possible(dev_priv))) {
> +               drm_dbg_kms(&dev_priv->drm,
> +                           "PSR1 not enabled as it doesn't meet
> +			   requirements of WA:16023497226\n");
> +               crtc_state->has_psr = false;
> +       }
> +}
> +
>  void intel_psr_compute_config(struct intel_dp *intel_dp,
>  			      struct intel_crtc_state *crtc_state,
>  			      struct drm_connector_state *conn_state) @@ -
> 1635,6 +1651,8 @@ void intel_psr_compute_config(struct intel_dp *intel_dp,
>  		return;
> 
>  	crtc_state->has_sel_update =
> intel_sel_update_config_valid(intel_dp, crtc_state);
> +
> +	wa_16023497226(crtc_state);
>  }
> 
>  void intel_psr_get_config(struct intel_encoder *encoder,
> 
> Do you see this would be possible? Current PSR2 handling in your patches is ok
> to me.

Even if has_psr as false I see that hsw_psr1_activate can be invoked since there is
No real check stopping it from getting activated

/* psr1, psr2 and panel-replay are mutually exclusive.*/
        if (intel_dp->psr.panel_replay_enabled)
                dg2_activate_panel_replay(intel_dp);
        else if (intel_dp->psr.sel_update_enabled)
                hsw_activate_psr2(intel_dp);
        else
                ret = hsw_activate_psr1(intel_dp);

so if it isn't psr2 or panel replay we will activate psr1 do we need to add an else if statement here in that case.

Regards,
Suraj Kandpal

> 
> BR,
> 
> Jouni Högander
> 
> > Regards,
> > Suraj Kandpal
> >
> > >
> > > BR,
> > >
> > > Jouni Högander
> > >
> > > >         val |=
> > > > EDP_PSR_IDLE_FRAMES(psr_compute_idle_frames(intel_dp));
> > > >
> > > >         if (DISPLAY_VER(dev_priv) < 20) @@ -907,7 +982,10 @@
> > > > static void hsw_activate_psr2(struct intel_dp
> > > > *intel_dp)
> > > >         u32 val = EDP_PSR2_ENABLE;
> > > >         u32 psr_val = 0;
> > > >
> > > > -       val |=
> > > > EDP_PSR2_IDLE_FRAMES(psr_compute_idle_frames(intel_dp));
> > > > +       /* WA: 16023497226*/
> > > > +       if (intel_dp->psr.is_dpkgc_configured &&
> > > > +           intel_psr_is_dc5_entry_possible(dev_priv))
> > > > +               val |=
> > > > EDP_PSR2_IDLE_FRAMES(psr_compute_idle_frames(intel_dp));
> > > >
> > > >         if (DISPLAY_VER(dev_priv) < 14 &&
> > > > !IS_ALDERLAKE_P(dev_priv))
> > > >                 val |= EDP_SU_TRACK_ENABLE; @@ -1502,6 +1580,8 @@
> > > > void intel_psr_compute_config(struct intel_dp *intel_dp,
> > > >                 return;
> > > >
> > > >         crtc_state->has_sel_update =
> > > > intel_sel_update_config_valid(intel_dp, crtc_state);
> > > > +       intel_dp->psr.delayed_vblank =
> > > > intel_psr_check_delayed_vblank_limit(crtc_state);
> > > > +       intel_dp->psr.is_dpkgc_configured =
> > > > intel_psr_is_dpkgc_configured(dev_priv);
> > > >  }
> > > >
> > > >  void intel_psr_get_config(struct intel_encoder *encoder,
> >


^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [PATCH 2/2] drm/i915/psr: Implment WA to help reach PC10
  2024-08-23  6:18         ` Kandpal, Suraj
@ 2024-08-23  7:20           ` Hogander, Jouni
  2024-08-23  9:49             ` Kandpal, Suraj
  0 siblings, 1 reply; 24+ messages in thread
From: Hogander, Jouni @ 2024-08-23  7:20 UTC (permalink / raw)
  To: Kandpal, Suraj, intel-gfx@lists.freedesktop.org
  Cc: Murthy, Arun R, Manna, Animesh, jani.nikula@linux.intel.com

On Fri, 2024-08-23 at 06:18 +0000, Kandpal, Suraj wrote:
> 
> 
> > -----Original Message-----
> > From: Hogander, Jouni <jouni.hogander@intel.com>
> > Sent: Friday, August 23, 2024 10:54 AM
> > To: Kandpal, Suraj <suraj.kandpal@intel.com>;
> > intel-gfx@lists.freedesktop.org
> > Cc: Murthy, Arun R <arun.r.murthy@intel.com>; Manna, Animesh
> > <animesh.manna@intel.com>; jani.nikula@linux.intel.com
> > Subject: Re: [PATCH 2/2] drm/i915/psr: Implment WA to help reach
> > PC10
> > 
> > On Fri, 2024-08-23 at 04:54 +0000, Kandpal, Suraj wrote:
> > > 
> > > 
> > > > -----Original Message-----
> > > > From: Hogander, Jouni <jouni.hogander@intel.com>
> > > > Sent: Thursday, August 22, 2024 2:16 PM
> > > > To: Kandpal, Suraj <suraj.kandpal@intel.com>; intel-
> > > > gfx@lists.freedesktop.org
> > > > Cc: Murthy, Arun R <arun.r.murthy@intel.com>; Manna, Animesh
> > > > <animesh.manna@intel.com>; jani.nikula@linux.intel.com
> > > > Subject: Re: [PATCH 2/2] drm/i915/psr: Implment WA to help
> > > > reach
> > > > PC10
> > > > 
> > > > On Wed, 2024-06-19 at 10:07 +0530, Suraj Kandpal wrote:
> > > > > To reach PC10 when PKG_C_LATENCY is configure we must do the
> > > > following
> > > > > things
> > > > > 1) Enter PSR1 only when delayed_vblank < 6 lines and DC5 can
> > > > > be
> > > > > entered
> > > > > 2) Allow PSR2 deep sleep when DC5 can be entered
> > > > > 3) DC5 can be entered when all transocoder have either PSR1,
> > > > > PSR2
> > > > > or eDP 1.5 PR ALPM enabled and VBI is disabled and flips and
> > > > > pushes are not happening.
> > > > > 
> > > > > --v2
> > > > > -Switch condition and do an early return [Jani] -Do some
> > > > > checks in
> > > > > compute_config [Jani] -Do not use register reads as a method
> > > > > of
> > > > > checking states for DPKGC or delayed vblank [Jani] -Use
> > > > > another
> > > > > way to see is vblank interrupts are disabled or not [Jani]
> > > > > 
> > > > > WA: 16023497226
> > > > > Signed-off-by: Suraj Kandpal <suraj.kandpal@intel.com>
> > > > > ---
> > > > >  .../drm/i915/display/intel_display_types.h    |  2 +
> > > > >  drivers/gpu/drm/i915/display/intel_psr.c      | 82
> > > > > ++++++++++++++++++-
> > > > >  2 files changed, 83 insertions(+), 1 deletion(-)
> > > > > 
> > > > > diff --git
> > > > > a/drivers/gpu/drm/i915/display/intel_display_types.h
> > > > > b/drivers/gpu/drm/i915/display/intel_display_types.h
> > > > > index 46b3cbeb4a82..031f8e889b65 100644
> > > > > --- a/drivers/gpu/drm/i915/display/intel_display_types.h
> > > > > +++ b/drivers/gpu/drm/i915/display/intel_display_types.h
> > > > > @@ -1708,6 +1708,8 @@ struct intel_psr {
> > > > >         bool sink_support;
> > > > >         bool source_support;
> > > > >         bool enabled;
> > > > > +       bool delayed_vblank;
> > > > > +       bool is_dpkgc_configured;
> > > > >         bool paused;
> > > > >         enum pipe pipe;
> > > > >         enum transcoder transcoder; diff --git
> > > > > a/drivers/gpu/drm/i915/display/intel_psr.c
> > > > > b/drivers/gpu/drm/i915/display/intel_psr.c
> > > > > index 080bf5e51148..4ddea6737386 100644
> > > > > --- a/drivers/gpu/drm/i915/display/intel_psr.c
> > > > > +++ b/drivers/gpu/drm/i915/display/intel_psr.c
> > > > > @@ -808,6 +808,73 @@ static u8 psr_compute_idle_frames(struct
> > > > intel_dp
> > > > > *intel_dp)
> > > > >         return idle_frames;
> > > > >  }
> > > > > 
> > > > > +static bool intel_psr_check_delayed_vblank_limit(struct
> > > > > intel_crtc_state *crtc_state)
> > > > > +{
> > > > > +       struct drm_display_mode *adjusted_mode = &crtc_state-
> > > > > > hw.adjusted_mode;
> > > > > +
> > > > > +       return (adjusted_mode->crtc_vblank_start -
> > > > > adjusted_mode-
> > > > > > crtc_vdisplay) >= 6;
> > > > > +}
> > > > > +
> > > > > +/*
> > > > > + * PKG_C_LATENCY is configured only when DISPLAY_VER >= 20
> > > > > and
> > > > > + * VRR is not enabled
> > > > > + */
> > > > > +static bool intel_psr_is_dpkgc_configured(struct
> > > > > drm_i915_private
> > > > > *i915)
> > > > > +{
> > > > > +       struct intel_crtc *intel_crtc;
> > > > > +
> > > > > +       if (DISPLAY_VER(i915) < 20)
> > > > > +               return false;
> > > > > +
> > > > > +       for_each_intel_crtc(&i915->drm, intel_crtc) {
> > > > > +               struct intel_crtc_state *crtc_state;
> > > > > +
> > > > > +               if (!intel_crtc->active)
> > > > > +                       continue;
> > > > > +
> > > > > +               crtc_state = intel_crtc->config;
> > > > > +
> > > > > +               if (crtc_state->vrr.enable)
> > > > > +                       return false;
> > > > > +       }
> > > > > +
> > > > > +       return true;
> > > > > +}
> > > > > +
> > > > > +/*
> > > > > + * DC5 entry is only possible if vblank interrupt is
> > > > > disabled
> > > > > + * and either psr1, psr2, edp 1.5 pr alpm is enabled on all
> > > > > + * enabled encoders.
> > > > > + */
> > > > > +static bool intel_psr_is_dc5_entry_possible(struct
> > > > > drm_i915_private
> > > > > *i915)
> > > > > +{
> > > > > +       struct intel_crtc *intel_crtc;
> > > > > +
> > > > > +       for_each_intel_crtc(&i915->drm, intel_crtc) {
> > > > > +               struct intel_encoder *encoder;
> > > > > +               struct drm_crtc *crtc = &intel_crtc->base;
> > > > > +               struct drm_vblank_crtc *vblank;
> > > > > +
> > > > > +               if (!intel_crtc->active)
> > > > > +                       continue;
> > > > > +
> > > > > +               vblank = drm_crtc_vblank_crtc(crtc);
> > > > > +
> > > > > +               if (vblank->enabled)
> > > > > +                       return false;
> > > > > +
> > > > > +               for_each_encoder_on_crtc(&i915->drm, crtc,
> > > > > encoder) {
> > > > > +                       struct intel_dp *intel_dp =
> > > > > enc_to_intel_dp(encoder);
> > > > > +                       struct intel_psr *psr = &intel_dp-
> > > > > >psr;
> > > > > +
> > > > > +                       if (!psr->enabled)
> > > > > +                               return false;
> > > > > +               }
> > > > > +       }
> > > > > +
> > > > > +       return true;
> > > > > +}
> > > > > +
> > > > >  static bool hsw_activate_psr1(struct intel_dp *intel_dp)
> > > > >  {
> > > > >         struct drm_i915_private *dev_priv =
> > > > > dp_to_i915(intel_dp);
> > > > > @@
> > > > > -815,6 +882,14 @@ static bool hsw_activate_psr1(struct
> > > > > intel_dp
> > > > > *intel_dp)
> > > > >         u32 max_sleep_time = 0x1f;
> > > > >         u32 val = EDP_PSR_ENABLE;
> > > > > 
> > > > > +       /* WA: 16023497226*/
> > > > > +       if (intel_dp->psr.is_dpkgc_configured &&
> > > > > +           (intel_dp->psr.delayed_vblank ||
> > > > > intel_psr_is_dc5_entry_possible(dev_priv))) {
> > > > > +               drm_dbg_kms(&dev_priv->drm,
> > > > > +                           "PSR1 not activated as it doesn't
> > > > > meet
> > > > > requirements of WA:16023497226\n");
> > > > > +               return false;
> > > > > +       }
> > > > > +
> > > > 
> > > > I would recommend doing this in intel_psr_compute_config as a
> > > > last
> > > > step and drop patch 1. Doing it this way would be safer as it's
> > > > not
> > > > opening new sequence/state where psr.enabled = true and
> > > > psr.active =
> > > > false after intel_psr_enable_locked.
> > > 
> > > The reason for this was I wanted to disable only psr1 based on if
> > > dc5
> > > entry is possible or not.
> > > Even if I call the dc5_entry_is_possible function from
> > > compute_config
> > > and save it in the intel_psr state we would still end up with the
> > > seq
> > > psr.enabled = true and psr.active = false unless you see a param
> > > which
> > > will only activate psr2 and not psr1 in such scenario ?
> > > 
> > 
> > I was thinking doing it like this:
> > 
> > +static void wa_16023497226(struct intel_crtc_state * crtc_state) {
> > +       /* PSR2 not handled here. Wa not needed for Panel Replay */
> > +       if (crtc_state->has_sel_update || crtc_state-
> > > has_panel_replay)
> > +           return;
> > +
> > +       if (intel_dp->psr.is_dpkgc_configured &&
> > +           (intel_dp->psr.delayed_vblank ||
> > +           intel_psr_is_dc5_entry_possible(dev_priv))) {
> > +               drm_dbg_kms(&dev_priv->drm,
> > +                           "PSR1 not enabled as it doesn't meet
> > +                          requirements of WA:16023497226\n");
> > +               crtc_state->has_psr = false;
> > +       }
> > +}
> > +
> >  void intel_psr_compute_config(struct intel_dp *intel_dp,
> >                               struct intel_crtc_state *crtc_state,
> >                               struct drm_connector_state
> > *conn_state) @@ -
> > 1635,6 +1651,8 @@ void intel_psr_compute_config(struct intel_dp
> > *intel_dp,
> >                 return;
> > 
> >         crtc_state->has_sel_update =
> > intel_sel_update_config_valid(intel_dp, crtc_state);
> > +
> > +       wa_16023497226(crtc_state);
> >  }
> > 
> >  void intel_psr_get_config(struct intel_encoder *encoder,
> > 
> > Do you see this would be possible? Current PSR2 handling in your
> > patches is ok
> > to me.
> 
> Even if has_psr as false I see that hsw_psr1_activate can be invoked
> since there is
> No real check stopping it from getting activated
> 
> /* psr1, psr2 and panel-replay are mutually exclusive.*/
>         if (intel_dp->psr.panel_replay_enabled)
>                 dg2_activate_panel_replay(intel_dp);
>         else if (intel_dp->psr.sel_update_enabled)
>                 hsw_activate_psr2(intel_dp);
>         else
>                 ret = hsw_activate_psr1(intel_dp);
> 
> so if it isn't psr2 or panel replay we will activate psr1 do we need
> to add an else if statement here in that case.

No. That is taken care in caller of intel_psr_enable_locked:

void intel_psr_post_plane_update(struct intel_atomic_state *state,
				 struct intel_crtc *crtc)
{
	struct drm_i915_private *dev_priv = to_i915(state->base.dev);
	const struct intel_crtc_state *crtc_state =
		intel_atomic_get_new_crtc_state(state, crtc);
	struct intel_encoder *encoder;

	if (!crtc_state->has_psr)
		return;

path to intel_psr_activate is intel_psr_post_plane_update-
>intel_psr_enable_locked->intel_psr_activate.

BR,

Jouni Högander

> 
> Regards,
> Suraj Kandpal
> 
> > 
> > BR,
> > 
> > Jouni Högander
> > 
> > > Regards,
> > > Suraj Kandpal
> > > 
> > > > 
> > > > BR,
> > > > 
> > > > Jouni Högander
> > > > 
> > > > >         val |=
> > > > > EDP_PSR_IDLE_FRAMES(psr_compute_idle_frames(intel_dp));
> > > > > 
> > > > >         if (DISPLAY_VER(dev_priv) < 20) @@ -907,7 +982,10 @@
> > > > > static void hsw_activate_psr2(struct intel_dp
> > > > > *intel_dp)
> > > > >         u32 val = EDP_PSR2_ENABLE;
> > > > >         u32 psr_val = 0;
> > > > > 
> > > > > -       val |=
> > > > > EDP_PSR2_IDLE_FRAMES(psr_compute_idle_frames(intel_dp));
> > > > > +       /* WA: 16023497226*/
> > > > > +       if (intel_dp->psr.is_dpkgc_configured &&
> > > > > +           intel_psr_is_dc5_entry_possible(dev_priv))
> > > > > +               val |=
> > > > > EDP_PSR2_IDLE_FRAMES(psr_compute_idle_frames(intel_dp));
> > > > > 
> > > > >         if (DISPLAY_VER(dev_priv) < 14 &&
> > > > > !IS_ALDERLAKE_P(dev_priv))
> > > > >                 val |= EDP_SU_TRACK_ENABLE; @@ -1502,6
> > > > > +1580,8 @@
> > > > > void intel_psr_compute_config(struct intel_dp *intel_dp,
> > > > >                 return;
> > > > > 
> > > > >         crtc_state->has_sel_update =
> > > > > intel_sel_update_config_valid(intel_dp, crtc_state);
> > > > > +       intel_dp->psr.delayed_vblank =
> > > > > intel_psr_check_delayed_vblank_limit(crtc_state);
> > > > > +       intel_dp->psr.is_dpkgc_configured =
> > > > > intel_psr_is_dpkgc_configured(dev_priv);
> > > > >  }
> > > > > 
> > > > >  void intel_psr_get_config(struct intel_encoder *encoder,
> > > 
> 


^ permalink raw reply	[flat|nested] 24+ messages in thread

* RE: [PATCH 2/2] drm/i915/psr: Implment WA to help reach PC10
  2024-08-23  7:20           ` Hogander, Jouni
@ 2024-08-23  9:49             ` Kandpal, Suraj
  2024-08-23 10:00               ` Hogander, Jouni
  0 siblings, 1 reply; 24+ messages in thread
From: Kandpal, Suraj @ 2024-08-23  9:49 UTC (permalink / raw)
  To: Hogander, Jouni, intel-gfx@lists.freedesktop.org
  Cc: Murthy, Arun R, Manna, Animesh, jani.nikula@linux.intel.com



> -----Original Message-----
> From: Hogander, Jouni <jouni.hogander@intel.com>
> Sent: Friday, August 23, 2024 12:51 PM
> To: Kandpal, Suraj <suraj.kandpal@intel.com>; intel-
> gfx@lists.freedesktop.org
> Cc: Murthy, Arun R <arun.r.murthy@intel.com>; Manna, Animesh
> <animesh.manna@intel.com>; jani.nikula@linux.intel.com
> Subject: Re: [PATCH 2/2] drm/i915/psr: Implment WA to help reach PC10
> 
> On Fri, 2024-08-23 at 06:18 +0000, Kandpal, Suraj wrote:
> >
> >
> > > -----Original Message-----
> > > From: Hogander, Jouni <jouni.hogander@intel.com>
> > > Sent: Friday, August 23, 2024 10:54 AM
> > > To: Kandpal, Suraj <suraj.kandpal@intel.com>;
> > > intel-gfx@lists.freedesktop.org
> > > Cc: Murthy, Arun R <arun.r.murthy@intel.com>; Manna, Animesh
> > > <animesh.manna@intel.com>; jani.nikula@linux.intel.com
> > > Subject: Re: [PATCH 2/2] drm/i915/psr: Implment WA to help reach
> > > PC10
> > >
> > > On Fri, 2024-08-23 at 04:54 +0000, Kandpal, Suraj wrote:
> > > >
> > > >
> > > > > -----Original Message-----
> > > > > From: Hogander, Jouni <jouni.hogander@intel.com>
> > > > > Sent: Thursday, August 22, 2024 2:16 PM
> > > > > To: Kandpal, Suraj <suraj.kandpal@intel.com>; intel-
> > > > > gfx@lists.freedesktop.org
> > > > > Cc: Murthy, Arun R <arun.r.murthy@intel.com>; Manna, Animesh
> > > > > <animesh.manna@intel.com>; jani.nikula@linux.intel.com
> > > > > Subject: Re: [PATCH 2/2] drm/i915/psr: Implment WA to help reach
> > > > > PC10
> > > > >
> > > > > On Wed, 2024-06-19 at 10:07 +0530, Suraj Kandpal wrote:
> > > > > > To reach PC10 when PKG_C_LATENCY is configure we must do the
> > > > > following
> > > > > > things
> > > > > > 1) Enter PSR1 only when delayed_vblank < 6 lines and DC5 can
> > > > > > be entered
> > > > > > 2) Allow PSR2 deep sleep when DC5 can be entered
> > > > > > 3) DC5 can be entered when all transocoder have either PSR1,
> > > > > > PSR2
> > > > > > or eDP 1.5 PR ALPM enabled and VBI is disabled and flips and
> > > > > > pushes are not happening.
> > > > > >
> > > > > > --v2
> > > > > > -Switch condition and do an early return [Jani] -Do some
> > > > > > checks in compute_config [Jani] -Do not use register reads as
> > > > > > a method of checking states for DPKGC or delayed vblank [Jani]
> > > > > > -Use another way to see is vblank interrupts are disabled or
> > > > > > not [Jani]
> > > > > >
> > > > > > WA: 16023497226
> > > > > > Signed-off-by: Suraj Kandpal <suraj.kandpal@intel.com>
> > > > > > ---
> > > > > >  .../drm/i915/display/intel_display_types.h    |  2 +
> > > > > >  drivers/gpu/drm/i915/display/intel_psr.c      | 82
> > > > > > ++++++++++++++++++-
> > > > > >  2 files changed, 83 insertions(+), 1 deletion(-)
> > > > > >
> > > > > > diff --git
> > > > > > a/drivers/gpu/drm/i915/display/intel_display_types.h
> > > > > > b/drivers/gpu/drm/i915/display/intel_display_types.h
> > > > > > index 46b3cbeb4a82..031f8e889b65 100644
> > > > > > --- a/drivers/gpu/drm/i915/display/intel_display_types.h
> > > > > > +++ b/drivers/gpu/drm/i915/display/intel_display_types.h
> > > > > > @@ -1708,6 +1708,8 @@ struct intel_psr {
> > > > > >         bool sink_support;
> > > > > >         bool source_support;
> > > > > >         bool enabled;
> > > > > > +       bool delayed_vblank;
> > > > > > +       bool is_dpkgc_configured;
> > > > > >         bool paused;
> > > > > >         enum pipe pipe;
> > > > > >         enum transcoder transcoder; diff --git
> > > > > > a/drivers/gpu/drm/i915/display/intel_psr.c
> > > > > > b/drivers/gpu/drm/i915/display/intel_psr.c
> > > > > > index 080bf5e51148..4ddea6737386 100644
> > > > > > --- a/drivers/gpu/drm/i915/display/intel_psr.c
> > > > > > +++ b/drivers/gpu/drm/i915/display/intel_psr.c
> > > > > > @@ -808,6 +808,73 @@ static u8 psr_compute_idle_frames(struct
> > > > > intel_dp
> > > > > > *intel_dp)
> > > > > >         return idle_frames;
> > > > > >  }
> > > > > >
> > > > > > +static bool intel_psr_check_delayed_vblank_limit(struct
> > > > > > intel_crtc_state *crtc_state)
> > > > > > +{
> > > > > > +       struct drm_display_mode *adjusted_mode = &crtc_state-
> > > > > > > hw.adjusted_mode;
> > > > > > +
> > > > > > +       return (adjusted_mode->crtc_vblank_start -
> > > > > > adjusted_mode-
> > > > > > > crtc_vdisplay) >= 6;
> > > > > > +}
> > > > > > +
> > > > > > +/*
> > > > > > + * PKG_C_LATENCY is configured only when DISPLAY_VER >= 20
> > > > > > and
> > > > > > + * VRR is not enabled
> > > > > > + */
> > > > > > +static bool intel_psr_is_dpkgc_configured(struct
> > > > > > drm_i915_private
> > > > > > *i915)
> > > > > > +{
> > > > > > +       struct intel_crtc *intel_crtc;
> > > > > > +
> > > > > > +       if (DISPLAY_VER(i915) < 20)
> > > > > > +               return false;
> > > > > > +
> > > > > > +       for_each_intel_crtc(&i915->drm, intel_crtc) {
> > > > > > +               struct intel_crtc_state *crtc_state;
> > > > > > +
> > > > > > +               if (!intel_crtc->active)
> > > > > > +                       continue;
> > > > > > +
> > > > > > +               crtc_state = intel_crtc->config;
> > > > > > +
> > > > > > +               if (crtc_state->vrr.enable)
> > > > > > +                       return false;
> > > > > > +       }
> > > > > > +
> > > > > > +       return true;
> > > > > > +}
> > > > > > +
> > > > > > +/*
> > > > > > + * DC5 entry is only possible if vblank interrupt is
> > > > > > disabled
> > > > > > + * and either psr1, psr2, edp 1.5 pr alpm is enabled on all
> > > > > > + * enabled encoders.
> > > > > > + */
> > > > > > +static bool intel_psr_is_dc5_entry_possible(struct
> > > > > > drm_i915_private
> > > > > > *i915)
> > > > > > +{
> > > > > > +       struct intel_crtc *intel_crtc;
> > > > > > +
> > > > > > +       for_each_intel_crtc(&i915->drm, intel_crtc) {
> > > > > > +               struct intel_encoder *encoder;
> > > > > > +               struct drm_crtc *crtc = &intel_crtc->base;
> > > > > > +               struct drm_vblank_crtc *vblank;
> > > > > > +
> > > > > > +               if (!intel_crtc->active)
> > > > > > +                       continue;
> > > > > > +
> > > > > > +               vblank = drm_crtc_vblank_crtc(crtc);
> > > > > > +
> > > > > > +               if (vblank->enabled)
> > > > > > +                       return false;
> > > > > > +
> > > > > > +               for_each_encoder_on_crtc(&i915->drm, crtc,
> > > > > > encoder) {
> > > > > > +                       struct intel_dp *intel_dp =
> > > > > > enc_to_intel_dp(encoder);
> > > > > > +                       struct intel_psr *psr = &intel_dp-
> > > > > > >psr;
> > > > > > +
> > > > > > +                       if (!psr->enabled)
> > > > > > +                               return false;
> > > > > > +               }
> > > > > > +       }
> > > > > > +
> > > > > > +       return true;
> > > > > > +}
> > > > > > +
> > > > > >  static bool hsw_activate_psr1(struct intel_dp *intel_dp)
> > > > > >  {
> > > > > >         struct drm_i915_private *dev_priv =
> > > > > > dp_to_i915(intel_dp); @@
> > > > > > -815,6 +882,14 @@ static bool hsw_activate_psr1(struct
> > > > > > intel_dp
> > > > > > *intel_dp)
> > > > > >         u32 max_sleep_time = 0x1f;
> > > > > >         u32 val = EDP_PSR_ENABLE;
> > > > > >
> > > > > > +       /* WA: 16023497226*/
> > > > > > +       if (intel_dp->psr.is_dpkgc_configured &&
> > > > > > +           (intel_dp->psr.delayed_vblank ||
> > > > > > intel_psr_is_dc5_entry_possible(dev_priv))) {
> > > > > > +               drm_dbg_kms(&dev_priv->drm,
> > > > > > +                           "PSR1 not activated as it doesn't
> > > > > > meet
> > > > > > requirements of WA:16023497226\n");
> > > > > > +               return false;
> > > > > > +       }
> > > > > > +
> > > > >
> > > > > I would recommend doing this in intel_psr_compute_config as a
> > > > > last step and drop patch 1. Doing it this way would be safer as
> > > > > it's not opening new sequence/state where psr.enabled = true and
> > > > > psr.active = false after intel_psr_enable_locked.
> > > >
> > > > The reason for this was I wanted to disable only psr1 based on if
> > > > dc5
> > > > entry is possible or not.
> > > > Even if I call the dc5_entry_is_possible function from
> > > > compute_config and save it in the intel_psr state we would still
> > > > end up with the seq psr.enabled = true and psr.active = false
> > > > unless you see a param which will only activate psr2 and not psr1
> > > > in such scenario ?
> > > >
> > >
> > > I was thinking doing it like this:
> > >
> > > +static void wa_16023497226(struct intel_crtc_state * crtc_state) {
> > > +       /* PSR2 not handled here. Wa not needed for Panel Replay */
> > > +       if (crtc_state->has_sel_update || crtc_state-
> > > > has_panel_replay)
> > > +           return;
> > > +
> > > +       if (intel_dp->psr.is_dpkgc_configured &&
> > > +           (intel_dp->psr.delayed_vblank ||
> > > +           intel_psr_is_dc5_entry_possible(dev_priv))) {
> > > +               drm_dbg_kms(&dev_priv->drm,
> > > +                           "PSR1 not enabled as it doesn't meet
> > > +                          requirements of WA:16023497226\n");
> > > +               crtc_state->has_psr = false;
> > > +       }
> > > +}
> > > +
> > >  void intel_psr_compute_config(struct intel_dp *intel_dp,
> > >                               struct intel_crtc_state *crtc_state,
> > >                               struct drm_connector_state
> > > *conn_state) @@ -
> > > 1635,6 +1651,8 @@ void intel_psr_compute_config(struct intel_dp
> > > *intel_dp,
> > >                 return;
> > >
> > >         crtc_state->has_sel_update =
> > > intel_sel_update_config_valid(intel_dp, crtc_state);
> > > +
> > > +       wa_16023497226(crtc_state);
> > >  }
> > >
> > >  void intel_psr_get_config(struct intel_encoder *encoder,
> > >
> > > Do you see this would be possible? Current PSR2 handling in your
> > > patches is ok to me.
> >
> > Even if has_psr as false I see that hsw_psr1_activate can be invoked
> > since there is No real check stopping it from getting activated
> >
> > /* psr1, psr2 and panel-replay are mutually exclusive.*/
> >         if (intel_dp->psr.panel_replay_enabled)
> >                 dg2_activate_panel_replay(intel_dp);
> >         else if (intel_dp->psr.sel_update_enabled)
> >                 hsw_activate_psr2(intel_dp);
> >         else
> >                 ret = hsw_activate_psr1(intel_dp);
> >
> > so if it isn't psr2 or panel replay we will activate psr1 do we need
> > to add an else if statement here in that case.
> 
> No. That is taken care in caller of intel_psr_enable_locked:
> 

Wouldn’t this stop us from enabling psr2 when could have been enabled?

Regards,
Suraj Kandpal

> void intel_psr_post_plane_update(struct intel_atomic_state *state,
> 				 struct intel_crtc *crtc)
> {
> 	struct drm_i915_private *dev_priv = to_i915(state->base.dev);
> 	const struct intel_crtc_state *crtc_state =
> 		intel_atomic_get_new_crtc_state(state, crtc);
> 	struct intel_encoder *encoder;
> 
> 	if (!crtc_state->has_psr)
> 		return;
> 
> path to intel_psr_activate is intel_psr_post_plane_update-
> >intel_psr_enable_locked->intel_psr_activate.
> 
> BR,
> 
> Jouni Högander
> 
> >
> > Regards,
> > Suraj Kandpal
> >
> > >
> > > BR,
> > >
> > > Jouni Högander
> > >
> > > > Regards,
> > > > Suraj Kandpal
> > > >
> > > > >
> > > > > BR,
> > > > >
> > > > > Jouni Högander
> > > > >
> > > > > >         val |=
> > > > > > EDP_PSR_IDLE_FRAMES(psr_compute_idle_frames(intel_dp));
> > > > > >
> > > > > >         if (DISPLAY_VER(dev_priv) < 20) @@ -907,7 +982,10 @@
> > > > > > static void hsw_activate_psr2(struct intel_dp
> > > > > > *intel_dp)
> > > > > >         u32 val = EDP_PSR2_ENABLE;
> > > > > >         u32 psr_val = 0;
> > > > > >
> > > > > > -       val |=
> > > > > > EDP_PSR2_IDLE_FRAMES(psr_compute_idle_frames(intel_dp));
> > > > > > +       /* WA: 16023497226*/
> > > > > > +       if (intel_dp->psr.is_dpkgc_configured &&
> > > > > > +           intel_psr_is_dc5_entry_possible(dev_priv))
> > > > > > +               val |=
> > > > > > EDP_PSR2_IDLE_FRAMES(psr_compute_idle_frames(intel_dp));
> > > > > >
> > > > > >         if (DISPLAY_VER(dev_priv) < 14 &&
> > > > > > !IS_ALDERLAKE_P(dev_priv))
> > > > > >                 val |= EDP_SU_TRACK_ENABLE; @@ -1502,6
> > > > > > +1580,8 @@
> > > > > > void intel_psr_compute_config(struct intel_dp *intel_dp,
> > > > > >                 return;
> > > > > >
> > > > > >         crtc_state->has_sel_update =
> > > > > > intel_sel_update_config_valid(intel_dp, crtc_state);
> > > > > > +       intel_dp->psr.delayed_vblank =
> > > > > > intel_psr_check_delayed_vblank_limit(crtc_state);
> > > > > > +       intel_dp->psr.is_dpkgc_configured =
> > > > > > intel_psr_is_dpkgc_configured(dev_priv);
> > > > > >  }
> > > > > >
> > > > > >  void intel_psr_get_config(struct intel_encoder *encoder,
> > > >
> >


^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [PATCH 2/2] drm/i915/psr: Implment WA to help reach PC10
  2024-08-23  9:49             ` Kandpal, Suraj
@ 2024-08-23 10:00               ` Hogander, Jouni
  2024-08-27  4:32                 ` Kandpal, Suraj
  0 siblings, 1 reply; 24+ messages in thread
From: Hogander, Jouni @ 2024-08-23 10:00 UTC (permalink / raw)
  To: Kandpal, Suraj, intel-gfx@lists.freedesktop.org
  Cc: Murthy, Arun R, Manna, Animesh, jani.nikula@linux.intel.com

On Fri, 2024-08-23 at 09:49 +0000, Kandpal, Suraj wrote:
> 
> 
> > -----Original Message-----
> > From: Hogander, Jouni <jouni.hogander@intel.com>
> > Sent: Friday, August 23, 2024 12:51 PM
> > To: Kandpal, Suraj <suraj.kandpal@intel.com>; intel-
> > gfx@lists.freedesktop.org
> > Cc: Murthy, Arun R <arun.r.murthy@intel.com>; Manna, Animesh
> > <animesh.manna@intel.com>; jani.nikula@linux.intel.com
> > Subject: Re: [PATCH 2/2] drm/i915/psr: Implment WA to help reach
> > PC10
> > 
> > On Fri, 2024-08-23 at 06:18 +0000, Kandpal, Suraj wrote:
> > > 
> > > 
> > > > -----Original Message-----
> > > > From: Hogander, Jouni <jouni.hogander@intel.com>
> > > > Sent: Friday, August 23, 2024 10:54 AM
> > > > To: Kandpal, Suraj <suraj.kandpal@intel.com>;
> > > > intel-gfx@lists.freedesktop.org
> > > > Cc: Murthy, Arun R <arun.r.murthy@intel.com>; Manna, Animesh
> > > > <animesh.manna@intel.com>; jani.nikula@linux.intel.com
> > > > Subject: Re: [PATCH 2/2] drm/i915/psr: Implment WA to help
> > > > reach
> > > > PC10
> > > > 
> > > > On Fri, 2024-08-23 at 04:54 +0000, Kandpal, Suraj wrote:
> > > > > 
> > > > > 
> > > > > > -----Original Message-----
> > > > > > From: Hogander, Jouni <jouni.hogander@intel.com>
> > > > > > Sent: Thursday, August 22, 2024 2:16 PM
> > > > > > To: Kandpal, Suraj <suraj.kandpal@intel.com>; intel-
> > > > > > gfx@lists.freedesktop.org
> > > > > > Cc: Murthy, Arun R <arun.r.murthy@intel.com>; Manna,
> > > > > > Animesh
> > > > > > <animesh.manna@intel.com>; jani.nikula@linux.intel.com
> > > > > > Subject: Re: [PATCH 2/2] drm/i915/psr: Implment WA to help
> > > > > > reach
> > > > > > PC10
> > > > > > 
> > > > > > On Wed, 2024-06-19 at 10:07 +0530, Suraj Kandpal wrote:
> > > > > > > To reach PC10 when PKG_C_LATENCY is configure we must do
> > > > > > > the
> > > > > > following
> > > > > > > things
> > > > > > > 1) Enter PSR1 only when delayed_vblank < 6 lines and DC5
> > > > > > > can
> > > > > > > be entered
> > > > > > > 2) Allow PSR2 deep sleep when DC5 can be entered
> > > > > > > 3) DC5 can be entered when all transocoder have either
> > > > > > > PSR1,
> > > > > > > PSR2
> > > > > > > or eDP 1.5 PR ALPM enabled and VBI is disabled and flips
> > > > > > > and
> > > > > > > pushes are not happening.
> > > > > > > 
> > > > > > > --v2
> > > > > > > -Switch condition and do an early return [Jani] -Do some
> > > > > > > checks in compute_config [Jani] -Do not use register
> > > > > > > reads as
> > > > > > > a method of checking states for DPKGC or delayed vblank
> > > > > > > [Jani]
> > > > > > > -Use another way to see is vblank interrupts are disabled
> > > > > > > or
> > > > > > > not [Jani]
> > > > > > > 
> > > > > > > WA: 16023497226
> > > > > > > Signed-off-by: Suraj Kandpal <suraj.kandpal@intel.com>
> > > > > > > ---
> > > > > > >  .../drm/i915/display/intel_display_types.h    |  2 +
> > > > > > >  drivers/gpu/drm/i915/display/intel_psr.c      | 82
> > > > > > > ++++++++++++++++++-
> > > > > > >  2 files changed, 83 insertions(+), 1 deletion(-)
> > > > > > > 
> > > > > > > diff --git
> > > > > > > a/drivers/gpu/drm/i915/display/intel_display_types.h
> > > > > > > b/drivers/gpu/drm/i915/display/intel_display_types.h
> > > > > > > index 46b3cbeb4a82..031f8e889b65 100644
> > > > > > > --- a/drivers/gpu/drm/i915/display/intel_display_types.h
> > > > > > > +++ b/drivers/gpu/drm/i915/display/intel_display_types.h
> > > > > > > @@ -1708,6 +1708,8 @@ struct intel_psr {
> > > > > > >         bool sink_support;
> > > > > > >         bool source_support;
> > > > > > >         bool enabled;
> > > > > > > +       bool delayed_vblank;
> > > > > > > +       bool is_dpkgc_configured;
> > > > > > >         bool paused;
> > > > > > >         enum pipe pipe;
> > > > > > >         enum transcoder transcoder; diff --git
> > > > > > > a/drivers/gpu/drm/i915/display/intel_psr.c
> > > > > > > b/drivers/gpu/drm/i915/display/intel_psr.c
> > > > > > > index 080bf5e51148..4ddea6737386 100644
> > > > > > > --- a/drivers/gpu/drm/i915/display/intel_psr.c
> > > > > > > +++ b/drivers/gpu/drm/i915/display/intel_psr.c
> > > > > > > @@ -808,6 +808,73 @@ static u8
> > > > > > > psr_compute_idle_frames(struct
> > > > > > intel_dp
> > > > > > > *intel_dp)
> > > > > > >         return idle_frames;
> > > > > > >  }
> > > > > > > 
> > > > > > > +static bool intel_psr_check_delayed_vblank_limit(struct
> > > > > > > intel_crtc_state *crtc_state)
> > > > > > > +{
> > > > > > > +       struct drm_display_mode *adjusted_mode =
> > > > > > > &crtc_state-
> > > > > > > > hw.adjusted_mode;
> > > > > > > +
> > > > > > > +       return (adjusted_mode->crtc_vblank_start -
> > > > > > > adjusted_mode-
> > > > > > > > crtc_vdisplay) >= 6;
> > > > > > > +}
> > > > > > > +
> > > > > > > +/*
> > > > > > > + * PKG_C_LATENCY is configured only when DISPLAY_VER >=
> > > > > > > 20
> > > > > > > and
> > > > > > > + * VRR is not enabled
> > > > > > > + */
> > > > > > > +static bool intel_psr_is_dpkgc_configured(struct
> > > > > > > drm_i915_private
> > > > > > > *i915)
> > > > > > > +{
> > > > > > > +       struct intel_crtc *intel_crtc;
> > > > > > > +
> > > > > > > +       if (DISPLAY_VER(i915) < 20)
> > > > > > > +               return false;
> > > > > > > +
> > > > > > > +       for_each_intel_crtc(&i915->drm, intel_crtc) {
> > > > > > > +               struct intel_crtc_state *crtc_state;
> > > > > > > +
> > > > > > > +               if (!intel_crtc->active)
> > > > > > > +                       continue;
> > > > > > > +
> > > > > > > +               crtc_state = intel_crtc->config;
> > > > > > > +
> > > > > > > +               if (crtc_state->vrr.enable)
> > > > > > > +                       return false;
> > > > > > > +       }
> > > > > > > +
> > > > > > > +       return true;
> > > > > > > +}
> > > > > > > +
> > > > > > > +/*
> > > > > > > + * DC5 entry is only possible if vblank interrupt is
> > > > > > > disabled
> > > > > > > + * and either psr1, psr2, edp 1.5 pr alpm is enabled on
> > > > > > > all
> > > > > > > + * enabled encoders.
> > > > > > > + */
> > > > > > > +static bool intel_psr_is_dc5_entry_possible(struct
> > > > > > > drm_i915_private
> > > > > > > *i915)
> > > > > > > +{
> > > > > > > +       struct intel_crtc *intel_crtc;
> > > > > > > +
> > > > > > > +       for_each_intel_crtc(&i915->drm, intel_crtc) {
> > > > > > > +               struct intel_encoder *encoder;
> > > > > > > +               struct drm_crtc *crtc = &intel_crtc-
> > > > > > > >base;
> > > > > > > +               struct drm_vblank_crtc *vblank;
> > > > > > > +
> > > > > > > +               if (!intel_crtc->active)
> > > > > > > +                       continue;
> > > > > > > +
> > > > > > > +               vblank = drm_crtc_vblank_crtc(crtc);
> > > > > > > +
> > > > > > > +               if (vblank->enabled)
> > > > > > > +                       return false;
> > > > > > > +
> > > > > > > +               for_each_encoder_on_crtc(&i915->drm,
> > > > > > > crtc,
> > > > > > > encoder) {
> > > > > > > +                       struct intel_dp *intel_dp =
> > > > > > > enc_to_intel_dp(encoder);
> > > > > > > +                       struct intel_psr *psr =
> > > > > > > &intel_dp-
> > > > > > > > psr;
> > > > > > > +
> > > > > > > +                       if (!psr->enabled)
> > > > > > > +                               return false;
> > > > > > > +               }
> > > > > > > +       }
> > > > > > > +
> > > > > > > +       return true;
> > > > > > > +}
> > > > > > > +
> > > > > > >  static bool hsw_activate_psr1(struct intel_dp *intel_dp)
> > > > > > >  {
> > > > > > >         struct drm_i915_private *dev_priv =
> > > > > > > dp_to_i915(intel_dp); @@
> > > > > > > -815,6 +882,14 @@ static bool hsw_activate_psr1(struct
> > > > > > > intel_dp
> > > > > > > *intel_dp)
> > > > > > >         u32 max_sleep_time = 0x1f;
> > > > > > >         u32 val = EDP_PSR_ENABLE;
> > > > > > > 
> > > > > > > +       /* WA: 16023497226*/
> > > > > > > +       if (intel_dp->psr.is_dpkgc_configured &&
> > > > > > > +           (intel_dp->psr.delayed_vblank ||
> > > > > > > intel_psr_is_dc5_entry_possible(dev_priv))) {
> > > > > > > +               drm_dbg_kms(&dev_priv->drm,
> > > > > > > +                           "PSR1 not activated as it
> > > > > > > doesn't
> > > > > > > meet
> > > > > > > requirements of WA:16023497226\n");
> > > > > > > +               return false;
> > > > > > > +       }
> > > > > > > +
> > > > > > 
> > > > > > I would recommend doing this in intel_psr_compute_config as
> > > > > > a
> > > > > > last step and drop patch 1. Doing it this way would be
> > > > > > safer as
> > > > > > it's not opening new sequence/state where psr.enabled =
> > > > > > true and
> > > > > > psr.active = false after intel_psr_enable_locked.
> > > > > 
> > > > > The reason for this was I wanted to disable only psr1 based
> > > > > on if
> > > > > dc5
> > > > > entry is possible or not.
> > > > > Even if I call the dc5_entry_is_possible function from
> > > > > compute_config and save it in the intel_psr state we would
> > > > > still
> > > > > end up with the seq psr.enabled = true and psr.active = false
> > > > > unless you see a param which will only activate psr2 and not
> > > > > psr1
> > > > > in such scenario ?
> > > > > 
> > > > 
> > > > I was thinking doing it like this:
> > > > 
> > > > +static void wa_16023497226(struct intel_crtc_state *
> > > > crtc_state) {
> > > > +       /* PSR2 not handled here. Wa not needed for Panel
> > > > Replay */
> > > > +       if (crtc_state->has_sel_update || crtc_state-
> > > > > has_panel_replay)
> > > > +           return;
> > > > +
> > > > +       if (intel_dp->psr.is_dpkgc_configured &&
> > > > +           (intel_dp->psr.delayed_vblank ||
> > > > +           intel_psr_is_dc5_entry_possible(dev_priv))) {
> > > > +               drm_dbg_kms(&dev_priv->drm,
> > > > +                           "PSR1 not enabled as it doesn't
> > > > meet
> > > > +                          requirements of WA:16023497226\n");
> > > > +               crtc_state->has_psr = false;
> > > > +       }
> > > > +}
> > > > +
> > > >  void intel_psr_compute_config(struct intel_dp *intel_dp,
> > > >                               struct intel_crtc_state
> > > > *crtc_state,
> > > >                               struct drm_connector_state
> > > > *conn_state) @@ -
> > > > 1635,6 +1651,8 @@ void intel_psr_compute_config(struct intel_dp
> > > > *intel_dp,
> > > >                 return;
> > > > 
> > > >         crtc_state->has_sel_update =
> > > > intel_sel_update_config_valid(intel_dp, crtc_state);
> > > > +
> > > > +       wa_16023497226(crtc_state);
> > > >  }
> > > > 
> > > >  void intel_psr_get_config(struct intel_encoder *encoder,
> > > > 
> > > > Do you see this would be possible? Current PSR2 handling in
> > > > your
> > > > patches is ok to me.
> > > 
> > > Even if has_psr as false I see that hsw_psr1_activate can be
> > > invoked
> > > since there is No real check stopping it from getting activated
> > > 
> > > /* psr1, psr2 and panel-replay are mutually exclusive.*/
> > >         if (intel_dp->psr.panel_replay_enabled)
> > >                 dg2_activate_panel_replay(intel_dp);
> > >         else if (intel_dp->psr.sel_update_enabled)
> > >                 hsw_activate_psr2(intel_dp);
> > >         else
> > >                 ret = hsw_activate_psr1(intel_dp);
> > > 
> > > so if it isn't psr2 or panel replay we will activate psr1 do we
> > > need
> > > to add an else if statement here in that case.
> > 
> > No. That is taken care in caller of intel_psr_enable_locked:
> > 
> 
> Wouldn’t this stop us from enabling psr2 when could have been
> enabled?

No.

If you do it like in my example has_psr is cleared due to
wa_16023497226 only for PSR1. I.e when crtc_state->has_psr == true &&
crtc_state->has_sel_update == false && crtc_state->has_panel_replay ==
false. See  has_psr + has_panel_replay + has_sel_update documentation
in the begin of intel_psr.c.

BR,

Jouni Högander

> 
> Regards,
> Suraj Kandpal
> 
> > void intel_psr_post_plane_update(struct intel_atomic_state *state,
> >                                  struct intel_crtc *crtc)
> > {
> >         struct drm_i915_private *dev_priv = to_i915(state-
> > >base.dev);
> >         const struct intel_crtc_state *crtc_state =
> >                 intel_atomic_get_new_crtc_state(state, crtc);
> >         struct intel_encoder *encoder;
> > 
> >         if (!crtc_state->has_psr)
> >                 return;
> > 
> > path to intel_psr_activate is intel_psr_post_plane_update-
> > > intel_psr_enable_locked->intel_psr_activate.
> > 
> > BR,
> > 
> > Jouni Högander
> > 
> > > 
> > > Regards,
> > > Suraj Kandpal
> > > 
> > > > 
> > > > BR,
> > > > 
> > > > Jouni Högander
> > > > 
> > > > > Regards,
> > > > > Suraj Kandpal
> > > > > 
> > > > > > 
> > > > > > BR,
> > > > > > 
> > > > > > Jouni Högander
> > > > > > 
> > > > > > >         val |=
> > > > > > > EDP_PSR_IDLE_FRAMES(psr_compute_idle_frames(intel_dp));
> > > > > > > 
> > > > > > >         if (DISPLAY_VER(dev_priv) < 20) @@ -907,7 +982,10
> > > > > > > @@
> > > > > > > static void hsw_activate_psr2(struct intel_dp
> > > > > > > *intel_dp)
> > > > > > >         u32 val = EDP_PSR2_ENABLE;
> > > > > > >         u32 psr_val = 0;
> > > > > > > 
> > > > > > > -       val |=
> > > > > > > EDP_PSR2_IDLE_FRAMES(psr_compute_idle_frames(intel_dp));
> > > > > > > +       /* WA: 16023497226*/
> > > > > > > +       if (intel_dp->psr.is_dpkgc_configured &&
> > > > > > > +           intel_psr_is_dc5_entry_possible(dev_priv))
> > > > > > > +               val |=
> > > > > > > EDP_PSR2_IDLE_FRAMES(psr_compute_idle_frames(intel_dp));
> > > > > > > 
> > > > > > >         if (DISPLAY_VER(dev_priv) < 14 &&
> > > > > > > !IS_ALDERLAKE_P(dev_priv))
> > > > > > >                 val |= EDP_SU_TRACK_ENABLE; @@ -1502,6
> > > > > > > +1580,8 @@
> > > > > > > void intel_psr_compute_config(struct intel_dp *intel_dp,
> > > > > > >                 return;
> > > > > > > 
> > > > > > >         crtc_state->has_sel_update =
> > > > > > > intel_sel_update_config_valid(intel_dp, crtc_state);
> > > > > > > +       intel_dp->psr.delayed_vblank =
> > > > > > > intel_psr_check_delayed_vblank_limit(crtc_state);
> > > > > > > +       intel_dp->psr.is_dpkgc_configured =
> > > > > > > intel_psr_is_dpkgc_configured(dev_priv);
> > > > > > >  }
> > > > > > > 
> > > > > > >  void intel_psr_get_config(struct intel_encoder *encoder,
> > > > > 
> > > 
> 


^ permalink raw reply	[flat|nested] 24+ messages in thread

* RE: [PATCH 2/2] drm/i915/psr: Implment WA to help reach PC10
  2024-08-23 10:00               ` Hogander, Jouni
@ 2024-08-27  4:32                 ` Kandpal, Suraj
  0 siblings, 0 replies; 24+ messages in thread
From: Kandpal, Suraj @ 2024-08-27  4:32 UTC (permalink / raw)
  To: Hogander, Jouni, intel-gfx@lists.freedesktop.org
  Cc: Murthy, Arun R, Manna, Animesh, jani.nikula@linux.intel.com



> -----Original Message-----
> From: Hogander, Jouni <jouni.hogander@intel.com>
> Sent: Friday, August 23, 2024 3:30 PM
> To: Kandpal, Suraj <suraj.kandpal@intel.com>; intel-gfx@lists.freedesktop.org
> Cc: Murthy, Arun R <arun.r.murthy@intel.com>; Manna, Animesh
> <animesh.manna@intel.com>; jani.nikula@linux.intel.com
> Subject: Re: [PATCH 2/2] drm/i915/psr: Implment WA to help reach PC10
> 
> On Fri, 2024-08-23 at 09:49 +0000, Kandpal, Suraj wrote:
> >
> >
> > > -----Original Message-----
> > > From: Hogander, Jouni <jouni.hogander@intel.com>
> > > Sent: Friday, August 23, 2024 12:51 PM
> > > To: Kandpal, Suraj <suraj.kandpal@intel.com>; intel-
> > > gfx@lists.freedesktop.org
> > > Cc: Murthy, Arun R <arun.r.murthy@intel.com>; Manna, Animesh
> > > <animesh.manna@intel.com>; jani.nikula@linux.intel.com
> > > Subject: Re: [PATCH 2/2] drm/i915/psr: Implment WA to help reach
> > > PC10
> > >
> > > On Fri, 2024-08-23 at 06:18 +0000, Kandpal, Suraj wrote:
> > > >
> > > >
> > > > > -----Original Message-----
> > > > > From: Hogander, Jouni <jouni.hogander@intel.com>
> > > > > Sent: Friday, August 23, 2024 10:54 AM
> > > > > To: Kandpal, Suraj <suraj.kandpal@intel.com>;
> > > > > intel-gfx@lists.freedesktop.org
> > > > > Cc: Murthy, Arun R <arun.r.murthy@intel.com>; Manna, Animesh
> > > > > <animesh.manna@intel.com>; jani.nikula@linux.intel.com
> > > > > Subject: Re: [PATCH 2/2] drm/i915/psr: Implment WA to help reach
> > > > > PC10
> > > > >
> > > > > On Fri, 2024-08-23 at 04:54 +0000, Kandpal, Suraj wrote:
> > > > > >
> > > > > >
> > > > > > > -----Original Message-----
> > > > > > > From: Hogander, Jouni <jouni.hogander@intel.com>
> > > > > > > Sent: Thursday, August 22, 2024 2:16 PM
> > > > > > > To: Kandpal, Suraj <suraj.kandpal@intel.com>; intel-
> > > > > > > gfx@lists.freedesktop.org
> > > > > > > Cc: Murthy, Arun R <arun.r.murthy@intel.com>; Manna, Animesh
> > > > > > > <animesh.manna@intel.com>; jani.nikula@linux.intel.com
> > > > > > > Subject: Re: [PATCH 2/2] drm/i915/psr: Implment WA to help
> > > > > > > reach
> > > > > > > PC10
> > > > > > >
> > > > > > > On Wed, 2024-06-19 at 10:07 +0530, Suraj Kandpal wrote:
> > > > > > > > To reach PC10 when PKG_C_LATENCY is configure we must do
> > > > > > > > the
> > > > > > > following
> > > > > > > > things
> > > > > > > > 1) Enter PSR1 only when delayed_vblank < 6 lines and DC5
> > > > > > > > can be entered
> > > > > > > > 2) Allow PSR2 deep sleep when DC5 can be entered
> > > > > > > > 3) DC5 can be entered when all transocoder have either
> > > > > > > > PSR1,
> > > > > > > > PSR2
> > > > > > > > or eDP 1.5 PR ALPM enabled and VBI is disabled and flips
> > > > > > > > and pushes are not happening.
> > > > > > > >
> > > > > > > > --v2
> > > > > > > > -Switch condition and do an early return [Jani] -Do some
> > > > > > > > checks in compute_config [Jani] -Do not use register reads
> > > > > > > > as a method of checking states for DPKGC or delayed vblank
> > > > > > > > [Jani] -Use another way to see is vblank interrupts are
> > > > > > > > disabled or not [Jani]
> > > > > > > >
> > > > > > > > WA: 16023497226
> > > > > > > > Signed-off-by: Suraj Kandpal <suraj.kandpal@intel.com>
> > > > > > > > ---
> > > > > > > >  .../drm/i915/display/intel_display_types.h    |  2 +
> > > > > > > >  drivers/gpu/drm/i915/display/intel_psr.c      | 82
> > > > > > > > ++++++++++++++++++-
> > > > > > > >  2 files changed, 83 insertions(+), 1 deletion(-)
> > > > > > > >
> > > > > > > > diff --git
> > > > > > > > a/drivers/gpu/drm/i915/display/intel_display_types.h
> > > > > > > > b/drivers/gpu/drm/i915/display/intel_display_types.h
> > > > > > > > index 46b3cbeb4a82..031f8e889b65 100644
> > > > > > > > --- a/drivers/gpu/drm/i915/display/intel_display_types.h
> > > > > > > > +++ b/drivers/gpu/drm/i915/display/intel_display_types.h
> > > > > > > > @@ -1708,6 +1708,8 @@ struct intel_psr {
> > > > > > > >         bool sink_support;
> > > > > > > >         bool source_support;
> > > > > > > >         bool enabled;
> > > > > > > > +       bool delayed_vblank;
> > > > > > > > +       bool is_dpkgc_configured;
> > > > > > > >         bool paused;
> > > > > > > >         enum pipe pipe;
> > > > > > > >         enum transcoder transcoder; diff --git
> > > > > > > > a/drivers/gpu/drm/i915/display/intel_psr.c
> > > > > > > > b/drivers/gpu/drm/i915/display/intel_psr.c
> > > > > > > > index 080bf5e51148..4ddea6737386 100644
> > > > > > > > --- a/drivers/gpu/drm/i915/display/intel_psr.c
> > > > > > > > +++ b/drivers/gpu/drm/i915/display/intel_psr.c
> > > > > > > > @@ -808,6 +808,73 @@ static u8
> > > > > > > > psr_compute_idle_frames(struct
> > > > > > > intel_dp
> > > > > > > > *intel_dp)
> > > > > > > >         return idle_frames;
> > > > > > > >  }
> > > > > > > >
> > > > > > > > +static bool intel_psr_check_delayed_vblank_limit(struct
> > > > > > > > intel_crtc_state *crtc_state)
> > > > > > > > +{
> > > > > > > > +       struct drm_display_mode *adjusted_mode =
> > > > > > > > &crtc_state-
> > > > > > > > > hw.adjusted_mode;
> > > > > > > > +
> > > > > > > > +       return (adjusted_mode->crtc_vblank_start -
> > > > > > > > adjusted_mode-
> > > > > > > > > crtc_vdisplay) >= 6;
> > > > > > > > +}
> > > > > > > > +
> > > > > > > > +/*
> > > > > > > > + * PKG_C_LATENCY is configured only when DISPLAY_VER >=
> > > > > > > > 20
> > > > > > > > and
> > > > > > > > + * VRR is not enabled
> > > > > > > > + */
> > > > > > > > +static bool intel_psr_is_dpkgc_configured(struct
> > > > > > > > drm_i915_private
> > > > > > > > *i915)
> > > > > > > > +{
> > > > > > > > +       struct intel_crtc *intel_crtc;
> > > > > > > > +
> > > > > > > > +       if (DISPLAY_VER(i915) < 20)
> > > > > > > > +               return false;
> > > > > > > > +
> > > > > > > > +       for_each_intel_crtc(&i915->drm, intel_crtc) {
> > > > > > > > +               struct intel_crtc_state *crtc_state;
> > > > > > > > +
> > > > > > > > +               if (!intel_crtc->active)
> > > > > > > > +                       continue;
> > > > > > > > +
> > > > > > > > +               crtc_state = intel_crtc->config;
> > > > > > > > +
> > > > > > > > +               if (crtc_state->vrr.enable)
> > > > > > > > +                       return false;
> > > > > > > > +       }
> > > > > > > > +
> > > > > > > > +       return true;
> > > > > > > > +}
> > > > > > > > +
> > > > > > > > +/*
> > > > > > > > + * DC5 entry is only possible if vblank interrupt is
> > > > > > > > disabled
> > > > > > > > + * and either psr1, psr2, edp 1.5 pr alpm is enabled on
> > > > > > > > all
> > > > > > > > + * enabled encoders.
> > > > > > > > + */
> > > > > > > > +static bool intel_psr_is_dc5_entry_possible(struct
> > > > > > > > drm_i915_private
> > > > > > > > *i915)
> > > > > > > > +{
> > > > > > > > +       struct intel_crtc *intel_crtc;
> > > > > > > > +
> > > > > > > > +       for_each_intel_crtc(&i915->drm, intel_crtc) {
> > > > > > > > +               struct intel_encoder *encoder;
> > > > > > > > +               struct drm_crtc *crtc = &intel_crtc-
> > > > > > > > >base;
> > > > > > > > +               struct drm_vblank_crtc *vblank;
> > > > > > > > +
> > > > > > > > +               if (!intel_crtc->active)
> > > > > > > > +                       continue;
> > > > > > > > +
> > > > > > > > +               vblank = drm_crtc_vblank_crtc(crtc);
> > > > > > > > +
> > > > > > > > +               if (vblank->enabled)
> > > > > > > > +                       return false;
> > > > > > > > +
> > > > > > > > +               for_each_encoder_on_crtc(&i915->drm,
> > > > > > > > crtc,
> > > > > > > > encoder) {
> > > > > > > > +                       struct intel_dp *intel_dp =
> > > > > > > > enc_to_intel_dp(encoder);
> > > > > > > > +                       struct intel_psr *psr =
> > > > > > > > &intel_dp-
> > > > > > > > > psr;
> > > > > > > > +
> > > > > > > > +                       if (!psr->enabled)
> > > > > > > > +                               return false;
> > > > > > > > +               }
> > > > > > > > +       }
> > > > > > > > +
> > > > > > > > +       return true;
> > > > > > > > +}
> > > > > > > > +
> > > > > > > >  static bool hsw_activate_psr1(struct intel_dp *intel_dp)
> > > > > > > >  {
> > > > > > > >         struct drm_i915_private *dev_priv =
> > > > > > > > dp_to_i915(intel_dp); @@
> > > > > > > > -815,6 +882,14 @@ static bool hsw_activate_psr1(struct
> > > > > > > > intel_dp
> > > > > > > > *intel_dp)
> > > > > > > >         u32 max_sleep_time = 0x1f;
> > > > > > > >         u32 val = EDP_PSR_ENABLE;
> > > > > > > >
> > > > > > > > +       /* WA: 16023497226*/
> > > > > > > > +       if (intel_dp->psr.is_dpkgc_configured &&
> > > > > > > > +           (intel_dp->psr.delayed_vblank ||
> > > > > > > > intel_psr_is_dc5_entry_possible(dev_priv))) {
> > > > > > > > +               drm_dbg_kms(&dev_priv->drm,
> > > > > > > > +                           "PSR1 not activated as it
> > > > > > > > doesn't
> > > > > > > > meet
> > > > > > > > requirements of WA:16023497226\n");
> > > > > > > > +               return false;
> > > > > > > > +       }
> > > > > > > > +
> > > > > > >
> > > > > > > I would recommend doing this in intel_psr_compute_config as
> > > > > > > a last step and drop patch 1. Doing it this way would be
> > > > > > > safer as it's not opening new sequence/state where
> > > > > > > psr.enabled = true and psr.active = false after
> > > > > > > intel_psr_enable_locked.
> > > > > >
> > > > > > The reason for this was I wanted to disable only psr1 based on
> > > > > > if
> > > > > > dc5
> > > > > > entry is possible or not.
> > > > > > Even if I call the dc5_entry_is_possible function from
> > > > > > compute_config and save it in the intel_psr state we would
> > > > > > still end up with the seq psr.enabled = true and psr.active =
> > > > > > false unless you see a param which will only activate psr2 and
> > > > > > not
> > > > > > psr1
> > > > > > in such scenario ?
> > > > > >
> > > > >
> > > > > I was thinking doing it like this:
> > > > >
> > > > > +static void wa_16023497226(struct intel_crtc_state *
> > > > > crtc_state) {
> > > > > +       /* PSR2 not handled here. Wa not needed for Panel
> > > > > Replay */
> > > > > +       if (crtc_state->has_sel_update || crtc_state-
> > > > > > has_panel_replay)
> > > > > +           return;
> > > > > +
> > > > > +       if (intel_dp->psr.is_dpkgc_configured &&
> > > > > +           (intel_dp->psr.delayed_vblank ||
> > > > > +           intel_psr_is_dc5_entry_possible(dev_priv))) {
> > > > > +               drm_dbg_kms(&dev_priv->drm,
> > > > > +                           "PSR1 not enabled as it doesn't
> > > > > meet
> > > > > +                          requirements of WA:16023497226\n");
> > > > > +               crtc_state->has_psr = false;
> > > > > +       }
> > > > > +}
> > > > > +
> > > > >  void intel_psr_compute_config(struct intel_dp *intel_dp,
> > > > >                               struct intel_crtc_state
> > > > > *crtc_state,
> > > > >                               struct drm_connector_state
> > > > > *conn_state) @@ -
> > > > > 1635,6 +1651,8 @@ void intel_psr_compute_config(struct intel_dp
> > > > > *intel_dp,
> > > > >                 return;
> > > > >
> > > > >         crtc_state->has_sel_update =
> > > > > intel_sel_update_config_valid(intel_dp, crtc_state);
> > > > > +
> > > > > +       wa_16023497226(crtc_state);
> > > > >  }
> > > > >
> > > > >  void intel_psr_get_config(struct intel_encoder *encoder,
> > > > >
> > > > > Do you see this would be possible? Current PSR2 handling in your
> > > > > patches is ok to me.
> > > >
> > > > Even if has_psr as false I see that hsw_psr1_activate can be
> > > > invoked since there is No real check stopping it from getting
> > > > activated
> > > >
> > > > /* psr1, psr2 and panel-replay are mutually exclusive.*/
> > > >         if (intel_dp->psr.panel_replay_enabled)
> > > >                 dg2_activate_panel_replay(intel_dp);
> > > >         else if (intel_dp->psr.sel_update_enabled)
> > > >                 hsw_activate_psr2(intel_dp);
> > > >         else
> > > >                 ret = hsw_activate_psr1(intel_dp);
> > > >
> > > > so if it isn't psr2 or panel replay we will activate psr1 do we
> > > > need to add an else if statement here in that case.
> > >
> > > No. That is taken care in caller of intel_psr_enable_locked:
> > >
> >
> > Wouldn’t this stop us from enabling psr2 when could have been enabled?
> 
> No.
> 
> If you do it like in my example has_psr is cleared due to
> wa_16023497226 only for PSR1. I.e when crtc_state->has_psr == true &&
> crtc_state->has_sel_update == false && crtc_state->has_panel_replay == false.
> See  has_psr + has_panel_replay + has_sel_update documentation in the begin
> of intel_psr.c.

Ahh okay got it wil do it in psr_compute_config then

Regards,
Suraj Kandpal

> 
> BR,
> 
> Jouni Högander
> 
> >
> > Regards,
> > Suraj Kandpal
> >
> > > void intel_psr_post_plane_update(struct intel_atomic_state *state,
> > >                                  struct intel_crtc *crtc) {
> > >         struct drm_i915_private *dev_priv = to_i915(state-
> > > >base.dev);
> > >         const struct intel_crtc_state *crtc_state =
> > >                 intel_atomic_get_new_crtc_state(state, crtc);
> > >         struct intel_encoder *encoder;
> > >
> > >         if (!crtc_state->has_psr)
> > >                 return;
> > >
> > > path to intel_psr_activate is intel_psr_post_plane_update-
> > > > intel_psr_enable_locked->intel_psr_activate.
> > >
> > > BR,
> > >
> > > Jouni Högander
> > >
> > > >
> > > > Regards,
> > > > Suraj Kandpal
> > > >
> > > > >
> > > > > BR,
> > > > >
> > > > > Jouni Högander
> > > > >
> > > > > > Regards,
> > > > > > Suraj Kandpal
> > > > > >
> > > > > > >
> > > > > > > BR,
> > > > > > >
> > > > > > > Jouni Högander
> > > > > > >
> > > > > > > >         val |=
> > > > > > > > EDP_PSR_IDLE_FRAMES(psr_compute_idle_frames(intel_dp));
> > > > > > > >
> > > > > > > >         if (DISPLAY_VER(dev_priv) < 20) @@ -907,7 +982,10
> > > > > > > > @@ static void hsw_activate_psr2(struct intel_dp
> > > > > > > > *intel_dp)
> > > > > > > >         u32 val = EDP_PSR2_ENABLE;
> > > > > > > >         u32 psr_val = 0;
> > > > > > > >
> > > > > > > > -       val |=
> > > > > > > > EDP_PSR2_IDLE_FRAMES(psr_compute_idle_frames(intel_dp));
> > > > > > > > +       /* WA: 16023497226*/
> > > > > > > > +       if (intel_dp->psr.is_dpkgc_configured &&
> > > > > > > > +           intel_psr_is_dc5_entry_possible(dev_priv))
> > > > > > > > +               val |=
> > > > > > > > EDP_PSR2_IDLE_FRAMES(psr_compute_idle_frames(intel_dp));
> > > > > > > >
> > > > > > > >         if (DISPLAY_VER(dev_priv) < 14 &&
> > > > > > > > !IS_ALDERLAKE_P(dev_priv))
> > > > > > > >                 val |= EDP_SU_TRACK_ENABLE; @@ -1502,6
> > > > > > > > +1580,8 @@
> > > > > > > > void intel_psr_compute_config(struct intel_dp *intel_dp,
> > > > > > > >                 return;
> > > > > > > >
> > > > > > > >         crtc_state->has_sel_update =
> > > > > > > > intel_sel_update_config_valid(intel_dp, crtc_state);
> > > > > > > > +       intel_dp->psr.delayed_vblank =
> > > > > > > > intel_psr_check_delayed_vblank_limit(crtc_state);
> > > > > > > > +       intel_dp->psr.is_dpkgc_configured =
> > > > > > > > intel_psr_is_dpkgc_configured(dev_priv);
> > > > > > > >  }
> > > > > > > >
> > > > > > > >  void intel_psr_get_config(struct intel_encoder *encoder,
> > > > > >
> > > >
> >


^ permalink raw reply	[flat|nested] 24+ messages in thread

end of thread, other threads:[~2024-08-27  4:32 UTC | newest]

Thread overview: 24+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-06-19  4:37 [PATCH 0/2] Implement WA to fix increased power usage Suraj Kandpal
2024-06-19  4:37 ` [PATCH 1/2] drm/i915/psr: Add return bool value for hsw_activate_psr1 Suraj Kandpal
2024-08-22  5:09   ` Shankar, Uma
2024-06-19  4:37 ` [PATCH 2/2] drm/i915/psr: Implment WA to help reach PC10 Suraj Kandpal
2024-08-22  5:19   ` Shankar, Uma
2024-08-22  6:25     ` Kandpal, Suraj
2024-08-22  8:45   ` Hogander, Jouni
2024-08-23  4:54     ` Kandpal, Suraj
2024-08-23  5:24       ` Hogander, Jouni
2024-08-23  6:18         ` Kandpal, Suraj
2024-08-23  7:20           ` Hogander, Jouni
2024-08-23  9:49             ` Kandpal, Suraj
2024-08-23 10:00               ` Hogander, Jouni
2024-08-27  4:32                 ` Kandpal, Suraj
2024-06-19  5:42 ` ✗ Fi.CI.BAT: failure for Implement WA to fix increased power usage (rev2) Patchwork
2024-07-29 11:43 ` ✓ Fi.CI.BAT: success for Implement WA to fix increased power usage (rev3) Patchwork
2024-07-30  5:30 ` ✗ Fi.CI.IGT: failure " Patchwork
  -- strict thread matches above, loose matches on Subject: below --
2024-06-06  8:29 [PATCH 0/2] Implement WA to fix increased power usage Suraj Kandpal
2024-06-06  8:29 ` [PATCH 2/2] drm/i915/psr: Implment WA to help reach PC10 Suraj Kandpal
2024-06-06 11:09   ` Jani Nikula
2024-06-10  4:54     ` Kandpal, Suraj
2024-06-14 13:41       ` Jani Nikula
2024-06-06 21:48   ` kernel test robot
2024-06-06 22:40   ` kernel test robot
2024-06-07  0:46   ` kernel test robot

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox