Re: [PATCH 00/10] drm/i915: PREEMPT_RT related fixups.

2024-06-05 Thread Sebastian Andrzej Siewior
On 2024-04-05 16:18:18 [+0200], To intel-gfx@lists.freedesktop.org wrote:
Hi,

> The following patches are from the PREEMPT_RT queue.  It is mostly about
> disabling interrupts/preemption which leads to problems. Unfortunately
…

Could I please get some feedback? I didn't receive anything but
automated mails from bots and I can't tell if this is a problem or not.

As of -rc2 I noticed that I can drop
[PATCH 06/10] drm/i915/gt: Queue and wait for the irq_work item.

from the series.

Sebastian


Fixes that failed to pick to v6.10-rc2

2024-06-05 Thread Jani Nikula


Jouni, Animesh, there are some PSR commits with Fixes: pointing at
commits in v6.9 or v6.10-rc1.

This does not apply cleanly to -rc1:
d07a578703db ("drm/i915/display: Do not print "psr: enabled" for on Panel 
Replay")

This applies but does not build:
45b5853114ad ("drm/i915/psr: Get Early Transport status in 
intel_psr_pipe_get_config")

This applies and builds but decided to punt because of the above:
cd43a85ec3c6 ("drm/i915/psr: Use enable boolean from intel_crtc_state for Early 
Transport")

If these are important fixes to be backported to v6.10, please provide
the backports.

BR,
Jani.


-- 
Jani Nikula, Intel


Re: [PATCH 06/12] drm/i915: convert fsb_freq and mem_freq to kHz

2024-06-05 Thread Ville Syrjälä
On Tue, May 28, 2024 at 05:24:55PM +0300, Jani Nikula wrote:
> We'll want to use fsb frequency for deriving GT clock and rawclk
> frequencies in the future. Increase the accuracy by converting to
> kHz. Do the same for mem freq to be aligned.

mem_freq is used in:
- gen5_rps_init() -> needs to be adjusted, with care taken for rounding
- intel_gt_pm_frequency_dump() -> should probably be nuked from here

> 
> Round the frequencies ending in 666 to 667.
> 
> Signed-off-by: Jani Nikula 
> ---
>  drivers/gpu/drm/i915/display/i9xx_wm.c |  6 ++--
>  drivers/gpu/drm/i915/gt/intel_rps.c|  4 +--
>  drivers/gpu/drm/i915/soc/intel_dram.c  | 50 +-
>  3 files changed, 30 insertions(+), 30 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/display/i9xx_wm.c 
> b/drivers/gpu/drm/i915/display/i9xx_wm.c
> index 8b8a0f305c3a..08c5d122af8f 100644
> --- a/drivers/gpu/drm/i915/display/i9xx_wm.c
> +++ b/drivers/gpu/drm/i915/display/i9xx_wm.c
> @@ -83,14 +83,14 @@ static const struct cxsr_latency 
> *pnv_get_cxsr_latency(struct drm_i915_private *
>  
>   if (is_desktop == latency->is_desktop &&
>   i915->is_ddr3 == latency->is_ddr3 &&
> - i915->fsb_freq == latency->fsb_freq &&
> - i915->mem_freq == latency->mem_freq)
> + DIV_ROUND_CLOSEST(i915->fsb_freq, 1000) == 
> latency->fsb_freq &&
> + DIV_ROUND_CLOSEST(i915->mem_freq, 1000) == 
> latency->mem_freq)
>   return latency;
>   }
>  
>  err:
>   drm_dbg_kms(&i915->drm,
> - "Could not find CxSR latency for DDR%s, FSB %u MHz, MEM %u 
> MHz\n",
> + "Could not find CxSR latency for DDR%s, FSB %u kHz, MEM %u 
> kHz\n",
>   i915->is_ddr3 ? "3" : "2", i915->fsb_freq, i915->mem_freq);
>  
>   return NULL;
> diff --git a/drivers/gpu/drm/i915/gt/intel_rps.c 
> b/drivers/gpu/drm/i915/gt/intel_rps.c
> index c9cb2a391942..5d3de1cddcf6 100644
> --- a/drivers/gpu/drm/i915/gt/intel_rps.c
> +++ b/drivers/gpu/drm/i915/gt/intel_rps.c
> @@ -280,9 +280,9 @@ static void gen5_rps_init(struct intel_rps *rps)
>   u32 rgvmodectl;
>   int c_m, i;
>  
> - if (i915->fsb_freq <= 3200)
> + if (i915->fsb_freq <= 320)
>   c_m = 0;
> - else if (i915->fsb_freq <= 4800)
> + else if (i915->fsb_freq <= 480)
>   c_m = 1;
>   else
>   c_m = 2;
> diff --git a/drivers/gpu/drm/i915/soc/intel_dram.c 
> b/drivers/gpu/drm/i915/soc/intel_dram.c
> index 266ed6cfa485..ace9372244a4 100644
> --- a/drivers/gpu/drm/i915/soc/intel_dram.c
> +++ b/drivers/gpu/drm/i915/soc/intel_dram.c
> @@ -56,11 +56,11 @@ static unsigned int pnv_mem_freq(struct drm_i915_private 
> *dev_priv)
>  
>   switch (tmp & CLKCFG_MEM_MASK) {
>   case CLKCFG_MEM_533:
> - return 533;
> + return 53;
>   case CLKCFG_MEM_667:
> - return 667;
> + return 67;
>   case CLKCFG_MEM_800:
> - return 800;
> + return 80;
>   }
>  
>   return 0;
> @@ -73,13 +73,13 @@ static unsigned int ilk_mem_freq(struct drm_i915_private 
> *dev_priv)
>   ddrpll = intel_uncore_read16(&dev_priv->uncore, DDRMPLL1);
>   switch (ddrpll & 0xff) {
>   case 0xc:
> - return 800;
> + return 80;
>   case 0x10:
> - return 1066;
> + return 107;
>   case 0x14:
> - return 1333;
> + return 133;
>   case 0x18:
> - return 1600;
> + return 160;
>   default:
>   drm_dbg(&dev_priv->drm, "unknown memory frequency 0x%02x\n",
>   ddrpll & 0xff);
> @@ -97,9 +97,9 @@ static unsigned int chv_mem_freq(struct drm_i915_private 
> *i915)
>  
>   switch ((val >> 2) & 0x7) {
>   case 3:
> - return 2000;
> + return 200;
>   default:
> - return 1600;
> + return 160;
>   }
>  }
>  
> @@ -114,11 +114,11 @@ static unsigned int vlv_mem_freq(struct 
> drm_i915_private *i915)
>   switch ((val >> 6) & 3) {
>   case 0:
>   case 1:
> - return 800;
> + return 80;
>   case 2:
> - return 1066;
> + return 107;
>   case 3:
> - return 1333;
> + return 133;
>   }
>  
>   return 0;
> @@ -139,7 +139,7 @@ static void detect_mem_freq(struct drm_i915_private *i915)
>   i915->is_ddr3 = pnv_is_ddr3(i915);
>  
>   if (i915->mem_freq)
> - drm_dbg(&i915->drm, "DDR speed: %d MHz\n", i915->mem_freq);
> + drm_dbg(&i915->drm, "DDR speed: %d kHz\n", i915->mem_freq);
>  }
>  
>  static unsigned int pnv_fsb_freq(struct drm_i915_private *i915)
> @@ -150,13 +150,13 @@ static unsigned int pnv_fsb_freq(struct 
> drm_i915_private *i915)
>  
>   switch (fsb) {
>   case CLKCFG_FSB_400:
> -   

Re: Fixes that failed to pick to v6.10-rc2

2024-06-05 Thread Hogander, Jouni
On Wed, 2024-06-05 at 13:06 +0300, Jani Nikula wrote:
> 
> Jouni, Animesh, there are some PSR commits with Fixes: pointing at
> commits in v6.9 or v6.10-rc1.
> 
> This does not apply cleanly to -rc1:
> d07a578703db ("drm/i915/display: Do not print "psr: enabled" for on
> Panel Replay")
> 
> This applies but does not build:
> 45b5853114ad ("drm/i915/psr: Get Early Transport status in
> intel_psr_pipe_get_config")
> 
> This applies and builds but decided to punt because of the above:
> cd43a85ec3c6 ("drm/i915/psr: Use enable boolean from intel_crtc_state
> for Early Transport")
> 
> If these are important fixes to be backported to v6.10, please
> provide
> the backports.

First patch is just for shaping debugfs interface printout. I think
that is ok to leave out.

Early transport is disabled by default currently -> should be ok to
leave out two last patches.

BR,

Jouni Högander
> 
> BR,
> Jani.
> 
> 



Re: [PATCH 07/12] drm/i915: extend the fsb_freq initialization to more platforms

2024-06-05 Thread Ville Syrjälä
On Tue, Jun 04, 2024 at 02:46:18PM +0300, Jani Nikula wrote:
> On Thu, 30 May 2024, Jani Nikula  wrote:
> > On Wed, 29 May 2024, Matt Roper  wrote:
> >> On Tue, May 28, 2024 at 05:24:56PM +0300, Jani Nikula wrote:
> >>> Initialize fsb frequency for more platforms to be able to use it for GT
> >>> clock and rawclk frequency initialization.
> >>> 
> >>> Note: There's a discrepancy between existing pnv_fsb_freq() and
> >>> i9xx_hrawclk() regarding CLKCFG interpretation. Presume all PNV is
> >>> mobile.
> >>
> >> Do you just mean we assume PNV always treats CLKCFG the same way mobile
> >> platforms do?  Because we have both mobile and non-mobile platforms
> >> defined in the driver (pnv_m_info vs pnv_g_info) and that matches
> >> https://ark.intel.com/content/www/us/en/ark/products/codename/32201/products-formerly-pineview.html
> >> that lists both desktop and mobile.
> >
> > Yeah. The problem is, current code in intel_dram.c and intel_cdclk.c
> > interpret the CLKCFG register differently for desktop PNV. At least one
> > of them is wrong. Basically I just picked one, and secretly hoped Ville
> > would tell me. ;)
> 
> Ville, do you have any idea about CLKCFG?

Acording to the datasheet PNV only really supports the 667MHz
option, so technically might not even matter. Maybe there's some
way to force it to use a different clock, but at least one "desktop"
PNV I looked at didn't have any knobs in the BIOS for this.

Anyways, based on past experience PNV always looks like a mobile
part, despite potentially being itself considered the "desktop"
variant. That interpretation also matches the existing
pnv_detect_mem_freq() implementation. So from that POV the
patch looks correct to me.

> 
> BR,
> Jani.
> 
> 
> >
> > BR,
> > Jani.
> >
> >
> >>
> >>
> >> Matt
> >>
> >>> 
> >>> FIXME: What should the default or failure mode be when the value is
> >>> unknown?
> >>> 
> >>> Signed-off-by: Jani Nikula 
> >>> ---
> >>>  drivers/gpu/drm/i915/soc/intel_dram.c | 54 ---
> >>>  1 file changed, 40 insertions(+), 14 deletions(-)
> >>> 
> >>> diff --git a/drivers/gpu/drm/i915/soc/intel_dram.c 
> >>> b/drivers/gpu/drm/i915/soc/intel_dram.c
> >>> index ace9372244a4..74b5b70e91f9 100644
> >>> --- a/drivers/gpu/drm/i915/soc/intel_dram.c
> >>> +++ b/drivers/gpu/drm/i915/soc/intel_dram.c
> >>> @@ -142,24 +142,50 @@ static void detect_mem_freq(struct drm_i915_private 
> >>> *i915)
> >>>   drm_dbg(&i915->drm, "DDR speed: %d kHz\n", i915->mem_freq);
> >>>  }
> >>>  
> >>> -static unsigned int pnv_fsb_freq(struct drm_i915_private *i915)
> >>> +static unsigned int i9xx_fsb_freq(struct drm_i915_private *i915)
> >>>  {
> >>>   u32 fsb;
> >>>  
> >>>   fsb = intel_uncore_read(&i915->uncore, CLKCFG) & CLKCFG_FSB_MASK;
> >>>  
> >>> - switch (fsb) {
> >>> - case CLKCFG_FSB_400:
> >>> - return 40;
> >>> - case CLKCFG_FSB_533:
> >>> - return 53;
> >>> - case CLKCFG_FSB_667:
> >>> - return 67;
> >>> - case CLKCFG_FSB_800:
> >>> - return 80;
> >>> + if (IS_PINEVIEW(i915) || IS_MOBILE(i915)) {
> >>> + switch (fsb) {
> >>> + case CLKCFG_FSB_400:
> >>> + return 40;
> >>> + case CLKCFG_FSB_533:
> >>> + return 53;
> >>> + case CLKCFG_FSB_667:
> >>> + return 67;
> >>> + case CLKCFG_FSB_800:
> >>> + return 80;
> >>> + case CLKCFG_FSB_1067:
> >>> + return 107;
> >>> + case CLKCFG_FSB_1333:
> >>> + return 133;
> >>> + default:
> >>> + MISSING_CASE(fsb);
> >>> + return 133;
> >>> + }
> >>> + } else {
> >>> + switch (fsb) {
> >>> + case CLKCFG_FSB_400_ALT:
> >>> + return 40;
> >>> + case CLKCFG_FSB_533:
> >>> + return 53;
> >>> + case CLKCFG_FSB_667:
> >>> + return 67;
> >>> + case CLKCFG_FSB_800:
> >>> + return 80;
> >>> + case CLKCFG_FSB_1067_ALT:
> >>> + return 107;
> >>> + case CLKCFG_FSB_1333_ALT:
> >>> + return 133;
> >>> + case CLKCFG_FSB_1600_ALT:
> >>> + return 160;
> >>> + default:
> >>> + return 53;
> >>> + }
> >>>   }
> >>> -
> >>> - return 0;
> >>>  }
> >>>  
> >>>  static unsigned int ilk_fsb_freq(struct drm_i915_private *dev_priv)
> >>> @@ -193,8 +219,8 @@ static void detect_fsb_freq(struct drm_i915_private 
> >>> *i915)
> >>>  {
> >>>   if (GRAPHICS_VER(i915) == 5)
> >>>   i915->fsb_freq = ilk_fsb_freq(i915);
> >>> - else if (IS_PINEVIEW(i915))
> >>> - i915->fsb_freq = pnv_fsb_freq(i915);
> >>> + else if (GRAPHICS_VER(i915) == 3 || GRAPHICS_VER(i915) == 4)
> >>> + i915->fsb_freq = i9xx_fsb_freq(i915);
> >>>  
> >>>   if (i915->fsb_freq)
> >>>   drm_dbg(&i915->drm, "FSB frequenc

Re: [PATCH 07/12] drm/i915: extend the fsb_freq initialization to more platforms

2024-06-05 Thread Ville Syrjälä
On Tue, May 28, 2024 at 05:24:56PM +0300, Jani Nikula wrote:
> Initialize fsb frequency for more platforms to be able to use it for GT
> clock and rawclk frequency initialization.
> 
> Note: There's a discrepancy between existing pnv_fsb_freq() and
> i9xx_hrawclk() regarding CLKCFG interpretation. Presume all PNV is
> mobile.
> 
> FIXME: What should the default or failure mode be when the value is
> unknown?
> 
> Signed-off-by: Jani Nikula 
> ---
>  drivers/gpu/drm/i915/soc/intel_dram.c | 54 ---
>  1 file changed, 40 insertions(+), 14 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/soc/intel_dram.c 
> b/drivers/gpu/drm/i915/soc/intel_dram.c
> index ace9372244a4..74b5b70e91f9 100644
> --- a/drivers/gpu/drm/i915/soc/intel_dram.c
> +++ b/drivers/gpu/drm/i915/soc/intel_dram.c
> @@ -142,24 +142,50 @@ static void detect_mem_freq(struct drm_i915_private 
> *i915)
>   drm_dbg(&i915->drm, "DDR speed: %d kHz\n", i915->mem_freq);
>  }
>  
> -static unsigned int pnv_fsb_freq(struct drm_i915_private *i915)
> +static unsigned int i9xx_fsb_freq(struct drm_i915_private *i915)
>  {
>   u32 fsb;
>  
>   fsb = intel_uncore_read(&i915->uncore, CLKCFG) & CLKCFG_FSB_MASK;
>  
> - switch (fsb) {
> - case CLKCFG_FSB_400:
> - return 40;
> - case CLKCFG_FSB_533:
> - return 53;
> - case CLKCFG_FSB_667:
> - return 67;
> - case CLKCFG_FSB_800:
> - return 80;
> + if (IS_PINEVIEW(i915) || IS_MOBILE(i915)) {
> + switch (fsb) {
> + case CLKCFG_FSB_400:
> + return 40;
> + case CLKCFG_FSB_533:
> + return 53;
> + case CLKCFG_FSB_667:
> + return 67;
> + case CLKCFG_FSB_800:
> + return 80;
> + case CLKCFG_FSB_1067:
> + return 107;
> + case CLKCFG_FSB_1333:
> + return 133;
> + default:
> + MISSING_CASE(fsb);
> + return 133;
> + }
> + } else {
> + switch (fsb) {
> + case CLKCFG_FSB_400_ALT:
> + return 40;
> + case CLKCFG_FSB_533:
> + return 53;
> + case CLKCFG_FSB_667:
> + return 67;
> + case CLKCFG_FSB_800:
> + return 80;
> + case CLKCFG_FSB_1067_ALT:
> + return 107;
> + case CLKCFG_FSB_1333_ALT:
> + return 133;
> + case CLKCFG_FSB_1600_ALT:
> + return 160;
> + default:

No MISSING_CASE() here?

> + return 53;

Why a different default value vs. the other branch?

> + }
>   }
> -
> - return 0;
>  }
>  
>  static unsigned int ilk_fsb_freq(struct drm_i915_private *dev_priv)
> @@ -193,8 +219,8 @@ static void detect_fsb_freq(struct drm_i915_private *i915)
>  {
>   if (GRAPHICS_VER(i915) == 5)
>   i915->fsb_freq = ilk_fsb_freq(i915);
> - else if (IS_PINEVIEW(i915))
> - i915->fsb_freq = pnv_fsb_freq(i915);
> + else if (GRAPHICS_VER(i915) == 3 || GRAPHICS_VER(i915) == 4)
> + i915->fsb_freq = i9xx_fsb_freq(i915);
>  
>   if (i915->fsb_freq)
>   drm_dbg(&i915->drm, "FSB frequency: %d kHz\n", i915->fsb_freq);
> -- 
> 2.39.2

-- 
Ville Syrjälä
Intel


[PATCH v6 00/26] Panel Replay eDP support

2024-06-05 Thread Jouni Högander
This patch set is implementing eDP1.5 Panel Replay for Intel hw. Patch
to disable Region Early Transport by default is reverted as it is
needed by eDP Panel Replay.

Patches 1 - 14 are fixes and clean-ups for DP2.0 Panel Replay found while 
testing with eDP1.5 panel. Patches 15 - 26 are implementing Panel Replay eDP.

v6:
  - fix and rework sink enable
  - rework checking vblank length for LunarLake and Panel Replay
  - reorder patches
v5:
  - use psr->su_region_et_enabled instead of psr2_su_region_et_valid
  - do not check Vblank >= PSR2_CTL Block Count Number for Panel Replay
v4:
  - add some patch from "Panel Replay fixes" set here
  - check 128b/132b encoding and HDCP enable
  - use intel_alpm_aux_wake_supported instead of local variable
v3:
  - commit message modifications
  - s/intel_psr_psr_mode/intel_psr_print_mode/
  - remove extra space from "PSR mode:  disabled"
  - do not allow eDP Panel Replay when using 128b/132b encoding
  - do not allow eDP Panel Replay when HDCP is enabled
v2:
  - printout "Selective Update enabled (Early Transport)" instead of
"Selective Update Early Transport enabled"
  - ensure that fastset is performed when the disable bit changes

Jouni Högander (26):
  drm/i915/alpm: Do not use fast_wake_lines for aux less wake time
  drm/i915/alpm: Write also AUX Less Wake lines into ALPM_CTL
  drm/i915/display: Take panel replay into account in vsc sdp unpacking
  drm/i915/display: Skip Panel Replay on pipe comparison if no active
planes
  drm/display: Add missing Panel Replay Enable SU Region ET bit
  drm/i915/psr: Split enabling sink for PSR and Panel Replay
  drm/i915/alpm: Make alpm support checks non-static
  drm/i915/psr: Use intel_alpm_aux_wake_supported instead of local
variable
  drm/i915/psr: Add Panel Replay support to intel_psr2_config_et_valid
  drm/i915/psr: Print Panel Replay status instead of frame lock status
  drm/i915/psr: Move vblank length check to separate function
  drm/i915/psr: Take into account SU SDP scanline indication in vblank
check
  drm/i915/psr: Check vblank against IO buffer wake time on Lunarlake
  dmr/i915/psr: Wake time is aux less wake time for Panel Replay
  drm/i915/psr: Check panel ALPM capability for eDP Panel Replay
  drm/i915/psr: Inform Panel Replay source support on eDP as well
  drm/i915/psr: enable sink for eDP1.5 Panel Replay
  drm/i915/psr: Check panel Early Transport capability for eDP PR
  drm/i915/psr: Perfrom psr2 checks related to ALPM for Panel Replay
  drm/i915/psr: Add Panel Replay compute_config helper
  drm/i915/psr: 128b/132b Panel Replay is not supported on eDP
  drm/i915/psr: HW will not allow PR on eDP when HDCP enabled
  drm/i915/psr: Check Early Transport for Panel Replay as well
  drm/i915/psr: Modify dg2_activate_panel_replay to support eDP
  drm/i915/psr: Add new debug bit to disable Panel Replay
  Revert "drm/i915/psr: Disable early transport by default"

 drivers/gpu/drm/i915/display/intel_alpm.c |  11 +-
 drivers/gpu/drm/i915/display/intel_alpm.h |   2 +
 drivers/gpu/drm/i915/display/intel_display.c  |   4 +-
 .../drm/i915/display/intel_display_types.h|   2 +
 drivers/gpu/drm/i915/display/intel_dp.c   |   5 +-
 drivers/gpu/drm/i915/display/intel_psr.c  | 309 --
 include/drm/display/drm_dp.h  |   1 +
 7 files changed, 223 insertions(+), 111 deletions(-)

-- 
2.34.1



[PATCH v6 02/26] drm/i915/alpm: Write also AUX Less Wake lines into ALPM_CTL

2024-06-05 Thread Jouni Högander
Currently AUX Less Wake lines are not written into ALPM_CTL. Fix this.

Fixes: 1ccbf135862b ("drm/i915/psr: Enable ALPM on source side for eDP Panel 
replay")
Signed-off-by: Jouni Högander 
---
 drivers/gpu/drm/i915/display/intel_alpm.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/i915/display/intel_alpm.c 
b/drivers/gpu/drm/i915/display/intel_alpm.c
index 52a573367976..18c1c5803670 100644
--- a/drivers/gpu/drm/i915/display/intel_alpm.c
+++ b/drivers/gpu/drm/i915/display/intel_alpm.c
@@ -323,7 +323,8 @@ static void lnl_alpm_configure(struct intel_dp *intel_dp,
(crtc_state->has_lobf && 
intel_alpm_aux_less_wake_supported(intel_dp))) {
alpm_ctl = ALPM_CTL_ALPM_ENABLE |
ALPM_CTL_ALPM_AUX_LESS_ENABLE |
-   ALPM_CTL_AUX_LESS_SLEEP_HOLD_TIME_50_SYMBOLS;
+   ALPM_CTL_AUX_LESS_SLEEP_HOLD_TIME_50_SYMBOLS |
+   
ALPM_CTL_AUX_LESS_WAKE_TIME(intel_dp->alpm_parameters.aux_less_wake_lines);
 
intel_de_write(dev_priv,
   PORT_ALPM_CTL(dev_priv, cpu_transcoder),
-- 
2.34.1



[PATCH v6 03/26] drm/i915/display: Take panel replay into account in vsc sdp unpacking

2024-06-05 Thread Jouni Högander
Currently intel_dp_vsc_sdp_unpack is not taking into account Panel Replay
vsc sdp. Fix this by adding vsc sdp revision 0x6 and length 0x10 into
intel_dp_vsc_sdp_unpack

Signed-off-by: Jouni Högander 
---
 drivers/gpu/drm/i915/display/intel_dp.c | 5 -
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/i915/display/intel_dp.c 
b/drivers/gpu/drm/i915/display/intel_dp.c
index fd054e16850d..286119eb77f8 100644
--- a/drivers/gpu/drm/i915/display/intel_dp.c
+++ b/drivers/gpu/drm/i915/display/intel_dp.c
@@ -4438,7 +4438,8 @@ static int intel_dp_vsc_sdp_unpack(struct drm_dp_vsc_sdp 
*vsc,
vsc->length = sdp->sdp_header.HB3;
 
if ((sdp->sdp_header.HB2 == 0x2 && sdp->sdp_header.HB3 == 0x8) ||
-   (sdp->sdp_header.HB2 == 0x4 && sdp->sdp_header.HB3 == 0xe)) {
+   (sdp->sdp_header.HB2 == 0x4 && sdp->sdp_header.HB3 == 0xe) ||
+   (sdp->sdp_header.HB2 == 0x6 && sdp->sdp_header.HB3 == 0x10)) {
/*
 * - HB2 = 0x2, HB3 = 0x8
 *   VSC SDP supporting 3D stereo + PSR
@@ -4446,6 +4447,8 @@ static int intel_dp_vsc_sdp_unpack(struct drm_dp_vsc_sdp 
*vsc,
 *   VSC SDP supporting 3D stereo + PSR2 with Y-coordinate of
 *   first scan line of the SU region (applies to eDP v1.4b
 *   and higher).
+* - HB2 = 0x6, HB3 = 0x10
+*   VSC SDP supporting 3D stereo + Panel Replay.
 */
return 0;
} else if (sdp->sdp_header.HB2 == 0x5 && sdp->sdp_header.HB3 == 0x13) {
-- 
2.34.1



[PATCH v6 01/26] drm/i915/alpm: Do not use fast_wake_lines for aux less wake time

2024-06-05 Thread Jouni Högander
We want to have own variables for fast wake lines and aux less wake
time. It might be needed to choose if we can enable Panel Replay Selective
Update or PSR2.

Also currently aux less wake time is overwritten by calculated fast wake
time.

v2:use less wake time in intel_alpm_lobf_compute_config

Fixes: da6a9836ac09 ("drm/i915/psr: Calculate aux less wake time")
Signed-off-by: Jouni Högander 
---
 drivers/gpu/drm/i915/display/intel_alpm.c  | 4 ++--
 drivers/gpu/drm/i915/display/intel_display_types.h | 1 +
 2 files changed, 3 insertions(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_alpm.c 
b/drivers/gpu/drm/i915/display/intel_alpm.c
index a26716c14aa3..52a573367976 100644
--- a/drivers/gpu/drm/i915/display/intel_alpm.c
+++ b/drivers/gpu/drm/i915/display/intel_alpm.c
@@ -159,7 +159,7 @@ static int _lnl_compute_aux_less_alpm_params(struct 
intel_dp *intel_dp,
if (i915->display.params.psr_safest_params)
aux_less_wake_lines = ALPM_CTL_AUX_LESS_WAKE_TIME_MASK;
 
-   intel_dp->alpm_parameters.fast_wake_lines = aux_less_wake_lines;
+   intel_dp->alpm_parameters.aux_less_wake_lines = aux_less_wake_lines;
intel_dp->alpm_parameters.silence_period_sym_clocks = silence_period;
intel_dp->alpm_parameters.lfps_half_cycle_num_of_syms = lfps_half_cycle;
 
@@ -298,7 +298,7 @@ void intel_alpm_lobf_compute_config(struct intel_dp 
*intel_dp,
if (intel_alpm_aux_less_wake_supported(intel_dp))
waketime_in_lines = intel_dp->alpm_parameters.io_wake_lines;
else
-   waketime_in_lines = intel_dp->alpm_parameters.fast_wake_lines;
+   waketime_in_lines = 
intel_dp->alpm_parameters.aux_less_wake_lines;
 
crtc_state->has_lobf = (context_latency + guardband) >
(first_sdp_position + waketime_in_lines);
diff --git a/drivers/gpu/drm/i915/display/intel_display_types.h 
b/drivers/gpu/drm/i915/display/intel_display_types.h
index 77609656317b..df29ec37ef28 100644
--- a/drivers/gpu/drm/i915/display/intel_display_types.h
+++ b/drivers/gpu/drm/i915/display/intel_display_types.h
@@ -1847,6 +1847,7 @@ struct intel_dp {
 
/* LNL and beyond */
u8 check_entry_lines;
+   u8 aux_less_wake_lines;
u8 silence_period_sym_clocks;
u8 lfps_half_cycle_num_of_syms;
} alpm_parameters;
-- 
2.34.1



[PATCH v6 04/26] drm/i915/display: Skip Panel Replay on pipe comparison if no active planes

2024-06-05 Thread Jouni Högander
Panel Replay is not enabled if there are no active planes. Do not compare
it on pipe comparison. Otherwise we get pipe mismatch.

Fixes: ac9ef327327b ("drm/i915/psr: Panel replay has to be enabled before link 
training")
Signed-off-by: Jouni Högander 
---
 drivers/gpu/drm/i915/display/intel_display.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/i915/display/intel_display.c 
b/drivers/gpu/drm/i915/display/intel_display.c
index 7370acdd6b8b..2747dd01bb0a 100644
--- a/drivers/gpu/drm/i915/display/intel_display.c
+++ b/drivers/gpu/drm/i915/display/intel_display.c
@@ -5331,7 +5331,9 @@ intel_pipe_config_compare(const struct intel_crtc_state 
*current_config,
 * Panel replay has to be enabled before link training. PSR doesn't have
 * this requirement -> check these only if using panel replay
 */
-   if (current_config->has_panel_replay || pipe_config->has_panel_replay) {
+   if (current_config->active_planes &&
+   (current_config->has_panel_replay ||
+pipe_config->has_panel_replay)) {
PIPE_CONF_CHECK_BOOL(has_psr);
PIPE_CONF_CHECK_BOOL(has_sel_update);
PIPE_CONF_CHECK_BOOL(enable_psr2_sel_fetch);
-- 
2.34.1



[PATCH v6 05/26] drm/display: Add missing Panel Replay Enable SU Region ET bit

2024-06-05 Thread Jouni Högander
Add missing Panel Replay Enable SU Region ET bit defined in DP2.1
specification.

Signed-off-by: Jouni Högander 
---
 include/drm/display/drm_dp.h | 1 +
 1 file changed, 1 insertion(+)

diff --git a/include/drm/display/drm_dp.h b/include/drm/display/drm_dp.h
index f246fa03a3cb..173548c6473a 100644
--- a/include/drm/display/drm_dp.h
+++ b/include/drm/display/drm_dp.h
@@ -743,6 +743,7 @@
 # define DP_PANEL_REPLAY_RFB_STORAGE_ERROR_EN   (1 << 4)
 # define DP_PANEL_REPLAY_ACTIVE_FRAME_CRC_ERROR_EN  (1 << 5)
 # define DP_PANEL_REPLAY_SU_ENABLE  (1 << 6)
+# define DP_PANEL_REPLAY_ENABLE_SU_REGION_ET(1 << 7) /* DP 2.1 */
 
 #define PANEL_REPLAY_CONFIG2 0x1b1 /* eDP 
1.5 */
 # define DP_PANEL_REPLAY_SINK_REFRESH_RATE_UNLOCK_GRANTED   (1 << 0)
-- 
2.34.1



[PATCH v6 06/26] drm/i915/psr: Split enabling sink for PSR and Panel Replay

2024-06-05 Thread Jouni Högander
Current intel_psr_enable_sink is a mess due to partly reusing PSR bit
definitions for Panel Replay. Even thought PSR and Panel Replay enable
registers do have common bits they still have also different bits and same
bits with different meaning. For sake of clarity split enabling sink to PSR
and Panel Replay specific parts.

Also fix issue caused by using psr->panel_replay_enabled to early.

Fixes: 88ae6c65ecdb ("drm/i915/psr: Unify panel replay enable/disable sink")
Signed-off-by: Jouni Högander 
---
 drivers/gpu/drm/i915/display/intel_psr.c | 81 +---
 1 file changed, 44 insertions(+), 37 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_psr.c 
b/drivers/gpu/drm/i915/display/intel_psr.c
index 4a4124a92a0d..3cc38ba2f954 100644
--- a/drivers/gpu/drm/i915/display/intel_psr.c
+++ b/drivers/gpu/drm/i915/display/intel_psr.c
@@ -686,56 +686,62 @@ static bool psr2_su_region_et_valid(struct intel_dp 
*intel_dp)
return false;
 }
 
-static unsigned int intel_psr_get_enable_sink_offset(struct intel_dp *intel_dp)
+static void _panel_replay_enable_sink(struct intel_dp *intel_dp,
+const struct intel_crtc_state *crtc_state)
 {
-   return intel_dp->psr.panel_replay_enabled ?
-   PANEL_REPLAY_CONFIG : DP_PSR_EN_CFG;
+   u8 val = DP_PANEL_REPLAY_ENABLE |
+   DP_PANEL_REPLAY_VSC_SDP_CRC_EN |
+   DP_PANEL_REPLAY_UNRECOVERABLE_ERROR_EN |
+   DP_PANEL_REPLAY_RFB_STORAGE_ERROR_EN |
+   DP_PANEL_REPLAY_ACTIVE_FRAME_CRC_ERROR_EN;
+
+   if (crtc_state->has_sel_update)
+   val |= DP_PANEL_REPLAY_SU_ENABLE;
+
+   if (crtc_state->enable_psr2_su_region_et)
+   val |= DP_PANEL_REPLAY_ENABLE_SU_REGION_ET;
+
+   drm_dp_dpcd_writeb(&intel_dp->aux, PANEL_REPLAY_CONFIG, val);
 }
 
-/*
- * Note: Most of the bits are same in PANEL_REPLAY_CONFIG and DP_PSR_EN_CFG. We
- * are relying on PSR definitions on these "common" bits.
- */
-void intel_psr_enable_sink(struct intel_dp *intel_dp,
-  const struct intel_crtc_state *crtc_state)
+static void _psr_enable_sink(struct intel_dp *intel_dp,
+   const struct intel_crtc_state *crtc_state)
 {
-   struct drm_i915_private *dev_priv = dp_to_i915(intel_dp);
-   u8 dpcd_val = DP_PSR_ENABLE;
+   struct drm_i915_private *i915 = dp_to_i915(intel_dp);
+   u8 val = DP_PSR_ENABLE;
 
if (crtc_state->has_sel_update) {
-   /* Enable ALPM at sink for psr2 */
-   if (!crtc_state->has_panel_replay) {
-   drm_dp_dpcd_writeb(&intel_dp->aux,
-  DP_RECEIVER_ALPM_CONFIG,
-  DP_ALPM_ENABLE |
-  DP_ALPM_LOCK_ERROR_IRQ_HPD_ENABLE);
-
-   if (crtc_state->enable_psr2_su_region_et)
-   dpcd_val |= DP_PSR_ENABLE_SU_REGION_ET;
-   }
-
-   dpcd_val |= DP_PSR_ENABLE_PSR2 | DP_PSR_IRQ_HPD_WITH_CRC_ERRORS;
+   val |= DP_PSR_ENABLE_PSR2 | DP_PSR_IRQ_HPD_WITH_CRC_ERRORS;
} else {
if (intel_dp->psr.link_standby)
-   dpcd_val |= DP_PSR_MAIN_LINK_ACTIVE;
+   val |= DP_PSR_MAIN_LINK_ACTIVE;
 
-   if (!crtc_state->has_panel_replay && DISPLAY_VER(dev_priv) >= 8)
-   dpcd_val |= DP_PSR_CRC_VERIFICATION;
+   if (DISPLAY_VER(i915) >= 8)
+   val |= DP_PSR_CRC_VERIFICATION;
}
 
-   if (crtc_state->has_panel_replay)
-   dpcd_val |= DP_PANEL_REPLAY_UNRECOVERABLE_ERROR_EN |
-   DP_PANEL_REPLAY_RFB_STORAGE_ERROR_EN;
-
-   if (crtc_state->req_psr2_sdp_prior_scanline)
-   dpcd_val |= DP_PSR_SU_REGION_SCANLINE_CAPTURE;
+   if (crtc_state->enable_psr2_su_region_et)
+   val |= DP_PANEL_REPLAY_ENABLE_SU_REGION_ET;
 
if (intel_dp->psr.entry_setup_frames > 0)
-   dpcd_val |= DP_PSR_FRAME_CAPTURE;
+   val |= DP_PSR_FRAME_CAPTURE;
 
-   drm_dp_dpcd_writeb(&intel_dp->aux,
-  intel_psr_get_enable_sink_offset(intel_dp),
-  dpcd_val);
+   drm_dp_dpcd_writeb(&intel_dp->aux, DP_PSR_EN_CFG, val);
+}
+
+void intel_psr_enable_sink(struct intel_dp *intel_dp,
+  const struct intel_crtc_state *crtc_state)
+{
+   /* Enable ALPM at sink for psr2 */
+   if (!crtc_state->has_panel_replay && crtc_state->has_sel_update)
+   drm_dp_dpcd_writeb(&intel_dp->aux,
+  DP_RECEIVER_ALPM_CONFIG,
+  DP_ALPM_ENABLE |
+  DP_ALPM_LOCK_ERROR_IRQ_HPD_ENABLE);
+
+   crtc_state->has_panel_replay ?
+   _panel_replay_enable_sink(intel_dp, crtc_state) :
+   _ps

[PATCH v6 07/26] drm/i915/alpm: Make alpm support checks non-static

2024-06-05 Thread Jouni Högander
We want to use intel_alpm_aux_wake_supported and
intel_alpm_aux_less_wake_supported in intel_psr.c. Convert them as
non-static.

Signed-off-by: Jouni Högander 
---
 drivers/gpu/drm/i915/display/intel_alpm.c | 4 ++--
 drivers/gpu/drm/i915/display/intel_alpm.h | 2 ++
 2 files changed, 4 insertions(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_alpm.c 
b/drivers/gpu/drm/i915/display/intel_alpm.c
index 18c1c5803670..90072f6e3a33 100644
--- a/drivers/gpu/drm/i915/display/intel_alpm.c
+++ b/drivers/gpu/drm/i915/display/intel_alpm.c
@@ -11,12 +11,12 @@
 #include "intel_dp_aux.h"
 #include "intel_psr_regs.h"
 
-static bool intel_alpm_aux_wake_supported(struct intel_dp *intel_dp)
+bool intel_alpm_aux_wake_supported(struct intel_dp *intel_dp)
 {
return intel_dp->alpm_dpcd & DP_ALPM_CAP;
 }
 
-static bool intel_alpm_aux_less_wake_supported(struct intel_dp *intel_dp)
+bool intel_alpm_aux_less_wake_supported(struct intel_dp *intel_dp)
 {
return intel_dp->alpm_dpcd & DP_ALPM_AUX_LESS_CAP;
 }
diff --git a/drivers/gpu/drm/i915/display/intel_alpm.h 
b/drivers/gpu/drm/i915/display/intel_alpm.h
index c82ecc7b4001..d4fb60393c91 100644
--- a/drivers/gpu/drm/i915/display/intel_alpm.h
+++ b/drivers/gpu/drm/i915/display/intel_alpm.h
@@ -22,4 +22,6 @@ void intel_alpm_lobf_compute_config(struct intel_dp *intel_dp,
 void intel_alpm_configure(struct intel_dp *intel_dp,
  const struct intel_crtc_state *crtc_state);
 void intel_alpm_lobf_debugfs_add(struct intel_connector *connector);
+bool intel_alpm_aux_wake_supported(struct intel_dp *intel_dp);
+bool intel_alpm_aux_less_wake_supported(struct intel_dp *intel_dp);
 #endif
-- 
2.34.1



[PATCH v6 08/26] drm/i915/psr: Use intel_alpm_aux_wake_supported instead of local variable

2024-06-05 Thread Jouni Högander
We have now intel_alpm_aux_wake_supported. Use that instead of local
variable.

Signed-off-by: Jouni Högander 
---
 drivers/gpu/drm/i915/display/intel_psr.c | 14 ++
 1 file changed, 2 insertions(+), 12 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_psr.c 
b/drivers/gpu/drm/i915/display/intel_psr.c
index 3cc38ba2f954..a3ad4488fcee 100644
--- a/drivers/gpu/drm/i915/display/intel_psr.c
+++ b/drivers/gpu/drm/i915/display/intel_psr.c
@@ -446,16 +446,6 @@ void intel_psr_irq_handler(struct intel_dp *intel_dp, u32 
psr_iir)
}
 }
 
-static bool intel_dp_get_alpm_status(struct intel_dp *intel_dp)
-{
-   u8 alpm_caps = 0;
-
-   if (drm_dp_dpcd_readb(&intel_dp->aux, DP_RECEIVER_ALPM_CAP,
- &alpm_caps) != 1)
-   return false;
-   return alpm_caps & DP_ALPM_CAP;
-}
-
 static u8 intel_dp_get_sink_sync_latency(struct intel_dp *intel_dp)
 {
struct drm_i915_private *i915 = dp_to_i915(intel_dp);
@@ -600,7 +590,6 @@ static void _psr_init_dpcd(struct intel_dp *intel_dp)
intel_dp->psr_dpcd[0] >= DP_PSR2_WITH_Y_COORD_IS_SUPPORTED) {
bool y_req = intel_dp->psr_dpcd[1] &
 DP_PSR2_SU_Y_COORDINATE_REQUIRED;
-   bool alpm = intel_dp_get_alpm_status(intel_dp);
 
/*
 * All panels that supports PSR version 03h (PSR2 +
@@ -613,7 +602,8 @@ static void _psr_init_dpcd(struct intel_dp *intel_dp)
 * Y-coordinate requirement panels we would need to enable
 * GTC first.
 */
-   intel_dp->psr.sink_psr2_support = y_req && alpm;
+   intel_dp->psr.sink_psr2_support = y_req &&
+   intel_alpm_aux_wake_supported(intel_dp);
drm_dbg_kms(&i915->drm, "PSR2 %ssupported\n",
intel_dp->psr.sink_psr2_support ? "" : "not ");
}
-- 
2.34.1



[PATCH v6 09/26] drm/i915/psr: Add Panel Replay support to intel_psr2_config_et_valid

2024-06-05 Thread Jouni Högander
Early Transport is possible and in our HW mandatory on eDP Panel
Replay. Add parameter to intel_psr2_config_et_valid to differentiate
validity check for Panel Replay.

Signed-off-by: Jouni Högander 
---
 drivers/gpu/drm/i915/display/intel_psr.c | 15 ---
 1 file changed, 8 insertions(+), 7 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_psr.c 
b/drivers/gpu/drm/i915/display/intel_psr.c
index a3ad4488fcee..7bdae0d0ea45 100644
--- a/drivers/gpu/drm/i915/display/intel_psr.c
+++ b/drivers/gpu/drm/i915/display/intel_psr.c
@@ -664,16 +664,17 @@ static void hsw_psr_setup_aux(struct intel_dp *intel_dp)
   aux_ctl);
 }
 
-static bool psr2_su_region_et_valid(struct intel_dp *intel_dp)
+static bool psr2_su_region_et_valid(struct intel_dp *intel_dp, bool 
panel_replay)
 {
struct drm_i915_private *i915 = dp_to_i915(intel_dp);
 
-   if (DISPLAY_VER(i915) >= 20 &&
-   intel_dp->psr_dpcd[0] == DP_PSR2_WITH_Y_COORD_ET_SUPPORTED &&
-   !(intel_dp->psr.debug & I915_PSR_DEBUG_SU_REGION_ET_DISABLE))
-   return true;
+   if (DISPLAY_VER(i915) < 20 || !intel_dp_is_edp(intel_dp) ||
+   intel_dp->psr.debug & I915_PSR_DEBUG_SU_REGION_ET_DISABLE)
+   return false;
 
-   return false;
+   return panel_replay ?
+   intel_dp->pr_dpcd & DP_PANEL_REPLAY_EARLY_TRANSPORT_SUPPORT :
+   intel_dp->psr_dpcd[0] != DP_PSR2_WITH_Y_COORD_ET_SUPPORTED;
 }
 
 static void _panel_replay_enable_sink(struct intel_dp *intel_dp,
@@ -1351,7 +1352,7 @@ static bool intel_psr2_config_valid(struct intel_dp 
*intel_dp,
 
tgl_dc3co_exitline_compute_config(intel_dp, crtc_state);
 
-   if (psr2_su_region_et_valid(intel_dp))
+   if (psr2_su_region_et_valid(intel_dp, crtc_state->has_panel_replay))
crtc_state->enable_psr2_su_region_et = true;
 
return true;
-- 
2.34.1



[PATCH v6 10/26] drm/i915/psr: Print Panel Replay status instead of frame lock status

2024-06-05 Thread Jouni Högander
Currently Panel Replay status printout is printing frame lock status. It
should print Panel Replay status instead. Panel Replay status register
field follows PSR status register field. Use existing PSR code for that.

Fixes: ef75c25e8fed ("drm/i915/panelreplay: Debugfs support for panel replay")
Signed-off-by: Jouni Högander 
---
 drivers/gpu/drm/i915/display/intel_psr.c | 22 +-
 1 file changed, 5 insertions(+), 17 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_psr.c 
b/drivers/gpu/drm/i915/display/intel_psr.c
index 7bdae0d0ea45..3530e5f44096 100644
--- a/drivers/gpu/drm/i915/display/intel_psr.c
+++ b/drivers/gpu/drm/i915/display/intel_psr.c
@@ -3579,16 +3579,9 @@ static int i915_psr_sink_status_show(struct seq_file *m, 
void *data)
"reserved",
"sink internal error",
};
-   static const char * const panel_replay_status[] = {
-   "Sink device frame is locked to the Source device",
-   "Sink device is coasting, using the VTotal target",
-   "Sink device is governing the frame rate (frame rate unlock is 
granted)",
-   "Sink device in the process of re-locking with the Source 
device",
-   };
const char *str;
int ret;
u8 status, error_status;
-   u32 idx;
 
if (!(CAN_PSR(intel_dp) || CAN_PANEL_REPLAY(intel_dp))) {
seq_puts(m, "PSR/Panel-Replay Unsupported\n");
@@ -3602,16 +3595,11 @@ static int i915_psr_sink_status_show(struct seq_file 
*m, void *data)
if (ret)
return ret;
 
-   str = "unknown";
-   if (intel_dp->psr.panel_replay_enabled) {
-   idx = (status & DP_SINK_FRAME_LOCKED_MASK) >> 
DP_SINK_FRAME_LOCKED_SHIFT;
-   if (idx < ARRAY_SIZE(panel_replay_status))
-   str = panel_replay_status[idx];
-   } else if (intel_dp->psr.enabled) {
-   idx = status & DP_PSR_SINK_STATE_MASK;
-   if (idx < ARRAY_SIZE(sink_status))
-   str = sink_status[idx];
-   }
+   status &= DP_PSR_SINK_STATE_MASK;
+   if (status < ARRAY_SIZE(sink_status))
+   str = sink_status[status];
+   else
+   str = "unknown";
 
seq_printf(m, "Sink %s status: 0x%x [%s]\n", psr_mode_str(intel_dp), 
status, str);
 
-- 
2.34.1



[PATCH v6 12/26] drm/i915/psr: Take into account SU SDP scanline indication in vblank check

2024-06-05 Thread Jouni Högander
SU SDP scanline indication should be taken into account when checking
vblank length. In Bspec we have:

PSR2_CTL[ SU SDP scanline indication ] = 0: (TRANS_VBLANK Vertical Blank End- 
TRANS_VBLANK Vertical Blank Start) > PSR2_CTL Block Count Number value in lines
PSR2_CTL[ SU SDP scanline indication ] = 1: (TRANS_VBLANK Vertical Blank End- 
TRANS_VBLANK Vertical Blank Start- 1) > PSR2_CTL Block Count Number value in 
lines

Bspec: 49274

Signed-off-by: Jouni Högander 
---
 drivers/gpu/drm/i915/display/intel_psr.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/drivers/gpu/drm/i915/display/intel_psr.c 
b/drivers/gpu/drm/i915/display/intel_psr.c
index 23c3fed1f983..471b60032304 100644
--- a/drivers/gpu/drm/i915/display/intel_psr.c
+++ b/drivers/gpu/drm/i915/display/intel_psr.c
@@ -1250,6 +1250,9 @@ static bool vblank_length_valid(struct intel_dp *intel_dp,
crtc_state->hw.adjusted_mode.crtc_vblank_start;
int wake_lines = psr2_block_count_lines(intel_dp);
 
+   if (crtc_state->req_psr2_sdp_prior_scanline)
+   vblank -= 1;
+
/* Vblank >= PSR2_CTL Block Count Number maximum line count */
if (vblank < wake_lines)
return false;
-- 
2.34.1



[PATCH v6 11/26] drm/i915/psr: Move vblank length check to separate function

2024-06-05 Thread Jouni Högander
We are about to add more complexity to vblank length check. It makes sense
to move it to separate function for sake of clarity.

Signed-off-by: Jouni Högander 
---
 drivers/gpu/drm/i915/display/intel_psr.c | 18 +++---
 1 file changed, 15 insertions(+), 3 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_psr.c 
b/drivers/gpu/drm/i915/display/intel_psr.c
index 3530e5f44096..23c3fed1f983 100644
--- a/drivers/gpu/drm/i915/display/intel_psr.c
+++ b/drivers/gpu/drm/i915/display/intel_psr.c
@@ -1243,6 +1243,20 @@ static int intel_psr_entry_setup_frames(struct intel_dp 
*intel_dp,
return entry_setup_frames;
 }
 
+static bool vblank_length_valid(struct intel_dp *intel_dp,
+   const struct intel_crtc_state *crtc_state)
+{
+   int vblank = crtc_state->hw.adjusted_mode.crtc_vblank_end -
+   crtc_state->hw.adjusted_mode.crtc_vblank_start;
+   int wake_lines = psr2_block_count_lines(intel_dp);
+
+   /* Vblank >= PSR2_CTL Block Count Number maximum line count */
+   if (vblank < wake_lines)
+   return false;
+
+   return true;
+}
+
 static bool intel_psr2_config_valid(struct intel_dp *intel_dp,
struct intel_crtc_state *crtc_state)
 {
@@ -1333,9 +1347,7 @@ static bool intel_psr2_config_valid(struct intel_dp 
*intel_dp,
}
 
/* Vblank >= PSR2_CTL Block Count Number maximum line count */
-   if (crtc_state->hw.adjusted_mode.crtc_vblank_end -
-   crtc_state->hw.adjusted_mode.crtc_vblank_start <
-   psr2_block_count_lines(intel_dp)) {
+   if (!vblank_length_valid(intel_dp, crtc_state)) {
drm_dbg_kms(&dev_priv->drm,
"PSR2 not enabled, too short vblank time\n");
return false;
-- 
2.34.1



[PATCH v6 13/26] drm/i915/psr: Check vblank against IO buffer wake time on Lunarlake

2024-06-05 Thread Jouni Högander
As Lunarlake doesn't have block count configuration vblank should be
checked against IO buffer wake time.

Bspec: 68920

Signed-off-by: Jouni Högander 
---
 drivers/gpu/drm/i915/display/intel_psr.c | 6 +-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/i915/display/intel_psr.c 
b/drivers/gpu/drm/i915/display/intel_psr.c
index 471b60032304..c9fcb25184ee 100644
--- a/drivers/gpu/drm/i915/display/intel_psr.c
+++ b/drivers/gpu/drm/i915/display/intel_psr.c
@@ -1246,9 +1246,13 @@ static int intel_psr_entry_setup_frames(struct intel_dp 
*intel_dp,
 static bool vblank_length_valid(struct intel_dp *intel_dp,
const struct intel_crtc_state *crtc_state)
 {
+   struct drm_i915_private *i915 = dp_to_i915(intel_dp);
int vblank = crtc_state->hw.adjusted_mode.crtc_vblank_end -
crtc_state->hw.adjusted_mode.crtc_vblank_start;
-   int wake_lines = psr2_block_count_lines(intel_dp);
+   int wake_lines;
+
+   wake_lines = DISPLAY_VER(i915) < 20 ? psr2_block_count_lines(intel_dp) :
+   intel_dp->alpm_parameters.io_wake_lines;
 
if (crtc_state->req_psr2_sdp_prior_scanline)
vblank -= 1;
-- 
2.34.1



[PATCH v6 14/26] dmr/i915/psr: Wake time is aux less wake time for Panel Replay

2024-06-05 Thread Jouni Högander
When checking vblank length used wake time is aux less wake time for eDP
Panel Replay (vblank length is not checked for DP2.0 Panel Replay).

Signed-off-by: Jouni Högander 
---
 drivers/gpu/drm/i915/display/intel_psr.c | 8 ++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_psr.c 
b/drivers/gpu/drm/i915/display/intel_psr.c
index c9fcb25184ee..ccb7c022e364 100644
--- a/drivers/gpu/drm/i915/display/intel_psr.c
+++ b/drivers/gpu/drm/i915/display/intel_psr.c
@@ -1251,8 +1251,12 @@ static bool vblank_length_valid(struct intel_dp 
*intel_dp,
crtc_state->hw.adjusted_mode.crtc_vblank_start;
int wake_lines;
 
-   wake_lines = DISPLAY_VER(i915) < 20 ? psr2_block_count_lines(intel_dp) :
-   intel_dp->alpm_parameters.io_wake_lines;
+   if (crtc_state->has_panel_replay)
+   wake_lines = intel_dp->alpm_parameters.aux_less_wake_lines;
+   else
+   wake_lines = DISPLAY_VER(i915) < 20 ?
+   psr2_block_count_lines(intel_dp) :
+   intel_dp->alpm_parameters.io_wake_lines;
 
if (crtc_state->req_psr2_sdp_prior_scanline)
vblank -= 1;
-- 
2.34.1



[PATCH v6 15/26] drm/i915/psr: Check panel ALPM capability for eDP Panel Replay

2024-06-05 Thread Jouni Högander
Our HW doesn't support Panel Replay without AUX_LESS ALPM on eDP. Check
panel support for this and prevent eDP panel replay if it doesn't exits.

Bspec: 68920

v2: use intel_alpm_aux_less_wake_supported

Signed-off-by: Jouni Högander 
---
 drivers/gpu/drm/i915/display/intel_psr.c | 7 +++
 1 file changed, 7 insertions(+)

diff --git a/drivers/gpu/drm/i915/display/intel_psr.c 
b/drivers/gpu/drm/i915/display/intel_psr.c
index ccb7c022e364..839171635b97 100644
--- a/drivers/gpu/drm/i915/display/intel_psr.c
+++ b/drivers/gpu/drm/i915/display/intel_psr.c
@@ -551,6 +551,13 @@ static void _panel_replay_init_dpcd(struct intel_dp 
*intel_dp)
 {
struct drm_i915_private *i915 = dp_to_i915(intel_dp);
 
+   if (intel_dp_is_edp(intel_dp) &&
+   (!intel_alpm_aux_less_wake_supported(intel_dp))) {
+   drm_dbg_kms(&i915->drm,
+   "Panel doesn't support AUX-less ALPM, eDP Panel 
Replay not possible\n");
+   return;
+   }
+
intel_dp->psr.sink_panel_replay_support = true;
 
if (intel_dp->pr_dpcd & DP_PANEL_REPLAY_SU_SUPPORT)
-- 
2.34.1



[PATCH v6 16/26] drm/i915/psr: Inform Panel Replay source support on eDP as well

2024-06-05 Thread Jouni Högander
Display version >= 20 support eDP 1.5. Inform Panel Replay source support
on eDP for display version >= 20.

Bspec: 68920

Signed-off-by: Jouni Högander 
---
 drivers/gpu/drm/i915/display/intel_psr.c | 6 --
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_psr.c 
b/drivers/gpu/drm/i915/display/intel_psr.c
index 839171635b97..f13eb01966f5 100644
--- a/drivers/gpu/drm/i915/display/intel_psr.c
+++ b/drivers/gpu/drm/i915/display/intel_psr.c
@@ -3078,9 +3078,11 @@ void intel_psr_init(struct intel_dp *intel_dp)
return;
}
 
-   if (HAS_DP20(dev_priv) && !intel_dp_is_edp(intel_dp))
+   if ((HAS_DP20(dev_priv) && !intel_dp_is_edp(intel_dp)) ||
+   DISPLAY_VER(dev_priv) >= 20)
intel_dp->psr.source_panel_replay_support = true;
-   else
+
+   if (HAS_PSR(dev_priv) && intel_dp_is_edp(intel_dp))
intel_dp->psr.source_support = true;
 
/* Disable early transport for now */
-- 
2.34.1



[PATCH v6 17/26] drm/i915/psr: enable sink for eDP1.5 Panel Replay

2024-06-05 Thread Jouni Högander
eDP1.5 allows Panel Replay on eDP as well. Take this into account when
enabling sink PSR/Panel Replay. Write also PANEL_REPLAY_CONFIG2 register
accordingly.

v3:
  - set DP_PANEL_REPLAY_CRC_VERIFICATION in PANEL_REPLAY_CONFIG2
  - PANEL_REPLAY_CONFIG2 is available in DP2.1 as well
v2: do not configure ALPM for DP2.0 Panel Replay

Signed-off-by: Jouni Högander 
---
 drivers/gpu/drm/i915/display/intel_psr.c | 36 
 1 file changed, 30 insertions(+), 6 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_psr.c 
b/drivers/gpu/drm/i915/display/intel_psr.c
index f13eb01966f5..171ea2a03ed6 100644
--- a/drivers/gpu/drm/i915/display/intel_psr.c
+++ b/drivers/gpu/drm/i915/display/intel_psr.c
@@ -692,6 +692,7 @@ static void _panel_replay_enable_sink(struct intel_dp 
*intel_dp,
DP_PANEL_REPLAY_UNRECOVERABLE_ERROR_EN |
DP_PANEL_REPLAY_RFB_STORAGE_ERROR_EN |
DP_PANEL_REPLAY_ACTIVE_FRAME_CRC_ERROR_EN;
+   u8 panel_replay_config2 = DP_PANEL_REPLAY_CRC_VERIFICATION;
 
if (crtc_state->has_sel_update)
val |= DP_PANEL_REPLAY_SU_ENABLE;
@@ -699,7 +700,14 @@ static void _panel_replay_enable_sink(struct intel_dp 
*intel_dp,
if (crtc_state->enable_psr2_su_region_et)
val |= DP_PANEL_REPLAY_ENABLE_SU_REGION_ET;
 
+   if (crtc_state->req_psr2_sdp_prior_scanline)
+   panel_replay_config2 |=
+   DP_PANEL_REPLAY_SU_REGION_SCANLINE_CAPTURE;
+
drm_dp_dpcd_writeb(&intel_dp->aux, PANEL_REPLAY_CONFIG, val);
+
+   drm_dp_dpcd_writeb(&intel_dp->aux, PANEL_REPLAY_CONFIG2,
+  panel_replay_config2);
 }
 
 static void _psr_enable_sink(struct intel_dp *intel_dp,
@@ -727,15 +735,31 @@ static void _psr_enable_sink(struct intel_dp *intel_dp,
drm_dp_dpcd_writeb(&intel_dp->aux, DP_PSR_EN_CFG, val);
 }
 
+static void intel_psr_enable_sink_alpm(struct intel_dp *intel_dp,
+  const struct intel_crtc_state 
*crtc_state)
+{
+   u8 val;
+
+   /*
+* eDP Panel Replay uses always ALPM
+* PSR2 uses ALPM but PSR1 doesn't
+*/
+   if (!intel_dp_is_edp(intel_dp) || (!crtc_state->has_panel_replay &&
+  !crtc_state->has_sel_update))
+   return;
+
+   val = DP_ALPM_ENABLE | DP_ALPM_LOCK_ERROR_IRQ_HPD_ENABLE;
+
+   if (crtc_state->has_panel_replay)
+   val |= DP_ALPM_MODE_AUX_LESS;
+
+   drm_dp_dpcd_writeb(&intel_dp->aux, DP_RECEIVER_ALPM_CONFIG, val);
+}
+
 void intel_psr_enable_sink(struct intel_dp *intel_dp,
   const struct intel_crtc_state *crtc_state)
 {
-   /* Enable ALPM at sink for psr2 */
-   if (!crtc_state->has_panel_replay && crtc_state->has_sel_update)
-   drm_dp_dpcd_writeb(&intel_dp->aux,
-  DP_RECEIVER_ALPM_CONFIG,
-  DP_ALPM_ENABLE |
-  DP_ALPM_LOCK_ERROR_IRQ_HPD_ENABLE);
+   intel_psr_enable_sink_alpm(intel_dp, crtc_state);
 
crtc_state->has_panel_replay ?
_panel_replay_enable_sink(intel_dp, crtc_state) :
-- 
2.34.1



[PATCH v6 18/26] drm/i915/psr: Check panel Early Transport capability for eDP PR

2024-06-05 Thread Jouni Högander
Our HW doesn't support panel replay without Early Transport on eDP.

Bspec: 68920

Signed-off-by: Jouni Högander 
---
 drivers/gpu/drm/i915/display/intel_psr.c | 17 -
 1 file changed, 12 insertions(+), 5 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_psr.c 
b/drivers/gpu/drm/i915/display/intel_psr.c
index 171ea2a03ed6..bc8c822094e7 100644
--- a/drivers/gpu/drm/i915/display/intel_psr.c
+++ b/drivers/gpu/drm/i915/display/intel_psr.c
@@ -551,11 +551,18 @@ static void _panel_replay_init_dpcd(struct intel_dp 
*intel_dp)
 {
struct drm_i915_private *i915 = dp_to_i915(intel_dp);
 
-   if (intel_dp_is_edp(intel_dp) &&
-   (!intel_alpm_aux_less_wake_supported(intel_dp))) {
-   drm_dbg_kms(&i915->drm,
-   "Panel doesn't support AUX-less ALPM, eDP Panel 
Replay not possible\n");
-   return;
+   if (intel_dp_is_edp(intel_dp)) {
+   if (!intel_alpm_aux_less_wake_supported(intel_dp)) {
+   drm_dbg_kms(&i915->drm,
+   "Panel doesn't support AUX-less ALPM, eDP 
Panel Replay not possible\n");
+   return;
+   }
+
+   if (!(intel_dp->pr_dpcd & 
DP_PANEL_REPLAY_EARLY_TRANSPORT_SUPPORT)) {
+   drm_dbg_kms(&i915->drm,
+   "Panel doesn't support early transport, eDP 
Panel Replay not possible\n");
+   return;
+   }
}
 
intel_dp->psr.sink_panel_replay_support = true;
-- 
2.34.1



[PATCH v6 20/26] drm/i915/psr: Add Panel Replay compute_config helper

2024-06-05 Thread Jouni Högander
We are about to add more checks for Panel Replay. Due to that it makes
sense to add now Panel Replay compute config helper.

Signed-off-by: Jouni Högander 
---
 drivers/gpu/drm/i915/display/intel_psr.c | 11 +--
 1 file changed, 9 insertions(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_psr.c 
b/drivers/gpu/drm/i915/display/intel_psr.c
index f8a8f98eb44e..8c881a7cad3f 100644
--- a/drivers/gpu/drm/i915/display/intel_psr.c
+++ b/drivers/gpu/drm/i915/display/intel_psr.c
@@ -1495,6 +1495,14 @@ static bool _psr_compute_config(struct intel_dp 
*intel_dp,
return true;
 }
 
+static bool _panel_replay_compute_config(struct intel_dp *intel_dp)
+{
+   if (!CAN_PANEL_REPLAY(intel_dp))
+   return false;
+
+   return true;
+}
+
 void intel_psr_compute_config(struct intel_dp *intel_dp,
  struct intel_crtc_state *crtc_state,
  struct drm_connector_state *conn_state)
@@ -1530,8 +1538,7 @@ void intel_psr_compute_config(struct intel_dp *intel_dp,
return;
}
 
-   if (CAN_PANEL_REPLAY(intel_dp))
-   crtc_state->has_panel_replay = true;
+   crtc_state->has_panel_replay = _panel_replay_compute_config(intel_dp);
 
crtc_state->has_psr = crtc_state->has_panel_replay ? true :
_psr_compute_config(intel_dp, crtc_state);
-- 
2.34.1



[PATCH v6 24/26] drm/i915/psr: Modify dg2_activate_panel_replay to support eDP

2024-06-05 Thread Jouni Högander
There are couple of bits in PSR2_CTL which needs to be written in case of
eDP Panel Replay

Bspec: 68920

v2: use boolean instead of assuming eDP Panel Replay mean Early Transport

Signed-off-by: Jouni Högander 
---
 drivers/gpu/drm/i915/display/intel_psr.c | 13 +
 1 file changed, 13 insertions(+)

diff --git a/drivers/gpu/drm/i915/display/intel_psr.c 
b/drivers/gpu/drm/i915/display/intel_psr.c
index 97d1e4ef6ca5..a10d9383cc87 100644
--- a/drivers/gpu/drm/i915/display/intel_psr.c
+++ b/drivers/gpu/drm/i915/display/intel_psr.c
@@ -927,6 +927,19 @@ static u8 frames_before_su_entry(struct intel_dp *intel_dp)
 static void dg2_activate_panel_replay(struct intel_dp *intel_dp)
 {
struct drm_i915_private *dev_priv = dp_to_i915(intel_dp);
+   struct intel_psr *psr = &intel_dp->psr;
+   enum transcoder cpu_transcoder = intel_dp->psr.transcoder;
+
+   if (intel_dp_is_edp(intel_dp) && psr->sel_update_enabled) {
+   u32 val = psr->su_region_et_enabled ?
+   LNL_EDP_PSR2_SU_REGION_ET_ENABLE : 0;
+
+   if (intel_dp->psr.req_psr2_sdp_prior_scanline)
+   val |= EDP_PSR2_SU_SDP_SCANLINE;
+
+   intel_de_write(dev_priv, EDP_PSR2_CTL(dev_priv, cpu_transcoder),
+  val);
+   }
 
intel_de_rmw(dev_priv,
 PSR2_MAN_TRK_CTL(dev_priv, intel_dp->psr.transcoder),
-- 
2.34.1



[PATCH v6 26/26] Revert "drm/i915/psr: Disable early transport by default"

2024-06-05 Thread Jouni Högander
This reverts commit f3c2031db7dfdf470a2d9bf3bd1efa6edfa72d8d.

We want to notice possible issues faced with PSR2 Region Early Transport as
early as possible -> let's revert patch disabling Region Early Transport by
default. Also eDP 1.5 Panel Replay requires Early Transport.

Signed-off-by: Jouni Högander 
---
 drivers/gpu/drm/i915/display/intel_psr.c | 3 ---
 1 file changed, 3 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_psr.c 
b/drivers/gpu/drm/i915/display/intel_psr.c
index b4cd7a8b17bc..36dedd8e9a9c 100644
--- a/drivers/gpu/drm/i915/display/intel_psr.c
+++ b/drivers/gpu/drm/i915/display/intel_psr.c
@@ -3171,9 +3171,6 @@ void intel_psr_init(struct intel_dp *intel_dp)
if (HAS_PSR(dev_priv) && intel_dp_is_edp(intel_dp))
intel_dp->psr.source_support = true;
 
-   /* Disable early transport for now */
-   intel_dp->psr.debug |= I915_PSR_DEBUG_SU_REGION_ET_DISABLE;
-
/* Set link_standby x link_off defaults */
if (DISPLAY_VER(dev_priv) < 12)
/* For new platforms up to TGL let's respect VBT back again */
-- 
2.34.1



[PATCH v6 22/26] drm/i915/psr: HW will not allow PR on eDP when HDCP enabled

2024-06-05 Thread Jouni Högander
Take into account in Panel Replay compute config that  HW will not allow PR
on eDP when HDCP enabled.

Signed-off-by: Jouni Högander 
---
 drivers/gpu/drm/i915/display/intel_psr.c | 18 --
 1 file changed, 16 insertions(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_psr.c 
b/drivers/gpu/drm/i915/display/intel_psr.c
index 01bc5b76d398..3aec56d005ef 100644
--- a/drivers/gpu/drm/i915/display/intel_psr.c
+++ b/drivers/gpu/drm/i915/display/intel_psr.c
@@ -1497,8 +1497,13 @@ static bool _psr_compute_config(struct intel_dp 
*intel_dp,
 
 static bool
 _panel_replay_compute_config(struct intel_dp *intel_dp,
-const struct intel_crtc_state *crtc_state)
+const struct intel_crtc_state *crtc_state,
+const struct drm_connector_state *conn_state)
 {
+   struct intel_connector *connector =
+   to_intel_connector(conn_state->connector);
+   struct intel_hdcp *hdcp = &connector->hdcp;
+
if (!CAN_PANEL_REPLAY(intel_dp))
return false;
 
@@ -1511,6 +1516,14 @@ _panel_replay_compute_config(struct intel_dp *intel_dp,
if (intel_dp_is_uhbr(crtc_state))
return false;
 
+   /* HW will not allow Panel Replay on eDP when HDCP enabled */
+   if (conn_state->content_protection ==
+   DRM_MODE_CONTENT_PROTECTION_DESIRED ||
+   (conn_state->content_protection ==
+DRM_MODE_CONTENT_PROTECTION_ENABLED && hdcp->value ==
+DRM_MODE_CONTENT_PROTECTION_UNDESIRED))
+   return false;
+
return true;
 }
 
@@ -1550,7 +1563,8 @@ void intel_psr_compute_config(struct intel_dp *intel_dp,
}
 
crtc_state->has_panel_replay = _panel_replay_compute_config(intel_dp,
-   crtc_state);
+   crtc_state,
+   conn_state);
 
crtc_state->has_psr = crtc_state->has_panel_replay ? true :
_psr_compute_config(intel_dp, crtc_state);
-- 
2.34.1



[PATCH v6 23/26] drm/i915/psr: Check Early Transport for Panel Replay as well

2024-06-05 Thread Jouni Högander
Move Early Transport validity check to be performed for Panel Replay as
well and use Early Transport for eDP Panel Replay always.

v2:set crtc_state->enable_psr2_su_region_et directly (not in if block)

Signed-off-by: Jouni Högander 
---
 drivers/gpu/drm/i915/display/intel_psr.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_psr.c 
b/drivers/gpu/drm/i915/display/intel_psr.c
index 3aec56d005ef..97d1e4ef6ca5 100644
--- a/drivers/gpu/drm/i915/display/intel_psr.c
+++ b/drivers/gpu/drm/i915/display/intel_psr.c
@@ -1394,9 +1394,6 @@ static bool intel_psr2_config_valid(struct intel_dp 
*intel_dp,
 
tgl_dc3co_exitline_compute_config(intel_dp, crtc_state);
 
-   if (psr2_su_region_et_valid(intel_dp, crtc_state->has_panel_replay))
-   crtc_state->enable_psr2_su_region_et = true;
-
return true;
 }
 
@@ -1458,6 +1455,9 @@ static bool intel_sel_update_config_valid(struct intel_dp 
*intel_dp,
goto unsupported;
}
 
+   crtc_state->enable_psr2_su_region_et =
+   psr2_su_region_et_valid(intel_dp, crtc_state->has_panel_replay);
+
return true;
 
 unsupported:
-- 
2.34.1



[PATCH v6 19/26] drm/i915/psr: Perfrom psr2 checks related to ALPM for Panel Replay

2024-06-05 Thread Jouni Högander
eDP1.5 support ALPM with Panel Replay as well. We need to check ALPM
related things for Panel Replay as well.

Bspec: 68920

v3: move vblank check as well
v2: do not move Vblank >= PSR2_CTL Block Count Number maximum line count
check

Signed-off-by: Jouni Högander 
---
 drivers/gpu/drm/i915/display/intel_psr.c | 40 +---
 1 file changed, 21 insertions(+), 19 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_psr.c 
b/drivers/gpu/drm/i915/display/intel_psr.c
index bc8c822094e7..f8a8f98eb44e 100644
--- a/drivers/gpu/drm/i915/display/intel_psr.c
+++ b/drivers/gpu/drm/i915/display/intel_psr.c
@@ -1383,25 +1383,6 @@ static bool intel_psr2_config_valid(struct intel_dp 
*intel_dp,
return false;
}
 
-   if (!_compute_psr2_sdp_prior_scanline_indication(intel_dp, crtc_state)) 
{
-   drm_dbg_kms(&dev_priv->drm,
-   "PSR2 not enabled, PSR2 SDP indication do not fit 
in hblank\n");
-   return false;
-   }
-
-   if (!intel_alpm_compute_params(intel_dp, crtc_state)) {
-   drm_dbg_kms(&dev_priv->drm,
-   "PSR2 not enabled, Unable to use long enough wake 
times\n");
-   return false;
-   }
-
-   /* Vblank >= PSR2_CTL Block Count Number maximum line count */
-   if (!vblank_length_valid(intel_dp, crtc_state)) {
-   drm_dbg_kms(&dev_priv->drm,
-   "PSR2 not enabled, too short vblank time\n");
-   return false;
-   }
-
if (!crtc_state->enable_psr2_sel_fetch &&
(crtc_hdisplay > psr_max_h || crtc_vdisplay > psr_max_v)) {
drm_dbg_kms(&dev_priv->drm,
@@ -1440,6 +1421,27 @@ static bool intel_sel_update_config_valid(struct 
intel_dp *intel_dp,
if (!crtc_state->has_panel_replay && !intel_psr2_config_valid(intel_dp, 
crtc_state))
goto unsupported;
 
+   if (intel_dp_is_edp(intel_dp)) {
+   if (!_compute_psr2_sdp_prior_scanline_indication(intel_dp,
+crtc_state)) {
+   drm_dbg_kms(&dev_priv->drm,
+   "Selective update not enabled, SDP 
indication do not fit in hblank\n");
+   goto unsupported;
+   }
+
+   if (!intel_alpm_compute_params(intel_dp, crtc_state)) {
+   drm_dbg_kms(&dev_priv->drm,
+   "Selective update not enabled, Unable to 
use long enough wake times\n");
+   goto unsupported;
+   }
+
+   if (!vblank_length_valid(intel_dp, crtc_state)) {
+   drm_dbg_kms(&dev_priv->drm,
+   "Selective update not enabled, too short 
vblank time\n");
+   goto unsupported;
+   }
+   }
+
if (crtc_state->has_panel_replay && (DISPLAY_VER(dev_priv) < 14 ||
 
!intel_dp->psr.sink_panel_replay_su_support))
goto unsupported;
-- 
2.34.1



[PATCH v6 21/26] drm/i915/psr: 128b/132b Panel Replay is not supported on eDP

2024-06-05 Thread Jouni Högander
Take into account that 128b/132b Panel Replay is not supported on eDP.

Bspec: 68920

Signed-off-by: Jouni Högander 
---
 drivers/gpu/drm/i915/display/intel_psr.c | 16 ++--
 1 file changed, 14 insertions(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_psr.c 
b/drivers/gpu/drm/i915/display/intel_psr.c
index 8c881a7cad3f..01bc5b76d398 100644
--- a/drivers/gpu/drm/i915/display/intel_psr.c
+++ b/drivers/gpu/drm/i915/display/intel_psr.c
@@ -1495,11 +1495,22 @@ static bool _psr_compute_config(struct intel_dp 
*intel_dp,
return true;
 }
 
-static bool _panel_replay_compute_config(struct intel_dp *intel_dp)
+static bool
+_panel_replay_compute_config(struct intel_dp *intel_dp,
+const struct intel_crtc_state *crtc_state)
 {
if (!CAN_PANEL_REPLAY(intel_dp))
return false;
 
+   if (!intel_dp_is_edp(intel_dp))
+   return true;
+
+   /* Remaining checks are for eDP only */
+
+   /* 128b/132b Panel Replay is not supported on eDP */
+   if (intel_dp_is_uhbr(crtc_state))
+   return false;
+
return true;
 }
 
@@ -1538,7 +1549,8 @@ void intel_psr_compute_config(struct intel_dp *intel_dp,
return;
}
 
-   crtc_state->has_panel_replay = _panel_replay_compute_config(intel_dp);
+   crtc_state->has_panel_replay = _panel_replay_compute_config(intel_dp,
+   crtc_state);
 
crtc_state->has_psr = crtc_state->has_panel_replay ? true :
_psr_compute_config(intel_dp, crtc_state);
-- 
2.34.1



[PATCH v6 25/26] drm/i915/psr: Add new debug bit to disable Panel Replay

2024-06-05 Thread Jouni Högander
Currently there is no way to disable Panel Replay without disabling
PSR. Add new debug bit to be used with i915_edp_psr_debug debugfs
interface.

v2: ensure that fastset is performed when the bit changes

Signed-off-by: Jouni Högander 
---
 drivers/gpu/drm/i915/display/intel_display_types.h |  1 +
 drivers/gpu/drm/i915/display/intel_psr.c   | 11 +--
 2 files changed, 10 insertions(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_display_types.h 
b/drivers/gpu/drm/i915/display/intel_display_types.h
index df29ec37ef28..089c53d5f3c9 100644
--- a/drivers/gpu/drm/i915/display/intel_display_types.h
+++ b/drivers/gpu/drm/i915/display/intel_display_types.h
@@ -1690,6 +1690,7 @@ struct intel_psr {
 #define I915_PSR_DEBUG_ENABLE_SEL_FETCH0x4
 #define I915_PSR_DEBUG_IRQ 0x10
 #define I915_PSR_DEBUG_SU_REGION_ET_DISABLE0x20
+#define I915_PSR_DEBUG_PANEL_REPLAY_DISABLE0x40
 
u32 debug;
bool sink_support;
diff --git a/drivers/gpu/drm/i915/display/intel_psr.c 
b/drivers/gpu/drm/i915/display/intel_psr.c
index a10d9383cc87..b4cd7a8b17bc 100644
--- a/drivers/gpu/drm/i915/display/intel_psr.c
+++ b/drivers/gpu/drm/i915/display/intel_psr.c
@@ -1520,6 +1520,9 @@ _panel_replay_compute_config(struct intel_dp *intel_dp,
if (!CAN_PANEL_REPLAY(intel_dp))
return false;
 
+   if (intel_dp->psr.debug & I915_PSR_DEBUG_PANEL_REPLAY_DISABLE)
+   return false;
+
if (!intel_dp_is_edp(intel_dp))
return true;
 
@@ -2845,11 +2848,13 @@ int intel_psr_debug_set(struct intel_dp *intel_dp, u64 
val)
 {
struct drm_i915_private *dev_priv = dp_to_i915(intel_dp);
const u32 mode = val & I915_PSR_DEBUG_MODE_MASK;
-   const u32 disable_bits = val & I915_PSR_DEBUG_SU_REGION_ET_DISABLE;
+   const u32 disable_bits = val & (I915_PSR_DEBUG_SU_REGION_ET_DISABLE |
+   I915_PSR_DEBUG_PANEL_REPLAY_DISABLE);
u32 old_mode, old_disable_bits;
int ret;
 
if (val & ~(I915_PSR_DEBUG_IRQ | I915_PSR_DEBUG_SU_REGION_ET_DISABLE |
+   I915_PSR_DEBUG_PANEL_REPLAY_DISABLE |
I915_PSR_DEBUG_MODE_MASK) ||
mode > I915_PSR_DEBUG_ENABLE_SEL_FETCH) {
drm_dbg_kms(&dev_priv->drm, "Invalid debug mask %llx\n", val);
@@ -2862,7 +2867,9 @@ int intel_psr_debug_set(struct intel_dp *intel_dp, u64 
val)
 
old_mode = intel_dp->psr.debug & I915_PSR_DEBUG_MODE_MASK;
old_disable_bits = intel_dp->psr.debug &
-   I915_PSR_DEBUG_SU_REGION_ET_DISABLE;
+   (I915_PSR_DEBUG_SU_REGION_ET_DISABLE |
+I915_PSR_DEBUG_PANEL_REPLAY_DISABLE);
+
intel_dp->psr.debug = val;
 
/*
-- 
2.34.1



Re: [PATCH 09/12] drm/i915/cdclk: use i9xx_fsb_freq() for rawclk_freq initialization

2024-06-05 Thread Ville Syrjälä
On Tue, May 28, 2024 at 05:24:58PM +0300, Jani Nikula wrote:
> Instead of duplicating the CLKCFG parsing, reuse i9xx_fsb_freq() to
> figure out rawclk_freq where applicable.
> 
> Signed-off-by: Jani Nikula 
> ---
>  drivers/gpu/drm/i915/display/intel_cdclk.c | 46 ++
>  1 file changed, 3 insertions(+), 43 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/display/intel_cdclk.c 
> b/drivers/gpu/drm/i915/display/intel_cdclk.c
> index b78154c82a71..c731c489c925 100644
> --- a/drivers/gpu/drm/i915/display/intel_cdclk.c
> +++ b/drivers/gpu/drm/i915/display/intel_cdclk.c
> @@ -23,6 +23,7 @@
>  
>  #include 
>  
> +#include "soc/intel_dram.h"
>  #include "hsw_ips.h"
>  #include "i915_reg.h"
>  #include "intel_atomic.h"
> @@ -3529,10 +3530,8 @@ static int vlv_hrawclk(struct drm_i915_private 
> *dev_priv)
> CCK_DISPLAY_REF_CLOCK_CONTROL);
>  }
>  
> -static int i9xx_hrawclk(struct drm_i915_private *dev_priv)
> +static int i9xx_hrawclk(struct drm_i915_private *i915)
>  {
> - u32 clkcfg;
> -
>   /*
>* hrawclock is 1/4 the FSB frequency
>*
> @@ -3543,46 +3542,7 @@ static int i9xx_hrawclk(struct drm_i915_private 
> *dev_priv)
>* don't know which registers have that information,
>* and all the relevant docs have gone to bit heaven :(
>*/

^ the note about the actual clock vs. straps should probably be moved
into i9xx_fsb_freq() as a followup.

> - clkcfg = intel_de_read(dev_priv, CLKCFG) & CLKCFG_FSB_MASK;
> -
> - if (IS_MOBILE(dev_priv)) {
> - switch (clkcfg) {
> - case CLKCFG_FSB_400:
> - return 10;
> - case CLKCFG_FSB_533:
> - return 13;
> - case CLKCFG_FSB_667:
> - return 17;
> - case CLKCFG_FSB_800:
> - return 20;
> - case CLKCFG_FSB_1067:
> - return 27;
> - case CLKCFG_FSB_1333:
> - return 33;
> - default:
> - MISSING_CASE(clkcfg);
> - return 13;
> - }
> - } else {
> - switch (clkcfg) {
> - case CLKCFG_FSB_400_ALT:
> - return 10;
> - case CLKCFG_FSB_533:
> - return 13;
> - case CLKCFG_FSB_667:
> - return 17;
> - case CLKCFG_FSB_800:
> - return 20;
> - case CLKCFG_FSB_1067_ALT:
> - return 27;
> - case CLKCFG_FSB_1333_ALT:
> - return 33;
> - case CLKCFG_FSB_1600_ALT:
> - return 40;
> - default:
> - return 13;
> - }
> - }
> + return DIV_ROUND_CLOSEST(i9xx_fsb_freq(i915), 4);
>  }
>  
>  /**
> -- 
> 2.39.2

-- 
Ville Syrjälä
Intel


[PATCH 0/7] drm/i915: bdw+ pipe interrupt stuff

2024-06-05 Thread Ville Syrjala
From: Ville Syrjälä 

Clean up the bdw+ pipe interrupt bits, and enable some new fault
interrupts on tgl+ and mtl+.

Ville Syrjälä (7):
  drm/i915: Use REG_BIT() for bdw+ pipe interrupts
  drm/i915: Document bdw+ pipe interrupt bits
  drm/i915: Sort bdw+ pipe interrupt bits
  drm/i915: Extend GEN9_PIPE_PLANE_FLIP_DONE() to cover all universal
planes
  drm/i915: Nuke the intermediate pipe fault bitmasks
  drm/i915: Enable pipeDMC fault interrupts on tgl+
  drm/i915: Enable plane/pipeDMC ATS fault interrupts on mtl

 .../gpu/drm/i915/display/intel_display_irq.c  | 49 ++--
 drivers/gpu/drm/i915/i915_reg.h   | 80 ---
 2 files changed, 79 insertions(+), 50 deletions(-)

-- 
2.44.1



[PATCH 1/7] drm/i915: Use REG_BIT() for bdw+ pipe interrupts

2024-06-05 Thread Ville Syrjala
From: Ville Syrjälä 

Replace the hand rolled (1<
---
 drivers/gpu/drm/i915/i915_reg.h | 54 -
 1 file changed, 27 insertions(+), 27 deletions(-)

diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h
index 0569a23b83b2..6b77de060e33 100644
--- a/drivers/gpu/drm/i915/i915_reg.h
+++ b/drivers/gpu/drm/i915/i915_reg.h
@@ -2622,33 +2622,33 @@
 #define GEN8_DE_PIPE_IMR(pipe) _MMIO(0x44404 + (0x10 * (pipe)))
 #define GEN8_DE_PIPE_IIR(pipe) _MMIO(0x44408 + (0x10 * (pipe)))
 #define GEN8_DE_PIPE_IER(pipe) _MMIO(0x4440c + (0x10 * (pipe)))
-#define  GEN8_PIPE_FIFO_UNDERRUN   (1 << 31)
-#define  GEN8_PIPE_CDCLK_CRC_ERROR (1 << 29)
-#define  GEN8_PIPE_CDCLK_CRC_DONE  (1 << 28)
-#define  XELPD_PIPE_SOFT_UNDERRUN  (1 << 22)
-#define  XELPD_PIPE_HARD_UNDERRUN  (1 << 21)
-#define  GEN12_PIPE_VBLANK_UNMOD   (1 << 19)
-#define  GEN8_PIPE_CURSOR_FAULT(1 << 10)
-#define  GEN8_PIPE_SPRITE_FAULT(1 << 9)
-#define  GEN8_PIPE_PRIMARY_FAULT   (1 << 8)
-#define  GEN8_PIPE_SPRITE_FLIP_DONE(1 << 5)
-#define  GEN8_PIPE_PRIMARY_FLIP_DONE   (1 << 4)
-#define  GEN8_PIPE_SCAN_LINE_EVENT (1 << 2)
-#define  GEN8_PIPE_VSYNC   (1 << 1)
-#define  GEN8_PIPE_VBLANK  (1 << 0)
-#define  GEN9_PIPE_CURSOR_FAULT(1 << 11)
-#define  GEN11_PIPE_PLANE7_FAULT   (1 << 22)
-#define  GEN11_PIPE_PLANE6_FAULT   (1 << 21)
-#define  GEN11_PIPE_PLANE5_FAULT   (1 << 20)
-#define  GEN9_PIPE_PLANE4_FAULT(1 << 10)
-#define  GEN9_PIPE_PLANE3_FAULT(1 << 9)
-#define  GEN9_PIPE_PLANE2_FAULT(1 << 8)
-#define  GEN9_PIPE_PLANE1_FAULT(1 << 7)
-#define  GEN9_PIPE_PLANE4_FLIP_DONE(1 << 6)
-#define  GEN9_PIPE_PLANE3_FLIP_DONE(1 << 5)
-#define  GEN9_PIPE_PLANE2_FLIP_DONE(1 << 4)
-#define  GEN9_PIPE_PLANE1_FLIP_DONE(1 << 3)
-#define  GEN9_PIPE_PLANE_FLIP_DONE(p)  (1 << (3 + (p)))
+#define  GEN8_PIPE_FIFO_UNDERRUN   REG_BIT(31)
+#define  GEN8_PIPE_CDCLK_CRC_ERROR REG_BIT(29)
+#define  GEN8_PIPE_CDCLK_CRC_DONE  REG_BIT(28)
+#define  XELPD_PIPE_SOFT_UNDERRUN  REG_BIT(22)
+#define  XELPD_PIPE_HARD_UNDERRUN  REG_BIT(21)
+#define  GEN12_PIPE_VBLANK_UNMOD   REG_BIT(19)
+#define  GEN8_PIPE_CURSOR_FAULTREG_BIT(10)
+#define  GEN8_PIPE_SPRITE_FAULTREG_BIT(9)
+#define  GEN8_PIPE_PRIMARY_FAULT   REG_BIT(8)
+#define  GEN8_PIPE_SPRITE_FLIP_DONEREG_BIT(5)
+#define  GEN8_PIPE_PRIMARY_FLIP_DONE   REG_BIT(4)
+#define  GEN8_PIPE_SCAN_LINE_EVENT REG_BIT(2)
+#define  GEN8_PIPE_VSYNC   REG_BIT(1)
+#define  GEN8_PIPE_VBLANK  REG_BIT(0)
+#define  GEN9_PIPE_CURSOR_FAULTREG_BIT(11)
+#define  GEN11_PIPE_PLANE7_FAULT   REG_BIT(22)
+#define  GEN11_PIPE_PLANE6_FAULT   REG_BIT(21)
+#define  GEN11_PIPE_PLANE5_FAULT   REG_BIT(20)
+#define  GEN9_PIPE_PLANE4_FAULTREG_BIT(10)
+#define  GEN9_PIPE_PLANE3_FAULTREG_BIT(9)
+#define  GEN9_PIPE_PLANE2_FAULTREG_BIT(8)
+#define  GEN9_PIPE_PLANE1_FAULTREG_BIT(7)
+#define  GEN9_PIPE_PLANE4_FLIP_DONEREG_BIT(6)
+#define  GEN9_PIPE_PLANE3_FLIP_DONEREG_BIT(5)
+#define  GEN9_PIPE_PLANE2_FLIP_DONEREG_BIT(4)
+#define  GEN9_PIPE_PLANE1_FLIP_DONEREG_BIT(3)
+#define  GEN9_PIPE_PLANE_FLIP_DONE(p)  REG_BIT(3 + (p))
 #define GEN8_DE_PIPE_IRQ_FAULT_ERRORS \
(GEN8_PIPE_CURSOR_FAULT | \
 GEN8_PIPE_SPRITE_FAULT | \
-- 
2.44.1



[PATCH 2/7] drm/i915: Document bdw+ pipe interrupt bits

2024-06-05 Thread Ville Syrjala
From: Ville Syrjälä 

Sprinkle some notes indicating which platforms have which
pipe interrupt bits.

Signed-off-by: Ville Syrjälä 
---
 drivers/gpu/drm/i915/i915_reg.h | 42 -
 1 file changed, 21 insertions(+), 21 deletions(-)

diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h
index 6b77de060e33..2d0751fb9591 100644
--- a/drivers/gpu/drm/i915/i915_reg.h
+++ b/drivers/gpu/drm/i915/i915_reg.h
@@ -2625,30 +2625,30 @@
 #define  GEN8_PIPE_FIFO_UNDERRUN   REG_BIT(31)
 #define  GEN8_PIPE_CDCLK_CRC_ERROR REG_BIT(29)
 #define  GEN8_PIPE_CDCLK_CRC_DONE  REG_BIT(28)
-#define  XELPD_PIPE_SOFT_UNDERRUN  REG_BIT(22)
-#define  XELPD_PIPE_HARD_UNDERRUN  REG_BIT(21)
-#define  GEN12_PIPE_VBLANK_UNMOD   REG_BIT(19)
-#define  GEN8_PIPE_CURSOR_FAULTREG_BIT(10)
-#define  GEN8_PIPE_SPRITE_FAULTREG_BIT(9)
-#define  GEN8_PIPE_PRIMARY_FAULT   REG_BIT(8)
-#define  GEN8_PIPE_SPRITE_FLIP_DONEREG_BIT(5)
-#define  GEN8_PIPE_PRIMARY_FLIP_DONE   REG_BIT(4)
+#define  XELPD_PIPE_SOFT_UNDERRUN  REG_BIT(22) /* adl/dg2+ */
+#define  XELPD_PIPE_HARD_UNDERRUN  REG_BIT(21) /* adl/dg2+ */
+#define  GEN12_PIPE_VBLANK_UNMOD   REG_BIT(19) /* tgl+ */
+#define  GEN8_PIPE_CURSOR_FAULTREG_BIT(10) /* bdw */
+#define  GEN8_PIPE_SPRITE_FAULTREG_BIT(9) /* bdw */
+#define  GEN8_PIPE_PRIMARY_FAULT   REG_BIT(8) /* bdw */
+#define  GEN8_PIPE_SPRITE_FLIP_DONEREG_BIT(5) /* bdw */
+#define  GEN8_PIPE_PRIMARY_FLIP_DONE   REG_BIT(4) /* bdw */
 #define  GEN8_PIPE_SCAN_LINE_EVENT REG_BIT(2)
 #define  GEN8_PIPE_VSYNC   REG_BIT(1)
 #define  GEN8_PIPE_VBLANK  REG_BIT(0)
-#define  GEN9_PIPE_CURSOR_FAULTREG_BIT(11)
-#define  GEN11_PIPE_PLANE7_FAULT   REG_BIT(22)
-#define  GEN11_PIPE_PLANE6_FAULT   REG_BIT(21)
-#define  GEN11_PIPE_PLANE5_FAULT   REG_BIT(20)
-#define  GEN9_PIPE_PLANE4_FAULTREG_BIT(10)
-#define  GEN9_PIPE_PLANE3_FAULTREG_BIT(9)
-#define  GEN9_PIPE_PLANE2_FAULTREG_BIT(8)
-#define  GEN9_PIPE_PLANE1_FAULTREG_BIT(7)
-#define  GEN9_PIPE_PLANE4_FLIP_DONEREG_BIT(6)
-#define  GEN9_PIPE_PLANE3_FLIP_DONEREG_BIT(5)
-#define  GEN9_PIPE_PLANE2_FLIP_DONEREG_BIT(4)
-#define  GEN9_PIPE_PLANE1_FLIP_DONEREG_BIT(3)
-#define  GEN9_PIPE_PLANE_FLIP_DONE(p)  REG_BIT(3 + (p))
+#define  GEN9_PIPE_CURSOR_FAULTREG_BIT(11) /* skl+ */
+#define  GEN11_PIPE_PLANE7_FAULT   REG_BIT(22) /* icl/tgl */
+#define  GEN11_PIPE_PLANE6_FAULT   REG_BIT(21) /* icl/tgl */
+#define  GEN11_PIPE_PLANE5_FAULT   REG_BIT(20) /* icl+ */
+#define  GEN9_PIPE_PLANE4_FAULTREG_BIT(10) /* skl+ */
+#define  GEN9_PIPE_PLANE3_FAULTREG_BIT(9) /* skl+ */
+#define  GEN9_PIPE_PLANE2_FAULTREG_BIT(8) /* skl+ */
+#define  GEN9_PIPE_PLANE1_FAULTREG_BIT(7) /* skl+ */
+#define  GEN9_PIPE_PLANE4_FLIP_DONEREG_BIT(6) /* skl+ */
+#define  GEN9_PIPE_PLANE3_FLIP_DONEREG_BIT(5) /* skl+ */
+#define  GEN9_PIPE_PLANE2_FLIP_DONEREG_BIT(4) /* skl+ */
+#define  GEN9_PIPE_PLANE1_FLIP_DONEREG_BIT(3) /* skl+ */
+#define  GEN9_PIPE_PLANE_FLIP_DONE(p)  REG_BIT(3 + (p)) /* skl+ */
 #define GEN8_DE_PIPE_IRQ_FAULT_ERRORS \
(GEN8_PIPE_CURSOR_FAULT | \
 GEN8_PIPE_SPRITE_FAULT | \
-- 
2.44.1



[PATCH 3/7] drm/i915: Sort bdw+ pipe interrupt bits

2024-06-05 Thread Ville Syrjala
From: Ville Syrjälä 

It's really hard to figure out which bdw+ pipe interrupt bits
we've defined and which we have not. Sort the defines to make
that a bit easier (still not super easy since the bits have
been shuffled a bit over the years).

Signed-off-by: Ville Syrjälä 
---
 drivers/gpu/drm/i915/i915_reg.h | 22 +++---
 1 file changed, 11 insertions(+), 11 deletions(-)

diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h
index 2d0751fb9591..8e1053c60284 100644
--- a/drivers/gpu/drm/i915/i915_reg.h
+++ b/drivers/gpu/drm/i915/i915_reg.h
@@ -2626,29 +2626,29 @@
 #define  GEN8_PIPE_CDCLK_CRC_ERROR REG_BIT(29)
 #define  GEN8_PIPE_CDCLK_CRC_DONE  REG_BIT(28)
 #define  XELPD_PIPE_SOFT_UNDERRUN  REG_BIT(22) /* adl/dg2+ */
-#define  XELPD_PIPE_HARD_UNDERRUN  REG_BIT(21) /* adl/dg2+ */
-#define  GEN12_PIPE_VBLANK_UNMOD   REG_BIT(19) /* tgl+ */
-#define  GEN8_PIPE_CURSOR_FAULTREG_BIT(10) /* bdw */
-#define  GEN8_PIPE_SPRITE_FAULTREG_BIT(9) /* bdw */
-#define  GEN8_PIPE_PRIMARY_FAULT   REG_BIT(8) /* bdw */
-#define  GEN8_PIPE_SPRITE_FLIP_DONEREG_BIT(5) /* bdw */
-#define  GEN8_PIPE_PRIMARY_FLIP_DONE   REG_BIT(4) /* bdw */
-#define  GEN8_PIPE_SCAN_LINE_EVENT REG_BIT(2)
-#define  GEN8_PIPE_VSYNC   REG_BIT(1)
-#define  GEN8_PIPE_VBLANK  REG_BIT(0)
-#define  GEN9_PIPE_CURSOR_FAULTREG_BIT(11) /* skl+ */
 #define  GEN11_PIPE_PLANE7_FAULT   REG_BIT(22) /* icl/tgl */
+#define  XELPD_PIPE_HARD_UNDERRUN  REG_BIT(21) /* adl/dg2+ */
 #define  GEN11_PIPE_PLANE6_FAULT   REG_BIT(21) /* icl/tgl */
 #define  GEN11_PIPE_PLANE5_FAULT   REG_BIT(20) /* icl+ */
+#define  GEN12_PIPE_VBLANK_UNMOD   REG_BIT(19) /* tgl+ */
+#define  GEN9_PIPE_CURSOR_FAULTREG_BIT(11) /* skl+ */
 #define  GEN9_PIPE_PLANE4_FAULTREG_BIT(10) /* skl+ */
+#define  GEN8_PIPE_CURSOR_FAULTREG_BIT(10) /* bdw */
 #define  GEN9_PIPE_PLANE3_FAULTREG_BIT(9) /* skl+ */
+#define  GEN8_PIPE_SPRITE_FAULTREG_BIT(9) /* bdw */
 #define  GEN9_PIPE_PLANE2_FAULTREG_BIT(8) /* skl+ */
+#define  GEN8_PIPE_PRIMARY_FAULT   REG_BIT(8) /* bdw */
 #define  GEN9_PIPE_PLANE1_FAULTREG_BIT(7) /* skl+ */
 #define  GEN9_PIPE_PLANE4_FLIP_DONEREG_BIT(6) /* skl+ */
 #define  GEN9_PIPE_PLANE3_FLIP_DONEREG_BIT(5) /* skl+ */
+#define  GEN8_PIPE_SPRITE_FLIP_DONEREG_BIT(5) /* bdw */
 #define  GEN9_PIPE_PLANE2_FLIP_DONEREG_BIT(4) /* skl+ */
+#define  GEN8_PIPE_PRIMARY_FLIP_DONE   REG_BIT(4) /* bdw */
 #define  GEN9_PIPE_PLANE1_FLIP_DONEREG_BIT(3) /* skl+ */
 #define  GEN9_PIPE_PLANE_FLIP_DONE(p)  REG_BIT(3 + (p)) /* skl+ */
+#define  GEN8_PIPE_SCAN_LINE_EVENT REG_BIT(2)
+#define  GEN8_PIPE_VSYNC   REG_BIT(1)
+#define  GEN8_PIPE_VBLANK  REG_BIT(0)
 #define GEN8_DE_PIPE_IRQ_FAULT_ERRORS \
(GEN8_PIPE_CURSOR_FAULT | \
 GEN8_PIPE_SPRITE_FAULT | \
-- 
2.44.1



[PATCH 4/7] drm/i915: Extend GEN9_PIPE_PLANE_FLIP_DONE() to cover all universal planes

2024-06-05 Thread Ville Syrjala
From: Ville Syrjälä 

GEN9_PIPE_PLANE_FLIP_DONE() only works for planes 1-4. Extend
it handle planes 5-7 as well. Somewhat annoyingly the bits are
spread around into two distinct clumps.

Currently this doesn't achieve anything, but if we ever extend
async flip support to more than just the first plane then we'll
need this.

Signed-off-by: Ville Syrjälä 
---
 drivers/gpu/drm/i915/i915_reg.h | 6 +-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h
index 8e1053c60284..4d5438ce73a2 100644
--- a/drivers/gpu/drm/i915/i915_reg.h
+++ b/drivers/gpu/drm/i915/i915_reg.h
@@ -2631,6 +2631,9 @@
 #define  GEN11_PIPE_PLANE6_FAULT   REG_BIT(21) /* icl/tgl */
 #define  GEN11_PIPE_PLANE5_FAULT   REG_BIT(20) /* icl+ */
 #define  GEN12_PIPE_VBLANK_UNMOD   REG_BIT(19) /* tgl+ */
+#define  GEN11_PIPE_PLANE7_FLIP_DONE   REG_BIT(18) /* icl/tgl */
+#define  GEN11_PIPE_PLANE6_FLIP_DONE   REG_BIT(17) /* icl/tgl */
+#define  GEN11_PIPE_PLANE5_FLIP_DONE   REG_BIT(16) /* icl+ */
 #define  GEN9_PIPE_CURSOR_FAULTREG_BIT(11) /* skl+ */
 #define  GEN9_PIPE_PLANE4_FAULTREG_BIT(10) /* skl+ */
 #define  GEN8_PIPE_CURSOR_FAULTREG_BIT(10) /* bdw */
@@ -2645,7 +2648,8 @@
 #define  GEN9_PIPE_PLANE2_FLIP_DONEREG_BIT(4) /* skl+ */
 #define  GEN8_PIPE_PRIMARY_FLIP_DONE   REG_BIT(4) /* bdw */
 #define  GEN9_PIPE_PLANE1_FLIP_DONEREG_BIT(3) /* skl+ */
-#define  GEN9_PIPE_PLANE_FLIP_DONE(p)  REG_BIT(3 + (p)) /* skl+ */
+#define  GEN9_PIPE_PLANE_FLIP_DONE(plane_id) \
+   REG_BIT(((plane_id) >= PLANE_5 ? 16 - PLANE_5 : 3 - PLANE_1) + 
(plane_id)) /* skl+ */
 #define  GEN8_PIPE_SCAN_LINE_EVENT REG_BIT(2)
 #define  GEN8_PIPE_VSYNC   REG_BIT(1)
 #define  GEN8_PIPE_VBLANK  REG_BIT(0)
-- 
2.44.1



[PATCH 5/7] drm/i915: Nuke the intermediate pipe fault bitmasks

2024-06-05 Thread Ville Syrjala
From: Ville Syrjälä 

GEN8_DE_PIPE_IRQ_FAULT_ERRORS & co. don't really achieve anything.
Get rid of them and just declare all the bits directly in
gen8_de_pipe_fault_mask().

Signed-off-by: Ville Syrjälä 
---
 .../gpu/drm/i915/display/intel_display_irq.c  | 26 ---
 drivers/gpu/drm/i915/i915_reg.h   | 18 -
 2 files changed, 22 insertions(+), 22 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_display_irq.c 
b/drivers/gpu/drm/i915/display/intel_display_irq.c
index d2d70b81aef9..219f7693207d 100644
--- a/drivers/gpu/drm/i915/display/intel_display_irq.c
+++ b/drivers/gpu/drm/i915/display/intel_display_irq.c
@@ -836,13 +836,31 @@ static u32 gen8_de_port_aux_mask(struct drm_i915_private 
*dev_priv)
 static u32 gen8_de_pipe_fault_mask(struct drm_i915_private *dev_priv)
 {
if (DISPLAY_VER(dev_priv) >= 13 || HAS_D12_PLANE_MINIMIZATION(dev_priv))
-   return RKL_DE_PIPE_IRQ_FAULT_ERRORS;
+   return GEN9_PIPE_CURSOR_FAULT |
+   GEN11_PIPE_PLANE5_FAULT |
+   GEN9_PIPE_PLANE4_FAULT |
+   GEN9_PIPE_PLANE3_FAULT |
+   GEN9_PIPE_PLANE2_FAULT |
+   GEN9_PIPE_PLANE1_FAULT;
else if (DISPLAY_VER(dev_priv) >= 11)
-   return GEN11_DE_PIPE_IRQ_FAULT_ERRORS;
+   return GEN9_PIPE_CURSOR_FAULT |
+   GEN11_PIPE_PLANE7_FAULT |
+   GEN11_PIPE_PLANE6_FAULT |
+   GEN11_PIPE_PLANE5_FAULT |
+   GEN9_PIPE_PLANE4_FAULT |
+   GEN9_PIPE_PLANE3_FAULT |
+   GEN9_PIPE_PLANE2_FAULT |
+   GEN9_PIPE_PLANE1_FAULT;
else if (DISPLAY_VER(dev_priv) >= 9)
-   return GEN9_DE_PIPE_IRQ_FAULT_ERRORS;
+   return GEN9_PIPE_CURSOR_FAULT |
+   GEN9_PIPE_PLANE4_FAULT |
+   GEN9_PIPE_PLANE3_FAULT |
+   GEN9_PIPE_PLANE2_FAULT |
+   GEN9_PIPE_PLANE1_FAULT;
else
-   return GEN8_DE_PIPE_IRQ_FAULT_ERRORS;
+   return GEN8_PIPE_CURSOR_FAULT |
+   GEN8_PIPE_SPRITE_FAULT |
+   GEN8_PIPE_PRIMARY_FAULT;
 }
 
 static void intel_pmdemand_irq_handler(struct drm_i915_private *dev_priv)
diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h
index 4d5438ce73a2..b85e12bb4781 100644
--- a/drivers/gpu/drm/i915/i915_reg.h
+++ b/drivers/gpu/drm/i915/i915_reg.h
@@ -2653,24 +2653,6 @@
 #define  GEN8_PIPE_SCAN_LINE_EVENT REG_BIT(2)
 #define  GEN8_PIPE_VSYNC   REG_BIT(1)
 #define  GEN8_PIPE_VBLANK  REG_BIT(0)
-#define GEN8_DE_PIPE_IRQ_FAULT_ERRORS \
-   (GEN8_PIPE_CURSOR_FAULT | \
-GEN8_PIPE_SPRITE_FAULT | \
-GEN8_PIPE_PRIMARY_FAULT)
-#define GEN9_DE_PIPE_IRQ_FAULT_ERRORS \
-   (GEN9_PIPE_CURSOR_FAULT | \
-GEN9_PIPE_PLANE4_FAULT | \
-GEN9_PIPE_PLANE3_FAULT | \
-GEN9_PIPE_PLANE2_FAULT | \
-GEN9_PIPE_PLANE1_FAULT)
-#define GEN11_DE_PIPE_IRQ_FAULT_ERRORS \
-   (GEN9_DE_PIPE_IRQ_FAULT_ERRORS | \
-GEN11_PIPE_PLANE7_FAULT | \
-GEN11_PIPE_PLANE6_FAULT | \
-GEN11_PIPE_PLANE5_FAULT)
-#define RKL_DE_PIPE_IRQ_FAULT_ERRORS \
-   (GEN9_DE_PIPE_IRQ_FAULT_ERRORS | \
-GEN11_PIPE_PLANE5_FAULT)
 
 #define _HPD_PIN_DDI(hpd_pin)  ((hpd_pin) - HPD_PORT_A)
 #define _HPD_PIN_TC(hpd_pin)   ((hpd_pin) - HPD_PORT_TC1)
-- 
2.44.1



[PATCH 6/7] drm/i915: Enable pipeDMC fault interrupts on tgl+

2024-06-05 Thread Ville Syrjala
From: Ville Syrjälä 

PipeDMC has its own fault interrupt. Enable that so that
we can know if things are failing.

While at it, define the other pipeDMC interrupt as well, even
though we're not currently using it.

Signed-off-by: Ville Syrjälä 
---
 drivers/gpu/drm/i915/display/intel_display_irq.c | 15 +--
 drivers/gpu/drm/i915/i915_reg.h  |  2 ++
 2 files changed, 15 insertions(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_display_irq.c 
b/drivers/gpu/drm/i915/display/intel_display_irq.c
index 219f7693207d..6eb14ffc3c1b 100644
--- a/drivers/gpu/drm/i915/display/intel_display_irq.c
+++ b/drivers/gpu/drm/i915/display/intel_display_irq.c
@@ -836,13 +836,24 @@ static u32 gen8_de_port_aux_mask(struct drm_i915_private 
*dev_priv)
 static u32 gen8_de_pipe_fault_mask(struct drm_i915_private *dev_priv)
 {
if (DISPLAY_VER(dev_priv) >= 13 || HAS_D12_PLANE_MINIMIZATION(dev_priv))
-   return GEN9_PIPE_CURSOR_FAULT |
+   return GEN12_PIPEDMC_FAULT |
+   GEN9_PIPE_CURSOR_FAULT |
GEN11_PIPE_PLANE5_FAULT |
GEN9_PIPE_PLANE4_FAULT |
GEN9_PIPE_PLANE3_FAULT |
GEN9_PIPE_PLANE2_FAULT |
GEN9_PIPE_PLANE1_FAULT;
-   else if (DISPLAY_VER(dev_priv) >= 11)
+   else if (DISPLAY_VER(dev_priv) == 12)
+   return GEN12_PIPEDMC_FAULT |
+   GEN9_PIPE_CURSOR_FAULT |
+   GEN11_PIPE_PLANE7_FAULT |
+   GEN11_PIPE_PLANE6_FAULT |
+   GEN11_PIPE_PLANE5_FAULT |
+   GEN9_PIPE_PLANE4_FAULT |
+   GEN9_PIPE_PLANE3_FAULT |
+   GEN9_PIPE_PLANE2_FAULT |
+   GEN9_PIPE_PLANE1_FAULT;
+   else if (DISPLAY_VER(dev_priv) == 11)
return GEN9_PIPE_CURSOR_FAULT |
GEN11_PIPE_PLANE7_FAULT |
GEN11_PIPE_PLANE6_FAULT |
diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h
index b85e12bb4781..8cd5abc52a2d 100644
--- a/drivers/gpu/drm/i915/i915_reg.h
+++ b/drivers/gpu/drm/i915/i915_reg.h
@@ -2625,6 +2625,8 @@
 #define  GEN8_PIPE_FIFO_UNDERRUN   REG_BIT(31)
 #define  GEN8_PIPE_CDCLK_CRC_ERROR REG_BIT(29)
 #define  GEN8_PIPE_CDCLK_CRC_DONE  REG_BIT(28)
+#define  GEN12_PIPEDMC_INTERRUPT   REG_BIT(26) /* tgl+ */
+#define  GEN12_PIPEDMC_FAULT   REG_BIT(25) /* tgl+ */
 #define  XELPD_PIPE_SOFT_UNDERRUN  REG_BIT(22) /* adl/dg2+ */
 #define  GEN11_PIPE_PLANE7_FAULT   REG_BIT(22) /* icl/tgl */
 #define  XELPD_PIPE_HARD_UNDERRUN  REG_BIT(21) /* adl/dg2+ */
-- 
2.44.1



[PATCH 7/7] drm/i915: Enable plane/pipeDMC ATS fault interrupts on mtl

2024-06-05 Thread Ville Syrjala
From: Ville Syrjälä 

MTL has some new IOMMU thing that has a few new fault interrupts.
Enable those so we can know if things are going poorly.

Signed-off-by: Ville Syrjälä 
---
 drivers/gpu/drm/i915/display/intel_display_irq.c | 10 ++
 drivers/gpu/drm/i915/i915_reg.h  |  2 ++
 2 files changed, 12 insertions(+)

diff --git a/drivers/gpu/drm/i915/display/intel_display_irq.c 
b/drivers/gpu/drm/i915/display/intel_display_irq.c
index 6eb14ffc3c1b..49bcba5e38cb 100644
--- a/drivers/gpu/drm/i915/display/intel_display_irq.c
+++ b/drivers/gpu/drm/i915/display/intel_display_irq.c
@@ -835,6 +835,16 @@ static u32 gen8_de_port_aux_mask(struct drm_i915_private 
*dev_priv)
 
 static u32 gen8_de_pipe_fault_mask(struct drm_i915_private *dev_priv)
 {
+   if (DISPLAY_VER(dev_priv) >= 14)
+   return MTL_PIPEDMC_ATS_FAULT |
+   MTL_PLANE_ATS_FAULT |
+   GEN12_PIPEDMC_FAULT |
+   GEN9_PIPE_CURSOR_FAULT |
+   GEN11_PIPE_PLANE5_FAULT |
+   GEN9_PIPE_PLANE4_FAULT |
+   GEN9_PIPE_PLANE3_FAULT |
+   GEN9_PIPE_PLANE2_FAULT |
+   GEN9_PIPE_PLANE1_FAULT;
if (DISPLAY_VER(dev_priv) >= 13 || HAS_D12_PLANE_MINIMIZATION(dev_priv))
return GEN12_PIPEDMC_FAULT |
GEN9_PIPE_CURSOR_FAULT |
diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h
index 8cd5abc52a2d..33822816c27e 100644
--- a/drivers/gpu/drm/i915/i915_reg.h
+++ b/drivers/gpu/drm/i915/i915_reg.h
@@ -2627,12 +2627,14 @@
 #define  GEN8_PIPE_CDCLK_CRC_DONE  REG_BIT(28)
 #define  GEN12_PIPEDMC_INTERRUPT   REG_BIT(26) /* tgl+ */
 #define  GEN12_PIPEDMC_FAULT   REG_BIT(25) /* tgl+ */
+#define  MTL_PIPEDMC_ATS_FAULT REG_BIT(24) /* mtl+ */
 #define  XELPD_PIPE_SOFT_UNDERRUN  REG_BIT(22) /* adl/dg2+ */
 #define  GEN11_PIPE_PLANE7_FAULT   REG_BIT(22) /* icl/tgl */
 #define  XELPD_PIPE_HARD_UNDERRUN  REG_BIT(21) /* adl/dg2+ */
 #define  GEN11_PIPE_PLANE6_FAULT   REG_BIT(21) /* icl/tgl */
 #define  GEN11_PIPE_PLANE5_FAULT   REG_BIT(20) /* icl+ */
 #define  GEN12_PIPE_VBLANK_UNMOD   REG_BIT(19) /* tgl+ */
+#define  MTL_PLANE_ATS_FAULT   REG_BIT(18) /* mtl+ */
 #define  GEN11_PIPE_PLANE7_FLIP_DONE   REG_BIT(18) /* icl/tgl */
 #define  GEN11_PIPE_PLANE6_FLIP_DONE   REG_BIT(17) /* icl/tgl */
 #define  GEN11_PIPE_PLANE5_FLIP_DONE   REG_BIT(16) /* icl+ */
-- 
2.44.1



[PATCH] drm/i915: Reduce DDI clock gating printk level from NOTICE to DEBUG

2024-06-05 Thread Ville Syrjala
From: Ville Syrjälä 

No idea why the DDI clock gating print is done with drm_notice().
Just use drm_dbg_kms() since no one is going to be interested in
this under normal circumstances.

Signed-off-by: Ville Syrjälä 
---
 drivers/gpu/drm/i915/display/intel_ddi.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_ddi.c 
b/drivers/gpu/drm/i915/display/intel_ddi.c
index 3c3fc53376ce..c76bbd13bb27 100644
--- a/drivers/gpu/drm/i915/display/intel_ddi.c
+++ b/drivers/gpu/drm/i915/display/intel_ddi.c
@@ -2072,9 +2072,9 @@ void intel_ddi_sanitize_encoder_pll_mapping(struct 
intel_encoder *encoder)
!encoder->is_clock_enabled(encoder))
return;
 
-   drm_notice(&i915->drm,
-  "[ENCODER:%d:%s] is disabled/in DSI mode with an ungated DDI 
clock, gate it\n",
-  encoder->base.base.id, encoder->base.name);
+   drm_dbg_kms(&i915->drm,
+   "[ENCODER:%d:%s] is disabled/in DSI mode with an ungated 
DDI clock, gate it\n",
+   encoder->base.base.id, encoder->base.name);
 
encoder->disable_clock(encoder);
 }
-- 
2.44.1



Re: [PATCH] drm/i915: Reduce DDI clock gating printk level from NOTICE to DEBUG

2024-06-05 Thread Jani Nikula
On Wed, 05 Jun 2024, Ville Syrjala  wrote:
> From: Ville Syrjälä 
>
> No idea why the DDI clock gating print is done with drm_notice().
> Just use drm_dbg_kms() since no one is going to be interested in
> this under normal circumstances.
>
> Signed-off-by: Ville Syrjälä 

Reviewed-by: Jani Nikula 

> ---
>  drivers/gpu/drm/i915/display/intel_ddi.c | 6 +++---
>  1 file changed, 3 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_ddi.c 
> b/drivers/gpu/drm/i915/display/intel_ddi.c
> index 3c3fc53376ce..c76bbd13bb27 100644
> --- a/drivers/gpu/drm/i915/display/intel_ddi.c
> +++ b/drivers/gpu/drm/i915/display/intel_ddi.c
> @@ -2072,9 +2072,9 @@ void intel_ddi_sanitize_encoder_pll_mapping(struct 
> intel_encoder *encoder)
>   !encoder->is_clock_enabled(encoder))
>   return;
>  
> - drm_notice(&i915->drm,
> -"[ENCODER:%d:%s] is disabled/in DSI mode with an ungated DDI 
> clock, gate it\n",
> -encoder->base.base.id, encoder->base.name);
> + drm_dbg_kms(&i915->drm,
> + "[ENCODER:%d:%s] is disabled/in DSI mode with an ungated 
> DDI clock, gate it\n",
> + encoder->base.base.id, encoder->base.name);
>  
>   encoder->disable_clock(encoder);
>  }

-- 
Jani Nikula, Intel


Re: [PATCH 1/3] drm/i915: drop redundant W=1 warnings from Makefile

2024-06-05 Thread Jani Nikula
On Thu, 23 May 2024, Jani Nikula  wrote:
> Since commit a61ddb4393ad ("drm: enable (most) W=1 warnings by default
> across the subsystem"), most of the extra warnings in the driver
> Makefile are redundant. Remove them.
>
> Note that -Wmissing-declarations and -Wmissing-prototypes are always
> enabled by default in scripts/Makefile.extrawarn.
>
> Signed-off-by: Jani Nikula 

Pushed this patch to drm-intel-next with Lucas' irc ack.

BR,
Jani.

> ---
>  drivers/gpu/drm/i915/Makefile | 25 +
>  1 file changed, 1 insertion(+), 24 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/Makefile b/drivers/gpu/drm/i915/Makefile
> index 7cad944b825c..a70d95a8fd7a 100644
> --- a/drivers/gpu/drm/i915/Makefile
> +++ b/drivers/gpu/drm/i915/Makefile
> @@ -3,31 +3,8 @@
>  # Makefile for the drm device driver.  This driver provides support for the
>  # Direct Rendering Infrastructure (DRI) in XFree86 4.1.0 and higher.
>  
> -# Unconditionally enable W=1 warnings locally
> -# --- begin copy-paste W=1 warnings from scripts/Makefile.extrawarn
> -subdir-ccflags-y += -Wextra -Wunused -Wno-unused-parameter
> -subdir-ccflags-y += -Wmissing-declarations
> -subdir-ccflags-y += $(call cc-option, -Wrestrict)
> -subdir-ccflags-y += -Wmissing-format-attribute
> -subdir-ccflags-y += -Wmissing-prototypes
> -subdir-ccflags-y += -Wold-style-definition
> -subdir-ccflags-y += -Wmissing-include-dirs
> -subdir-ccflags-y += $(call cc-option, -Wunused-but-set-variable)
> -subdir-ccflags-y += $(call cc-option, -Wunused-const-variable)
> -subdir-ccflags-y += $(call cc-option, -Wpacked-not-aligned)
> -subdir-ccflags-y += $(call cc-option, -Wformat-overflow)
> +# Enable W=1 warnings not enabled in drm subsystem Makefile
>  subdir-ccflags-y += $(call cc-option, -Wformat-truncation)
> -subdir-ccflags-y += $(call cc-option, -Wstringop-truncation)
> -# The following turn off the warnings enabled by -Wextra
> -ifeq ($(findstring 2, $(KBUILD_EXTRA_WARN)),)
> -subdir-ccflags-y += -Wno-missing-field-initializers
> -subdir-ccflags-y += -Wno-type-limits
> -subdir-ccflags-y += -Wno-shift-negative-value
> -endif
> -ifeq ($(findstring 3, $(KBUILD_EXTRA_WARN)),)
> -subdir-ccflags-y += -Wno-sign-compare
> -endif
> -# --- end copy-paste
>  
>  # Enable -Werror in CI and development
>  subdir-ccflags-$(CONFIG_DRM_I915_WERROR) += -Werror

-- 
Jani Nikula, Intel


[PATCH v12 0/9] Implement CMRR Support

2024-06-05 Thread Mitul Golani
CMRR is a display feature that uses adaptive sync
framework to vary Vtotal slightly to match the
content rate exactly without frame drops. This
feature is a variation of VRR where it varies Vtotal
slightly (between additional 0 and 1 Vtotal scanlines)
to match content rate exactly without frame drops
using the adaptive sync framework.

enable this feature by programing new registers for
CMRR enable, CMRR_M, CMRR_N, vmin=vmax=flipline.The
CMRR_M/CMRR_N ratio represents the fractional part
in (actual refresh rate/target refresh rate) * origVTotal.

--v6:
- CMRR handling in co-existatnce of LRR and DRRS
- Correct vtotal paramas accuracy and add 2 digit precision.

--v7:
- Rebased patches in-accordance to AS SDP merge.
- Add neccessary gaurd to prevent crtc_state mismatch
during intel_vrr_get_config.

-v8:
- Add support for AS SDP for CMRR.
- update palce holder for CMRR register(Jani).
- Make CMRR as subset of FAVT, as per comments in patch#3.

-v9:
- Add CMRR register definitions to separate intel_vrr_reg.h.
- Remove cmrr_enabling/disabling, use vrr.enable instead.
- Update AS SDP pack function to accomodate target_rr_divider.
- Remove duplicated lines to compute vrr_vsync params.
- Set cmrr.enable with a separate patch at last.

-v10:
- Separate VRR related register definitions.
- Add dependency header intel_display_reg_defs.h.
- Rename file name to intel_vrr_regs.h instead of reg.h.
- Revert removed line.
- Since vrr.enable and cmrr.enable are not mutually exclusive,
handle accordingly.
- is_edp is not required inside is_cmrr_frac_required function.
- Add video_mode_required flag for future enhancement.
- Correct cmrr_m/cmrr_n calculation.
- target_rr_divider is bools so handle accordingly.

-v11:
- Move VRR related register and bits to separate file
intel_vrr_regs.h.
- Correct file header macro to intel_vrr_regs.h.
- Remove adding CMRR flag to vrr_ctl register during
set_transcoder_timing.
- Replace vrr.enable flag to cmrr.enable where added mistakenly.
- Move cmrr computation patch to last and set other other required
  params before computing cmrr.enable.

-v12:
- Add patch to fix check patch issues for VRR related registers
in i915_reg.h then move them to intel_vrr_regs.h with separate
patch.
- Use drm_mode_vrefresh instead of manual refresh rate calculation.

Mitul Golani (7):
  gpu/drm/i915: Update indentation for VRR registers and bits
  drm/i915: Separate VRR related register definitions
  drm/i915: Define and compute Transcoder CMRR registers
  drm/i915: Update trans_vrr_ctl flag when cmrr is computed
  drm/dp: Add refresh rate divider to struct representing AS SDP
  drm/i915/display: Add support for pack and unpack
  drm/i915/display: Compute Adaptive sync SDP params

Ville Syrjälä (2):
  drm/i915: Protect CRC reg macro arguments for consistency
  drm-tip: 2024y-06m-05d-09h-52m-50s UTC integration manifest

-- 
2.25.1



[PATCH v12 1/9] drm/i915: Protect CRC reg macro arguments for consistency

2024-06-05 Thread Mitul Golani
From: Ville Syrjälä 

It's probably a good idea to start protecting all macro arguments
to avoid any cargo-cult mistakes when people go looking for examples
of how to define these things.

Signed-off-by: Ville Syrjälä 
Link: 
https://patchwork.freedesktop.org/patch/msgid/20240531115342.2763-8-ville.syrj...@linux.intel.com
Reviewed-by: Jani Nikula 
---
 .../drm/i915/display/intel_pipe_crc_regs.h| 26 +--
 1 file changed, 13 insertions(+), 13 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_pipe_crc_regs.h 
b/drivers/gpu/drm/i915/display/intel_pipe_crc_regs.h
index 383910a785f6..4e65f51d34e6 100644
--- a/drivers/gpu/drm/i915/display/intel_pipe_crc_regs.h
+++ b/drivers/gpu/drm/i915/display/intel_pipe_crc_regs.h
@@ -9,7 +9,7 @@
 #include "intel_display_reg_defs.h"
 
 #define _PIPE_CRC_CTL_A0x60050
-#define PIPE_CRC_CTL(dev_priv, pipe)   _MMIO_TRANS2(dev_priv, pipe, 
_PIPE_CRC_CTL_A)
+#define PIPE_CRC_CTL(dev_priv, pipe)   _MMIO_TRANS2((dev_priv), 
(pipe), _PIPE_CRC_CTL_A)
 #define   PIPE_CRC_ENABLE  REG_BIT(31)
 /* skl+ source selection */
 #define   PIPE_CRC_SOURCE_MASK_SKL REG_GENMASK(30, 28)
@@ -76,19 +76,19 @@
 #define   PIPE_CRC_EXP_RES2_MASK   REG_BIT(22, 0) /* pre-ivb */
 
 #define _PIPE_CRC_RES_RED_A0x60060
-#define PIPE_CRC_RES_RED(dev_priv, pipe)   _MMIO_TRANS2(dev_priv, pipe, 
_PIPE_CRC_RES_RED_A)
+#define PIPE_CRC_RES_RED(dev_priv, pipe)   _MMIO_TRANS2((dev_priv), 
(pipe), _PIPE_CRC_RES_RED_A)
 
 #define _PIPE_CRC_RES_GREEN_A  0x60064
-#define PIPE_CRC_RES_GREEN(dev_priv, pipe) _MMIO_TRANS2(dev_priv, pipe, 
_PIPE_CRC_RES_GREEN_A)
+#define PIPE_CRC_RES_GREEN(dev_priv, pipe) _MMIO_TRANS2((dev_priv), 
(pipe), _PIPE_CRC_RES_GREEN_A)
 
 #define _PIPE_CRC_RES_BLUE_A   0x60068
-#define PIPE_CRC_RES_BLUE(dev_priv, pipe)  _MMIO_TRANS2(dev_priv, pipe, 
_PIPE_CRC_RES_BLUE_A)
+#define PIPE_CRC_RES_BLUE(dev_priv, pipe)  _MMIO_TRANS2((dev_priv), 
(pipe), _PIPE_CRC_RES_BLUE_A)
 
 #define _PIPE_CRC_RES_RES1_A_I915  0x6006c /* i915+ */
-#define PIPE_CRC_RES_RES1_I915(dev_priv, pipe) _MMIO_TRANS2(dev_priv, pipe, 
_PIPE_CRC_RES_RES1_A_I915)
+#define PIPE_CRC_RES_RES1_I915(dev_priv, pipe) _MMIO_TRANS2((dev_priv), 
(pipe), _PIPE_CRC_RES_RES1_A_I915)
 
 #define _PIPE_CRC_RES_RES2_A_G4X   0x60080 /* g4x+ */
-#define PIPE_CRC_RES_RES2_G4X(dev_priv, pipe)  _MMIO_TRANS2(dev_priv, pipe, 
_PIPE_CRC_RES_RES2_A_G4X)
+#define PIPE_CRC_RES_RES2_G4X(dev_priv, pipe)  _MMIO_TRANS2((dev_priv), 
(pipe), _PIPE_CRC_RES_RES2_A_G4X)
 
 /* ivb */
 #define _PIPE_CRC_EXP_2_A_IVB  0x60054
@@ -117,36 +117,36 @@
 /* ivb */
 #define _PIPE_CRC_RES_1_A_IVB  0x60064
 #define _PIPE_CRC_RES_1_B_IVB  0x61064
-#define PIPE_CRC_RES_1_IVB(pipe)   _MMIO_PIPE(pipe, 
_PIPE_CRC_RES_1_A_IVB, _PIPE_CRC_RES_1_B_IVB)
+#define PIPE_CRC_RES_1_IVB(pipe)   _MMIO_PIPE((pipe), 
_PIPE_CRC_RES_1_A_IVB, _PIPE_CRC_RES_1_B_IVB)
 
 /* ivb */
 #define _PIPE_CRC_RES_2_A_IVB  0x60068
 #define _PIPE_CRC_RES_2_B_IVB  0x61068
-#define PIPE_CRC_RES_2_IVB(pipe)   _MMIO_PIPE(pipe, 
_PIPE_CRC_RES_2_A_IVB, _PIPE_CRC_RES_2_B_IVB)
+#define PIPE_CRC_RES_2_IVB(pipe)   _MMIO_PIPE((pipe), 
_PIPE_CRC_RES_2_A_IVB, _PIPE_CRC_RES_2_B_IVB)
 
 /* ivb */
 #define _PIPE_CRC_RES_3_A_IVB  0x6006c
 #define _PIPE_CRC_RES_3_B_IVB  0x6106c
-#define PIPE_CRC_RES_3_IVB(pipe)   _MMIO_PIPE(pipe, 
_PIPE_CRC_RES_3_A_IVB, _PIPE_CRC_RES_3_B_IVB)
+#define PIPE_CRC_RES_3_IVB(pipe)   _MMIO_PIPE((pipe), 
_PIPE_CRC_RES_3_A_IVB, _PIPE_CRC_RES_3_B_IVB)
 
 /* ivb */
 #define _PIPE_CRC_RES_4_A_IVB  0x60070
 #define _PIPE_CRC_RES_4_B_IVB  0x61070
-#define PIPE_CRC_RES_4_IVB(pipe)   _MMIO_PIPE(pipe, 
_PIPE_CRC_RES_4_A_IVB, _PIPE_CRC_RES_4_B_IVB)
+#define PIPE_CRC_RES_4_IVB(pipe)   _MMIO_PIPE((pipe), 
_PIPE_CRC_RES_4_A_IVB, _PIPE_CRC_RES_4_B_IVB)
 
 /* ivb */
 #define _PIPE_CRC_RES_5_A_IVB  0x60074
 #define _PIPE_CRC_RES_5_B_IVB  0x61074
-#define PIPE_CRC_RES_5_IVB(pipe)   _MMIO_PIPE(pipe, 
_PIPE_CRC_RES_5_A_IVB, _PIPE_CRC_RES_5_B_IVB)
+#define PIPE_CRC_RES_5_IVB(pipe)   _MMIO_PIPE((pipe), 
_PIPE_CRC_RES_5_A_IVB, _PIPE_CRC_RES_5_B_IVB)
 
 /* hsw+ */
 #define _PIPE_CRC_EXP_A_HSW0x60054
 #define _PIPE_CRC_EXP_B_HSW0x61054
-#define PIPE_CRC_EXP_HSW(pipe) _MMIO_PIPE(pipe, 
_PIPE_CRC_EXP_A_HSW, _PIPE_CRC_EXP_B_HSW)
+#define PIPE_CRC_EXP_HSW(pipe) _MMIO_PIPE((pipe), 
_PIPE_CRC_EXP_A_HSW, _PIPE_CRC_EXP_B_HSW)
 
 /* hsw+ */
 #define _PIPE_CRC_RES_A_HSW0x60064
 #define _PIPE_CRC_RES_B_HSW0x61064
-#define PIPE_CRC_RES_HSW(pipe) _MMIO_PIPE(pipe, 
_PIPE_CRC_RES_A_HSW, _PIPE_CRC_RES_B_HSW)
+#define PIPE_CRC_RES_HSW(pipe) _MMIO_PIPE((pipe), 
_PIPE_CRC_RES_A_HSW, _PIPE_CRC_RE

[PATCH v12 2/9] drm-tip: 2024y-06m-05d-09h-52m-50s UTC integration manifest

2024-06-05 Thread Mitul Golani
From: Ville Syrjälä 

---
 integration-manifest | 28 
 1 file changed, 28 insertions(+)
 create mode 100644 integration-manifest

diff --git a/integration-manifest b/integration-manifest
new file mode 100644
index ..d840964a2208
--- /dev/null
+++ b/integration-manifest
@@ -0,0 +1,28 @@
+drm drm-fixes c3f38fa61af77b49866b006939479069cd451173
+   Linux 6.10-rc2
+drm-misc drm-misc-fixes 629f2b4e05225e53125aaf7ff0b87d5d53897128
+   drm/panel: sitronix-st7789v: Add check for of_drm_get_panel_orientation
+drm-intel drm-intel-fixes c3f38fa61af77b49866b006939479069cd451173
+   Linux 6.10-rc2
+drm-xe drm-xe-fixes 0698ff57bf327d9a5735a898f78161b8dada160b
+   drm/xe/pf: Update the LMTT when freeing VF GT config
+drm drm-next c3f38fa61af77b49866b006939479069cd451173
+   Linux 6.10-rc2
+drm-misc drm-misc-next-fixes 539d33b5783804f22a62bd62ff463dfd1cef4265
+   drm/komeda: remove unused struct 'gamma_curve_segment'
+drm-intel drm-intel-next-fixes 1613e604df0cd359cf2a7fbd9be7a0bcfacfabd0
+   Linux 6.10-rc1
+drm-xe drm-xe-next-fixes d69c3d4b53829097b8948d6791ea32c07de3faab
+   drm/xe/ads: Use flexible-array
+drm-misc drm-misc-next 310ec03841a36e3f45fb528f0dfdfe5b9e84b037
+   dma-buf: align fd_flags and heap_flags with dma_heap_allocation_data
+drm-intel drm-intel-next 17419f5c6d409bcce5d094279a6fed5d5dbdba12
+   drm/i915: Protect CRC reg macro arguments for consistency
+drm-intel drm-intel-gt-next a09d2327a9ba8e3f5be238bc1b7ca2809255b464
+   drm/i915/gt: Fix CCS id's calculation for CCS mode setting
+drm-xe drm-xe-next 8b01f970ee890574b3607c85781354a765c849bd
+   drm/xe: Use missing lock in relay_needs_worker
+drm-intel topic/core-for-CI a51e92845f99879e971677482b0f5fd96ef10d3c
+   thunderbolt: Add Kconfig option to disable PCIe tunneling
+drm-xe topic/xe-for-CI 428c3ef38ef5565140b2104f0d3dafdae9056ca9
+   Revert "drm/xe/gsc: define GSC FW for LNL"
-- 
2.25.1



[PATCH v12 3/9] gpu/drm/i915: Update indentation for VRR registers and bits

2024-06-05 Thread Mitul Golani
Update the indentation for the VRR register definition and
its bits, and fix checkpatch issues to ensure smooth movement
of registers and bits.

Signed-off-by: Mitul Golani 
---
 drivers/gpu/drm/i915/i915_reg.h | 9 +
 1 file changed, 5 insertions(+), 4 deletions(-)

diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h
index 0569a23b83b2..6b39211b5469 100644
--- a/drivers/gpu/drm/i915/i915_reg.h
+++ b/drivers/gpu/drm/i915/i915_reg.h
@@ -1152,7 +1152,7 @@
 #define _TRANS_VRR_CTL_B   0x61420
 #define _TRANS_VRR_CTL_C   0x62420
 #define _TRANS_VRR_CTL_D   0x63420
-#define TRANS_VRR_CTL(dev_priv, trans) _MMIO_TRANS2(dev_priv, 
trans, _TRANS_VRR_CTL_A)
+#define TRANS_VRR_CTL(dev_priv, trans) _MMIO_TRANS2(dev_priv, trans, 
_TRANS_VRR_CTL_A)
 #define   VRR_CTL_VRR_ENABLE   REG_BIT(31)
 #define   VRR_CTL_IGN_MAX_SHIFTREG_BIT(30)
 #define   VRR_CTL_FLIP_LINE_EN REG_BIT(29)
@@ -1160,7 +1160,8 @@
 #define   VRR_CTL_PIPELINE_FULL(x) 
REG_FIELD_PREP(VRR_CTL_PIPELINE_FULL_MASK, (x))
 #define   VRR_CTL_PIPELINE_FULL_OVERRIDE   REG_BIT(0)
 #define  XELPD_VRR_CTL_VRR_GUARDBAND_MASK  REG_GENMASK(15, 0)
-#define  XELPD_VRR_CTL_VRR_GUARDBAND(x)
REG_FIELD_PREP(XELPD_VRR_CTL_VRR_GUARDBAND_MASK, (x))
+#define  XELPD_VRR_CTL_VRR_GUARDBAND(x)
REG_FIELD_PREP(XELPD_VRR_CTL_VRR_GUARDBAND_MASK, \
+   (x))
 
 #define _TRANS_VRR_VMAX_A  0x60424
 #define _TRANS_VRR_VMAX_B  0x61424
@@ -1190,7 +1191,7 @@
 #define _TRANS_VRR_STATUS_B0x6142C
 #define _TRANS_VRR_STATUS_C0x6242C
 #define _TRANS_VRR_STATUS_D0x6342C
-#define TRANS_VRR_STATUS(dev_priv, trans)  _MMIO_TRANS2(dev_priv, 
trans, _TRANS_VRR_STATUS_A)
+#define TRANS_VRR_STATUS(dev_priv, trans)  _MMIO_TRANS2(dev_priv, trans, 
_TRANS_VRR_STATUS_A)
 #define   VRR_STATUS_VMAX_REACHED  REG_BIT(31)
 #define   VRR_STATUS_NOFLIP_TILL_BNDR  REG_BIT(30)
 #define   VRR_STATUS_FLIP_BEF_BNDR REG_BIT(29)
@@ -1241,7 +1242,7 @@
 #define   TRANS_PUSH_SEND  REG_BIT(30)
 
 #define _TRANS_VRR_VSYNC_A 0x60078
-#define TRANS_VRR_VSYNC(dev_priv, trans)   _MMIO_TRANS2(dev_priv, 
trans, _TRANS_VRR_VSYNC_A)
+#define TRANS_VRR_VSYNC(dev_priv, trans)   _MMIO_TRANS2(dev_priv, trans, 
_TRANS_VRR_VSYNC_A)
 #define VRR_VSYNC_END_MASK REG_GENMASK(28, 16)
 #define VRR_VSYNC_END(vsync_end)   REG_FIELD_PREP(VRR_VSYNC_END_MASK, 
(vsync_end))
 #define VRR_VSYNC_START_MASK   REG_GENMASK(12, 0)
-- 
2.25.1



[PATCH v12 4/9] drm/i915: Separate VRR related register definitions

2024-06-05 Thread Mitul Golani
Move VRR related register definitions to a separate file called
intel_vrr_regs.h.

Signed-off-by: Mitul Golani 
---
 drivers/gpu/drm/i915/display/intel_vrr.c  |   1 +
 drivers/gpu/drm/i915/display/intel_vrr_regs.h | 112 ++
 drivers/gpu/drm/i915/i915_reg.h   | 101 
 3 files changed, 113 insertions(+), 101 deletions(-)
 create mode 100644 drivers/gpu/drm/i915/display/intel_vrr_regs.h

diff --git a/drivers/gpu/drm/i915/display/intel_vrr.c 
b/drivers/gpu/drm/i915/display/intel_vrr.c
index 5f3657aa8313..871e6e6a184a 100644
--- a/drivers/gpu/drm/i915/display/intel_vrr.c
+++ b/drivers/gpu/drm/i915/display/intel_vrr.c
@@ -9,6 +9,7 @@
 #include "intel_de.h"
 #include "intel_display_types.h"
 #include "intel_vrr.h"
+#include "intel_vrr_regs.h"
 #include "intel_dp.h"
 
 bool intel_vrr_is_capable(struct intel_connector *connector)
diff --git a/drivers/gpu/drm/i915/display/intel_vrr_regs.h 
b/drivers/gpu/drm/i915/display/intel_vrr_regs.h
new file mode 100644
index ..d4eb74ee72a7
--- /dev/null
+++ b/drivers/gpu/drm/i915/display/intel_vrr_regs.h
@@ -0,0 +1,112 @@
+/* SPDX-License-Identifier: MIT */
+/*
+ * Copyright © 2024 Intel Corporation
+ */
+
+#ifndef __INTEL_VRR_REGS_H__
+#define __INTEL_VRR_REGS_H__
+
+#include "intel_display_reg_defs.h"
+
+/* VRR registers */
+#define _TRANS_VRR_CTL_A0x60420
+#define _TRANS_VRR_CTL_B0x61420
+#define _TRANS_VRR_CTL_C0x62420
+#define _TRANS_VRR_CTL_D0x63420
+#define TRANS_VRR_CTL(dev_priv, trans)  _MMIO_TRANS2(dev_priv, trans, 
_TRANS_VRR_CTL_A)
+#define   VRR_CTL_VRR_ENABLEREG_BIT(31)
+#define   VRR_CTL_IGN_MAX_SHIFT REG_BIT(30)
+#define   VRR_CTL_FLIP_LINE_EN  REG_BIT(29)
+#define   VRR_CTL_PIPELINE_FULL_MASKREG_GENMASK(10, 3)
+#define   VRR_CTL_PIPELINE_FULL(x)  
REG_FIELD_PREP(VRR_CTL_PIPELINE_FULL_MASK, (x))
+#define   VRR_CTL_PIPELINE_FULL_OVERRIDEREG_BIT(0)
+#define   XELPD_VRR_CTL_VRR_GUARDBAND_MASK  REG_GENMASK(15, 0)
+#define   XELPD_VRR_CTL_VRR_GUARDBAND(x)
REG_FIELD_PREP(XELPD_VRR_CTL_VRR_GUARDBAND_MASK, \
+   (x))
+
+#define _TRANS_VRR_VMAX_A   0x60424
+#define _TRANS_VRR_VMAX_B   0x61424
+#define _TRANS_VRR_VMAX_C   0x62424
+#define _TRANS_VRR_VMAX_D   0x63424
+#define TRANS_VRR_VMAX(dev_priv, trans) _MMIO_TRANS2(dev_priv, trans, 
_TRANS_VRR_VMAX_A)
+#define   VRR_VMAX_MASK REG_GENMASK(19, 0)
+
+#define _TRANS_VRR_VMIN_A   0x60434
+#define _TRANS_VRR_VMIN_B   0x61434
+#define _TRANS_VRR_VMIN_C   0x62434
+#define _TRANS_VRR_VMIN_D   0x63434
+#define TRANS_VRR_VMIN(dev_priv, trans) _MMIO_TRANS2(dev_priv, trans, 
_TRANS_VRR_VMIN_A)
+#define   VRR_VMIN_MASK REG_GENMASK(15, 0)
+
+#define _TRANS_VRR_VMAXSHIFT_A  0x60428
+#define _TRANS_VRR_VMAXSHIFT_B  0x61428
+#define _TRANS_VRR_VMAXSHIFT_C  0x62428
+#define _TRANS_VRR_VMAXSHIFT_D  0x63428
+#define TRANS_VRR_VMAXSHIFT(dev_priv, trans)_MMIO_TRANS2(dev_priv, trans, \
+   _TRANS_VRR_VMAXSHIFT_A)
+#define   VRR_VMAXSHIFT_DEC_MASKREG_GENMASK(29, 16)
+#define   VRR_VMAXSHIFT_DEC REG_BIT(16)
+#define   VRR_VMAXSHIFT_INC_MASKREG_GENMASK(12, 0)
+
+#define _TRANS_VRR_STATUS_A 0x6042C
+#define _TRANS_VRR_STATUS_B 0x6142C
+#define _TRANS_VRR_STATUS_C 0x6242C
+#define _TRANS_VRR_STATUS_D 0x6342C
+#define TRANS_VRR_STATUS(dev_priv, trans)   _MMIO_TRANS2(dev_priv, trans, 
_TRANS_VRR_STATUS_A)
+#define   VRR_STATUS_VMAX_REACHED   REG_BIT(31)
+#define   VRR_STATUS_NOFLIP_TILL_BNDR   REG_BIT(30)
+#define   VRR_STATUS_FLIP_BEF_BNDR  REG_BIT(29)
+#define   VRR_STATUS_NO_FLIP_FRAME  REG_BIT(28)
+#define   VRR_STATUS_VRR_EN_LIVEREG_BIT(27)
+#define   VRR_STATUS_FLIPS_SERVICED REG_BIT(26)
+#define   VRR_STATUS_VBLANK_MASKREG_GENMASK(22, 20)
+#define   STATUS_FSM_IDLE   REG_FIELD_PREP(VRR_STATUS_VBLANK_MASK, 
0)
+#define   STATUS_FSM_WAIT_TILL_FDB  REG_FIELD_PREP(VRR_STATUS_VBLANK_MASK, 
1)
+#define   STATUS_FSM_WAIT_TILL_FS   REG_FIELD_PREP(VRR_STATUS_VBLANK_MASK, 
2)
+#define   STATUS_FSM_WAIT_TILL_FLIP REG_FIELD_PREP(VRR_STATUS_VBLANK_MASK, 
3)
+#define   STATUS_FSM_PIPELINE_FILL  REG_FIELD_PREP(VRR_STATUS_VBLANK_MASK, 
4)
+#define   STATUS_FSM_ACTIVE REG_FIELD_PREP(VRR_STATUS_VBLANK_MASK, 
5)
+#define   STATUS_FSM_LEGACY_VBLANK  REG_FIELD_PREP(VRR_STATUS_VBLANK_MASK, 
6)
+
+#define _TRANS_VRR_VTOTAL_PREV_A0x60480
+#define _TRANS_VRR_VTOTAL_PREV_B0x61480
+#define _TRANS_VRR_VTOTAL_PREV_C0x62480
+#define _TRANS_VRR_VTOTAL_PREV_D0x63480
+#define TRANS_VRR_VTOTAL_PREV

[PATCH v12 5/9] drm/i915: Define and compute Transcoder CMRR registers

2024-06-05 Thread Mitul Golani
Add register definitions for Transcoder Fixed Average
Vtotal mode/CMRR function, with the necessary bitfields.
Compute these registers when CMRR is enabled, extending
Adaptive refresh rate capabilities.

--v2:
- Use intel_de_read64_2x32 in intel_vrr_get_config. [Jani]
- Fix indent and order based on register offset. [Jani]

--v3:
- Removing RFC tag.

--v4:
- Update place holder for CMRR register definition. (Jani)

--v5:
- Add CMRR register definitions to a separate file intel_vrr_reg.h.

--v6:
- Fixed indentation. (Jani)
- Add dependency header intel_display_reg_defs.h. (Jani)
- Rename file name to intel_vrr_regs.h instead of reg.h (Jani)

--v7:
- Remove adding CMRR flag to vrr_ctl register during set_transcoder_timing,
as it is already being done during intel_vrr_enable. (Ankit)

Signed-off-by: Mitul Golani 
Reviewed-by: Ankit Nautiyal 
---
 drivers/gpu/drm/i915/display/intel_display.c  | 23 ++-
 .../drm/i915/display/intel_display_types.h|  6 +
 drivers/gpu/drm/i915/display/intel_vrr.c  | 20 
 drivers/gpu/drm/i915/display/intel_vrr_regs.h | 14 +++
 4 files changed, 62 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/i915/display/intel_display.c 
b/drivers/gpu/drm/i915/display/intel_display.c
index 7370acdd6b8b..29d750d2e6f7 100644
--- a/drivers/gpu/drm/i915/display/intel_display.c
+++ b/drivers/gpu/drm/i915/display/intel_display.c
@@ -1005,6 +1005,13 @@ static bool vrr_params_changed(const struct 
intel_crtc_state *old_crtc_state,
old_crtc_state->vrr.pipeline_full != 
new_crtc_state->vrr.pipeline_full;
 }
 
+static bool cmrr_params_changed(const struct intel_crtc_state *old_crtc_state,
+   const struct intel_crtc_state *new_crtc_state)
+{
+   return old_crtc_state->cmrr.cmrr_m != new_crtc_state->cmrr.cmrr_m ||
+   old_crtc_state->cmrr.cmrr_n != new_crtc_state->cmrr.cmrr_n;
+}
+
 static bool vrr_enabling(const struct intel_crtc_state *old_crtc_state,
 const struct intel_crtc_state *new_crtc_state)
 {
@@ -5054,6 +5061,16 @@ intel_pipe_config_compare(const struct intel_crtc_state 
*current_config,
} \
 } while (0)
 
+#define PIPE_CONF_CHECK_LLI(name) do { \
+   if (current_config->name != pipe_config->name) { \
+   pipe_config_mismatch(&p, fastset, crtc, __stringify(name), \
+"(expected %lli, found %lli)", \
+current_config->name, \
+pipe_config->name); \
+   ret = false; \
+   } \
+} while (0)
+
 #define PIPE_CONF_CHECK_BOOL(name) do { \
if (current_config->name != pipe_config->name) { \
BUILD_BUG_ON_MSG(!__same_type(current_config->name, bool), \
@@ -5432,10 +5449,13 @@ intel_pipe_config_compare(const struct intel_crtc_state 
*current_config,
PIPE_CONF_CHECK_I(vrr.guardband);
PIPE_CONF_CHECK_I(vrr.vsync_start);
PIPE_CONF_CHECK_I(vrr.vsync_end);
+   PIPE_CONF_CHECK_LLI(cmrr.cmrr_m);
+   PIPE_CONF_CHECK_LLI(cmrr.cmrr_n);
}
 
 #undef PIPE_CONF_CHECK_X
 #undef PIPE_CONF_CHECK_I
+#undef PIPE_CONF_CHECK_LLI
 #undef PIPE_CONF_CHECK_BOOL
 #undef PIPE_CONF_CHECK_P
 #undef PIPE_CONF_CHECK_FLAGS
@@ -6824,7 +6844,8 @@ static void intel_pre_update_crtc(struct 
intel_atomic_state *state,
intel_crtc_needs_fastset(new_crtc_state))
icl_set_pipe_chicken(new_crtc_state);
 
-   if (vrr_params_changed(old_crtc_state, new_crtc_state))
+   if (vrr_params_changed(old_crtc_state, new_crtc_state) ||
+   cmrr_params_changed(old_crtc_state, new_crtc_state))
intel_vrr_set_transcoder_timings(new_crtc_state);
}
 
diff --git a/drivers/gpu/drm/i915/display/intel_display_types.h 
b/drivers/gpu/drm/i915/display/intel_display_types.h
index 77609656317b..62ed3c9db94a 100644
--- a/drivers/gpu/drm/i915/display/intel_display_types.h
+++ b/drivers/gpu/drm/i915/display/intel_display_types.h
@@ -1401,6 +1401,12 @@ struct intel_crtc_state {
u32 vsync_end, vsync_start;
} vrr;
 
+   /* Content Match Refresh Rate state */
+   struct {
+   bool enable;
+   u64 cmrr_n, cmrr_m;
+   } cmrr;
+
/* Stream Splitter for eDP MSO */
struct {
bool enable;
diff --git a/drivers/gpu/drm/i915/display/intel_vrr.c 
b/drivers/gpu/drm/i915/display/intel_vrr.c
index 871e6e6a184a..d2f854d9d18b 100644
--- a/drivers/gpu/drm/i915/display/intel_vrr.c
+++ b/drivers/gpu/drm/i915/display/intel_vrr.c
@@ -219,6 +219,17 @@ void intel_vrr_set_transcoder_timings(const struct 
intel_crtc_state *crtc_state)
return;
}
 
+   if (crtc_state->cmrr.enable) {
+   intel_de_write(dev_priv, TRANS_CMRR_M_HI(dev_priv, 
cpu_transcoder),
+   

[PATCH v12 6/9] drm/i915: Update trans_vrr_ctl flag when cmrr is computed

2024-06-05 Thread Mitul Golani
Add/update trans_vrr_ctl flag when crtc_state->cmrr.enable
is set, With this commit setting the stage for subsequent
CMRR enablement.

--v2:
- Check pipe active state in cmrr enabling. [Jani]
- Remove usage of bitwise OR on booleans. [Jani]
- Revert unrelated changes. [Jani]
- Update intel_vrr_enable, vrr and cmrr enable conditions. [Jani]
- Simplify whole if-ladder in intel_vrr_enable. [Jani]
- Revert patch restructuring mistakes in intel_vrr_get_config. [Jani]

--v3:
- Check pipe active state in cmrr disabling.[Jani]
- Correct messed up condition in intel_vrr_enable. [Jani]

--v4:
- Removing RFC tag.

--v5:
- CMRR handling in co-existatnce of LRR and DRRS.

--v7:
- Rebase on top of AS SDP merge.

--v8:
- Remove cmrr_enabling/disabling and update commit message. (Ankit)

--v9:
- Revert removed line(Ankit).

Signed-off-by: Mitul Golani 
Reviewed-by: Ankit Nautiyal 
---
 drivers/gpu/drm/i915/display/intel_vrr.c  | 10 --
 drivers/gpu/drm/i915/display/intel_vrr_regs.h |  2 ++
 2 files changed, 10 insertions(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_vrr.c 
b/drivers/gpu/drm/i915/display/intel_vrr.c
index d2f854d9d18b..19b364074de0 100644
--- a/drivers/gpu/drm/i915/display/intel_vrr.c
+++ b/drivers/gpu/drm/i915/display/intel_vrr.c
@@ -282,8 +282,14 @@ void intel_vrr_enable(const struct intel_crtc_state 
*crtc_state)
   VRR_VSYNC_END(crtc_state->vrr.vsync_end) |
   VRR_VSYNC_START(crtc_state->vrr.vsync_start));
 
-   intel_de_write(dev_priv, TRANS_VRR_CTL(dev_priv, cpu_transcoder),
-  VRR_CTL_VRR_ENABLE | trans_vrr_ctl(crtc_state));
+   if (crtc_state->cmrr.enable) {
+   intel_de_write(dev_priv, TRANS_VRR_CTL(dev_priv, 
cpu_transcoder),
+  VRR_CTL_VRR_ENABLE | VRR_CTL_CMRR_ENABLE |
+  trans_vrr_ctl(crtc_state));
+   } else {
+   intel_de_write(dev_priv, TRANS_VRR_CTL(dev_priv, 
cpu_transcoder),
+  VRR_CTL_VRR_ENABLE | trans_vrr_ctl(crtc_state));
+   }
 }
 
 void intel_vrr_disable(const struct intel_crtc_state *old_crtc_state)
diff --git a/drivers/gpu/drm/i915/display/intel_vrr_regs.h 
b/drivers/gpu/drm/i915/display/intel_vrr_regs.h
index 1aeb0cd45068..577b0abb66db 100644
--- a/drivers/gpu/drm/i915/display/intel_vrr_regs.h
+++ b/drivers/gpu/drm/i915/display/intel_vrr_regs.h
@@ -123,4 +123,6 @@
 #define _TRANS_CMRR_N_HI_A 0x604FC
 #define TRANS_CMRR_N_HI(dev_priv, trans)_MMIO_TRANS2(dev_priv, trans, 
_TRANS_CMRR_N_HI_A)
 
+#define VRR_CTL_CMRR_ENABLEREG_BIT(27)
+
 #endif /* __INTEL_VRR_REGS__ */
-- 
2.25.1



[PATCH v12 7/9] drm/dp: Add refresh rate divider to struct representing AS SDP

2024-06-05 Thread Mitul Golani
Add target_rr_divider to structure representing AS SDP.
It is valid only in FAVT mode, sink device ignores the bit in AVT
mode.

--v2:
- Update commit header and send patch to dri-devel.

Signed-off-by: Mitul Golani 
Reviewed-by: Arun R Murthy 
---
 include/drm/display/drm_dp_helper.h | 1 +
 1 file changed, 1 insertion(+)

diff --git a/include/drm/display/drm_dp_helper.h 
b/include/drm/display/drm_dp_helper.h
index 8defcc399f42..ea03e1dd26ba 100644
--- a/include/drm/display/drm_dp_helper.h
+++ b/include/drm/display/drm_dp_helper.h
@@ -122,6 +122,7 @@ struct drm_dp_as_sdp {
int target_rr;
int duration_incr_ms;
int duration_decr_ms;
+   bool target_rr_divider;
enum operation_mode mode;
 };
 
-- 
2.25.1



[PATCH v12 9/9] drm/i915/display: Compute Adaptive sync SDP params

2024-06-05 Thread Mitul Golani
Compute params for Adaptive Sync SDP when Fixed Average Vtotal
mode is enabled.

--v2:
Since vrr.enable is set in case of cmrr also, handle accordingly(Ankit).

--v3:
- Since vrr.enable is set in case of cmrr also, handle
accordingly(Ankit).
- check cmrr.enable when CMRR flags are set during intel_dp_compute_as_sdp.

--v4:
- Use drm_mode_vrefresh instead of manual calculation (Ankit).

Signed-off-by: Mitul Golani 
Reviewed-by: Ankit Nautiyal 
---
 drivers/gpu/drm/i915/display/intel_dp.c | 14 +++---
 1 file changed, 11 insertions(+), 3 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_dp.c 
b/drivers/gpu/drm/i915/display/intel_dp.c
index ac81b172b1ec..b5915c23302f 100644
--- a/drivers/gpu/drm/i915/display/intel_dp.c
+++ b/drivers/gpu/drm/i915/display/intel_dp.c
@@ -2637,11 +2637,19 @@ static void intel_dp_compute_as_sdp(struct intel_dp 
*intel_dp,
/* Currently only DP_AS_SDP_AVT_FIXED_VTOTAL mode supported */
as_sdp->sdp_type = DP_SDP_ADAPTIVE_SYNC;
as_sdp->length = 0x9;
-   as_sdp->mode = DP_AS_SDP_AVT_FIXED_VTOTAL;
-   as_sdp->vtotal = adjusted_mode->vtotal;
-   as_sdp->target_rr = 0;
as_sdp->duration_incr_ms = 0;
as_sdp->duration_incr_ms = 0;
+
+   if (crtc_state->cmrr.enable) {
+   as_sdp->mode = DP_AS_SDP_FAVT_TRR_REACHED;
+   as_sdp->vtotal = adjusted_mode->vtotal;
+   as_sdp->target_rr = drm_mode_vrefresh(adjusted_mode);
+   as_sdp->target_rr_divider = true;
+   } else {
+   as_sdp->mode = DP_AS_SDP_AVT_FIXED_VTOTAL;
+   as_sdp->vtotal = adjusted_mode->vtotal;
+   as_sdp->target_rr = 0;
+   }
 }
 
 static void intel_dp_compute_vsc_sdp(struct intel_dp *intel_dp,
-- 
2.25.1



[PATCH v12 8/9] drm/i915/display: Add support for pack and unpack

2024-06-05 Thread Mitul Golani
Add support of pack and unpack for target_rr_divider.

--v2:
- Set Target Refresh Rate Divider bit when related
AS SDP bit is set (Ankit).

--v3:
- target_rr_divider is bools so set accordingly (Ankit).
Signed-off-by: Mitul Golani 
Reviewed-by: Ankit Nautiyal 
---
 drivers/gpu/drm/i915/display/intel_dp.c | 4 
 1 file changed, 4 insertions(+)

diff --git a/drivers/gpu/drm/i915/display/intel_dp.c 
b/drivers/gpu/drm/i915/display/intel_dp.c
index fd054e16850d..ac81b172b1ec 100644
--- a/drivers/gpu/drm/i915/display/intel_dp.c
+++ b/drivers/gpu/drm/i915/display/intel_dp.c
@@ -4232,6 +4232,9 @@ static ssize_t intel_dp_as_sdp_pack(const struct 
drm_dp_as_sdp *as_sdp,
sdp->db[3] = as_sdp->target_rr & 0xFF;
sdp->db[4] = (as_sdp->target_rr >> 8) & 0x3;
 
+   if (as_sdp->target_rr_divider)
+   sdp->db[4] |= 0x20;
+
return length;
 }
 
@@ -4413,6 +4416,7 @@ int intel_dp_as_sdp_unpack(struct drm_dp_as_sdp *as_sdp,
as_sdp->mode = sdp->db[0] & DP_ADAPTIVE_SYNC_SDP_OPERATION_MODE;
as_sdp->vtotal = (sdp->db[2] << 8) | sdp->db[1];
as_sdp->target_rr = (u64)sdp->db[3] | ((u64)sdp->db[4] & 0x3);
+   as_sdp->target_rr_divider = sdp->db[4] & 0x20 ? true : false;
 
return 0;
 }
-- 
2.25.1



Re: [PATCH 2/3] drm/xe: drop redundant W=1 warnings from Makefile

2024-06-05 Thread Jani Nikula
On Thu, 23 May 2024, Jani Nikula  wrote:
> Since commit a61ddb4393ad ("drm: enable (most) W=1 warnings by default
> across the subsystem"), most of the extra warnings in the driver
> Makefile are redundant. Remove them.
>
> Note that -Wmissing-declarations and -Wmissing-prototypes are always
> enabled by default in scripts/Makefile.extrawarn.
>
> Signed-off-by: Jani Nikula 

Pushed this patch to drm-xe-next with Lucas' irc ack.

BR,
Jani.


> ---
>  drivers/gpu/drm/xe/Makefile | 25 +
>  1 file changed, 1 insertion(+), 24 deletions(-)
>
> diff --git a/drivers/gpu/drm/xe/Makefile b/drivers/gpu/drm/xe/Makefile
> index c9f067b8f54d..f4366cb958be 100644
> --- a/drivers/gpu/drm/xe/Makefile
> +++ b/drivers/gpu/drm/xe/Makefile
> @@ -3,31 +3,8 @@
>  # Makefile for the drm device driver.  This driver provides support for the
>  # Direct Rendering Infrastructure (DRI) in XFree86 4.1.0 and higher.
>  
> -# Unconditionally enable W=1 warnings locally
> -# --- begin copy-paste W=1 warnings from scripts/Makefile.extrawarn
> -subdir-ccflags-y += -Wextra -Wunused -Wno-unused-parameter
> -subdir-ccflags-y += -Wmissing-declarations
> -subdir-ccflags-y += $(call cc-option, -Wrestrict)
> -subdir-ccflags-y += -Wmissing-format-attribute
> -subdir-ccflags-y += -Wmissing-prototypes
> -subdir-ccflags-y += -Wold-style-definition
> -subdir-ccflags-y += -Wmissing-include-dirs
> -subdir-ccflags-y += $(call cc-option, -Wunused-but-set-variable)
> -subdir-ccflags-y += $(call cc-option, -Wunused-const-variable)
> -subdir-ccflags-y += $(call cc-option, -Wpacked-not-aligned)
> -subdir-ccflags-y += $(call cc-option, -Wformat-overflow)
> +# Enable W=1 warnings not enabled in drm subsystem Makefile
>  subdir-ccflags-y += $(call cc-option, -Wformat-truncation)
> -subdir-ccflags-y += $(call cc-option, -Wstringop-truncation)
> -# The following turn off the warnings enabled by -Wextra
> -ifeq ($(findstring 2, $(KBUILD_EXTRA_WARN)),)
> -subdir-ccflags-y += -Wno-missing-field-initializers
> -subdir-ccflags-y += -Wno-type-limits
> -subdir-ccflags-y += -Wno-shift-negative-value
> -endif
> -ifeq ($(findstring 3, $(KBUILD_EXTRA_WARN)),)
> -subdir-ccflags-y += -Wno-sign-compare
> -endif
> -# --- end copy-paste
>  
>  # Enable -Werror in CI and development
>  subdir-ccflags-$(CONFIG_DRM_XE_WERROR) += -Werror

-- 
Jani Nikula, Intel


Re: [PATCH 3/3] drm/amdgpu: drop redundant W=1 warnings from Makefile

2024-06-05 Thread Jani Nikula
On Thu, 23 May 2024, Jani Nikula  wrote:
> Since commit a61ddb4393ad ("drm: enable (most) W=1 warnings by default
> across the subsystem"), most of the extra warnings in the driver
> Makefile are redundant. Remove them.
>
> Note that -Wmissing-declarations and -Wmissing-prototypes are always
> enabled by default in scripts/Makefile.extrawarn.
>
> Signed-off-by: Jani Nikula 

Alex, this one's for you to do whatever you want. ;)

BR,
Jani.


> ---
>  drivers/gpu/drm/amd/amdgpu/Makefile | 18 +-
>  1 file changed, 1 insertion(+), 17 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/Makefile 
> b/drivers/gpu/drm/amd/amdgpu/Makefile
> index 1f6b56ec99f6..9508d0b5708e 100644
> --- a/drivers/gpu/drm/amd/amdgpu/Makefile
> +++ b/drivers/gpu/drm/amd/amdgpu/Makefile
> @@ -39,23 +39,7 @@ ccflags-y := -I$(FULL_AMD_PATH)/include/asic_reg \
>   -I$(FULL_AMD_DISPLAY_PATH)/amdgpu_dm \
>   -I$(FULL_AMD_PATH)/amdkfd
>  
> -subdir-ccflags-y := -Wextra
> -subdir-ccflags-y += -Wunused
> -subdir-ccflags-y += -Wmissing-prototypes
> -subdir-ccflags-y += -Wmissing-declarations
> -subdir-ccflags-y += -Wmissing-include-dirs
> -subdir-ccflags-y += -Wold-style-definition
> -subdir-ccflags-y += -Wmissing-format-attribute
> -# Need this to avoid recursive variable evaluation issues
> -cond-flags := $(call cc-option, -Wunused-but-set-variable) \
> - $(call cc-option, -Wunused-const-variable) \
> - $(call cc-option, -Wstringop-truncation) \
> - $(call cc-option, -Wpacked-not-aligned)
> -subdir-ccflags-y += $(cond-flags)
> -subdir-ccflags-y += -Wno-unused-parameter
> -subdir-ccflags-y += -Wno-type-limits
> -subdir-ccflags-y += -Wno-sign-compare
> -subdir-ccflags-y += -Wno-missing-field-initializers
> +# Locally disable W=1 warnings enabled in drm subsystem Makefile
>  subdir-ccflags-y += -Wno-override-init
>  subdir-ccflags-$(CONFIG_DRM_AMDGPU_WERROR) += -Werror

-- 
Jani Nikula, Intel


Re: [PATCH 06/12] drm/i915: convert fsb_freq and mem_freq to kHz

2024-06-05 Thread Jani Nikula
On Wed, 05 Jun 2024, Ville Syrjälä  wrote:
> On Tue, May 28, 2024 at 05:24:55PM +0300, Jani Nikula wrote:
>> We'll want to use fsb frequency for deriving GT clock and rawclk
>> frequencies in the future. Increase the accuracy by converting to
>> kHz. Do the same for mem freq to be aligned.
>
> mem_freq is used in:
> - gen5_rps_init() -> needs to be adjusted, with care taken for rounding
> - intel_gt_pm_frequency_dump() -> should probably be nuked from here

Good catches. Sloppy on my part.

Thanks,
Jani.

>
>> 
>> Round the frequencies ending in 666 to 667.
>> 
>> Signed-off-by: Jani Nikula 
>> ---
>>  drivers/gpu/drm/i915/display/i9xx_wm.c |  6 ++--
>>  drivers/gpu/drm/i915/gt/intel_rps.c|  4 +--
>>  drivers/gpu/drm/i915/soc/intel_dram.c  | 50 +-
>>  3 files changed, 30 insertions(+), 30 deletions(-)
>> 
>> diff --git a/drivers/gpu/drm/i915/display/i9xx_wm.c 
>> b/drivers/gpu/drm/i915/display/i9xx_wm.c
>> index 8b8a0f305c3a..08c5d122af8f 100644
>> --- a/drivers/gpu/drm/i915/display/i9xx_wm.c
>> +++ b/drivers/gpu/drm/i915/display/i9xx_wm.c
>> @@ -83,14 +83,14 @@ static const struct cxsr_latency 
>> *pnv_get_cxsr_latency(struct drm_i915_private *
>>  
>>  if (is_desktop == latency->is_desktop &&
>>  i915->is_ddr3 == latency->is_ddr3 &&
>> -i915->fsb_freq == latency->fsb_freq &&
>> -i915->mem_freq == latency->mem_freq)
>> +DIV_ROUND_CLOSEST(i915->fsb_freq, 1000) == 
>> latency->fsb_freq &&
>> +DIV_ROUND_CLOSEST(i915->mem_freq, 1000) == 
>> latency->mem_freq)
>>  return latency;
>>  }
>>  
>>  err:
>>  drm_dbg_kms(&i915->drm,
>> -"Could not find CxSR latency for DDR%s, FSB %u MHz, MEM %u 
>> MHz\n",
>> +"Could not find CxSR latency for DDR%s, FSB %u kHz, MEM %u 
>> kHz\n",
>>  i915->is_ddr3 ? "3" : "2", i915->fsb_freq, i915->mem_freq);
>>  
>>  return NULL;
>> diff --git a/drivers/gpu/drm/i915/gt/intel_rps.c 
>> b/drivers/gpu/drm/i915/gt/intel_rps.c
>> index c9cb2a391942..5d3de1cddcf6 100644
>> --- a/drivers/gpu/drm/i915/gt/intel_rps.c
>> +++ b/drivers/gpu/drm/i915/gt/intel_rps.c
>> @@ -280,9 +280,9 @@ static void gen5_rps_init(struct intel_rps *rps)
>>  u32 rgvmodectl;
>>  int c_m, i;
>>  
>> -if (i915->fsb_freq <= 3200)
>> +if (i915->fsb_freq <= 320)
>>  c_m = 0;
>> -else if (i915->fsb_freq <= 4800)
>> +else if (i915->fsb_freq <= 480)
>>  c_m = 1;
>>  else
>>  c_m = 2;
>> diff --git a/drivers/gpu/drm/i915/soc/intel_dram.c 
>> b/drivers/gpu/drm/i915/soc/intel_dram.c
>> index 266ed6cfa485..ace9372244a4 100644
>> --- a/drivers/gpu/drm/i915/soc/intel_dram.c
>> +++ b/drivers/gpu/drm/i915/soc/intel_dram.c
>> @@ -56,11 +56,11 @@ static unsigned int pnv_mem_freq(struct drm_i915_private 
>> *dev_priv)
>>  
>>  switch (tmp & CLKCFG_MEM_MASK) {
>>  case CLKCFG_MEM_533:
>> -return 533;
>> +return 53;
>>  case CLKCFG_MEM_667:
>> -return 667;
>> +return 67;
>>  case CLKCFG_MEM_800:
>> -return 800;
>> +return 80;
>>  }
>>  
>>  return 0;
>> @@ -73,13 +73,13 @@ static unsigned int ilk_mem_freq(struct drm_i915_private 
>> *dev_priv)
>>  ddrpll = intel_uncore_read16(&dev_priv->uncore, DDRMPLL1);
>>  switch (ddrpll & 0xff) {
>>  case 0xc:
>> -return 800;
>> +return 80;
>>  case 0x10:
>> -return 1066;
>> +return 107;
>>  case 0x14:
>> -return 1333;
>> +return 133;
>>  case 0x18:
>> -return 1600;
>> +return 160;
>>  default:
>>  drm_dbg(&dev_priv->drm, "unknown memory frequency 0x%02x\n",
>>  ddrpll & 0xff);
>> @@ -97,9 +97,9 @@ static unsigned int chv_mem_freq(struct drm_i915_private 
>> *i915)
>>  
>>  switch ((val >> 2) & 0x7) {
>>  case 3:
>> -return 2000;
>> +return 200;
>>  default:
>> -return 1600;
>> +return 160;
>>  }
>>  }
>>  
>> @@ -114,11 +114,11 @@ static unsigned int vlv_mem_freq(struct 
>> drm_i915_private *i915)
>>  switch ((val >> 6) & 3) {
>>  case 0:
>>  case 1:
>> -return 800;
>> +return 80;
>>  case 2:
>> -return 1066;
>> +return 107;
>>  case 3:
>> -return 1333;
>> +return 133;
>>  }
>>  
>>  return 0;
>> @@ -139,7 +139,7 @@ static void detect_mem_freq(struct drm_i915_private 
>> *i915)
>>  i915->is_ddr3 = pnv_is_ddr3(i915);
>>  
>>  if (i915->mem_freq)
>> -drm_dbg(&i915->drm, "DDR speed: %d MHz\n", i915->mem_freq);
>> +drm_dbg(&i915->drm, "DDR speed: %d kHz\n", i915->mem_freq);
>>  }
>>  
>>  static unsigned int pnv_fsb_freq(struct drm_i915_pr

RE: [PATCH v12 1/9] drm/i915: Protect CRC reg macro arguments for consistency

2024-06-05 Thread Golani, Mitulkumar Ajitkumar
Hi,

I made a mistake while creating patch and this was sent by mistake. Please 
ignore this patch. I will rebase my patch series and send the correct version.

Sorry for inconvenience.

Regards,
Mitul

> -Original Message-
> From: Intel-gfx  On Behalf Of Mitul
> Golani
> Sent: Wednesday, June 5, 2024 5:58 PM
> To: intel-gfx@lists.freedesktop.org
> Cc: dri-de...@lists.freedesktop.org; Nautiyal, Ankit K
> ; Nikula, Jani 
> Subject: [PATCH v12 1/9] drm/i915: Protect CRC reg macro arguments for
> consistency
> 
> From: Ville Syrjälä 
> 
> It's probably a good idea to start protecting all macro arguments to avoid any
> cargo-cult mistakes when people go looking for examples of how to define
> these things.
> 
> Signed-off-by: Ville Syrjälä 
> Link: https://patchwork.freedesktop.org/patch/msgid/20240531115342.2763-
> 8-ville.syrj...@linux.intel.com
> Reviewed-by: Jani Nikula 
> ---
>  .../drm/i915/display/intel_pipe_crc_regs.h| 26 +--
>  1 file changed, 13 insertions(+), 13 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/display/intel_pipe_crc_regs.h
> b/drivers/gpu/drm/i915/display/intel_pipe_crc_regs.h
> index 383910a785f6..4e65f51d34e6 100644
> --- a/drivers/gpu/drm/i915/display/intel_pipe_crc_regs.h
> +++ b/drivers/gpu/drm/i915/display/intel_pipe_crc_regs.h
> @@ -9,7 +9,7 @@
>  #include "intel_display_reg_defs.h"
> 
>  #define _PIPE_CRC_CTL_A  0x60050
> -#define PIPE_CRC_CTL(dev_priv, pipe) _MMIO_TRANS2(dev_priv,
> pipe, _PIPE_CRC_CTL_A)
> +#define PIPE_CRC_CTL(dev_priv, pipe) _MMIO_TRANS2((dev_priv),
> (pipe), _PIPE_CRC_CTL_A)
>  #define   PIPE_CRC_ENABLEREG_BIT(31)
>  /* skl+ source selection */
>  #define   PIPE_CRC_SOURCE_MASK_SKL   REG_GENMASK(30, 28)
> @@ -76,19 +76,19 @@
>  #define   PIPE_CRC_EXP_RES2_MASK REG_BIT(22, 0) /* pre-ivb */
> 
>  #define _PIPE_CRC_RES_RED_A  0x60060
> -#define PIPE_CRC_RES_RED(dev_priv, pipe) _MMIO_TRANS2(dev_priv,
> pipe, _PIPE_CRC_RES_RED_A)
> +#define PIPE_CRC_RES_RED(dev_priv, pipe) _MMIO_TRANS2((dev_priv),
> (pipe), _PIPE_CRC_RES_RED_A)
> 
>  #define _PIPE_CRC_RES_GREEN_A0x60064
> -#define PIPE_CRC_RES_GREEN(dev_priv, pipe)   _MMIO_TRANS2(dev_priv,
> pipe, _PIPE_CRC_RES_GREEN_A)
> +#define PIPE_CRC_RES_GREEN(dev_priv, pipe)   _MMIO_TRANS2((dev_priv),
> (pipe), _PIPE_CRC_RES_GREEN_A)
> 
>  #define _PIPE_CRC_RES_BLUE_A 0x60068
> -#define PIPE_CRC_RES_BLUE(dev_priv, pipe)_MMIO_TRANS2(dev_priv,
> pipe, _PIPE_CRC_RES_BLUE_A)
> +#define PIPE_CRC_RES_BLUE(dev_priv, pipe)_MMIO_TRANS2((dev_priv),
> (pipe), _PIPE_CRC_RES_BLUE_A)
> 
>  #define _PIPE_CRC_RES_RES1_A_I9150x6006c /* i915+ */
> -#define PIPE_CRC_RES_RES1_I915(dev_priv, pipe)
>   _MMIO_TRANS2(dev_priv, pipe, _PIPE_CRC_RES_RES1_A_I915)
> +#define PIPE_CRC_RES_RES1_I915(dev_priv, pipe)
>   _MMIO_TRANS2((dev_priv), (pipe), _PIPE_CRC_RES_RES1_A_I915)
> 
>  #define _PIPE_CRC_RES_RES2_A_G4X 0x60080 /* g4x+ */
> -#define PIPE_CRC_RES_RES2_G4X(dev_priv, pipe)
>   _MMIO_TRANS2(dev_priv, pipe, _PIPE_CRC_RES_RES2_A_G4X)
> +#define PIPE_CRC_RES_RES2_G4X(dev_priv, pipe)
>   _MMIO_TRANS2((dev_priv), (pipe), _PIPE_CRC_RES_RES2_A_G4X)
> 
>  /* ivb */
>  #define _PIPE_CRC_EXP_2_A_IVB0x60054
> @@ -117,36 +117,36 @@
>  /* ivb */
>  #define _PIPE_CRC_RES_1_A_IVB0x60064
>  #define _PIPE_CRC_RES_1_B_IVB0x61064
> -#define PIPE_CRC_RES_1_IVB(pipe) _MMIO_PIPE(pipe,
> _PIPE_CRC_RES_1_A_IVB, _PIPE_CRC_RES_1_B_IVB)
> +#define PIPE_CRC_RES_1_IVB(pipe) _MMIO_PIPE((pipe),
> _PIPE_CRC_RES_1_A_IVB, _PIPE_CRC_RES_1_B_IVB)
> 
>  /* ivb */
>  #define _PIPE_CRC_RES_2_A_IVB0x60068
>  #define _PIPE_CRC_RES_2_B_IVB0x61068
> -#define PIPE_CRC_RES_2_IVB(pipe) _MMIO_PIPE(pipe,
> _PIPE_CRC_RES_2_A_IVB, _PIPE_CRC_RES_2_B_IVB)
> +#define PIPE_CRC_RES_2_IVB(pipe) _MMIO_PIPE((pipe),
> _PIPE_CRC_RES_2_A_IVB, _PIPE_CRC_RES_2_B_IVB)
> 
>  /* ivb */
>  #define _PIPE_CRC_RES_3_A_IVB0x6006c
>  #define _PIPE_CRC_RES_3_B_IVB0x6106c
> -#define PIPE_CRC_RES_3_IVB(pipe) _MMIO_PIPE(pipe,
> _PIPE_CRC_RES_3_A_IVB, _PIPE_CRC_RES_3_B_IVB)
> +#define PIPE_CRC_RES_3_IVB(pipe) _MMIO_PIPE((pipe),
> _PIPE_CRC_RES_3_A_IVB, _PIPE_CRC_RES_3_B_IVB)
> 
>  /* ivb */
>  #define _PIPE_CRC_RES_4_A_IVB0x60070
>  #define _PIPE_CRC_RES_4_B_IVB0x61070
> -#define PIPE_CRC_RES_4_IVB(pipe) _MMIO_PIPE(pipe,
> _PIPE_CRC_RES_4_A_IVB, _PIPE_CRC_RES_4_B_IVB)
> +#define PIPE_CRC_RES_4_IVB(pipe) _MMIO_PIPE((pipe),
> _PIPE_CRC_RES_4_A_IVB, _PIPE_CRC_RES_4_B_IVB)
> 
>  /* ivb */
>  #define _PIPE_CRC_RES_5_A_IVB0x60074
>  #define _PIPE_CRC_RES_5_B_IVB0x61074
> -#define PIPE_CRC_RES_5_IVB(pipe) _MMIO_PIPE(pipe,
> _PIPE_CRC_RES_5_A_IVB, _PIPE_CRC_RES_5_B_IVB)
> +#define PIPE_CRC_RE

