Re: [Intel-gfx] [PATCH 11/11] drm/i915/dp_mst: Add support for forcing dsc fractional bpp via debugfs

2023-11-11 Thread Kandpal, Suraj



> -Original Message-
> From: Nautiyal, Ankit K 
> Sent: Friday, November 10, 2023 3:40 PM
> To: dri-de...@lists.freedesktop.org; intel-gfx@lists.freedesktop.org
> Cc: Sharma, Swati2 ; Kulkarni, Vandita
> ; Kandpal, Suraj ;
> suijingf...@loongson.cn
> Subject: [PATCH 11/11] drm/i915/dp_mst: Add support for forcing dsc
> fractional bpp via debugfs
> 
> If force_dsc_fractional_bpp_en is set through debugfs allow DSC iff
> compressed bpp is fractional. Continue if the computed compressed bpp
> turns out to be a integer.
> 

LGTM.

Reviewed-by: Suraj Kandpal 

> Signed-off-by: Ankit Nautiyal 
> ---
>  drivers/gpu/drm/i915/display/intel_dp_mst.c | 14 +++---
>  1 file changed, 11 insertions(+), 3 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/display/intel_dp_mst.c
> b/drivers/gpu/drm/i915/display/intel_dp_mst.c
> index 322046bb7d42..26b51ba6871d 100644
> --- a/drivers/gpu/drm/i915/display/intel_dp_mst.c
> +++ b/drivers/gpu/drm/i915/display/intel_dp_mst.c
> @@ -172,6 +172,10 @@ static int
> intel_dp_mst_find_vcpi_slots_for_bpp(struct intel_encoder *encoder,
>   struct intel_link_m_n remote_m_n;
>   int link_bpp_x16;
> 
> + if (dsc && intel_dp->force_dsc_fractional_bpp_en &&
> + !to_bpp_frac(bpp_x16))
> + continue;
> +
>   drm_dbg_kms(&i915->drm, "Trying bpp " BPP_X16_FMT "\n",
> BPP_X16_ARGS(bpp_x16));
> 
>   ret = intel_dp_mst_check_constraints(i915, bpp_x16,
> adjusted_mode, crtc_state, dsc); @@ -225,12 +229,16 @@ static int
> intel_dp_mst_find_vcpi_slots_for_bpp(struct intel_encoder *encoder,
>   drm_dbg_kms(&i915->drm, "failed finding vcpi slots:%d\n",
>   slots);
>   } else {
> - if (!dsc)
> - crtc_state->pipe_bpp = to_bpp_int(bpp_x16);
> - else
> + if (dsc) {
>   crtc_state->dsc.compressed_bpp_x16 = bpp_x16;
> + if (intel_dp->force_dsc_fractional_bpp_en &&
> to_bpp_frac(bpp_x16))
> + drm_dbg_kms(&i915->drm, "Forcing DSC
> fractional bpp\n");
> + } else {
> + crtc_state->pipe_bpp = to_bpp_int(bpp_x16);
> + }
>   drm_dbg_kms(&i915->drm, "Got %d slots for pipe bpp "
> BPP_X16_FMT " dsc %d\n",
>   slots, BPP_X16_ARGS(bpp_x16), dsc);
> +
>   }
> 
>   return slots;
> --
> 2.40.1



Re: [Intel-gfx] [PATCH 10/11] drm/i916/dp_mst: Iterate over the DSC bpps as per DSC precision support

2023-11-11 Thread Kandpal, Suraj
> Subject: [PATCH 10/11] drm/i916/dp_mst: Iterate over the DSC bpps as per
> DSC precision support
> 
> Currently we iterate over the bpp_x16 in step of 16.
> Use DSC fractional bpp precision supported by the sink to compute the
> appropriate steps to iterate over the bpps.
> 

LGTM.

Reviewed-by: Suraj Kandpal 

> Signed-off-by: Ankit Nautiyal 
> ---
>  drivers/gpu/drm/i915/display/intel_dp_mst.c | 9 -
>  1 file changed, 8 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/gpu/drm/i915/display/intel_dp_mst.c
> b/drivers/gpu/drm/i915/display/intel_dp_mst.c
> index e7806fe11b9d..322046bb7d42 100644
> --- a/drivers/gpu/drm/i915/display/intel_dp_mst.c
> +++ b/drivers/gpu/drm/i915/display/intel_dp_mst.c
> @@ -273,6 +273,8 @@ static int
> intel_dp_dsc_mst_compute_link_config(struct intel_encoder *encoder,
>   int min_bpp, max_bpp, sink_min_bpp, sink_max_bpp;
>   u8 dsc_max_bpc;
>   int min_compressed_bpp, max_compressed_bpp;
> + int bppx16_incr = drm_dp_dsc_sink_bpp_incr(connector-
> >dp.dsc_dpcd);
> + int bppx16_step;
> 
>   /* Max DSC Input BPC for ICL is 10 and for TGL+ is 12 */
>   if (DISPLAY_VER(i915) >= 12)
> @@ -327,11 +329,16 @@ static int
> intel_dp_dsc_mst_compute_link_config(struct intel_encoder *encoder,
>   min_compressed_bpp = intel_dp_dsc_nearest_valid_bpp(i915,
> min_compressed_bpp,
>   crtc_state-
> >pipe_bpp);
> 
> + if (DISPLAY_VER(i915) < 14 || bppx16_incr <= 1)
> + bppx16_step = 16;
> + else
> + bppx16_step = 16 / bppx16_incr;
> +
>   slots = intel_dp_mst_find_vcpi_slots_for_bpp(encoder, crtc_state,
> 
> to_bpp_x16(max_compressed_bpp),
> 
> to_bpp_x16(min_compressed_bpp),
>limits,
> -  conn_state, 16, true);
> +  conn_state, bppx16_step,
> true);
> 
>   if (slots < 0)
>   return slots;
> --
> 2.40.1



Re: [Intel-gfx] [PATCH 09/11] drm/i915/dp_mst: Use precision of 1/16 for computing bpp

2023-11-11 Thread Kandpal, Suraj



> -Original Message-
> From: Nautiyal, Ankit K 
> Sent: Friday, November 10, 2023 3:40 PM
> To: dri-de...@lists.freedesktop.org; intel-gfx@lists.freedesktop.org
> Cc: Sharma, Swati2 ; Kulkarni, Vandita
> ; Kandpal, Suraj ;
> suijingf...@loongson.cn
> Subject: [PATCH 09/11] drm/i915/dp_mst: Use precision of 1/16 for computing
> bpp
> 
> Modify the functions to deal with bpps with 1/16 precision.
> This will make way for cases when DSC with fractional bpp is used.
> For bpp without DSC, there is no change, as we still use whole numbers.
> 

LGTM.

Reviewed-by: Suraj Kandpal 

> Signed-off-by: Ankit Nautiyal 
> ---
>  drivers/gpu/drm/i915/display/intel_dp_mst.c | 56 +++--
>  1 file changed, 30 insertions(+), 26 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/display/intel_dp_mst.c
> b/drivers/gpu/drm/i915/display/intel_dp_mst.c
> index 5c7e9d296483..e7806fe11b9d 100644
> --- a/drivers/gpu/drm/i915/display/intel_dp_mst.c
> +++ b/drivers/gpu/drm/i915/display/intel_dp_mst.c
> @@ -47,20 +47,21 @@
>  #include "intel_vdsc.h"
>  #include "skl_scaler.h"
> 
> -static int intel_dp_mst_check_constraints(struct drm_i915_private *i915, int
> bpp,
> +static int intel_dp_mst_check_constraints(struct drm_i915_private
> +*i915, int bpp_x16,
> const struct drm_display_mode
> *adjusted_mode,
> struct intel_crtc_state *crtc_state,
> bool dsc)
>  {
>   if (intel_dp_is_uhbr(crtc_state) && DISPLAY_VER(i915) <= 13 && dsc) {
> - int output_bpp = bpp;
> + int output_bpp_x16 = bpp_x16;
>   /* DisplayPort 2 128b/132b, bits per lane is always 32 */
>   int symbol_clock = crtc_state->port_clock / 32;
> 
> - if (output_bpp * adjusted_mode->crtc_clock >=
> + if (DIV_ROUND_UP(output_bpp_x16 * adjusted_mode-
> >crtc_clock, 16) >=
>   symbol_clock * 72) {
>   drm_dbg_kms(&i915->drm, "UHBR check
> failed(required bw %d available %d)\n",
> - output_bpp * adjusted_mode->crtc_clock,
> symbol_clock * 72);
> + DIV_ROUND_UP(output_bpp_x16 *
> adjusted_mode->crtc_clock, 16),
> + symbol_clock * 72);
>   return -EINVAL;
>   }
>   }
> @@ -127,8 +128,8 @@ static void intel_dp_mst_compute_m_n(const struct
> intel_crtc_state *crtc_state,
> 
>  static int intel_dp_mst_find_vcpi_slots_for_bpp(struct intel_encoder
> *encoder,
>   struct intel_crtc_state
> *crtc_state,
> - int max_bpp,
> - int min_bpp,
> + int max_bpp_x16,
> + int min_bpp_x16,
>   struct link_config_limits
> *limits,
>   struct drm_connector_state
> *conn_state,
>   int step,
> @@ -143,7 +144,7 @@ static int intel_dp_mst_find_vcpi_slots_for_bpp(struct
> intel_encoder *encoder,
>   struct drm_i915_private *i915 = to_i915(connector->base.dev);
>   const struct drm_display_mode *adjusted_mode =
>   &crtc_state->hw.adjusted_mode;
> - int bpp, slots = -EINVAL;
> + int bpp_x16, slots = -EINVAL;
>   int ret = 0;
> 
>   mst_state = drm_atomic_get_mst_topology_state(state, &intel_dp-
> >mst_mgr); @@ -164,25 +165,25 @@ static int
> intel_dp_mst_find_vcpi_slots_for_bpp(struct intel_encoder *encoder,
> crtc_state->port_clock,
> crtc_state->lane_count);
> 
> - drm_dbg_kms(&i915->drm, "Looking for slots in range min bpp %d
> max bpp %d\n",
> - min_bpp, max_bpp);
> + drm_dbg_kms(&i915->drm, "Looking for slots in range min bpp "
> BPP_X16_FMT " max bpp " BPP_X16_FMT "\n",
> + BPP_X16_ARGS(min_bpp_x16),
> BPP_X16_ARGS(max_bpp_x16));
> 
> - for (bpp = max_bpp; bpp >= min_bpp; bpp -= step) {
> + for (bpp_x16 = max_bpp_x16; bpp_x16 >= min_bpp_x16; bpp_x16 -=
> step) {
>   struct intel_link_m_n remote_m_n;
> - int link_bpp;
> + int link_bpp_x16;
> 
> - drm_dbg_kms(&i915->drm, "Trying bpp %d\n", bpp);
> + drm_dbg_kms(&i915->drm, "Trying bpp " BPP_X16_FMT "\n",
> +BPP_X16_ARGS(bpp_x16));
> 
> - ret = intel_dp_mst_check_constraints(i915, bpp,
> adjusted_mode, crtc_state, dsc);
> + ret = intel_dp_mst_check_constraints(i915, bpp_x16,
> adjusted_mode,
> +crtc_state, dsc);
>   if (ret)
>   continue;
> 
> - link_bpp = dsc ? bpp :
> - intel_dp_output_bpp(crtc_st

[Intel-gfx] ✗ Fi.CI.BAT: failure for drm/i915/xe2lpd: WA for underruns during FBC enable (rev3)

2023-11-11 Thread Patchwork
== Series Details ==

Series: drm/i915/xe2lpd: WA for underruns during FBC enable (rev3)
URL   : https://patchwork.freedesktop.org/series/126143/
State : failure

== Summary ==

CI Bug Log - changes from CI_DRM_13865 -> Patchwork_126143v3


Summary
---

  **FAILURE**

  Serious unknown changes coming with Patchwork_126143v3 absolutely need to be
  verified manually.
  
  If you think the reported changes have nothing to do with the changes
  introduced in Patchwork_126143v3, please notify your bug team 
(lgci.bug.fil...@intel.com) 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_126143v3/index.html

Participating hosts (33 -> 33)
--

  Additional (1): fi-hsw-4770 
  Missing(1): bat-rpls-1 

Possible new issues
---

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

### IGT changes ###

 Possible regressions 

  * igt@i915_selftest@live@execlists:
- fi-bsw-nick:[PASS][1] -> [ABORT][2]
   [1]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13865/fi-bsw-nick/igt@i915_selftest@l...@execlists.html
   [2]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126143v3/fi-bsw-nick/igt@i915_selftest@l...@execlists.html

  * igt@i915_selftest@live@gt_pm:
- fi-hsw-4770:NOTRUN -> [INCOMPLETE][3]
   [3]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126143v3/fi-hsw-4770/igt@i915_selftest@live@gt_pm.html

  * igt@i915_selftest@live@slpc:
- fi-kbl-soraka:  NOTRUN -> [ABORT][4]
   [4]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126143v3/fi-kbl-soraka/igt@i915_selftest@l...@slpc.html

  * igt@i915_suspend@basic-s3-without-i915:
- bat-jsl-3:  [PASS][5] -> [INCOMPLETE][6]
   [5]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13865/bat-jsl-3/igt@i915_susp...@basic-s3-without-i915.html
   [6]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126143v3/bat-jsl-3/igt@i915_susp...@basic-s3-without-i915.html

  
Known issues


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

### IGT changes ###

 Issues hit 

  * igt@i915_selftest@live@gt_heartbeat:
- fi-kbl-soraka:  [PASS][7] -> [DMESG-FAIL][8] ([i915#5334] / 
[i915#7872])
   [7]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13865/fi-kbl-soraka/igt@i915_selftest@live@gt_heartbeat.html
   [8]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126143v3/fi-kbl-soraka/igt@i915_selftest@live@gt_heartbeat.html
- fi-apl-guc: [PASS][9] -> [DMESG-FAIL][10] ([i915#5334])
   [9]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13865/fi-apl-guc/igt@i915_selftest@live@gt_heartbeat.html
   [10]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126143v3/fi-apl-guc/igt@i915_selftest@live@gt_heartbeat.html

  * igt@i915_suspend@basic-s2idle-without-i915:
- bat-jsl-3:  [PASS][11] -> [DMESG-WARN][12] ([i915#1982])
   [11]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13865/bat-jsl-3/igt@i915_susp...@basic-s2idle-without-i915.html
   [12]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126143v3/bat-jsl-3/igt@i915_susp...@basic-s2idle-without-i915.html

  * igt@kms_addfb_basic@addfb25-y-tiled-small-legacy:
- fi-hsw-4770:NOTRUN -> [SKIP][13] ([fdo#109271] / [i915#5190])
   [13]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126143v3/fi-hsw-4770/igt@kms_addfb_ba...@addfb25-y-tiled-small-legacy.html

  * igt@kms_pipe_crc_basic@compare-crc-sanitycheck-nv12@pipe-a-vga-1:
- fi-hsw-4770:NOTRUN -> [SKIP][14] ([fdo#109271]) +12 other tests 
skip
   [14]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126143v3/fi-hsw-4770/igt@kms_pipe_crc_basic@compare-crc-sanitycheck-n...@pipe-a-vga-1.html

  * igt@kms_psr@sprite_plane_onoff:
- fi-hsw-4770:NOTRUN -> [SKIP][15] ([fdo#109271] / [i915#1072]) +3 
other tests skip
   [15]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126143v3/fi-hsw-4770/igt@kms_psr@sprite_plane_onoff.html

  
 Possible fixes 

  * igt@kms_psr@sprite_plane_onoff:
- bat-jsl-3:  [SKIP][16] ([i915#9648]) -> [PASS][17] +3 other tests 
pass
   [16]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13865/bat-jsl-3/igt@kms_psr@sprite_plane_onoff.html
   [17]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126143v3/bat-jsl-3/igt@kms_psr@sprite_plane_onoff.html

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

  [fdo#109271]: https://bugs.freedesktop.org/show_bug.cgi?id=109271
  [i915#1072]: https://gitlab.freedesktop.org/drm/intel/issues/1072
  [i915#1982]: https://gitlab.freedesktop.org/drm/intel/issues/1982
  [i915#5190]: https://gitlab.freedesktop.org/drm/intel/issues/5190
  [i915#5334]: https://gitlab.f

[Intel-gfx] [PATCH v4 1/1] drm/i915/xe2lpd: implement WA for underruns while enabling FBC

2023-11-11 Thread Vinod Govindapillai
FIFO underruns are observed when FBC is enabled on plane 2 or
plane 3. Recommended WA is to update the FBC enabling sequence.
The plane binding register bits need to be updated separately
before programming the FBC enable bit.

Bspec: 74151
Reviewed-by: Mika Kahola  #v3
Signed-off-by: Vinod Govindapillai 
---
 drivers/gpu/drm/i915/display/intel_fbc.c | 8 +++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/i915/display/intel_fbc.c 
b/drivers/gpu/drm/i915/display/intel_fbc.c
index bde12fe62275..b73cf1c5ba33 100644
--- a/drivers/gpu/drm/i915/display/intel_fbc.c
+++ b/drivers/gpu/drm/i915/display/intel_fbc.c
@@ -608,6 +608,7 @@ static u32 ivb_dpfc_ctl(struct intel_fbc *fbc)
 static void ivb_fbc_activate(struct intel_fbc *fbc)
 {
struct drm_i915_private *i915 = fbc->i915;
+   u32 dpfc_ctl;
 
if (DISPLAY_VER(i915) >= 10)
glk_fbc_program_cfb_stride(fbc);
@@ -617,8 +618,13 @@ static void ivb_fbc_activate(struct intel_fbc *fbc)
if (intel_gt_support_legacy_fencing(to_gt(i915)))
snb_fbc_program_fence(fbc);
 
+   /* wa_14019417088 Alternative WA*/
+   dpfc_ctl = ivb_dpfc_ctl(fbc);
+   if (DISPLAY_VER(i915) >= 20)
+   intel_de_write(i915, ILK_DPFC_CONTROL(fbc->id), dpfc_ctl);
+
intel_de_write(i915, ILK_DPFC_CONTROL(fbc->id),
-  DPFC_CTL_EN | ivb_dpfc_ctl(fbc));
+  DPFC_CTL_EN | dpfc_ctl);
 }
 
 static bool ivb_fbc_is_compressing(struct intel_fbc *fbc)
-- 
2.34.1



[Intel-gfx] [PATCH v4 0/1] drm/i915/xe2lpd: WA for underruns during FBC enable

2023-11-11 Thread Vinod Govindapillai
Update the FBC enabling sequence. The plane binding register bits
need to programmed before fbc enable bit.

v2: update the patch subject and description as this underrun is not
tied to PSR. FIFO underruns are observed when FBC is enabled on
planes 2 or 3.

v3: Updated the comments and removed reference to PSR from the comments
Added reference to HSD

v4: updated the comments to include wa number

Vinod Govindapillai (1):
  drm/i915/xe2lpd: implement WA for underruns while enabling FBC

 drivers/gpu/drm/i915/display/intel_fbc.c | 8 +++-
 1 file changed, 7 insertions(+), 1 deletion(-)

-- 
2.34.1