diff mbox series

drm/i915/mst: fix INT_MAX to .4 fixed point conversion mistake

Message ID 20250204153717.2996923-1-jani.nikula@intel.com (mailing list archive)
State New
Headers show
Series drm/i915/mst: fix INT_MAX to .4 fixed point conversion mistake | expand

Commit Message

Jani Nikula Feb. 4, 2025, 3:37 p.m. UTC
intel_dp_mtp_tu_compute_config() conversion to use .4 fixed point didn't
take into account that intel_dp_mst_max_dpt_bpp() may return INT_MAX
when the transport limitation is not relevant. Converting INT_MAX to .4
fixed point results in -1.0, which then gets used as if it were a real
max BPP value:

i915 0000:00:02.0: [drm:intel_dp_mtp_tu_compute_config [i915]] Limiting bpp to max DPT bpp (24.0000 -> -1.0000)
i915 0000:00:02.0: [drm:intel_dp_mtp_tu_compute_config [i915]] Looking for slots in range min bpp 18.0000 max bpp -1.0000

Just return 0 for "no max DPT BPP", and handle it explicitly.

Fixes: 67782bf6e8a6 ("drm/i915/mst: Convert intel_dp_mtp_tu_compute_config() to .4 format")
Cc: Imre Deak <imre.deak@intel.com>
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
 drivers/gpu/drm/i915/display/intel_dp_mst.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

Comments

Imre Deak Feb. 4, 2025, 3:51 p.m. UTC | #1
On Tue, Feb 04, 2025 at 05:37:17PM +0200, Jani Nikula wrote:
> intel_dp_mtp_tu_compute_config() conversion to use .4 fixed point didn't
> take into account that intel_dp_mst_max_dpt_bpp() may return INT_MAX
> when the transport limitation is not relevant. Converting INT_MAX to .4
> fixed point results in -1.0, which then gets used as if it were a real
> max BPP value:
> 
> i915 0000:00:02.0: [drm:intel_dp_mtp_tu_compute_config [i915]] Limiting bpp to max DPT bpp (24.0000 -> -1.0000)
> i915 0000:00:02.0: [drm:intel_dp_mtp_tu_compute_config [i915]] Looking for slots in range min bpp 18.0000 max bpp -1.0000
> 
> Just return 0 for "no max DPT BPP", and handle it explicitly.
> 
> Fixes: 67782bf6e8a6 ("drm/i915/mst: Convert intel_dp_mtp_tu_compute_config() to .4 format")
> Cc: Imre Deak <imre.deak@intel.com>
> Signed-off-by: Jani Nikula <jani.nikula@intel.com>

Reviewed-by: Imre Deak <imre.deak@intel.com>