RE: [PATCH v12 2/9] drm-tip: 2024y-06m-05d-09h-52m-50s UTC integration manifest

2024-06-05 Thread Golani, Mitulkumar Ajitkumar
Hi,

Similar to Patch #1 this was sent by mistake. Please ignore this patch. I will 
rebase my patch series and send the correct version.

Sorry for inconvenience.

Regards,
Mitul

> -Original Message-
> From: Intel-gfx  On Behalf Of Mitul
> Golani
> Sent: Wednesday, June 5, 2024 5:58 PM
> To: intel-gfx@lists.freedesktop.org
> Cc: dri-de...@lists.freedesktop.org; Nautiyal, Ankit K
> ; Nikula, Jani 
> Subject: [PATCH v12 2/9] drm-tip: 2024y-06m-05d-09h-52m-50s UTC
> integration manifest
> 
> From: Ville Syrjälä 
> 
> ---
>  integration-manifest | 28 
>  1 file changed, 28 insertions(+)
>  create mode 100644 integration-manifest
> 
> diff --git a/integration-manifest b/integration-manifest new file mode 100644
> index ..d840964a2208
> --- /dev/null
> +++ b/integration-manifest
> @@ -0,0 +1,28 @@
> +drm drm-fixes c3f38fa61af77b49866b006939479069cd451173
> + Linux 6.10-rc2
> +drm-misc drm-misc-fixes 629f2b4e05225e53125aaf7ff0b87d5d53897128
> + drm/panel: sitronix-st7789v: Add check for
> +of_drm_get_panel_orientation drm-intel drm-intel-fixes
> c3f38fa61af77b49866b006939479069cd451173
> + Linux 6.10-rc2
> +drm-xe drm-xe-fixes 0698ff57bf327d9a5735a898f78161b8dada160b
> + drm/xe/pf: Update the LMTT when freeing VF GT config drm drm-next
> +c3f38fa61af77b49866b006939479069cd451173
> + Linux 6.10-rc2
> +drm-misc drm-misc-next-fixes
> 539d33b5783804f22a62bd62ff463dfd1cef4265
> + drm/komeda: remove unused struct 'gamma_curve_segment'
> +drm-intel drm-intel-next-fixes 1613e604df0cd359cf2a7fbd9be7a0bcfacfabd0
> + Linux 6.10-rc1
> +drm-xe drm-xe-next-fixes d69c3d4b53829097b8948d6791ea32c07de3faab
> + drm/xe/ads: Use flexible-array
> +drm-misc drm-misc-next 310ec03841a36e3f45fb528f0dfdfe5b9e84b037
> + dma-buf: align fd_flags and heap_flags with
> dma_heap_allocation_data
> +drm-intel drm-intel-next 17419f5c6d409bcce5d094279a6fed5d5dbdba12
> + drm/i915: Protect CRC reg macro arguments for consistency drm-intel
> +drm-intel-gt-next a09d2327a9ba8e3f5be238bc1b7ca2809255b464
> + drm/i915/gt: Fix CCS id's calculation for CCS mode setting drm-xe
> +drm-xe-next 8b01f970ee890574b3607c85781354a765c849bd
> + drm/xe: Use missing lock in relay_needs_worker drm-intel
> +topic/core-for-CI a51e92845f99879e971677482b0f5fd96ef10d3c
> + thunderbolt: Add Kconfig option to disable PCIe tunneling drm-xe
> +topic/xe-for-CI 428c3ef38ef5565140b2104f0d3dafdae9056ca9
> + Revert "drm/xe/gsc: define GSC FW for LNL"
> --
> 2.25.1



Re: [PATCH v1 1/1] treewide: Align match_string() with sysfs_match_string()

2024-06-05 Thread Rodrigo Vivi
On Sun, Jun 02, 2024 at 06:57:12PM +0300, Andy Shevchenko wrote:
> Make two APIs look similar. Hence convert match_string() to be
> a 2-argument macro. In order to avoid unneeded churn, convert
> all users as well. There is no functional change intended.
> 
> Signed-off-by: Andy Shevchenko 
> ---
> 
> Compile tested with `make allyesconfig` and `make allmodconfig`
> on x86_64, arm, aarch64, powerpc64 (8 builds total).
> 
> I guess the best is to apply it to Linus' tree directly.
> And now it seems a good timing as there are no new users
> of this API either in v6.10-rcX, or in Linux Next.
> 
> But if you think differently, tell me.
> 
>  arch/powerpc/xmon/xmon.c  |  5 ++--
>  arch/x86/kernel/cpu/mtrr/if.c |  4 +--
>  crypto/asymmetric_keys/pkcs7_verify.c |  4 +--
>  drivers/acpi/scan.c   |  4 +--
>  drivers/ata/pata_hpt366.c |  2 +-
>  drivers/ata/pata_hpt37x.c |  2 +-
>  drivers/base/property.c   |  6 ++--
>  drivers/char/ipmi/ipmi_msghandler.c   |  2 +-
>  drivers/char/ipmi/ipmi_si_hardcode.c  |  2 +-
>  drivers/clk/bcm/clk-bcm2835.c |  4 +--
>  drivers/clk/rockchip/clk.c|  4 +--
>  drivers/clk/tegra/clk-tegra124-emc.c  |  7 ++---
>  drivers/cpufreq/amd-pstate.c  |  4 +--
>  drivers/cpufreq/intel_pstate.c|  2 +-
>  .../intel/qat/qat_common/adf_cfg_services.c   |  5 ++--
>  .../gpu/drm/drm_panel_orientation_quirks.c|  2 +-
>  drivers/gpu/drm/i915/display/intel_pipe_crc.c |  2 +-
>  drivers/gpu/drm/nouveau/dispnv04/tvnv17.c |  4 +--
>  drivers/gpu/drm/nouveau/dispnv50/crc.c|  2 +-
>  drivers/hwmon/ltc4282.c   | 14 -
>  drivers/hwmon/nct6775-platform.c  |  6 ++--
>  drivers/hwtracing/intel_th/msu.c  |  2 +-
>  drivers/i2c/busses/i2c-i801.c |  4 +--
>  drivers/leds/leds-sun50i-a100.c   |  2 +-
>  drivers/mfd/omap-usb-host.c   |  2 +-
>  drivers/mmc/host/sdhci-xenon-phy.c| 13 -
>  drivers/mtd/nand/raw/nand_macronix.c  | 10 ++-
>  .../net/ethernet/chelsio/cxgb4/cudbg_lib.c|  6 ++--
>  .../net/wireless/intel/iwlwifi/mvm/debugfs.c  |  2 +-
>  drivers/pci/pcie/aer.c|  2 +-
>  drivers/phy/mediatek/phy-mtk-tphy.c   |  8 ++---
>  drivers/phy/tegra/xusb.c  |  4 +--
>  drivers/pinctrl/mvebu/pinctrl-armada-37xx.c   |  6 ++--
>  drivers/pinctrl/pinmux.c  |  6 ++--
>  drivers/platform/x86/hp/hp-wmi.c  | 29 +++
>  drivers/platform/x86/msi-ec.c |  4 +--
>  drivers/power/supply/ab8500_btemp.c   |  2 +-
>  drivers/power/supply/ab8500_chargalg.c|  2 +-
>  drivers/power/supply/ab8500_charger.c |  2 +-
>  drivers/power/supply/ab8500_fg.c  |  2 +-
>  drivers/staging/gdm724x/gdm_tty.c |  5 ++--
>  .../int340x_thermal/processor_thermal_rfim.c  |  4 +--
>  .../processor_thermal_wt_req.c|  2 +-
>  drivers/usb/common/common.c   |  8 ++---
>  drivers/usb/dwc3/dwc3-rtk.c   |  2 +-
>  drivers/usb/typec/class.c | 14 -
>  drivers/usb/typec/tipd/core.c |  3 +-
>  drivers/video/fbdev/pxafb.c   |  4 +--
>  fs/bcachefs/compress.c|  2 +-
>  fs/bcachefs/opts.c|  4 +--
>  fs/bcachefs/util.c|  4 +--
>  fs/ubifs/auth.c   |  8 ++---
>  include/linux/string.h| 12 +++-
>  kernel/cgroup/rdma.c  |  2 +-
>  kernel/sched/debug.c  |  2 +-
>  kernel/trace/trace.c  |  4 +--
>  kernel/trace/trace_osnoise.c  |  4 +--
>  lib/dynamic_debug.c   |  5 ++--
>  lib/string_helpers.c  |  6 ++--
>  mm/mempolicy.c|  4 +--
>  mm/vmpressure.c   |  4 +--
>  security/apparmor/lsm.c   |  9 +++---
>  security/integrity/ima/ima_main.c |  2 +-
>  security/integrity/ima/ima_policy.c   |  2 +-
>  sound/firewire/oxfw/oxfw.c|  2 +-
>  sound/pci/oxygen/oxygen_mixer.c   |  2 +-
>  sound/soc/codecs/max98088.c   |  2 +-
>  sound/soc/codecs/max98095.c   |  2 +-
>  sound/soc/soc-dapm.c  |  5 ++--
>  69 files changed, 150 insertions(+), 174 deletions(-)
> 
> diff --git a/arch/powerpc/xmon/xmon.c b/arch/powerpc/xmon/xmon.c
> index bd4813bad317..f479cc62674a 100644
> --- a/arch/powerpc/xmon/xmon.c
> +++ b/arch/powerpc/xmon/xmon.c
> @@ -3478,8 +3478,7 @@ skipbl(void)
>   return c;
>  }
>  
> -#define N_PTREGS