> ---
>  drivers/gpu/drm/i915/display/intel_dp_mst.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/display/intel_dp_mst.c b/drivers/gpu/drm/i915/display/intel_dp_mst.c
> index b729e27cdde2..95abc6ea85eb 100644
> --- a/drivers/gpu/drm/i915/display/intel_dp_mst.c
> +++ b/drivers/gpu/drm/i915/display/intel_dp_mst.c
> @@ -111,7 +111,7 @@ static int intel_dp_mst_max_dpt_bpp(const struct intel_crtc_state *crtc_state,
>  		&crtc_state->hw.adjusted_mode;
>  
>  	if (!intel_dp_is_uhbr(crtc_state) || DISPLAY_VER(display) >= 20 || !dsc)
> -		return INT_MAX;
> +		return 0;
>  
>  	/*
>  	 * DSC->DPT interface width:
> @@ -248,7 +248,7 @@ int intel_dp_mtp_tu_compute_config(struct intel_dp *intel_dp,
>  	}
>  
>  	max_dpt_bpp_x16 = fxp_q4_from_int(intel_dp_mst_max_dpt_bpp(crtc_state, dsc));
> -	if (max_bpp_x16 > max_dpt_bpp_x16) {
> +	if (max_dpt_bpp_x16 && max_bpp_x16 > max_dpt_bpp_x16) {
>  		drm_dbg_kms(display->drm, "Limiting bpp to max DPT bpp (" FXP_Q4_FMT " -> " FXP_Q4_FMT ")\n",
>  			    FXP_Q4_ARGS(max_bpp_x16), FXP_Q4_ARGS(max_dpt_bpp_x16));
>  		max_bpp_x16 = max_dpt_bpp_x16;
> -- 
> 2.39.5
>
Jani Nikula Feb. 5, 2025, 8:19 a.m. UTC | #2
On Tue, 04 Feb 2025, Patchwork <patchwork@emeril.freedesktop.org> wrote:
> == Series Details ==
>
> Series: drm/i915/mst: fix INT_MAX to .4 fixed point conversion mistake
> URL   : https://patchwork.freedesktop.org/series/144324/
> State : failure
>
> == Summary ==
>
> CI Bug Log - changes from CI_DRM_16064 -> Patchwork_144324v1
> ====================================================
>
> Summary
> -------
>
>   **FAILURE**
>
>   Serious unknown changes coming with Patchwork_144324v1 absolutely need to be
>   verified manually.
>   
>   If you think the reported changes have nothing to do with the changes
>   introduced in Patchwork_144324v1, please notify your bug team (I915-ci-infra@lists.freedesktop.org) to allow them
>   to document this new failure mode, which will reduce false positives in CI.
>
>   External URL: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_144324v1/index.html
>
> Participating hosts (42 -> 42)
> ------------------------------
>
>   Additional (1): bat-twl-2 
>   Missing    (1): fi-snb-2520m 
>
> Possible new issues
> -------------------
>
>   Here are the unknown changes that may have been introduced in Patchwork_144324v1:
>
> ### IGT changes ###
>
> #### Possible regressions ####
>
>   * igt@i915_pm_rpm@module-reload:
>     - bat-dg2-11:         [PASS][1] -> [FAIL][2]
>    [1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16064/bat-dg2-11/igt@i915_pm_rpm@module-reload.html
>    [2]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_144324v1/bat-dg2-11/igt@i915_pm_rpm@module-reload.html
>     - bat-apl-1:          NOTRUN -> [FAIL][3]
>    [3]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_144324v1/bat-apl-1/igt@i915_pm_rpm@module-reload.html
>     - bat-rpls-4:         [PASS][4] -> [FAIL][5]
>    [4]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16064/bat-rpls-4/igt@i915_pm_rpm@module-reload.html
>    [5]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_144324v1/bat-rpls-4/igt@i915_pm_rpm@module-reload.html
>
>   * igt@kms_flip@basic-flip-vs-dpms@b-dp1:
>     - fi-kbl-7567u:       [PASS][6] -> [DMESG-WARN][7] +1 other test dmesg-warn
>    [6]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16064/fi-kbl-7567u/igt@kms_flip@basic-flip-vs-dpms@b-dp1.html
>    [7]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_144324v1/fi-kbl-7567u/igt@kms_flip@basic-flip-vs-dpms@b-dp1.html

Unrelated, please re-report.

BR,
Jani.

>
>   
> Known issues
> ------------
>
>   Here are the changes found in Patchwork_144324v1 that come from known issues:
>
> ### IGT changes ###
>
> #### Issues hit ####
>
>   * igt@debugfs_test@basic-hwmon:
>     - bat-twl-2:          NOTRUN -> [SKIP][8] ([i915#9318])
>    [8]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_144324v1/bat-twl-2/igt@debugfs_test@basic-hwmon.html
>
>   * igt@gem_huc_copy@huc-copy:
>     - bat-apl-1:          NOTRUN -> [SKIP][9] +22 other tests skip
>    [9]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_144324v1/bat-apl-1/igt@gem_huc_copy@huc-copy.html
>
>   * igt@gem_lmem_swapping@basic:
>     - bat-twl-2:          NOTRUN -> [SKIP][10] ([i915#10213] / [i915#11671]) +3 other tests skip
>    [10]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_144324v1/bat-twl-2/igt@gem_lmem_swapping@basic.html
>
>   * igt@gem_tiled_pread_basic:
>     - bat-twl-2:          NOTRUN -> [SKIP][11] ([i915#11031])
>    [11]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_144324v1/bat-twl-2/igt@gem_tiled_pread_basic.html
>
>   * igt@i915_pm_rps@basic-api:
>     - bat-twl-2:          NOTRUN -> [SKIP][12] ([i915#10209] / [i915#11681])
>    [12]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_144324v1/bat-twl-2/igt@i915_pm_rps@basic-api.html
>
>   * igt@kms_cursor_legacy@basic-busy-flip-before-cursor-atomic:
>     - bat-twl-2:          NOTRUN -> [SKIP][13] ([i915#11030] / [i915#11731]) +1 other test skip
>    [13]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_144324v1/bat-twl-2/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-atomic.html
>
>   * igt@kms_dsc@dsc-basic:
>     - bat-twl-2:          NOTRUN -> [SKIP][14] ([i915#9886])
>    [14]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_144324v1/bat-twl-2/igt@kms_dsc@dsc-basic.html
>
>   * igt@kms_force_connector_basic@force-load-detect:
>     - bat-twl-2:          NOTRUN -> [SKIP][15] ([i915#11032])
>    [15]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_144324v1/bat-twl-2/igt@kms_force_connector_basic@force-load-detect.html
>
>   * igt@kms_pipe_crc_basic@nonblocking-crc-frame-sequence:
>     - bat-dg2-11:         [PASS][16] -> [SKIP][17] ([i915#9197]) +3 other tests skip
>    [16]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16064/bat-dg2-11/igt@kms_pipe_crc_basic@nonblocking-crc-frame-sequence.html
>    [17]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_144324v1/bat-dg2-11/igt@kms_pipe_crc_basic@nonblocking-crc-frame-sequence.html
>
>   * igt@kms_setmode@basic-clone-single-crtc:
>     - bat-twl-2:          NOTRUN -> [SKIP][18] ([i915#8809])
>    [18]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_144324v1/bat-twl-2/igt@kms_setmode@basic-clone-single-crtc.html
>
>   * igt@prime_vgem@basic-fence-read:
>     - bat-twl-2:          NOTRUN -> [SKIP][19] ([i915#10212] / [i915#3708])
>    [19]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_144324v1/bat-twl-2/igt@prime_vgem@basic-fence-read.html
>
>   * igt@prime_vgem@basic-read:
>     - bat-twl-2:          NOTRUN -> [SKIP][20] ([i915#10214] / [i915#3708])
>    [20]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_144324v1/bat-twl-2/igt@prime_vgem@basic-read.html
>
>   * igt@prime_vgem@basic-write:
>     - bat-twl-2:          NOTRUN -> [SKIP][21] ([i915#10216] / [i915#3708])
>    [21]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_144324v1/bat-twl-2/igt@prime_vgem@basic-write.html
>
>   
> #### Possible fixes ####
>
>   * igt@gem_exec_gttfill@basic:
>     - bat-apl-1:          [ABORT][22] -> [PASS][23]
>    [22]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16064/bat-apl-1/igt@gem_exec_gttfill@basic.html
>    [23]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_144324v1/bat-apl-1/igt@gem_exec_gttfill@basic.html
>
>   * igt@gem_tiled_blits@basic:
>     - fi-pnv-d510:        [SKIP][24] -> [PASS][25]
>    [24]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16064/fi-pnv-d510/igt@gem_tiled_blits@basic.html
>    [25]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_144324v1/fi-pnv-d510/igt@gem_tiled_blits@basic.html
>
>   * igt@i915_selftest@live@workarounds:
>     - bat-mtlp-6:         [DMESG-FAIL][26] ([i915#12061]) -> [PASS][27] +1 other test pass
>    [26]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16064/bat-mtlp-6/igt@i915_selftest@live@workarounds.html
>    [27]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_144324v1/bat-mtlp-6/igt@i915_selftest@live@workarounds.html
>     - {bat-mtlp-9}:       [DMESG-FAIL][28] ([i915#12061]) -> [PASS][29] +1 other test pass
>    [28]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16064/bat-mtlp-9/igt@i915_selftest@live@workarounds.html
>    [29]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_144324v1/bat-mtlp-9/igt@i915_selftest@live@workarounds.html
>
>   * igt@kms_flip@basic-flip-vs-wf_vblank@c-dp6:
>     - {bat-mtlp-9}:       [FAIL][30] ([i915#13625]) -> [PASS][31] +35 other tests pass
>    [30]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16064/bat-mtlp-9/igt@kms_flip@basic-flip-vs-wf_vblank@c-dp6.html
>    [31]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_144324v1/bat-mtlp-9/igt@kms_flip@basic-flip-vs-wf_vblank@c-dp6.html
>
>   * igt@kms_pipe_crc_basic@compare-crc-sanitycheck-xr24@pipe-b-dp-6:
>     - {bat-mtlp-9}:       [FAIL][32] ([i915#13624]) -> [PASS][33] +27 other tests pass
>    [32]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16064/bat-mtlp-9/igt@kms_pipe_crc_basic@compare-crc-sanitycheck-xr24@pipe-b-dp-6.html
>    [33]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_144324v1/bat-mtlp-9/igt@kms_pipe_crc_basic@compare-crc-sanitycheck-xr24@pipe-b-dp-6.html
>
>   
>   {name}: This element is suppressed. This means it is ignored when computing
>           the status of the difference (SUCCESS, WARNING, or FAILURE).
>
>   [i915#10209]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10209
>   [i915#10212]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10212
>   [i915#10213]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10213
>   [i915#10214]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10214
>   [i915#10216]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10216
>   [i915#11030]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11030
>   [i915#11031]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11031
>   [i915#11032]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11032
>   [i915#11671]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11671
>   [i915#11681]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11681
>   [i915#11731]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11731
>   [i915#12061]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12061
>   [i915#13624]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13624
>   [i915#13625]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13625
>   [i915#3708]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3708
>   [i915#8809]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8809
>   [i915#9197]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9197
>   [i915#9318]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9318
>   [i915#9886]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9886
>
>
> Build changes
> -------------
>
>   * Linux: CI_DRM_16064 -> Patchwork_144324v1
>
>   CI-20190529: 20190529
>   CI_DRM_16064: ac87843456aa558a665df43aa62c03eaf7701bcb @ git://anongit.freedesktop.org/gfx-ci/linux
>   IGT_8223: ccfe042787b082c06402ff9af257f8338b8edd5e @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
>   Patchwork_144324v1: ac87843456aa558a665df43aa62c03eaf7701bcb @ git://anongit.freedesktop.org/gfx-ci/linux
>
> == Logs ==
>
> For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_144324v1/index.html
diff mbox series

Patch

diff --git a/drivers/gpu/drm/i915/display/intel_dp_mst.c b/drivers/gpu/drm/i915/display/intel_dp_mst.c
index b729e27cdde2..95abc6ea85eb 100644
--- a/drivers/gpu/drm/i915/display/intel_dp_mst.c
+++ b/drivers/gpu/drm/i915/display/intel_dp_mst.c
@@ -111,7 +111,7 @@  static int intel_dp_mst_max_dpt_bpp(const struct intel_crtc_state *crtc_state,
 		&crtc_state->hw.adjusted_mode;
 
 	if (!intel_dp_is_uhbr(crtc_state) || DISPLAY_VER(display) >= 20 || !dsc)
-		return INT_MAX;
+		return 0;
 
 	/*
 	 * DSC->DPT interface width:
@@ -248,7 +248,7 @@  int intel_dp_mtp_tu_compute_config(struct intel_dp *intel_dp,
 	}
 
 	max_dpt_bpp_x16 = fxp_q4_from_int(intel_dp_mst_max_dpt_bpp(crtc_state, dsc));
-	if (max_bpp_x16 > max_dpt_bpp_x16) {
+	if (max_dpt_bpp_x16 && max_bpp_x16 > max_dpt_bpp_x16) {
 		drm_dbg_kms(display->drm, "Limiting bpp to max DPT bpp (" FXP_Q4_FMT " -> " FXP_Q4_FMT ")\n",
 			    FXP_Q4_ARGS(max_bpp_x16), FXP_Q4_ARGS(max_dpt_bpp_x16));
 		max_bpp_x16 = max_dpt_bpp_x16;