Re: [PATCH v1 1/1] treewide: Align match_string() with sysfs_match_string()

2024-06-05 Thread AngeloGioacchino Del Regno

Il 02/06/24 17:57, Andy Shevchenko ha scritto:

Make two APIs look similar. Hence convert match_string() to be
a 2-argument macro. In order to avoid unneeded churn, convert
all users as well. There is no functional change intended.

Signed-off-by: Andy Shevchenko 


For MediaTek

Reviewed-by: AngeloGioacchino Del Regno 





Re: [PATCH v1 1/1] treewide: Align match_string() with sysfs_match_string()

2024-06-05 Thread Steven Rostedt
On Tue, 04 Jun 2024 10:45:37 +0300
Jani Nikula  wrote:

> On Sun, 02 Jun 2024, Andy Shevchenko  
> wrote:
> > Make two APIs look similar. Hence convert match_string() to be
> > a 2-argument macro. In order to avoid unneeded churn, convert
> > all users as well. There is no functional change intended.  
> 
> Why do we think it's a good idea to increase and normalize the use of
> double-underscore function names across the kernel, like
> __match_string() in this case? It should mean "reserved for the
> implementation, not to be called directly".
> 
> If it's to be used directly, it should be named accordingly, right?
> 
> Being in line with __sysfs_match_string() isn't a great argument alone,
> because this adds three times the number of __match_string() calls than
> there are __sysfs_match_string() calls. It's not a good model to follow.
> Arguably both should be renamed.

Agreed. I want to get rid of any functions starting with an underscore
except for those that are basically the same function used internally for
convenience.

Perhaps "match_string_dynamic()"? Where it is used for dynamically
allocated arrays without known size. Or, allow a third parameter for
dynamic arrays.

#define match_string(_a, _s, ...)
char ___STR[] = __stringify((__VA_ARGS__)); \
if (sizeof(___STR) > 3) \
__match_string(_a, _s, ##__VA_ARGS__);  \
else\
__match_string(_a, _s, ARRAY_SIZE(_a));

What the above stringify((__VA_ARGS__)) does is to check the size of any
args added to match_string(). if there isn't any, it will turn into:
"()\0", which is of size 3. If you add an argument, it will be:
"()\0", which will have a size greater than three.

(trace_printk() does this trick in include/linux/kernel.h).

This way, both:

 match_string(array, sting);

or

 match_string(array, string, size);

will work.

-- Steve



Re: [PATCH v1 1/1] treewide: Align match_string() with sysfs_match_string()

2024-06-05 Thread Linus Torvalds
On Tue, 4 Jun 2024 at 11:25, Rodrigo Vivi  wrote:
>
> (I believe that the new _match_string(str1, size, str2) deserves a better 
> name,
> but since I'm bad with naming stuff, I don't have any good suggestion)

I hated the enormous cc list, so I didn't reply to all. But clearly
everybody else is just doing so.

Anyway, here's my NAK for this patch with explanation:


https://lore.kernel.org/all/CAHk-=wg5f99-gzpetsasjd0jb0jgcdmmpehrxctt4_i83h8...@mail.gmail.com/

and part of it was the naming, but there were other oddities there too.

   Linus


Re: [PATCH v1 1/1] treewide: Align match_string() with sysfs_match_string()

2024-06-05 Thread Gautham R. Shenoy
On Sun, Jun 02, 2024 at 06:57:12PM +0300, Andy Shevchenko wrote:
> Make two APIs look similar. Hence convert match_string() to be
> a 2-argument macro. In order to avoid unneeded churn, convert
> all users as well. There is no functional change intended.


> diff --git a/drivers/cpufreq/amd-pstate.c b/drivers/cpufreq/amd-pstate.c
> index 1b7e82a0ad2e..b6f52f44625f 100644
> --- a/drivers/cpufreq/amd-pstate.c
> +++ b/drivers/cpufreq/amd-pstate.c
> @@ -1117,9 +1117,9 @@ static ssize_t store_energy_performance_preference(
>   if (ret != 1)
>   return -EINVAL;
>  
> - ret = match_string(energy_perf_strings, -1, str_preference);
> + ret = __match_string(energy_perf_strings, -1, str_preference);
>   if (ret < 0)
> - return -EINVAL;
> + return ret;
>  
>   mutex_lock(&amd_pstate_limits_lock);
>   ret = amd_pstate_set_energy_pref_index(cpudata, ret);


For drivers/cpufreq/amd-pstate.c

Acked-by: Gautham R. Shenoy 

--
Thanks and Regards
gautham.


✗ Fi.CI.CHECKPATCH: warning for Panel Replay eDP support (rev7)

2024-06-05 Thread Patchwork
== Series Details ==

Series: Panel Replay eDP support (rev7)
URL   : https://patchwork.freedesktop.org/series/133684/
State : warning

== Summary ==

Error: dim checkpatch failed
58d77df5a406 drm/i915/alpm: Do not use fast_wake_lines for aux less wake time
c88c51ffc880 drm/i915/alpm: Write also AUX Less Wake lines into ALPM_CTL
8a6da99681bf drm/i915/display: Take panel replay into account in vsc sdp 
unpacking
d30d994293ae drm/i915/display: Skip Panel Replay on pipe comparison if no 
active planes
dbeae5c71686 drm/display: Add missing Panel Replay Enable SU Region ET bit
08d039c5fae8 drm/i915/psr: Split enabling sink for PSR and Panel Replay
-:30: CHECK:PARENTHESIS_ALIGNMENT: Alignment should match open parenthesis
#30: FILE: drivers/gpu/drm/i915/display/intel_psr.c:690:
+static void _panel_replay_enable_sink(struct intel_dp *intel_dp,
+const struct intel_crtc_state *crtc_state)

-:56: CHECK:PARENTHESIS_ALIGNMENT: Alignment should match open parenthesis
#56: FILE: drivers/gpu/drm/i915/display/intel_psr.c:708:
+static void _psr_enable_sink(struct intel_dp *intel_dp,
+   const struct intel_crtc_state *crtc_state)

total: 0 errors, 0 warnings, 2 checks, 107 lines checked
aa55db234d5a drm/i915/alpm: Make alpm support checks non-static
6508138be2bb drm/i915/psr: Use intel_alpm_aux_wake_supported instead of local 
variable
781f9c969607 drm/i915/psr: Add Panel Replay support to 
intel_psr2_config_et_valid
3a3ff5d7aacd drm/i915/psr: Print Panel Replay status instead of frame lock 
status
93a47fc8f4c6 drm/i915/psr: Move vblank length check to separate function
cdbb50bbd2c4 drm/i915/psr: Take into account SU SDP scanline indication in 
vblank check
-:13: WARNING:COMMIT_LOG_LONG_LINE: Prefer a maximum 75 chars per line 
(possible unwrapped commit description?)
#13: 
PSR2_CTL[ SU SDP scanline indication ] = 0: (TRANS_VBLANK Vertical Blank End- 
TRANS_VBLANK Vertical Blank Start) > PSR2_CTL Block Count Number value in lines

total: 0 errors, 1 warnings, 0 checks, 9 lines checked
0528a2f1ae66 drm/i915/psr: Check vblank against IO buffer wake time on Lunarlake
6c7064b1eae4 dmr/i915/psr: Wake time is aux less wake time for Panel Replay
eb51bbcf2f64 drm/i915/psr: Check panel ALPM capability for eDP Panel Replay
9fc7c1222152 drm/i915/psr: Inform Panel Replay source support on eDP as well
0b76eb0066f2 drm/i915/psr: enable sink for eDP1.5 Panel Replay
1171daebc2e8 drm/i915/psr: Check panel Early Transport capability for eDP PR
d3edd4407ff8 drm/i915/psr: Perfrom psr2 checks related to ALPM for Panel Replay
e452c662970e drm/i915/psr: Add Panel Replay compute_config helper
6e181aaea9f3 drm/i915/psr: 128b/132b Panel Replay is not supported on eDP
6b139f7228ad drm/i915/psr: HW will not allow PR on eDP when HDCP enabled
a316167dae81 drm/i915/psr: Check Early Transport for Panel Replay as well
22ac33c073dc drm/i915/psr: Modify dg2_activate_panel_replay to support eDP
0514724f5b34 drm/i915/psr: Add new debug bit to disable Panel Replay
f89f919cb3aa Revert "drm/i915/psr: Disable early transport by default"




✗ Fi.CI.SPARSE: warning for Panel Replay eDP support (rev7)

2024-06-05 Thread Patchwork
== Series Details ==

Series: Panel Replay eDP support (rev7)
URL   : https://patchwork.freedesktop.org/series/133684/
State : warning

== Summary ==

Error: dim sparse failed
Sparse version: v0.6.2
Fast mode used, each commit won't be checked separately.




[PATCH 1/2] drm/i915/bios: Define block 46 chromaticity coordinates properly

2024-06-05 Thread Ville Syrjala
From: Ville Syrjälä 

The VBT spec does a very poor job of defining how the chromaticity
coordinates in block 46 are laid out. After double checking the
Windows implementation it turns out these more or less match the
EDID definition, where the 10bit values are split into 2bit + 8bit
chunks. Adjust our struct definition to reflect that.

Signed-off-by: Ville Syrjälä 
---
 drivers/gpu/drm/i915/display/intel_vbt_defs.h | 27 ---
 1 file changed, 17 insertions(+), 10 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_vbt_defs.h 
b/drivers/gpu/drm/i915/display/intel_vbt_defs.h
index 862c5923b83d..da8694771f69 100644
--- a/drivers/gpu/drm/i915/display/intel_vbt_defs.h
+++ b/drivers/gpu/drm/i915/display/intel_vbt_defs.h
@@ -1376,16 +1376,23 @@ struct chromaticity {
u8 chromaticity_from_edid_base_block:1;
u8 rsvd:6;
 
-   u8 red_green;
-   u8 blue_white;
-   u8 red_x;
-   u8 red_y;
-   u8 green_x;
-   u8 green_y;
-   u8 blue_x;
-   u8 blue_y;
-   u8 white_x;
-   u8 white_y;
+   u8 green_y_lo:2;
+   u8 green_x_lo:2;
+   u8 red_y_lo:2;
+   u8 red_x_lo:2;
+   u8 white_y_lo:2;
+   u8 white_x_lo:2;
+   u8 blue_y_lo:2;
+   u8 blue_x_lo:2;
+
+   u8 red_x_hi;
+   u8 red_y_hi;
+   u8 green_x_hi;
+   u8 green_y_hi;
+   u8 blue_x_hi;
+   u8 blue_y_hi;
+   u8 white_x_hi;
+   u8 white_y_hi;
 } __packed;
 
 struct bdb_chromaticity {
-- 
2.44.1



[PATCH 2/2] drm/i915/bios: Define the "luminance and gamma" sub-struct of block 46

2024-06-05 Thread Ville Syrjala
From: Ville Syrjälä 

Since BDB version 211 block 46 has included more luminance and
gamma related information. Define it fully. The data is semi-based
on DisplayID v2.0 apparently.

Signed-off-by: Ville Syrjälä 
---
 drivers/gpu/drm/i915/display/intel_vbt_defs.h | 12 
 1 file changed, 12 insertions(+)

diff --git a/drivers/gpu/drm/i915/display/intel_vbt_defs.h 
b/drivers/gpu/drm/i915/display/intel_vbt_defs.h
index da8694771f69..1af8407e2081 100644
--- a/drivers/gpu/drm/i915/display/intel_vbt_defs.h
+++ b/drivers/gpu/drm/i915/display/intel_vbt_defs.h
@@ -1395,8 +1395,20 @@ struct chromaticity {
u8 white_y_hi;
 } __packed;
 
+struct luminance_and_gamma {
+   u8 luminance_enable:1;  /* 211+ 
*/
+   u8 gamma_enable:1;  /* 211+ 
*/
+   u8 rsvd:6;
+
+   u16 min_luminance;  /* 211+ 
*/
+   u16 max_luminance;  /* 211+ 
*/
+   u16 one_percent_max_luminance;  /* 211+ 
*/
+   u8 gamma;   /* 211+ 
*/
+} __packed;
+
 struct bdb_chromaticity {
struct chromaticity chromaticity[16];
+   struct luminance_and_gamma luminance_and_gamma[16]; /* 211+ 
*/
 } __packed;
 
 /*
-- 
2.44.1



✓ Fi.CI.BAT: success for Panel Replay eDP support (rev7)

2024-06-05 Thread Patchwork
== Series Details ==

Series: Panel Replay eDP support (rev7)
URL   : https://patchwork.freedesktop.org/series/133684/
State : success

== Summary ==

CI Bug Log - changes from CI_DRM_14881 -> Patchwork_133684v7


Summary
---

  **SUCCESS**

  No regressions found.

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

Participating hosts (38 -> 35)
--

  Additional (1): fi-kbl-8809g 
  Missing(4): bat-kbl-2 bat-dg2-11 fi-snb-2520m bat-arls-3 

Possible new issues
---

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

### IGT changes ###

 Suppressed 

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

  * igt@i915_module_load@load:
- {bat-mtlp-9}:   [PASS][1] -> [ABORT][2]
   [1]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14881/bat-mtlp-9/igt@i915_module_l...@load.html
   [2]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133684v7/bat-mtlp-9/igt@i915_module_l...@load.html

  
Known issues


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

### IGT changes ###

 Issues hit 

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

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

  * igt@kms_force_connector_basic@force-load-detect:
- fi-kbl-8809g:   NOTRUN -> [SKIP][5] +30 other tests skip
   [5]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133684v7/fi-kbl-8809g/igt@kms_force_connector_ba...@force-load-detect.html

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

  [i915#2190]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2190
  [i915#4613]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4613


Build changes
-

  * Linux: CI_DRM_14881 -> Patchwork_133684v7

  CI-20190529: 20190529
  CI_DRM_14881: a494545483635d3d93d19e8f483f61e7d4198383 @ 
git://anongit.freedesktop.org/gfx-ci/linux
  IGT_7878: eecd5683bd98cee3fc6bd3f26a1f053c897f6bdf @ 
https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
  Patchwork_133684v7: a494545483635d3d93d19e8f483f61e7d4198383 @ 
git://anongit.freedesktop.org/gfx-ci/linux

== Logs ==

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


✗ Fi.CI.CHECKPATCH: warning for drm/i915: bdw+ pipe interrupt stuff

2024-06-05 Thread Patchwork
== Series Details ==

Series: drm/i915: bdw+ pipe interrupt stuff
URL   : https://patchwork.freedesktop.org/series/134497/
State : warning

== Summary ==

Error: dim checkpatch failed
1e0bd32b8a29 drm/i915: Use REG_BIT() for bdw+ pipe interrupts
8711ec9d6af6 drm/i915: Document bdw+ pipe interrupt bits
31327a5af06b drm/i915: Sort bdw+ pipe interrupt bits
f181d09ea92d drm/i915: Extend GEN9_PIPE_PLANE_FLIP_DONE() to cover all 
universal planes
-:39: CHECK:MACRO_ARG_REUSE: Macro argument reuse 'plane_id' - possible 
side-effects?
#39: FILE: drivers/gpu/drm/i915/i915_reg.h:2651:
+#define  GEN9_PIPE_PLANE_FLIP_DONE(plane_id) \
+   REG_BIT(((plane_id) >= PLANE_5 ? 16 - PLANE_5 : 3 - PLANE_1) + 
(plane_id)) /* skl+ */

total: 0 errors, 0 warnings, 1 checks, 18 lines checked
c5a53e5f5b21 drm/i915: Nuke the intermediate pipe fault bitmasks
45d472fc2a27 drm/i915: Enable pipeDMC fault interrupts on tgl+
386081d16cde drm/i915: Enable plane/pipeDMC ATS fault interrupts on mtl




✓ Fi.CI.BAT: success for drm/i915: bdw+ pipe interrupt stuff

2024-06-05 Thread Patchwork
== Series Details ==

Series: drm/i915: bdw+ pipe interrupt stuff
URL   : https://patchwork.freedesktop.org/series/134497/
State : success

== Summary ==

CI Bug Log - changes from CI_DRM_14881 -> Patchwork_134497v1


Summary
---

  **SUCCESS**

  No regressions found.

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

Participating hosts (38 -> 37)
--

  Additional (3): bat-dg2-14 bat-adlp-9 bat-adlp-6 
  Missing(4): bat-kbl-2 bat-dg2-11 fi-snb-2520m bat-arls-3 

Possible new issues
---

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

### IGT changes ###

 Suppressed 

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

  * igt@core_hotunplug@unbind-rebind:
- {bat-apl-1}:[PASS][1] -> [ABORT][2]
   [1]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14881/bat-apl-1/igt@core_hotunp...@unbind-rebind.html
   [2]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134497v1/bat-apl-1/igt@core_hotunp...@unbind-rebind.html

  
Known issues


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

### IGT changes ###

 Issues hit 

  * igt@debugfs_test@basic-hwmon:
- bat-adlp-9: NOTRUN -> [SKIP][3] ([i915#9318])
   [3]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134497v1/bat-adlp-9/igt@debugfs_t...@basic-hwmon.html
- bat-adlp-6: NOTRUN -> [SKIP][4] ([i915#9318])
   [4]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134497v1/bat-adlp-6/igt@debugfs_t...@basic-hwmon.html

  * igt@gem_lmem_swapping@basic:
- bat-adlp-9: NOTRUN -> [SKIP][5] ([i915#4613]) +3 other tests skip
   [5]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134497v1/bat-adlp-9/igt@gem_lmem_swapp...@basic.html

  * igt@gem_lmem_swapping@random-engines:
- bat-adlp-6: NOTRUN -> [SKIP][6] ([i915#4613]) +3 other tests skip
   [6]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134497v1/bat-adlp-6/igt@gem_lmem_swapp...@random-engines.html

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

  * igt@gem_render_tiled_blits@basic:
- bat-dg2-14: NOTRUN -> [SKIP][8] ([i915#4079]) +1 other test skip
   [8]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134497v1/bat-dg2-14/igt@gem_render_tiled_bl...@basic.html

  * igt@gem_tiled_fence_blits@basic:
- bat-dg2-14: NOTRUN -> [SKIP][9] ([i915#4077]) +2 other tests skip
   [9]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134497v1/bat-dg2-14/igt@gem_tiled_fence_bl...@basic.html

  * igt@gem_tiled_pread_basic:
- bat-adlp-6: NOTRUN -> [SKIP][10] ([i915#3282])
   [10]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134497v1/bat-adlp-6/igt@gem_tiled_pread_basic.html
- bat-adlp-9: NOTRUN -> [SKIP][11] ([i915#3282])
   [11]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134497v1/bat-adlp-9/igt@gem_tiled_pread_basic.html

  * igt@i915_pm_rps@basic-api:
- bat-adlp-9: NOTRUN -> [SKIP][12] ([i915#6621])
   [12]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134497v1/bat-adlp-9/igt@i915_pm_...@basic-api.html
- bat-dg2-14: NOTRUN -> [SKIP][13] ([i915#6621])
   [13]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134497v1/bat-dg2-14/igt@i915_pm_...@basic-api.html
- bat-adlp-6: NOTRUN -> [SKIP][14] ([i915#6621])
   [14]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134497v1/bat-adlp-6/igt@i915_pm_...@basic-api.html

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

  * igt@kms_addfb_basic@basic-x-tiled-legacy:
- bat-dg2-14: NOTRUN -> [SKIP][16] ([i915#4212]) +7 other tests skip
   [16]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134497v1/bat-dg2-14/igt@kms_addfb_ba...@basic-x-tiled-legacy.html

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

  * igt@kms_cursor_legacy@basic-busy-flip-before-cursor-atomic:
- bat-adlp-9: NOTRUN -> [SKIP][18] ([i915#4103]) +1 other test skip
   [18]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134497v1/bat-adlp-9/igt@kms_cursor_leg...@basic-busy-flip-before-cursor-atomic.html

  * igt@kms_cursor_legacy@basic-busy-flip-before-cursor-legacy:
- bat-dg2-14: NOTRUN -> [SKIP][19] ([i915#4103] / [i915#4213]) +1 
other test ski

✗ Fi.CI.BUILD: failure for Implement CMRR Support (rev12)

2024-06-05 Thread Patchwork
== Series Details ==

Series: Implement CMRR Support (rev12)
URL   : https://patchwork.freedesktop.org/series/126443/
State : failure

== Summary ==

Error: patch 
https://patchwork.freedesktop.org/api/1.0/series/126443/revisions/12/mbox/ not 
applied
Applying: drm/i915: Protect CRC reg macro arguments for consistency
Using index info to reconstruct a base tree...
M   drivers/gpu/drm/i915/display/intel_pipe_crc_regs.h
Falling back to patching base and 3-way merge...
No changes -- Patch already applied.
Applying: drm-tip: 2024y-06m-05d-09h-52m-50s UTC integration manifest
Using index info to reconstruct a base tree...
Falling back to patching base and 3-way merge...
CONFLICT (add/add): Merge conflict in integration-manifest
Auto-merging integration-manifest
error: Failed to merge in the changes.
hint: Use 'git am --show-current-patch=diff' to see the failed patch
Patch failed at 0002 drm-tip: 2024y-06m-05d-09h-52m-50s UTC integration manifest
When you have resolved this problem, run "git am --continue".
If you prefer to skip this patch, run "git am --skip" instead.
To restore the original branch and stop patching, run "git am --abort".
Build failed, no error log produced




✓ Fi.CI.BAT: success for drm/i915: Reduce DDI clock gating printk level from NOTICE to DEBUG

2024-06-05 Thread Patchwork
== Series Details ==

Series: drm/i915: Reduce DDI clock gating printk level from NOTICE to DEBUG
URL   : https://patchwork.freedesktop.org/series/134499/
State : success

== Summary ==

CI Bug Log - changes from CI_DRM_14881 -> Patchwork_134499v1


Summary
---

  **SUCCESS**

  No regressions found.

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

Participating hosts (38 -> 36)
--

  Missing(2): bat-mtlp-9 fi-snb-2520m 

Known issues


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

### IGT changes ###

 Possible fixes 

  * igt@gem_lmem_swapping@basic@lmem0:
- bat-dg2-9:  [FAIL][1] ([i915#10378]) -> [PASS][2]
   [1]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14881/bat-dg2-9/igt@gem_lmem_swapping@ba...@lmem0.html
   [2]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134499v1/bat-dg2-9/igt@gem_lmem_swapping@ba...@lmem0.html

  
  [i915#10378]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10378


Build changes
-

  * Linux: CI_DRM_14881 -> Patchwork_134499v1

  CI-20190529: 20190529
  CI_DRM_14881: a494545483635d3d93d19e8f483f61e7d4198383 @ 
git://anongit.freedesktop.org/gfx-ci/linux
  IGT_7878: eecd5683bd98cee3fc6bd3f26a1f053c897f6bdf @ 
https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
  Patchwork_134499v1: a494545483635d3d93d19e8f483f61e7d4198383 @ 
git://anongit.freedesktop.org/gfx-ci/linux

== Logs ==

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


✗ Fi.CI.BAT: failure for series starting with [1/2] drm/i915/bios: Define block 46 chromaticity coordinates properly

2024-06-05 Thread Patchwork
== Series Details ==

Series: series starting with [1/2] drm/i915/bios: Define block 46 chromaticity 
coordinates properly
URL   : https://patchwork.freedesktop.org/series/134505/
State : failure

== Summary ==

CI Bug Log - changes from CI_DRM_14881 -> Patchwork_134505v1


Summary
---

  **FAILURE**

  Serious unknown changes coming with Patchwork_134505v1 absolutely need to be
  verified manually.
  
  If you think the reported changes have nothing to do with the changes
  introduced in Patchwork_134505v1, please notify your bug team 
(i915-ci-in...@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_134505v1/index.html

Participating hosts (38 -> 34)
--

  Additional (2): fi-kbl-8809g fi-bsw-n3050 
  Missing(6): bat-mtlp-9 bat-arls-3 fi-snb-2520m bat-dg2-11 bat-jsl-1 
bat-mtlp-6 

Possible new issues
---

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

### IGT changes ###

 Possible regressions 

  * igt@i915_selftest@live@active:
- fi-glk-j4005:   [PASS][1] -> [DMESG-FAIL][2]
   [1]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14881/fi-glk-j4005/igt@i915_selftest@l...@active.html
   [2]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134505v1/fi-glk-j4005/igt@i915_selftest@l...@active.html

  
Known issues


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

### IGT changes ###

 Issues hit 

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

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

  * igt@gem_lmem_swapping@random-engines:
- fi-bsw-n3050:   NOTRUN -> [SKIP][5] +19 other tests skip
   [5]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134505v1/fi-bsw-n3050/igt@gem_lmem_swapp...@random-engines.html

  * igt@kms_force_connector_basic@force-load-detect:
- fi-kbl-8809g:   NOTRUN -> [SKIP][6] +30 other tests skip
   [6]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134505v1/fi-kbl-8809g/igt@kms_force_connector_ba...@force-load-detect.html

  
  [i915#2190]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2190
  [i915#4613]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4613


Build changes
-

  * Linux: CI_DRM_14881 -> Patchwork_134505v1

  CI-20190529: 20190529
  CI_DRM_14881: a494545483635d3d93d19e8f483f61e7d4198383 @ 
git://anongit.freedesktop.org/gfx-ci/linux
  IGT_7878: eecd5683bd98cee3fc6bd3f26a1f053c897f6bdf @ 
https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
  Patchwork_134505v1: a494545483635d3d93d19e8f483f61e7d4198383 @ 
git://anongit.freedesktop.org/gfx-ci/linux

== Logs ==

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


Re: [PATCH 1/3] drm/i915: Rename all bigjoiner to joiner

2024-06-05 Thread Ville Syrjälä
On Mon, Jun 03, 2024 at 02:25:49PM +0300, Stanislav Lisovskiy wrote:
> Lets unify both bigjoiner and ultrajoiner under simple "joiner" name,
> because in future we might have multiple configurations, involving
> multiple bigjoiners, ultrajoiner, however it is possible to use
> same api for handling both.
> 
> Signed-off-by: Stanislav Lisovskiy 
> ---
>  .../gpu/drm/i915/display/intel_atomic_plane.c |   4 +-
>  drivers/gpu/drm/i915/display/intel_cdclk.c|   8 +-
>  .../drm/i915/display/intel_crtc_state_dump.c  |   8 +-
>  drivers/gpu/drm/i915/display/intel_cursor.c   |   4 +-
>  drivers/gpu/drm/i915/display/intel_ddi.c  |   4 +-
>  drivers/gpu/drm/i915/display/intel_display.c  | 204 +-
>  drivers/gpu/drm/i915/display/intel_display.h  |   8 +-
>  .../drm/i915/display/intel_display_debugfs.c  |  10 +-
>  .../drm/i915/display/intel_display_types.h|   4 +-
>  drivers/gpu/drm/i915/display/intel_dp.c   |  60 +++---
>  drivers/gpu/drm/i915/display/intel_dp.h   |   8 +-
>  drivers/gpu/drm/i915/display/intel_dp_mst.c   |  22 +-
>  drivers/gpu/drm/i915/display/intel_drrs.c |   6 +-
>  .../drm/i915/display/intel_modeset_setup.c|  38 ++--
>  drivers/gpu/drm/i915/display/intel_psr.c  |   6 +-
>  drivers/gpu/drm/i915/display/intel_vdsc.c |  12 +-
>  drivers/gpu/drm/i915/display/intel_vdsc.h |   2 +-
>  drivers/gpu/drm/i915/display/intel_vrr.c  |   2 +-
>  .../drm/i915/display/skl_universal_plane.c|   4 +-
>  19 files changed, 207 insertions(+), 207 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/display/intel_atomic_plane.c 
> b/drivers/gpu/drm/i915/display/intel_atomic_plane.c
> index a4ce39a7f265..36798899222b 100644
> --- a/drivers/gpu/drm/i915/display/intel_atomic_plane.c
> +++ b/drivers/gpu/drm/i915/display/intel_atomic_plane.c

> @@ -2744,13 +2744,13 @@ static int intel_vdsc_min_cdclk(const struct 
> intel_crtc_state *crtc_state)
>*
>* => CDCLK >= compressed_bpp * Pixel clock / (PPC * Bigjoiner 
> Interface bits)
>*
> -  * Since PPC = 2 with bigjoiner
> +  * Since PPC = 2 with joiner
>* => CDCLK >= compressed_bpp * Pixel clock  / 2 * Bigjoiner 
> Interface bits
>*/
> - int bigjoiner_interface_bits = DISPLAY_VER(i915) >= 14 ? 36 : 
> 24;
> + int joiner_interface_bits = DISPLAY_VER(i915) >= 14 ? 36 : 24;
>   int min_cdclk_bj =
>   (to_bpp_int_roundup(crtc_state->dsc.compressed_bpp_x16) 
> *
> -  pixel_clock) / (2 * bigjoiner_interface_bits);
> +  pixel_clock) / (2 * joiner_interface_bits);

This stuff is specifically about bigjoiner/dsc.

>  
>   min_cdclk = max(min_cdclk, min_cdclk_bj);
>   }

> diff --git a/drivers/gpu/drm/i915/display/intel_display_debugfs.c 
> b/drivers/gpu/drm/i915/display/intel_display_debugfs.c
> index 86d9900c40af..f681234d5b0b 100644
> --- a/drivers/gpu/drm/i915/display/intel_display_debugfs.c
> +++ b/drivers/gpu/drm/i915/display/intel_display_debugfs.c
> @@ -575,10 +575,10 @@ static void intel_crtc_info(struct seq_file *m, struct 
> intel_crtc *crtc)
>  
>   intel_scaler_info(m, crtc);
>  
> - if (crtc_state->bigjoiner_pipes)
> + if (crtc_state->joiner_pipes)
>   seq_printf(m, "\tLinked to 0x%x pipes as a %s\n",
> -crtc_state->bigjoiner_pipes,
> -intel_crtc_is_bigjoiner_slave(crtc_state) ? "slave" 
> : "master");
> +crtc_state->joiner_pipes,
> +intel_crtc_is_joiner_slave(crtc_state) ? "slave" : 
> "master");
>  
>   for_each_intel_encoder_mask(&dev_priv->drm, encoder,
>   crtc_state->uapi.encoder_mask)
> @@ -1544,8 +1544,8 @@ void intel_connector_debugfs_add(struct intel_connector 
> *connector)
>   if (DISPLAY_VER(i915) >= 11 &&
>   (connector_type == DRM_MODE_CONNECTOR_DisplayPort ||
>connector_type == DRM_MODE_CONNECTOR_eDP)) {
> - debugfs_create_bool("i915_bigjoiner_force_enable", 0644, root,
> - &connector->force_bigjoiner_enable);
> + debugfs_create_bool("i915_joiner_force_enable", 0644, root,
> + &connector->force_joiner_enable);

That'll need changes in igt.

>   }
>  
>   if (connector_type == DRM_MODE_CONNECTOR_DSI ||

> diff --git a/drivers/gpu/drm/i915/display/intel_dp.c 
> b/drivers/gpu/drm/i915/display/intel_dp.c
> index fd054e16850d..a60e84e8773f 100644
> --- a/drivers/gpu/drm/i915/display/intel_dp.c
> +++ b/drivers/gpu/drm/i915/display/intel_dp.c
> @@ -437,7 +437,7 @@ int intel_dp_max_link_data_rate(struct intel_dp *intel_dp,
>   return max_rate;
>  }
>  
> -bool intel_dp_has_bigjoiner(struct intel_dp *intel_dp)
> +bool intel_dp_has_joiner(struct intel_dp *intel_dp)
>  {
>   struct intel_digital_port *intel_dig_port = 

[linux-next:master] BUILD REGRESSION 234cb065ad82915ff8d06ce01e01c3e640b674d2

2024-06-05 Thread kernel test robot
tree/branch: 
https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git master
branch HEAD: 234cb065ad82915ff8d06ce01e01c3e640b674d2  Add linux-next specific 
files for 20240605

Error/Warning reports:

https://lore.kernel.org/oe-kbuild-all/202406051521.mroqvr5l-...@intel.com
https://lore.kernel.org/oe-kbuild-all/202406051524.a12jqlqx-...@intel.com
https://lore.kernel.org/oe-kbuild-all/202406051711.ds1sqz9n-...@intel.com
https://lore.kernel.org/oe-kbuild-all/202406051855.9viyxbtb-...@intel.com

Error/Warning: (recently discovered and may have been fixed)

include/linux/container_of.h:20:54: error: 'struct ftrace_ops' has no member 
named 'list'
include/linux/list.h:769:26: error: 'struct ftrace_ops' has no member named 
'list'
include/linux/stddef.h:16:33: error: 'struct ftrace_ops' has no member named 
'list'
kernel/trace/fgraph.c:883:43: error: 'struct ftrace_ops' has no member named 
'subop_list'
kernel/trace/fgraph.c:934:15: error: implicit declaration of function 
'ftrace_startup_subops'; did you mean 'ftrace_startup'? 
[-Werror=implicit-function-declaration]
kernel/trace/fgraph.c:973:9: error: implicit declaration of function 
'ftrace_shutdown_subops'; did you mean 'ftrace_shutdown'? 
[-Werror=implicit-function-declaration]

Error/Warning ids grouped by kconfigs:

gcc_recent_errors
|-- arc-randconfig-r061-20240605
|   |-- 
drivers-gpu-drm-arm-display-komeda-komeda_dev.c:error:implicit-declaration-of-function-seq_puts
|   |-- 
drivers-gpu-drm-arm-display-komeda-komeda_dev.c:error:invalid-use-of-undefined-type-struct-seq_file
|   `-- 
drivers-gpu-drm-arm-display-komeda-komeda_dev.c:error:type-defaults-to-int-in-declaration-of-DEFINE_SHOW_ATTRIBUTE
|-- csky-randconfig-r053-20240605
|   |-- 
include-linux-container_of.h:error:struct-ftrace_ops-has-no-member-named-list
|   |-- include-linux-list.h:error:struct-ftrace_ops-has-no-member-named-list
|   |-- include-linux-stddef.h:error:struct-ftrace_ops-has-no-member-named-list
|   |-- 
kernel-trace-fgraph.c:error:implicit-declaration-of-function-ftrace_shutdown_subops
|   |-- 
kernel-trace-fgraph.c:error:implicit-declaration-of-function-ftrace_startup_subops
|   `-- 
kernel-trace-fgraph.c:error:struct-ftrace_ops-has-no-member-named-subop_list
|-- i386-randconfig-061-20240605
|   `-- drivers-hwmon-cros_ec_hwmon.c:sparse:sparse:cast-to-restricted-__le16
|-- i386-randconfig-063-20240605
|   |-- 
kernel-trace-ftrace.c:sparse:sparse:incorrect-type-in-argument-(different-address-spaces)-expected-struct-ftrace_hash-B-got-struct-ftrace_hash-noderef-__rcu-filter_hash
|   |-- 
kernel-trace-ftrace.c:sparse:sparse:incorrect-type-in-argument-(different-address-spaces)-expected-struct-ftrace_hash-B-got-struct-ftrace_hash-noderef-__rcu-notrace_hash
|   |-- 
kernel-trace-ftrace.c:sparse:sparse:incorrect-type-in-argument-(different-address-spaces)-expected-struct-ftrace_hash-new_hash-got-struct-ftrace_hash-noderef-__rcu-filter_hash
|   |-- 
kernel-trace-ftrace.c:sparse:sparse:incorrect-type-in-argument-(different-address-spaces)-expected-struct-ftrace_hash-new_hash1-got-struct-ftrace_hash-noderef-__rcu-filter_hash
|   |-- 
kernel-trace-ftrace.c:sparse:sparse:incorrect-type-in-argument-(different-address-spaces)-expected-struct-ftrace_hash-new_hash2-got-struct-ftrace_hash-noderef-__rcu-filter_hash
|   |-- 
kernel-trace-ftrace.c:sparse:sparse:incorrect-type-in-argument-(different-address-spaces)-expected-struct-ftrace_hash-new_hash2-got-struct-ftrace_hash-noderef-__rcu-notrace_hash
|   |-- 
kernel-trace-ftrace.c:sparse:sparse:incorrect-type-in-argument-(different-address-spaces)-expected-struct-ftrace_hash-orig_hash-got-struct-ftrace_hash-noderef-__rcu
|   |-- 
kernel-trace-ftrace.c:sparse:sparse:incorrect-type-in-argument-(different-address-spaces)-expected-struct-ftrace_hash-src-got-struct-ftrace_hash-noderef-__rcu-filter_hash
|   |-- 
kernel-trace-ftrace.c:sparse:sparse:incorrect-type-in-argument-(different-address-spaces)-expected-struct-ftrace_hash-src-got-struct-ftrace_hash-noderef-__rcu-notrace_hash
|   |-- 
kernel-trace-ftrace.c:sparse:sparse:incorrect-type-in-assignment-(different-address-spaces)-expected-struct-ftrace_hash-noderef-__rcu-filter_hash-got-struct-ftrace_hash
|   |-- 
kernel-trace-ftrace.c:sparse:sparse:incorrect-type-in-assignment-(different-address-spaces)-expected-struct-ftrace_hash-noderef-__rcu-filter_hash-got-struct-ftrace_hash-assigned-filter_hash
|   |-- 
kernel-trace-ftrace.c:sparse:sparse:incorrect-type-in-assignment-(different-address-spaces)-expected-struct-ftrace_hash-noderef-__rcu-filter_hash-got-struct-ftrace_hash-save_filter_hash
|   |-- 
kernel-trace-ftrace.c:sparse:sparse:incorrect-type-in-assignment-(different-address-spaces)-expected-struct-ftrace_hash-noderef-__rcu-notrace_hash-got-struct-ftrace_hash
|   |-- 
kernel-trace-ftrace.c:sparse:sparse:incorrect-type-in-assignment-(different-address-spaces)-e

[PATCH v13 0/9] Implement CMRR Support

2024-06-05 Thread Mitul Golani
CMRR is a display feature that uses adaptive sync
framework to vary Vtotal slightly to match the
content rate exactly without frame drops. This
feature is a variation of VRR where it varies Vtotal
slightly (between additional 0 and 1 Vtotal scanlines)
to match content rate exactly without frame drops
using the adaptive sync framework.

enable this feature by programing new registers for
CMRR enable, CMRR_M, CMRR_N, vmin=vmax=flipline.The
CMRR_M/CMRR_N ratio represents the fractional part
in (actual refresh rate/target refresh rate) * origVTotal.

--v6:
- CMRR handling in co-existatnce of LRR and DRRS
- Correct vtotal paramas accuracy and add 2 digit precision.

--v7:
- Rebased patches in-accordance to AS SDP merge.
- Add neccessary gaurd to prevent crtc_state mismatch
during intel_vrr_get_config.

-v8:
- Add support for AS SDP for CMRR.
- update palce holder for CMRR register(Jani).
- Make CMRR as subset of FAVT, as per comments in patch#3.

-v9:
- Add CMRR register definitions to separate intel_vrr_reg.h.
- Remove cmrr_enabling/disabling, use vrr.enable instead.
- Update AS SDP pack function to accomodate target_rr_divider.
- Remove duplicated lines to compute vrr_vsync params.
- Set cmrr.enable with a separate patch at last.

-v10:
- Separate VRR related register definitions.
- Add dependency header intel_display_reg_defs.h.
- Rename file name to intel_vrr_regs.h instead of reg.h.
- Revert removed line.
- Since vrr.enable and cmrr.enable are not mutually exclusive,
handle accordingly.
- is_edp is not required inside is_cmrr_frac_required function.
- Add video_mode_required flag for future enhancement.
- Correct cmrr_m/cmrr_n calculation.
- target_rr_divider is bools so handle accordingly.

-v11:
- Move VRR related register and bits to separate file
intel_vrr_regs.h.
- Correct file header macro to intel_vrr_regs.h.
- Remove adding CMRR flag to vrr_ctl register during
set_transcoder_timing.
- Replace vrr.enable flag to cmrr.enable where added mistakenly.
- Move cmrr computation patch to last and set other other required
  params before computing cmrr.enable.

-v12:
- Add patch to fix check patch issues for VRR related registers
in i915_reg.h then move them to intel_vrr_regs.h with separate
patch.

-v13:
- Reverted unrelated patches while rebase.

Mitul Golani (9):
  gpu/drm/i915: Update indentation for VRR registers and bits
  drm/i915: Separate VRR related register definitions
  drm/i915: Define and compute Transcoder CMRR registers
  drm/i915: Update trans_vrr_ctl flag when cmrr is computed
  drm/dp: Add refresh rate divider to struct representing AS SDP
  drm/i915/display: Add support for pack and unpack
  drm/i915/display: Compute Adaptive sync SDP params
  drm/i915/display: Compute vrr vsync params
  drm/i915: Compute CMRR and calculate vtotal

 drivers/gpu/drm/i915/display/intel_display.c  |  24 +++-
 .../drm/i915/display/intel_display_device.h   |   1 +
 .../drm/i915/display/intel_display_types.h|   6 +
 drivers/gpu/drm/i915/display/intel_dp.c   |  18 ++-
 drivers/gpu/drm/i915/display/intel_vrr.c  | 128 --
 drivers/gpu/drm/i915/display/intel_vrr_regs.h | 128 ++
 drivers/gpu/drm/i915/i915_reg.h   | 100 --
 include/drm/display/drm_dp_helper.h   |   1 +
 8 files changed, 287 insertions(+), 119 deletions(-)
 create mode 100644 drivers/gpu/drm/i915/display/intel_vrr_regs.h

-- 
2.25.1



[PATCH v13 1/9] gpu/drm/i915: Update indentation for VRR registers and bits

2024-06-05 Thread Mitul Golani
Update the indentation for the VRR register definition and
its bits, and fix checkpatch issues to ensure smooth movement
of registers and bits.

Signed-off-by: Mitul Golani 
---
 drivers/gpu/drm/i915/i915_reg.h | 9 +
 1 file changed, 5 insertions(+), 4 deletions(-)

diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h
index 0569a23b83b2..6b39211b5469 100644
--- a/drivers/gpu/drm/i915/i915_reg.h
+++ b/drivers/gpu/drm/i915/i915_reg.h
@@ -1152,7 +1152,7 @@
 #define _TRANS_VRR_CTL_B   0x61420
 #define _TRANS_VRR_CTL_C   0x62420
 #define _TRANS_VRR_CTL_D   0x63420
-#define TRANS_VRR_CTL(dev_priv, trans) _MMIO_TRANS2(dev_priv, 
trans, _TRANS_VRR_CTL_A)
+#define TRANS_VRR_CTL(dev_priv, trans) _MMIO_TRANS2(dev_priv, trans, 
_TRANS_VRR_CTL_A)
 #define   VRR_CTL_VRR_ENABLE   REG_BIT(31)
 #define   VRR_CTL_IGN_MAX_SHIFTREG_BIT(30)
 #define   VRR_CTL_FLIP_LINE_EN REG_BIT(29)
@@ -1160,7 +1160,8 @@
 #define   VRR_CTL_PIPELINE_FULL(x) 
REG_FIELD_PREP(VRR_CTL_PIPELINE_FULL_MASK, (x))
 #define   VRR_CTL_PIPELINE_FULL_OVERRIDE   REG_BIT(0)
 #define  XELPD_VRR_CTL_VRR_GUARDBAND_MASK  REG_GENMASK(15, 0)
-#define  XELPD_VRR_CTL_VRR_GUARDBAND(x)
REG_FIELD_PREP(XELPD_VRR_CTL_VRR_GUARDBAND_MASK, (x))
+#define  XELPD_VRR_CTL_VRR_GUARDBAND(x)
REG_FIELD_PREP(XELPD_VRR_CTL_VRR_GUARDBAND_MASK, \
+   (x))
 
 #define _TRANS_VRR_VMAX_A  0x60424
 #define _TRANS_VRR_VMAX_B  0x61424
@@ -1190,7 +1191,7 @@
 #define _TRANS_VRR_STATUS_B0x6142C
 #define _TRANS_VRR_STATUS_C0x6242C
 #define _TRANS_VRR_STATUS_D0x6342C
-#define TRANS_VRR_STATUS(dev_priv, trans)  _MMIO_TRANS2(dev_priv, 
trans, _TRANS_VRR_STATUS_A)
+#define TRANS_VRR_STATUS(dev_priv, trans)  _MMIO_TRANS2(dev_priv, trans, 
_TRANS_VRR_STATUS_A)
 #define   VRR_STATUS_VMAX_REACHED  REG_BIT(31)
 #define   VRR_STATUS_NOFLIP_TILL_BNDR  REG_BIT(30)
 #define   VRR_STATUS_FLIP_BEF_BNDR REG_BIT(29)
@@ -1241,7 +1242,7 @@
 #define   TRANS_PUSH_SEND  REG_BIT(30)
 
 #define _TRANS_VRR_VSYNC_A 0x60078
-#define TRANS_VRR_VSYNC(dev_priv, trans)   _MMIO_TRANS2(dev_priv, 
trans, _TRANS_VRR_VSYNC_A)
+#define TRANS_VRR_VSYNC(dev_priv, trans)   _MMIO_TRANS2(dev_priv, trans, 
_TRANS_VRR_VSYNC_A)
 #define VRR_VSYNC_END_MASK REG_GENMASK(28, 16)
 #define VRR_VSYNC_END(vsync_end)   REG_FIELD_PREP(VRR_VSYNC_END_MASK, 
(vsync_end))
 #define VRR_VSYNC_START_MASK   REG_GENMASK(12, 0)
-- 
2.25.1



[PATCH v13 2/9] drm/i915: Separate VRR related register definitions

2024-06-05 Thread Mitul Golani
Move VRR related register definitions to a separate file called
intel_vrr_regs.h.

Signed-off-by: Mitul Golani 
---
 drivers/gpu/drm/i915/display/intel_vrr.c  |   1 +
 drivers/gpu/drm/i915/display/intel_vrr_regs.h | 112 ++
 drivers/gpu/drm/i915/i915_reg.h   | 101 
 3 files changed, 113 insertions(+), 101 deletions(-)
 create mode 100644 drivers/gpu/drm/i915/display/intel_vrr_regs.h

diff --git a/drivers/gpu/drm/i915/display/intel_vrr.c 
b/drivers/gpu/drm/i915/display/intel_vrr.c
index 5f3657aa8313..871e6e6a184a 100644
--- a/drivers/gpu/drm/i915/display/intel_vrr.c
+++ b/drivers/gpu/drm/i915/display/intel_vrr.c
@@ -9,6 +9,7 @@
 #include "intel_de.h"
 #include "intel_display_types.h"
 #include "intel_vrr.h"
+#include "intel_vrr_regs.h"
 #include "intel_dp.h"
 
 bool intel_vrr_is_capable(struct intel_connector *connector)
diff --git a/drivers/gpu/drm/i915/display/intel_vrr_regs.h 
b/drivers/gpu/drm/i915/display/intel_vrr_regs.h
new file mode 100644
index ..d4eb74ee72a7
--- /dev/null
+++ b/drivers/gpu/drm/i915/display/intel_vrr_regs.h
@@ -0,0 +1,112 @@
+/* SPDX-License-Identifier: MIT */
+/*
+ * Copyright © 2024 Intel Corporation
+ */
+
+#ifndef __INTEL_VRR_REGS_H__
+#define __INTEL_VRR_REGS_H__
+
+#include "intel_display_reg_defs.h"
+
+/* VRR registers */
+#define _TRANS_VRR_CTL_A0x60420
+#define _TRANS_VRR_CTL_B0x61420
+#define _TRANS_VRR_CTL_C0x62420
+#define _TRANS_VRR_CTL_D0x63420
+#define TRANS_VRR_CTL(dev_priv, trans)  _MMIO_TRANS2(dev_priv, trans, 
_TRANS_VRR_CTL_A)
+#define   VRR_CTL_VRR_ENABLEREG_BIT(31)
+#define   VRR_CTL_IGN_MAX_SHIFT REG_BIT(30)
+#define   VRR_CTL_FLIP_LINE_EN  REG_BIT(29)
+#define   VRR_CTL_PIPELINE_FULL_MASKREG_GENMASK(10, 3)
+#define   VRR_CTL_PIPELINE_FULL(x)  
REG_FIELD_PREP(VRR_CTL_PIPELINE_FULL_MASK, (x))
+#define   VRR_CTL_PIPELINE_FULL_OVERRIDEREG_BIT(0)
+#define   XELPD_VRR_CTL_VRR_GUARDBAND_MASK  REG_GENMASK(15, 0)
+#define   XELPD_VRR_CTL_VRR_GUARDBAND(x)
REG_FIELD_PREP(XELPD_VRR_CTL_VRR_GUARDBAND_MASK, \
+   (x))
+
+#define _TRANS_VRR_VMAX_A   0x60424
+#define _TRANS_VRR_VMAX_B   0x61424
+#define _TRANS_VRR_VMAX_C   0x62424
+#define _TRANS_VRR_VMAX_D   0x63424
+#define TRANS_VRR_VMAX(dev_priv, trans) _MMIO_TRANS2(dev_priv, trans, 
_TRANS_VRR_VMAX_A)
+#define   VRR_VMAX_MASK REG_GENMASK(19, 0)
+
+#define _TRANS_VRR_VMIN_A   0x60434
+#define _TRANS_VRR_VMIN_B   0x61434
+#define _TRANS_VRR_VMIN_C   0x62434
+#define _TRANS_VRR_VMIN_D   0x63434
+#define TRANS_VRR_VMIN(dev_priv, trans) _MMIO_TRANS2(dev_priv, trans, 
_TRANS_VRR_VMIN_A)
+#define   VRR_VMIN_MASK REG_GENMASK(15, 0)
+
+#define _TRANS_VRR_VMAXSHIFT_A  0x60428
+#define _TRANS_VRR_VMAXSHIFT_B  0x61428
+#define _TRANS_VRR_VMAXSHIFT_C  0x62428
+#define _TRANS_VRR_VMAXSHIFT_D  0x63428
+#define TRANS_VRR_VMAXSHIFT(dev_priv, trans)_MMIO_TRANS2(dev_priv, trans, \
+   _TRANS_VRR_VMAXSHIFT_A)
+#define   VRR_VMAXSHIFT_DEC_MASKREG_GENMASK(29, 16)
+#define   VRR_VMAXSHIFT_DEC REG_BIT(16)
+#define   VRR_VMAXSHIFT_INC_MASKREG_GENMASK(12, 0)
+
+#define _TRANS_VRR_STATUS_A 0x6042C
+#define _TRANS_VRR_STATUS_B 0x6142C
+#define _TRANS_VRR_STATUS_C 0x6242C
+#define _TRANS_VRR_STATUS_D 0x6342C
+#define TRANS_VRR_STATUS(dev_priv, trans)   _MMIO_TRANS2(dev_priv, trans, 
_TRANS_VRR_STATUS_A)
+#define   VRR_STATUS_VMAX_REACHED   REG_BIT(31)
+#define   VRR_STATUS_NOFLIP_TILL_BNDR   REG_BIT(30)
+#define   VRR_STATUS_FLIP_BEF_BNDR  REG_BIT(29)
+#define   VRR_STATUS_NO_FLIP_FRAME  REG_BIT(28)
+#define   VRR_STATUS_VRR_EN_LIVEREG_BIT(27)
+#define   VRR_STATUS_FLIPS_SERVICED REG_BIT(26)
+#define   VRR_STATUS_VBLANK_MASKREG_GENMASK(22, 20)
+#define   STATUS_FSM_IDLE   REG_FIELD_PREP(VRR_STATUS_VBLANK_MASK, 
0)
+#define   STATUS_FSM_WAIT_TILL_FDB  REG_FIELD_PREP(VRR_STATUS_VBLANK_MASK, 
1)
+#define   STATUS_FSM_WAIT_TILL_FS   REG_FIELD_PREP(VRR_STATUS_VBLANK_MASK, 
2)
+#define   STATUS_FSM_WAIT_TILL_FLIP REG_FIELD_PREP(VRR_STATUS_VBLANK_MASK, 
3)
+#define   STATUS_FSM_PIPELINE_FILL  REG_FIELD_PREP(VRR_STATUS_VBLANK_MASK, 
4)
+#define   STATUS_FSM_ACTIVE REG_FIELD_PREP(VRR_STATUS_VBLANK_MASK, 
5)
+#define   STATUS_FSM_LEGACY_VBLANK  REG_FIELD_PREP(VRR_STATUS_VBLANK_MASK, 
6)
+
+#define _TRANS_VRR_VTOTAL_PREV_A0x60480
+#define _TRANS_VRR_VTOTAL_PREV_B0x61480
+#define _TRANS_VRR_VTOTAL_PREV_C0x62480
+#define _TRANS_VRR_VTOTAL_PREV_D0x63480
+#define TRANS_VRR_VTOTAL_PREV

[PATCH v13 3/9] drm/i915: Define and compute Transcoder CMRR registers

2024-06-05 Thread Mitul Golani
Add register definitions for Transcoder Fixed Average
Vtotal mode/CMRR function, with the necessary bitfields.
Compute these registers when CMRR is enabled, extending
Adaptive refresh rate capabilities.

--v2:
- Use intel_de_read64_2x32 in intel_vrr_get_config. [Jani]
- Fix indent and order based on register offset. [Jani]

--v3:
- Removing RFC tag.

--v4:
- Update place holder for CMRR register definition. (Jani)

--v5:
- Add CMRR register definitions to a separate file intel_vrr_reg.h.

--v6:
- Fixed indentation. (Jani)
- Add dependency header intel_display_reg_defs.h. (Jani)
- Rename file name to intel_vrr_regs.h instead of reg.h (Jani)

--v7:
- Remove adding CMRR flag to vrr_ctl register during set_transcoder_timing,
as it is already being done during intel_vrr_enable. (Ankit)

Signed-off-by: Mitul Golani 
Reviewed-by: Ankit Nautiyal 
---
 drivers/gpu/drm/i915/display/intel_display.c  | 23 ++-
 .../drm/i915/display/intel_display_types.h|  6 +
 drivers/gpu/drm/i915/display/intel_vrr.c  | 20 
 drivers/gpu/drm/i915/display/intel_vrr_regs.h | 14 +++
 4 files changed, 62 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/i915/display/intel_display.c 
b/drivers/gpu/drm/i915/display/intel_display.c
index 7370acdd6b8b..29d750d2e6f7 100644
--- a/drivers/gpu/drm/i915/display/intel_display.c
+++ b/drivers/gpu/drm/i915/display/intel_display.c
@@ -1005,6 +1005,13 @@ static bool vrr_params_changed(const struct 
intel_crtc_state *old_crtc_state,
old_crtc_state->vrr.pipeline_full != 
new_crtc_state->vrr.pipeline_full;
 }
 
+static bool cmrr_params_changed(const struct intel_crtc_state *old_crtc_state,
+   const struct intel_crtc_state *new_crtc_state)
+{
+   return old_crtc_state->cmrr.cmrr_m != new_crtc_state->cmrr.cmrr_m ||
+   old_crtc_state->cmrr.cmrr_n != new_crtc_state->cmrr.cmrr_n;
+}
+
 static bool vrr_enabling(const struct intel_crtc_state *old_crtc_state,
 const struct intel_crtc_state *new_crtc_state)
 {
@@ -5054,6 +5061,16 @@ intel_pipe_config_compare(const struct intel_crtc_state 
*current_config,
} \
 } while (0)
 
+#define PIPE_CONF_CHECK_LLI(name) do { \
+   if (current_config->name != pipe_config->name) { \
+   pipe_config_mismatch(&p, fastset, crtc, __stringify(name), \
+"(expected %lli, found %lli)", \
+current_config->name, \
+pipe_config->name); \
+   ret = false; \
+   } \
+} while (0)
+
 #define PIPE_CONF_CHECK_BOOL(name) do { \
if (current_config->name != pipe_config->name) { \
BUILD_BUG_ON_MSG(!__same_type(current_config->name, bool), \
@@ -5432,10 +5449,13 @@ intel_pipe_config_compare(const struct intel_crtc_state 
*current_config,
PIPE_CONF_CHECK_I(vrr.guardband);
PIPE_CONF_CHECK_I(vrr.vsync_start);
PIPE_CONF_CHECK_I(vrr.vsync_end);
+   PIPE_CONF_CHECK_LLI(cmrr.cmrr_m);
+   PIPE_CONF_CHECK_LLI(cmrr.cmrr_n);
}
 
 #undef PIPE_CONF_CHECK_X
 #undef PIPE_CONF_CHECK_I
+#undef PIPE_CONF_CHECK_LLI
 #undef PIPE_CONF_CHECK_BOOL
 #undef PIPE_CONF_CHECK_P
 #undef PIPE_CONF_CHECK_FLAGS
@@ -6824,7 +6844,8 @@ static void intel_pre_update_crtc(struct 
intel_atomic_state *state,
intel_crtc_needs_fastset(new_crtc_state))
icl_set_pipe_chicken(new_crtc_state);
 
-   if (vrr_params_changed(old_crtc_state, new_crtc_state))
+   if (vrr_params_changed(old_crtc_state, new_crtc_state) ||
+   cmrr_params_changed(old_crtc_state, new_crtc_state))
intel_vrr_set_transcoder_timings(new_crtc_state);
}
 
diff --git a/drivers/gpu/drm/i915/display/intel_display_types.h 
b/drivers/gpu/drm/i915/display/intel_display_types.h
index 77609656317b..62ed3c9db94a 100644
--- a/drivers/gpu/drm/i915/display/intel_display_types.h
+++ b/drivers/gpu/drm/i915/display/intel_display_types.h
@@ -1401,6 +1401,12 @@ struct intel_crtc_state {
u32 vsync_end, vsync_start;
} vrr;
 
+   /* Content Match Refresh Rate state */
+   struct {
+   bool enable;
+   u64 cmrr_n, cmrr_m;
+   } cmrr;
+
/* Stream Splitter for eDP MSO */
struct {
bool enable;
diff --git a/drivers/gpu/drm/i915/display/intel_vrr.c 
b/drivers/gpu/drm/i915/display/intel_vrr.c
index 871e6e6a184a..d2f854d9d18b 100644
--- a/drivers/gpu/drm/i915/display/intel_vrr.c
+++ b/drivers/gpu/drm/i915/display/intel_vrr.c
@@ -219,6 +219,17 @@ void intel_vrr_set_transcoder_timings(const struct 
intel_crtc_state *crtc_state)
return;
}
 
+   if (crtc_state->cmrr.enable) {
+   intel_de_write(dev_priv, TRANS_CMRR_M_HI(dev_priv, 
cpu_transcoder),
+   

[PATCH v13 6/9] drm/i915/display: Add support for pack and unpack

2024-06-05 Thread Mitul Golani
Add support of pack and unpack for target_rr_divider.

--v2:
- Set Target Refresh Rate Divider bit when related
AS SDP bit is set (Ankit).

--v3:
- target_rr_divider is bools so set accordingly (Ankit).
Signed-off-by: Mitul Golani 
Reviewed-by: Ankit Nautiyal 
---
 drivers/gpu/drm/i915/display/intel_dp.c | 4 
 1 file changed, 4 insertions(+)

diff --git a/drivers/gpu/drm/i915/display/intel_dp.c 
b/drivers/gpu/drm/i915/display/intel_dp.c
index fd054e16850d..ac81b172b1ec 100644
--- a/drivers/gpu/drm/i915/display/intel_dp.c
+++ b/drivers/gpu/drm/i915/display/intel_dp.c
@@ -4232,6 +4232,9 @@ static ssize_t intel_dp_as_sdp_pack(const struct 
drm_dp_as_sdp *as_sdp,
sdp->db[3] = as_sdp->target_rr & 0xFF;
sdp->db[4] = (as_sdp->target_rr >> 8) & 0x3;
 
+   if (as_sdp->target_rr_divider)
+   sdp->db[4] |= 0x20;
+
return length;
 }
 
@@ -4413,6 +4416,7 @@ int intel_dp_as_sdp_unpack(struct drm_dp_as_sdp *as_sdp,
as_sdp->mode = sdp->db[0] & DP_ADAPTIVE_SYNC_SDP_OPERATION_MODE;
as_sdp->vtotal = (sdp->db[2] << 8) | sdp->db[1];
as_sdp->target_rr = (u64)sdp->db[3] | ((u64)sdp->db[4] & 0x3);
+   as_sdp->target_rr_divider = sdp->db[4] & 0x20 ? true : false;
 
return 0;
 }
-- 
2.25.1



[PATCH v13 5/9] drm/dp: Add refresh rate divider to struct representing AS SDP

2024-06-05 Thread Mitul Golani
Add target_rr_divider to structure representing AS SDP.
It is valid only in FAVT mode, sink device ignores the bit in AVT
mode.

--v2:
- Update commit header and send patch to dri-devel.

Signed-off-by: Mitul Golani 
Reviewed-by: Arun R Murthy 
---
 include/drm/display/drm_dp_helper.h | 1 +
 1 file changed, 1 insertion(+)

diff --git a/include/drm/display/drm_dp_helper.h 
b/include/drm/display/drm_dp_helper.h
index 8defcc399f42..ea03e1dd26ba 100644
--- a/include/drm/display/drm_dp_helper.h
+++ b/include/drm/display/drm_dp_helper.h
@@ -122,6 +122,7 @@ struct drm_dp_as_sdp {
int target_rr;
int duration_incr_ms;
int duration_decr_ms;
+   bool target_rr_divider;
enum operation_mode mode;
 };
 
-- 
2.25.1



[PATCH v13 9/9] drm/i915: Compute CMRR and calculate vtotal

2024-06-05 Thread Mitul Golani
Compute Fixed Average Vtotal/CMRR with resepect to
userspace VRR enablement. Also calculate required
parameters in case of CMRR is  enabled. During
intel_vrr_compute_config, CMRR is getting enabled
based on userspace has enabled Variable refresh mode
with VRR timing generator or not. Make CMRR as small subset of
FAVT mode, when Panel is running on Fixed refresh rate
and on VRR framework then only enable CMRR to match with
actual refresh rate.

--v2:
- Update is_cmrr_frac_required function return as bool, not int. [Jani]
- Use signed int math instead of unsigned in cmrr_get_vtotal2. [Jani]
- Fix typo and usage of camel case in cmrr_get_vtotal. [Jani]
- Use do_div in cmrr_get_vtotalwhile calculating cmrr_m. [ Jani]
- Simplify cmrr and vrr compute config in intel_vrr_compute_config. [Jani]
- Correct valiable name usage in is_cmrr_frac_required. [Ville]

--v3:
- Removing RFC tag.

--v4:
- Added edp check to address edp usecase for now. (ville)
- Updated is_cmrr_fraction_required to more simplified calculation.
- on longterm goal to be worked upon uapi as suggestion from ville.

--v5:
- Correct vtotal paramas accuracy and add 2 digit precision.
- Avoid using DIV_ROUND_UP and improve scanline precision.

--v6:
- Make CMRR a small subset of FAVT mode.

--v7:
- Update commit message to avoid confusion with Legacy VRR (Ankit).
- Add cmrr.enable in last, so remove from this patch.

--v8:
- Set cmrr.enable in current patch instead of separate patch (Ankit).
- Since vrr.enable and cmrr.enable are not mutually exclusive,
handle accordingly (Ankit).
- is_edp is not required inside is_cmrr_frac_required function (Ankit).
- Add video_mode_required flag for future enhancement.
- Correct cmrr_m/cmrr_n calculation.

--v9:
- Move patch to last and set other bits before computing
cmrr.enable.(Ankit)
- Add TODO: for to address target refresh rate precision as future
enhancement.

Signed-off-by: Mitul Golani 
Reviewed-by: Ankit Nautiyal 
---
 drivers/gpu/drm/i915/display/intel_display.c  |  1 +
 .../drm/i915/display/intel_display_device.h   |  1 +
 drivers/gpu/drm/i915/display/intel_vrr.c  | 92 ---
 3 files changed, 83 insertions(+), 11 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_display.c 
b/drivers/gpu/drm/i915/display/intel_display.c
index 29d750d2e6f7..63464b1a 100644
--- a/drivers/gpu/drm/i915/display/intel_display.c
+++ b/drivers/gpu/drm/i915/display/intel_display.c
@@ -5451,6 +5451,7 @@ intel_pipe_config_compare(const struct intel_crtc_state 
*current_config,
PIPE_CONF_CHECK_I(vrr.vsync_end);
PIPE_CONF_CHECK_LLI(cmrr.cmrr_m);
PIPE_CONF_CHECK_LLI(cmrr.cmrr_n);
+   PIPE_CONF_CHECK_BOOL(cmrr.enable);
}
 
 #undef PIPE_CONF_CHECK_X
diff --git a/drivers/gpu/drm/i915/display/intel_display_device.h 
b/drivers/gpu/drm/i915/display/intel_display_device.h
index e1d9947394dc..92a438ad45a8 100644
--- a/drivers/gpu/drm/i915/display/intel_display_device.h
+++ b/drivers/gpu/drm/i915/display/intel_display_device.h
@@ -152,6 +152,7 @@ enum intel_display_subplatform {
  BIT(trans)) != 0)
 #define HAS_VRR(i915)  (DISPLAY_VER(i915) >= 11)
 #define HAS_AS_SDP(i915)   (DISPLAY_VER(i915) >= 13)
+#define HAS_CMRR(i915) (DISPLAY_VER(i915) >= 20)
 #define INTEL_NUM_PIPES(i915)  
(hweight8(DISPLAY_RUNTIME_INFO(i915)->pipe_mask))
 #define I915_HAS_HOTPLUG(i915) (DISPLAY_INFO(i915)->has_hotplug)
 #define OVERLAY_NEEDS_PHYSICAL(i915)   
(DISPLAY_INFO(i915)->overlay_needs_physical)
diff --git a/drivers/gpu/drm/i915/display/intel_vrr.c 
b/drivers/gpu/drm/i915/display/intel_vrr.c
index 4ad99a54aa83..05f67dc9d98d 100644
--- a/drivers/gpu/drm/i915/display/intel_vrr.c
+++ b/drivers/gpu/drm/i915/display/intel_vrr.c
@@ -12,6 +12,9 @@
 #include "intel_vrr_regs.h"
 #include "intel_dp.h"
 
+#define FIXED_POINT_PRECISION  100
+#define CMRR_PRECISION_TOLERANCE   10
+
 bool intel_vrr_is_capable(struct intel_connector *connector)
 {
const struct drm_display_info *info = &connector->base.display_info;
@@ -107,6 +110,52 @@ int intel_vrr_vmax_vblank_start(const struct 
intel_crtc_state *crtc_state)
return crtc_state->vrr.vmax - intel_vrr_vblank_exit_length(crtc_state);
 }
 
+static bool
+is_cmrr_frac_required(struct intel_crtc_state *crtc_state)
+{
+   int calculated_refresh_k, actual_refresh_k, pixel_clock_per_line;
+   struct drm_display_mode *adjusted_mode = &crtc_state->hw.adjusted_mode;
+   struct drm_i915_private *i915 = to_i915(crtc_state->uapi.crtc->dev);
+
+   if (!HAS_CMRR(i915))
+   return false;
+
+   actual_refresh_k =
+   drm_mode_vrefresh(adjusted_mode) * FIXED_POINT_PRECISION;
+   pixel_clock_per_line =
+   adjusted_mode->crtc_clock * 1000 / adjusted_mode->crtc_htotal;
+   calculated_refresh_k =
+   pixel_clock_per_line * FIXED_POINT_PRECISION / 

[PATCH v13 4/9] drm/i915: Update trans_vrr_ctl flag when cmrr is computed

2024-06-05 Thread Mitul Golani
Add/update trans_vrr_ctl flag when crtc_state->cmrr.enable
is set, With this commit setting the stage for subsequent
CMRR enablement.

--v2:
- Check pipe active state in cmrr enabling. [Jani]
- Remove usage of bitwise OR on booleans. [Jani]
- Revert unrelated changes. [Jani]
- Update intel_vrr_enable, vrr and cmrr enable conditions. [Jani]
- Simplify whole if-ladder in intel_vrr_enable. [Jani]
- Revert patch restructuring mistakes in intel_vrr_get_config. [Jani]

--v3:
- Check pipe active state in cmrr disabling.[Jani]
- Correct messed up condition in intel_vrr_enable. [Jani]

--v4:
- Removing RFC tag.

--v5:
- CMRR handling in co-existatnce of LRR and DRRS.

--v7:
- Rebase on top of AS SDP merge.

--v8:
- Remove cmrr_enabling/disabling and update commit message. (Ankit)

--v9:
- Revert removed line(Ankit).

Signed-off-by: Mitul Golani 
Reviewed-by: Ankit Nautiyal 
---
 drivers/gpu/drm/i915/display/intel_vrr.c  | 10 --
 drivers/gpu/drm/i915/display/intel_vrr_regs.h |  2 ++
 2 files changed, 10 insertions(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_vrr.c 
b/drivers/gpu/drm/i915/display/intel_vrr.c
index d2f854d9d18b..19b364074de0 100644
--- a/drivers/gpu/drm/i915/display/intel_vrr.c
+++ b/drivers/gpu/drm/i915/display/intel_vrr.c
@@ -282,8 +282,14 @@ void intel_vrr_enable(const struct intel_crtc_state 
*crtc_state)
   VRR_VSYNC_END(crtc_state->vrr.vsync_end) |
   VRR_VSYNC_START(crtc_state->vrr.vsync_start));
 
-   intel_de_write(dev_priv, TRANS_VRR_CTL(dev_priv, cpu_transcoder),
-  VRR_CTL_VRR_ENABLE | trans_vrr_ctl(crtc_state));
+   if (crtc_state->cmrr.enable) {
+   intel_de_write(dev_priv, TRANS_VRR_CTL(dev_priv, 
cpu_transcoder),
+  VRR_CTL_VRR_ENABLE | VRR_CTL_CMRR_ENABLE |
+  trans_vrr_ctl(crtc_state));
+   } else {
+   intel_de_write(dev_priv, TRANS_VRR_CTL(dev_priv, 
cpu_transcoder),
+  VRR_CTL_VRR_ENABLE | trans_vrr_ctl(crtc_state));
+   }
 }
 
 void intel_vrr_disable(const struct intel_crtc_state *old_crtc_state)
diff --git a/drivers/gpu/drm/i915/display/intel_vrr_regs.h 
b/drivers/gpu/drm/i915/display/intel_vrr_regs.h
index 1aeb0cd45068..577b0abb66db 100644
--- a/drivers/gpu/drm/i915/display/intel_vrr_regs.h
+++ b/drivers/gpu/drm/i915/display/intel_vrr_regs.h
@@ -123,4 +123,6 @@
 #define _TRANS_CMRR_N_HI_A 0x604FC
 #define TRANS_CMRR_N_HI(dev_priv, trans)_MMIO_TRANS2(dev_priv, trans, 
_TRANS_CMRR_N_HI_A)
 
+#define VRR_CTL_CMRR_ENABLEREG_BIT(27)
+
 #endif /* __INTEL_VRR_REGS__ */
-- 
2.25.1



[PATCH v13 7/9] drm/i915/display: Compute Adaptive sync SDP params

2024-06-05 Thread Mitul Golani
Compute params for Adaptive Sync SDP when Fixed Average Vtotal
mode is enabled.

--v2:
Since vrr.enable is set in case of cmrr also, handle accordingly(Ankit).

--v3:
- Since vrr.enable is set in case of cmrr also, handle
accordingly(Ankit).
- check cmrr.enable when CMRR flags are set during intel_dp_compute_as_sdp.

--v4:
- Use drm_mode_vrefresh instead of manual calculation (Ankit).

Signed-off-by: Mitul Golani 
Reviewed-by: Ankit Nautiyal 
---
 drivers/gpu/drm/i915/display/intel_dp.c | 14 +++---
 1 file changed, 11 insertions(+), 3 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_dp.c 
b/drivers/gpu/drm/i915/display/intel_dp.c
index ac81b172b1ec..b5915c23302f 100644
--- a/drivers/gpu/drm/i915/display/intel_dp.c
+++ b/drivers/gpu/drm/i915/display/intel_dp.c
@@ -2637,11 +2637,19 @@ static void intel_dp_compute_as_sdp(struct intel_dp 
*intel_dp,
/* Currently only DP_AS_SDP_AVT_FIXED_VTOTAL mode supported */
as_sdp->sdp_type = DP_SDP_ADAPTIVE_SYNC;
as_sdp->length = 0x9;
-   as_sdp->mode = DP_AS_SDP_AVT_FIXED_VTOTAL;
-   as_sdp->vtotal = adjusted_mode->vtotal;
-   as_sdp->target_rr = 0;
as_sdp->duration_incr_ms = 0;
as_sdp->duration_incr_ms = 0;
+
+   if (crtc_state->cmrr.enable) {
+   as_sdp->mode = DP_AS_SDP_FAVT_TRR_REACHED;
+   as_sdp->vtotal = adjusted_mode->vtotal;
+   as_sdp->target_rr = drm_mode_vrefresh(adjusted_mode);
+   as_sdp->target_rr_divider = true;
+   } else {
+   as_sdp->mode = DP_AS_SDP_AVT_FIXED_VTOTAL;
+   as_sdp->vtotal = adjusted_mode->vtotal;
+   as_sdp->target_rr = 0;
+   }
 }
 
 static void intel_dp_compute_vsc_sdp(struct intel_dp *intel_dp,
-- 
2.25.1



[PATCH v13 8/9] drm/i915/display: Compute vrr vsync params

2024-06-05 Thread Mitul Golani
Compute vrr vsync params in case of FAVT as well instead of
only to AVT mode of operation.

--v2:
- Remove redundant computation for vrr_vsync_start
and vrr_vsync_end(Ankit).

--v3:
- vrr.enable and cmrr.enable check together is not required as both
will be true at the same point in time. (Ankit)
- Replace vrr.enable flag to cmrr.enable, mistakenly added. (Ankit)

Signed-off-by: Mitul Golani 
Reviewed-by: Ankit Nautiyal 
---
 drivers/gpu/drm/i915/display/intel_vrr.c | 17 +
 1 file changed, 9 insertions(+), 8 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_vrr.c 
b/drivers/gpu/drm/i915/display/intel_vrr.c
index 19b364074de0..4ad99a54aa83 100644
--- a/drivers/gpu/drm/i915/display/intel_vrr.c
+++ b/drivers/gpu/drm/i915/display/intel_vrr.c
@@ -175,14 +175,15 @@ intel_vrr_compute_config(struct intel_crtc_state 
*crtc_state,
if (crtc_state->uapi.vrr_enabled) {
crtc_state->vrr.enable = true;
crtc_state->mode_flags |= I915_MODE_FLAG_VRR;
-   if (intel_dp_as_sdp_supported(intel_dp)) {
-   crtc_state->vrr.vsync_start =
-   (crtc_state->hw.adjusted_mode.crtc_vtotal -
-   
crtc_state->hw.adjusted_mode.vsync_start);
-   crtc_state->vrr.vsync_end =
-   (crtc_state->hw.adjusted_mode.crtc_vtotal -
-   crtc_state->hw.adjusted_mode.vsync_end);
-   }
+   }
+
+   if (intel_dp_as_sdp_supported(intel_dp)) {
+   crtc_state->vrr.vsync_start =
+   (crtc_state->hw.adjusted_mode.crtc_vtotal -
+crtc_state->hw.adjusted_mode.vsync_start);
+   crtc_state->vrr.vsync_end =
+   (crtc_state->hw.adjusted_mode.crtc_vtotal -
+crtc_state->hw.adjusted_mode.vsync_end);
}
 }
 
-- 
2.25.1



✗ Fi.CI.IGT: failure for Panel Replay eDP support (rev7)

2024-06-05 Thread Patchwork
== Series Details ==

Series: Panel Replay eDP support (rev7)
URL   : https://patchwork.freedesktop.org/series/133684/
State : failure

== Summary ==

CI Bug Log - changes from CI_DRM_14881_full -> Patchwork_133684v7_full


Summary
---

  **FAILURE**

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

  

Participating hosts (9 -> 9)
--

  No changes in participating hosts

Possible new issues
---

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

### IGT changes ###

 Possible regressions 

  * igt@kms_flip@flip-vs-suspend-interruptible@b-hdmi-a3:
- shard-dg1:  NOTRUN -> [FAIL][1] +6 other tests fail
   [1]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133684v7/shard-dg1-13/igt@kms_flip@flip-vs-suspend-interrupti...@b-hdmi-a3.html

  * igt@kms_vblank@ts-continuation-dpms-suspend@pipe-d-hdmi-a-1:
- shard-dg2:  NOTRUN -> [FAIL][2] +10 other tests fail
   [2]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133684v7/shard-dg2-10/igt@kms_vblank@ts-continuation-dpms-susp...@pipe-d-hdmi-a-1.html

  
Known issues


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

### IGT changes ###

 Issues hit 

  * igt@drm_fdinfo@all-busy-idle-check-all:
- shard-mtlp: NOTRUN -> [SKIP][3] ([i915#8414])
   [3]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133684v7/shard-mtlp-7/igt@drm_fdi...@all-busy-idle-check-all.html

  * igt@drm_fdinfo@busy-idle@bcs0:
- shard-dg2:  NOTRUN -> [SKIP][4] ([i915#8414]) +6 other tests skip
   [4]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133684v7/shard-dg2-10/igt@drm_fdinfo@busy-i...@bcs0.html

  * igt@drm_fdinfo@isolation@vecs0:
- shard-dg1:  NOTRUN -> [SKIP][5] ([i915#8414]) +9 other tests skip
   [5]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133684v7/shard-dg1-17/igt@drm_fdinfo@isolat...@vecs0.html

  * igt@gem_ccs@block-multicopy-compressed:
- shard-dg1:  NOTRUN -> [SKIP][6] ([i915#9323])
   [6]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133684v7/shard-dg1-17/igt@gem_...@block-multicopy-compressed.html

  * igt@gem_ccs@block-multicopy-inplace:
- shard-dg1:  NOTRUN -> [SKIP][7] ([i915#3555] / [i915#9323]) +1 
other test skip
   [7]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133684v7/shard-dg1-18/igt@gem_...@block-multicopy-inplace.html

  * igt@gem_ctx_exec@basic-nohangcheck:
- shard-rkl:  [PASS][8] -> [FAIL][9] ([i915#6268])
   [8]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14881/shard-rkl-5/igt@gem_ctx_e...@basic-nohangcheck.html
   [9]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133684v7/shard-rkl-3/igt@gem_ctx_e...@basic-nohangcheck.html

  * igt@gem_ctx_isolation@preservation-s3@bcs0:
- shard-dg1:  NOTRUN -> [FAIL][10] ([i915#10086]) +4 other tests 
fail
   [10]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133684v7/shard-dg1-17/igt@gem_ctx_isolation@preservation...@bcs0.html

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

  * igt@gem_ctx_persistence@heartbeat-stop:
- shard-mtlp: NOTRUN -> [SKIP][12] ([i915#8555]) +1 other test skip
   [12]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133684v7/shard-mtlp-7/igt@gem_ctx_persiste...@heartbeat-stop.html

  * igt@gem_ctx_sseu@invalid-sseu:
- shard-dg1:  NOTRUN -> [SKIP][13] ([i915#280])
   [13]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133684v7/shard-dg1-13/igt@gem_ctx_s...@invalid-sseu.html

  * igt@gem_eio@hibernate:
- shard-dg2:  NOTRUN -> [ABORT][14] ([i915#10030] / [i915#7975] / 
[i915#8213])
   [14]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133684v7/shard-dg2-7/igt@gem_...@hibernate.html

  * igt@gem_eio@kms:
- shard-tglu: [PASS][15] -> [INCOMPLETE][16] ([i915#10513])
   [15]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14881/shard-tglu-3/igt@gem_...@kms.html
   [16]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133684v7/shard-tglu-7/igt@gem_...@kms.html

  * igt@gem_exec_balancer@bonded-false-hang:
- shard-dg1:  NOTRUN -> [SKIP][17] ([i915#4812]) +2 other tests skip
   [17]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_133684v7/shard-dg1-17/igt@gem_exec_balan...@bonded-false-hang.html

  * igt@gem_exec_balancer@noheartbeat:
- s

✗ Fi.CI.SPARSE: warning for Implement CMRR Support (rev13)

2024-06-05 Thread Patchwork
== Series Details ==

Series: Implement CMRR Support (rev13)
URL   : https://patchwork.freedesktop.org/series/126443/
State : warning

== Summary ==

Error: dim sparse failed
Sparse version: v0.6.2
Fast mode used, each commit won't be checked separately.




✗ Fi.CI.CHECKPATCH: warning for Implement CMRR Support (rev13)

2024-06-05 Thread Patchwork
== Series Details ==

Series: Implement CMRR Support (rev13)
URL   : https://patchwork.freedesktop.org/series/126443/
State : warning

== Summary ==

Error: dim checkpatch failed
71b880e0125f gpu/drm/i915: Update indentation for VRR registers and bits
00df34d55970 drm/i915: Separate VRR related register definitions
-:24: WARNING:FILE_PATH_CHANGES: added, moved or deleted file(s), does 
MAINTAINERS need updating?
#24: 
new file mode 100644

total: 0 errors, 1 warnings, 0 checks, 226 lines checked
c378b46201ff drm/i915: Define and compute Transcoder CMRR registers
-:58: CHECK:MACRO_ARG_REUSE: Macro argument reuse 'name' - possible 
side-effects?
#58: FILE: drivers/gpu/drm/i915/display/intel_display.c:5064:
+#define PIPE_CONF_CHECK_LLI(name) do { \
+   if (current_config->name != pipe_config->name) { \
+   pipe_config_mismatch(&p, fastset, crtc, __stringify(name), \
+"(expected %lli, found %lli)", \
+current_config->name, \
+pipe_config->name); \
+   ret = false; \
+   } \
+} while (0)

-:58: CHECK:MACRO_ARG_PRECEDENCE: Macro argument 'name' may be better as 
'(name)' to avoid precedence issues
#58: FILE: drivers/gpu/drm/i915/display/intel_display.c:5064:
+#define PIPE_CONF_CHECK_LLI(name) do { \
+   if (current_config->name != pipe_config->name) { \
+   pipe_config_mismatch(&p, fastset, crtc, __stringify(name), \
+"(expected %lli, found %lli)", \
+current_config->name, \
+pipe_config->name); \
+   ret = false; \
+   } \
+} while (0)

total: 0 errors, 0 warnings, 2 checks, 113 lines checked
f1b4f9a44c61 drm/i915: Update trans_vrr_ctl flag when cmrr is computed
4e00c44f77da drm/dp: Add refresh rate divider to struct representing AS SDP
3c724ca659bc drm/i915/display: Add support for pack and unpack
0420415fbabf drm/i915/display: Compute Adaptive sync SDP params
9aa2b2a078df drm/i915/display: Compute vrr vsync params
749400a8261e drm/i915: Compute CMRR and calculate vtotal




✓ Fi.CI.BAT: success for Implement CMRR Support (rev13)

2024-06-05 Thread Patchwork
== Series Details ==

Series: Implement CMRR Support (rev13)
URL   : https://patchwork.freedesktop.org/series/126443/
State : success

== Summary ==

CI Bug Log - changes from CI_DRM_14881 -> Patchwork_126443v13


Summary
---

  **SUCCESS**

  No regressions found.

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

Participating hosts (38 -> 35)
--

  Additional (4): fi-kbl-8809g fi-elk-e7500 bat-adlp-9 fi-bsw-n3050 
  Missing(7): bat-mtlp-9 fi-snb-2520m fi-cfl-8109u bat-dg2-11 bat-arls-1 
bat-jsl-1 bat-arls-3 

Known issues


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

### IGT changes ###

 Issues hit 

  * igt@debugfs_test@basic-hwmon:
- bat-adlp-9: NOTRUN -> [SKIP][1] ([i915#9318])
   [1]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126443v13/bat-adlp-9/igt@debugfs_t...@basic-hwmon.html

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

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

  * igt@gem_lmem_swapping@random-engines:
- fi-bsw-n3050:   NOTRUN -> [SKIP][5] +19 other tests skip
   [5]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126443v13/fi-bsw-n3050/igt@gem_lmem_swapp...@random-engines.html

  * igt@gem_tiled_pread_basic:
- bat-adlp-9: NOTRUN -> [SKIP][6] ([i915#3282])
   [6]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126443v13/bat-adlp-9/igt@gem_tiled_pread_basic.html

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

  * igt@kms_cursor_legacy@basic-busy-flip-before-cursor-atomic:
- bat-adlp-9: NOTRUN -> [SKIP][8] ([i915#4103]) +1 other test skip
   [8]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126443v13/bat-adlp-9/igt@kms_cursor_leg...@basic-busy-flip-before-cursor-atomic.html

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

  * igt@kms_force_connector_basic@force-load-detect:
- fi-kbl-8809g:   NOTRUN -> [SKIP][10] +30 other tests skip
   [10]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126443v13/fi-kbl-8809g/igt@kms_force_connector_ba...@force-load-detect.html
- bat-adlp-9: NOTRUN -> [SKIP][11]
   [11]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126443v13/bat-adlp-9/igt@kms_force_connector_ba...@force-load-detect.html

  * igt@kms_pm_backlight@basic-brightness:
- bat-adlp-9: NOTRUN -> [SKIP][12] ([i915#9812])
   [12]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126443v13/bat-adlp-9/igt@kms_pm_backli...@basic-brightness.html

  * igt@kms_pm_rpm@basic-pci-d3-state:
- fi-elk-e7500:   NOTRUN -> [SKIP][13] +24 other tests skip
   [13]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126443v13/fi-elk-e7500/igt@kms_pm_...@basic-pci-d3-state.html

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

  * igt@kms_setmode@basic-clone-single-crtc:
- bat-adlp-9: NOTRUN -> [SKIP][15] ([i915#3555])
   [15]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126443v13/bat-adlp-9/igt@kms_setm...@basic-clone-single-crtc.html

  * igt@prime_vgem@basic-fence-read:
- bat-adlp-9: NOTRUN -> [SKIP][16] ([i915#3291] / [i915#3708]) +2 
other tests skip
   [16]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126443v13/bat-adlp-9/igt@prime_v...@basic-fence-read.html

  
  [i915#1072]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/1072
  [i915#2190]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2190
  [i915#3282]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3282
  [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#4103]: https:/

✗ Fi.CI.IGT: failure for drm/i915: bdw+ pipe interrupt stuff

2024-06-05 Thread Patchwork
== Series Details ==

Series: drm/i915: bdw+ pipe interrupt stuff
URL   : https://patchwork.freedesktop.org/series/134497/
State : failure

== Summary ==

CI Bug Log - changes from CI_DRM_14881_full -> Patchwork_134497v1_full


Summary
---

  **FAILURE**

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

  

Participating hosts (9 -> 9)
--

  No changes in participating hosts

Possible new issues
---

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

### IGT changes ###

 Possible regressions 

  * igt@kms_color@ctm-0-25@pipe-a:
- shard-tglu: [PASS][1] -> [INCOMPLETE][2]
   [1]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14881/shard-tglu-10/igt@kms_color@ctm-0...@pipe-a.html
   [2]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134497v1/shard-tglu-9/igt@kms_color@ctm-0...@pipe-a.html

  * igt@kms_flip@blocking-wf_vblank@d-hdmi-a4:
- shard-dg1:  NOTRUN -> [INCOMPLETE][3]
   [3]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134497v1/shard-dg1-18/igt@kms_flip@blocking-wf_vbl...@d-hdmi-a4.html

  * igt@kms_vblank@ts-continuation-dpms-suspend@pipe-a-hdmi-a-4:
- shard-dg1:  NOTRUN -> [FAIL][4] +2 other tests fail
   [4]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134497v1/shard-dg1-16/igt@kms_vblank@ts-continuation-dpms-susp...@pipe-a-hdmi-a-4.html

  * igt@kms_vblank@ts-continuation-dpms-suspend@pipe-d-hdmi-a-1:
- shard-dg2:  NOTRUN -> [FAIL][5] +16 other tests fail
   [5]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134497v1/shard-dg2-4/igt@kms_vblank@ts-continuation-dpms-susp...@pipe-d-hdmi-a-1.html

  
Known issues


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

### IGT changes ###

 Issues hit 

  * igt@drm_fdinfo@all-busy-idle-check-all:
- shard-mtlp: NOTRUN -> [SKIP][6] ([i915#8414])
   [6]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134497v1/shard-mtlp-3/igt@drm_fdi...@all-busy-idle-check-all.html

  * igt@drm_fdinfo@busy-idle@bcs0:
- shard-dg2:  NOTRUN -> [SKIP][7] ([i915#8414]) +6 other tests skip
   [7]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134497v1/shard-dg2-4/igt@drm_fdinfo@busy-i...@bcs0.html

  * igt@drm_fdinfo@isolation@vecs0:
- shard-dg1:  NOTRUN -> [SKIP][8] ([i915#8414]) +9 other tests skip
   [8]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134497v1/shard-dg1-15/igt@drm_fdinfo@isolat...@vecs0.html

  * igt@gem_ccs@block-multicopy-compressed:
- shard-dg1:  NOTRUN -> [SKIP][9] ([i915#9323])
   [9]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134497v1/shard-dg1-15/igt@gem_...@block-multicopy-compressed.html

  * igt@gem_ccs@block-multicopy-inplace:
- shard-rkl:  NOTRUN -> [SKIP][10] ([i915#3555] / [i915#9323])
   [10]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134497v1/shard-rkl-5/igt@gem_...@block-multicopy-inplace.html
- shard-dg1:  NOTRUN -> [SKIP][11] ([i915#3555] / [i915#9323]) +1 
other test skip
   [11]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134497v1/shard-dg1-17/igt@gem_...@block-multicopy-inplace.html

  * igt@gem_ctx_isolation@preservation-s3@bcs0:
- shard-dg1:  NOTRUN -> [FAIL][12] ([i915#10086]) +4 other tests 
fail
   [12]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134497v1/shard-dg1-15/igt@gem_ctx_isolation@preservation...@bcs0.html

  * igt@gem_ctx_persistence@heartbeat-stop:
- shard-mtlp: NOTRUN -> [SKIP][13] ([i915#8555]) +1 other test skip
   [13]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134497v1/shard-mtlp-3/igt@gem_ctx_persiste...@heartbeat-stop.html

  * igt@gem_ctx_sseu@invalid-args:
- shard-rkl:  NOTRUN -> [SKIP][14] ([i915#280])
   [14]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134497v1/shard-rkl-3/igt@gem_ctx_s...@invalid-args.html

  * igt@gem_ctx_sseu@invalid-sseu:
- shard-dg1:  NOTRUN -> [SKIP][15] ([i915#280])
   [15]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134497v1/shard-dg1-18/igt@gem_ctx_s...@invalid-sseu.html

  * igt@gem_exec_balancer@bonded-false-hang:
- shard-dg1:  NOTRUN -> [SKIP][16] ([i915#4812]) +2 other tests skip
   [16]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134497v1/shard-dg1-15/igt@gem_exec_balan...@bonded-false-hang.html

  * igt@gem_exec_balancer@noheartbeat:
- shard-dg2:  NOTRUN -> [SKIP][17] ([i915#8555])
   [17]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13449

[PATCH] drm/i915/gt/uc: Evaluate GuC priority within locks

2024-06-05 Thread Andi Shyti
The ce->guc_state.lock was made to protect guc_prio, which
indicates the GuC priority level.

But at the begnning of the function we perform some sanity check
of guc_prio outside its protected section. Move them within the
locked region.

Use this occasion to expand the if statement to make it clearer.

Fixes: ee242ca704d3 ("drm/i915/guc: Implement GuC priority management")
Signed-off-by: Andi Shyti 
Cc: Matthew Brost 
Cc:  # v5.15+
---
 drivers/gpu/drm/i915/gt/uc/intel_guc_submission.c | 15 +++
 1 file changed, 11 insertions(+), 4 deletions(-)

diff --git a/drivers/gpu/drm/i915/gt/uc/intel_guc_submission.c 
b/drivers/gpu/drm/i915/gt/uc/intel_guc_submission.c
index 0eaa1064242c..1181043bc5e9 100644
--- a/drivers/gpu/drm/i915/gt/uc/intel_guc_submission.c
+++ b/drivers/gpu/drm/i915/gt/uc/intel_guc_submission.c
@@ -4267,13 +4267,18 @@ static void guc_bump_inflight_request_prio(struct 
i915_request *rq,
u8 new_guc_prio = map_i915_prio_to_guc_prio(prio);
 
/* Short circuit function */
-   if (prio < I915_PRIORITY_NORMAL ||
-   rq->guc_prio == GUC_PRIO_FINI ||
-   (rq->guc_prio != GUC_PRIO_INIT &&
-!new_guc_prio_higher(rq->guc_prio, new_guc_prio)))
+   if (prio < I915_PRIORITY_NORMAL)
return;
 
spin_lock(&ce->guc_state.lock);
+
+   if (rq->guc_prio == GUC_PRIO_FINI)
+   goto exit;
+
+   if (rq->guc_prio != GUC_PRIO_INIT &&
+   !new_guc_prio_higher(rq->guc_prio, new_guc_prio))
+   goto exit;
+
if (rq->guc_prio != GUC_PRIO_FINI) {
if (rq->guc_prio != GUC_PRIO_INIT)
sub_context_inflight_prio(ce, rq->guc_prio);
@@ -4281,6 +4286,8 @@ static void guc_bump_inflight_request_prio(struct 
i915_request *rq,
add_context_inflight_prio(ce, rq->guc_prio);
update_context_prio(ce);
}
+
+exit:
spin_unlock(&ce->guc_state.lock);
 }
 
-- 
2.45.1



✓ Fi.CI.BAT: success for drm/i915/gt/uc: Evaluate GuC priority within locks

2024-06-05 Thread Patchwork
== Series Details ==

Series: drm/i915/gt/uc: Evaluate GuC priority within locks
URL   : https://patchwork.freedesktop.org/series/134525/
State : success

== Summary ==

CI Bug Log - changes from CI_DRM_14881 -> Patchwork_134525v1


Summary
---

  **SUCCESS**

  No regressions found.

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

Participating hosts (38 -> 32)
--

  Additional (1): fi-bsw-n3050 
  Missing(7): bat-dg1-7 bat-kbl-2 bat-mtlp-9 fi-snb-2520m fi-glk-j4005 
fi-cfl-8109u bat-arls-3 

Known issues


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

### IGT changes ###

 Issues hit 

  * igt@gem_lmem_swapping@random-engines:
- fi-bsw-n3050:   NOTRUN -> [SKIP][1] +19 other tests skip
   [1]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134525v1/fi-bsw-n3050/igt@gem_lmem_swapp...@random-engines.html

  


Build changes
-

  * Linux: CI_DRM_14881 -> Patchwork_134525v1

  CI-20190529: 20190529
  CI_DRM_14881: a494545483635d3d93d19e8f483f61e7d4198383 @ 
git://anongit.freedesktop.org/gfx-ci/linux
  IGT_7878: eecd5683bd98cee3fc6bd3f26a1f053c897f6bdf @ 
https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
  Patchwork_134525v1: a494545483635d3d93d19e8f483f61e7d4198383 @ 
git://anongit.freedesktop.org/gfx-ci/linux

== Logs ==

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


Re: [PATCH] drm/i915/gt: Delete the live_hearbeat_fast selftest

2024-06-05 Thread Andi Shyti
Hi Krzysztof,

On Mon, Jun 03, 2024 at 06:20:22PM +0200, Niemiec, Krzysztof wrote:
> The test is trying to push the heartbeat frequency to the limit, which
> might sometimes fail. Such a failure does not provide valuable
> information, because it does not indicate that there is something
> necessarily wrong with either the driver or the hardware.
> 
> Remove the test to prevent random, unnecessary failures from appearing
> in CI.
> 
> Suggested-by: Chris Wilson 
> Signed-off-by: Niemiec, Krzysztof 

merged in drm-intel-gt-next.

Thank you,
Andi


Re: [PATCH] drm/i915/gt: Fix potential UAF by revoke of fence registers

2024-06-05 Thread Andi Shyti
Hi Janusz,

On Tue, Jun 04, 2024 at 05:27:24PM +0200, Janusz Krzysztofik wrote:
> On Tuesday, 4 June 2024 02:48:43 GMT+2 Andi Shyti wrote:
> > On Mon, Jun 03, 2024 at 09:54:45PM +0200, Janusz Krzysztofik wrote:
> > > CI has been sporadically reporting the following issue triggered by
> > > igt@i915_selftest@live@hangcheck on ADL-P and similar machines:
> > > 
> > > <6> [414.049203] i915: Running 
> > > intel_hangcheck_live_selftests/igt_reset_evict_fence
> > > ...
> > > <6> [414.068804] i915 :00:02.0: [drm] GT0: GUC: submission enabled
> > > <6> [414.068812] i915 :00:02.0: [drm] GT0: GUC: SLPC enabled
> > > <3> [414.070354] Unable to pin Y-tiled fence; err:-4
> > > <3> [414.071282] i915_vma_revoke_fence:301 
> > > GEM_BUG_ON(!i915_active_is_idle(&fence->active))
> > > ...
> > > <4>[  609.603992] [ cut here ]
> > > <2>[  609.603995] kernel BUG at 
> > > drivers/gpu/drm/i915/gt/intel_ggtt_fencing.c:301!
> > > <4>[  609.604003] invalid opcode:  [#1] PREEMPT SMP NOPTI
> > > <4>[  609.604006] CPU: 0 PID: 268 Comm: kworker/u64:3 Tainted: G U  W 
> > >  6.9.0-CI_DRM_14785-g1ba62f8cea9c+ #1
> > > <4>[  609.604008] Hardware name: Intel Corporation Alder Lake Client 
> > > Platform/AlderLake-P DDR4 RVP, BIOS RPLPFWI1.R00.4035.A00.2301200723 
> > > 01/20/2023
> > > <4>[  609.604010] Workqueue: i915 __i915_gem_free_work [i915]
> > > <4>[  609.604149] RIP: 0010:i915_vma_revoke_fence+0x187/0x1f0 [i915]
> > > ...
> > > <4>[  609.604271] Call Trace:
> > > <4>[  609.604273]  
> > > ...
> > > <4>[  609.604716]  __i915_vma_evict+0x2e9/0x550 [i915]
> > > <4>[  609.604852]  __i915_vma_unbind+0x7c/0x160 [i915]
> > > <4>[  609.604977]  force_unbind+0x24/0xa0 [i915]
> > > <4>[  609.605098]  i915_vma_destroy+0x2f/0xa0 [i915]
> > > <4>[  609.605210]  __i915_gem_object_pages_fini+0x51/0x2f0 [i915]
> > > <4>[  609.605330]  __i915_gem_free_objects.isra.0+0x6a/0xc0 [i915]
> > > <4>[  609.605440]  process_scheduled_works+0x351/0x690
> > > ...
> > > 
> > > In the past, there were similar failures reported by CI from other IGT
> > > tests, observed on other platforms.
> > > 
> > > Before commit 63baf4f3d587 ("drm/i915/gt: Only wait for GPU activity
> > > before unbinding a GGTT fence"), i915_vma_revoke_fence() was waiting for
> > > idleness of vma->active via fence_update().   That commit introduced
> > > vma->fence->active in order for the fence_update() to be able to wait
> > > selectively on that one instead of vma->active since only idleness of
> > > fence registers was needed.  But then, another commit 0d86ee35097a
> > > ("drm/i915/gt: Make fence revocation unequivocal") replaced the call to
> > > fence_update() in i915_vma_revoke_fence() with only fence_write(), and
> > > also added that GEM_BUG_ON(!i915_active_is_idle(&fence->active)) in front.
> > > No justification was provided on why we might then expect idleness of
> > > vma->fence->active without first waiting on it.
> > > 
> > > The issue can be potentially caused by a race among revocation of fence
> > > registers on one side and sequential execution of signal callbacks invoked
> > > on completion of a request that was using them on the other, still
> > > processed in parallel to revocation of those fence registers.  Fix it by
> > > waiting for idleness of vma->fence->active in i915_vma_revoke_fence().
> > > 
> > > Fixes: 0d86ee35097a ("drm/i915/gt: Make fence revocation unequivocal")
> > > Closes: https://gitlab.freedesktop.org/drm/intel/issues/10021
> > > Signed-off-by: Janusz Krzysztofik 
> > > Cc: sta...@vger.kernel.org # v5.8+
> > 
> > Just wondering whether we really need the stable kernel here.
> > 
> > We have just an alleged failure reported on a selftest. I think
> > we can drop the stable requirement.
> 
> Please note there were similar failures from other tests reported by CI in 
> the 
> past, e.g., https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8846, 
> https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10638.  Would you 
> like 
> me to mention them in commit description.

I guess that's fine.

> OTOH, stable will probably pick this patch up themselves, based on the Fixes: 
> commit ID, even if we drop the Cc: stable.

I was referring to the whole Fixes+stable... but you are right,
let's keep them... just an oversight from me.

I retriggered another test... but I'm pretty sure this is good to
go.

Thanks,
Andi

> Anyway, please feel free to drop Cc: stable, you or anyone who will be 
> pushing.




Re: [PATCH] drm/i915/gt/uc: Evaluate GuC priority within locks

2024-06-05 Thread Matthew Brost
On Thu, Jun 06, 2024 at 02:17:02AM +0200, Andi Shyti wrote:
> The ce->guc_state.lock was made to protect guc_prio, which
> indicates the GuC priority level.
> 
> But at the begnning of the function we perform some sanity check
> of guc_prio outside its protected section. Move them within the
> locked region.
> 
> Use this occasion to expand the if statement to make it clearer.
> 
> Fixes: ee242ca704d3 ("drm/i915/guc: Implement GuC priority management")
> Signed-off-by: Andi Shyti 
> Cc: Matthew Brost 

Reviewed-by: Matthew Brost 

> Cc:  # v5.15+
> ---
>  drivers/gpu/drm/i915/gt/uc/intel_guc_submission.c | 15 +++
>  1 file changed, 11 insertions(+), 4 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/gt/uc/intel_guc_submission.c 
> b/drivers/gpu/drm/i915/gt/uc/intel_guc_submission.c
> index 0eaa1064242c..1181043bc5e9 100644
> --- a/drivers/gpu/drm/i915/gt/uc/intel_guc_submission.c
> +++ b/drivers/gpu/drm/i915/gt/uc/intel_guc_submission.c
> @@ -4267,13 +4267,18 @@ static void guc_bump_inflight_request_prio(struct 
> i915_request *rq,
>   u8 new_guc_prio = map_i915_prio_to_guc_prio(prio);
>  
>   /* Short circuit function */
> - if (prio < I915_PRIORITY_NORMAL ||
> - rq->guc_prio == GUC_PRIO_FINI ||
> - (rq->guc_prio != GUC_PRIO_INIT &&
> -  !new_guc_prio_higher(rq->guc_prio, new_guc_prio)))
> + if (prio < I915_PRIORITY_NORMAL)
>   return;
>  
>   spin_lock(&ce->guc_state.lock);
> +
> + if (rq->guc_prio == GUC_PRIO_FINI)
> + goto exit;
> +
> + if (rq->guc_prio != GUC_PRIO_INIT &&
> + !new_guc_prio_higher(rq->guc_prio, new_guc_prio))
> + goto exit;
> +
>   if (rq->guc_prio != GUC_PRIO_FINI) {
>   if (rq->guc_prio != GUC_PRIO_INIT)
>   sub_context_inflight_prio(ce, rq->guc_prio);
> @@ -4281,6 +4286,8 @@ static void guc_bump_inflight_request_prio(struct 
> i915_request *rq,
>   add_context_inflight_prio(ce, rq->guc_prio);
>   update_context_prio(ce);
>   }
> +
> +exit:
>   spin_unlock(&ce->guc_state.lock);
>  }
>  
> -- 
> 2.45.1
> 


✓ Fi.CI.BAT: success for drm/i915/gt/uc: Evaluate GuC priority within locks (rev2)

2024-06-05 Thread Patchwork
== Series Details ==

Series: drm/i915/gt/uc: Evaluate GuC priority within locks (rev2)
URL   : https://patchwork.freedesktop.org/series/134525/
State : success

== Summary ==

CI Bug Log - changes from CI_DRM_14883 -> Patchwork_134525v2


Summary
---

  **SUCCESS**

  No regressions found.

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

Participating hosts (35 -> 36)
--

  Additional (6): bat-arls-4 bat-mtlp-6 bat-jsl-3 bat-dg2-11 bat-jsl-1 
bat-arls-3 
  Missing(5): bat-kbl-2 bat-adlp-9 bat-adlp-6 fi-snb-2520m bat-dg2-14 

Known issues


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

### IGT changes ###

 Issues hit 

  * igt@debugfs_test@basic-hwmon:
- bat-jsl-3:  NOTRUN -> [SKIP][1] ([i915#9318])
   [1]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134525v2/bat-jsl-3/igt@debugfs_t...@basic-hwmon.html
- bat-jsl-1:  NOTRUN -> [SKIP][2] ([i915#9318])
   [2]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134525v2/bat-jsl-1/igt@debugfs_t...@basic-hwmon.html
- bat-arls-3: NOTRUN -> [SKIP][3] ([i915#9318])
   [3]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134525v2/bat-arls-3/igt@debugfs_t...@basic-hwmon.html
- bat-mtlp-6: NOTRUN -> [SKIP][4] ([i915#9318])
   [4]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134525v2/bat-mtlp-6/igt@debugfs_t...@basic-hwmon.html

  * igt@fbdev@info:
- bat-arls-3: NOTRUN -> [SKIP][5] ([i915#1849])
   [5]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134525v2/bat-arls-3/igt@fb...@info.html
- bat-mtlp-6: NOTRUN -> [SKIP][6] ([i915#1849] / [i915#2582])
   [6]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134525v2/bat-mtlp-6/igt@fb...@info.html

  * igt@fbdev@write:
- bat-arls-3: NOTRUN -> [SKIP][7] ([i915#11191]) +3 other tests skip
   [7]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134525v2/bat-arls-3/igt@fb...@write.html
- bat-mtlp-6: NOTRUN -> [SKIP][8] ([i915#2582]) +3 other tests skip
   [8]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134525v2/bat-mtlp-6/igt@fb...@write.html

  * igt@gem_huc_copy@huc-copy:
- bat-jsl-1:  NOTRUN -> [SKIP][9] ([i915#2190])
   [9]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134525v2/bat-jsl-1/igt@gem_huc_c...@huc-copy.html
- bat-jsl-3:  NOTRUN -> [SKIP][10] ([i915#2190])
   [10]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134525v2/bat-jsl-3/igt@gem_huc_c...@huc-copy.html

  * igt@gem_lmem_swapping@basic:
- bat-jsl-3:  NOTRUN -> [SKIP][11] ([i915#4613]) +3 other tests skip
   [11]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134525v2/bat-jsl-3/igt@gem_lmem_swapp...@basic.html

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

  * igt@gem_lmem_swapping@verify-random:
- bat-mtlp-6: NOTRUN -> [SKIP][13] ([i915#4613]) +3 other tests skip
   [13]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134525v2/bat-mtlp-6/igt@gem_lmem_swapp...@verify-random.html
- bat-jsl-1:  NOTRUN -> [SKIP][14] ([i915#4613]) +3 other tests skip
   [14]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134525v2/bat-jsl-1/igt@gem_lmem_swapp...@verify-random.html

  * igt@gem_mmap@basic:
- bat-dg2-11: NOTRUN -> [SKIP][15] ([i915#4083])
   [15]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134525v2/bat-dg2-11/igt@gem_m...@basic.html
- bat-arls-3: NOTRUN -> [SKIP][16] ([i915#4083])
   [16]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134525v2/bat-arls-3/igt@gem_m...@basic.html
- bat-mtlp-6: NOTRUN -> [SKIP][17] ([i915#4083])
   [17]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134525v2/bat-mtlp-6/igt@gem_m...@basic.html

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

  * igt@gem_tiled_blits@basic:
- bat-arls-3: NOTRUN -> [SKIP][19] ([i915#10196] / [i915#4077]) +2 
other tests skip
   [19]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134525v2/bat-arls-3/igt@gem_tiled_bl...@basic.html
- bat-mtlp-6: NOTRUN -> [SKIP][20] ([i915#4077]) +2 other tests skip
   [20]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134525v2/bat-mtlp-6/igt@gem_tiled_bl...@basic.html

  * igt@gem_tiled_fence_blits@basic:
- bat-dg2-11: NOTRUN -> [SKIP][21] ([i915#4077]) +2 other tests skip
   [21]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134525v2/bat-dg2

✗ Fi.CI.CHECKPATCH: warning for drm/i915/gt: Fix potential UAF by revoke of fence registers (rev2)

2024-06-05 Thread Patchwork
== Series Details ==

Series: drm/i915/gt: Fix potential UAF by revoke of fence registers (rev2)
URL   : https://patchwork.freedesktop.org/series/134411/
State : warning

== Summary ==

Error: dim checkpatch failed
68a3074a63dc drm/i915/gt: Fix potential UAF by revoke of fence registers
-:9: WARNING:COMMIT_LOG_LONG_LINE: Prefer a maximum 75 chars per line (possible 
unwrapped commit description?)
#9: 
<6> [414.049203] i915: Running 
intel_hangcheck_live_selftests/igt_reset_evict_fence

total: 0 errors, 1 warnings, 0 checks, 7 lines checked




✓ Fi.CI.BAT: success for drm/i915/gt: Fix potential UAF by revoke of fence registers (rev2)

2024-06-05 Thread Patchwork
== Series Details ==

Series: drm/i915/gt: Fix potential UAF by revoke of fence registers (rev2)
URL   : https://patchwork.freedesktop.org/series/134411/
State : success

== Summary ==

CI Bug Log - changes from CI_DRM_14883 -> Patchwork_134411v2


Summary
---

  **SUCCESS**

  No regressions found.

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

Participating hosts (35 -> 38)
--

  Additional (4): bat-arls-4 bat-mtlp-6 bat-jsl-1 bat-jsl-3 
  Missing(1): fi-snb-2520m 

Known issues


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

### IGT changes ###

 Issues hit 

  * igt@debugfs_test@basic-hwmon:
- bat-jsl-3:  NOTRUN -> [SKIP][1] ([i915#9318])
   [1]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134411v2/bat-jsl-3/igt@debugfs_t...@basic-hwmon.html
- bat-jsl-1:  NOTRUN -> [SKIP][2] ([i915#9318])
   [2]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134411v2/bat-jsl-1/igt@debugfs_t...@basic-hwmon.html
- bat-mtlp-6: NOTRUN -> [SKIP][3] ([i915#9318])
   [3]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134411v2/bat-mtlp-6/igt@debugfs_t...@basic-hwmon.html

  * igt@fbdev@info:
- bat-mtlp-6: NOTRUN -> [SKIP][4] ([i915#1849] / [i915#2582])
   [4]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134411v2/bat-mtlp-6/igt@fb...@info.html

  * igt@fbdev@write:
- bat-mtlp-6: NOTRUN -> [SKIP][5] ([i915#2582]) +3 other tests skip
   [5]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134411v2/bat-mtlp-6/igt@fb...@write.html

  * igt@gem_huc_copy@huc-copy:
- bat-jsl-1:  NOTRUN -> [SKIP][6] ([i915#2190])
   [6]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134411v2/bat-jsl-1/igt@gem_huc_c...@huc-copy.html
- bat-jsl-3:  NOTRUN -> [SKIP][7] ([i915#2190])
   [7]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134411v2/bat-jsl-3/igt@gem_huc_c...@huc-copy.html

  * igt@gem_lmem_swapping@basic:
- bat-jsl-3:  NOTRUN -> [SKIP][8] ([i915#4613]) +3 other tests skip
   [8]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134411v2/bat-jsl-3/igt@gem_lmem_swapp...@basic.html

  * igt@gem_lmem_swapping@verify-random:
- bat-mtlp-6: NOTRUN -> [SKIP][9] ([i915#4613]) +3 other tests skip
   [9]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134411v2/bat-mtlp-6/igt@gem_lmem_swapp...@verify-random.html
- bat-jsl-1:  NOTRUN -> [SKIP][10] ([i915#4613]) +3 other tests skip
   [10]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134411v2/bat-jsl-1/igt@gem_lmem_swapp...@verify-random.html

  * igt@gem_mmap@basic:
- bat-mtlp-6: NOTRUN -> [SKIP][11] ([i915#4083])
   [11]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134411v2/bat-mtlp-6/igt@gem_m...@basic.html

  * igt@gem_tiled_blits@basic:
- bat-mtlp-6: NOTRUN -> [SKIP][12] ([i915#4077]) +2 other tests skip
   [12]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134411v2/bat-mtlp-6/igt@gem_tiled_bl...@basic.html

  * igt@gem_tiled_pread_basic:
- bat-mtlp-6: NOTRUN -> [SKIP][13] ([i915#4079]) +1 other test skip
   [13]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134411v2/bat-mtlp-6/igt@gem_tiled_pread_basic.html

  * igt@i915_pm_rps@basic-api:
- bat-mtlp-6: NOTRUN -> [SKIP][14] ([i915#6621])
   [14]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134411v2/bat-mtlp-6/igt@i915_pm_...@basic-api.html

  * igt@kms_addfb_basic@addfb25-x-tiled-legacy:
- bat-mtlp-6: NOTRUN -> [SKIP][15] ([i915#4212] / [i915#9792]) +8 
other tests skip
   [15]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134411v2/bat-mtlp-6/igt@kms_addfb_ba...@addfb25-x-tiled-legacy.html

  * igt@kms_addfb_basic@addfb25-y-tiled-small-legacy:
- bat-mtlp-6: NOTRUN -> [SKIP][16] ([i915#5190] / [i915#9792])
   [16]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134411v2/bat-mtlp-6/igt@kms_addfb_ba...@addfb25-y-tiled-small-legacy.html

  * igt@kms_cursor_legacy@basic-busy-flip-before-cursor-legacy:
- bat-jsl-3:  NOTRUN -> [SKIP][17] ([i915#4103]) +1 other test skip
   [17]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134411v2/bat-jsl-3/igt@kms_cursor_leg...@basic-busy-flip-before-cursor-legacy.html
- bat-jsl-1:  NOTRUN -> [SKIP][18] ([i915#4103]) +1 other test skip
   [18]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134411v2/bat-jsl-1/igt@kms_cursor_leg...@basic-busy-flip-before-cursor-legacy.html

  * igt@kms_cursor_legacy@basic-flip-after-cursor-legacy:
- bat-mtlp-6: NOTRUN -> [SKIP][19] ([i915#9792]) +17 other tests 
skip
   [19]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134411v2/bat-mtlp-6/igt@kms_cursor_leg...@basic-flip-after-cursor-legacy.html

  * igt@kms_dsc@dsc-basic:
- bat-jsl-1:  NOTRUN -> [SKIP][

  1   2   >