From: sashiko-bot@kernel.org
To: "Xiao Lu" <xiaolu.xie@intel.com>
Cc: intel-gfx@lists.freedesktop.org
Subject: Re: [PATCH v8] drm/i915/dp: enable DSC passthrough for HDMI 2.1 PCON devices
Date: Wed, 09 Sep 2026 05:29:11 +0000 [thread overview]
Message-ID: <20260909052911.C2EEF1F00A3A@smtp.kernel.org> (raw)
In-Reply-To: <20260909051308.388381-1-xiaolu.xie@intel.com>
Thank you for your contribution! Sashiko AI review found 2 potential issue(s) to consider:
- [High] Incorrect connector reference in MST DSC slice configuration causes unconditional failure.
- [Medium] PCON hardware maximum slice limit is ignored during passthrough configuration.
--
commit 76a629f18177f4364fe642d6c3207fc584a095ea
Author: Xiao Lu <xiaolu.xie@intel.com>
drm/i915/dp: enable DSC passthrough for HDMI 2.1 PCON devices
HDMI 2.1 PCON devices (e.g. Parade PS196) that do not have an internal
DSC encoder can still forward a DSC-compressed stream from the DP source
to the downstream HDMI 2.1 sink unchanged (passthrough mode). The HDMI
sink (e.g. Lenovo ThinkVision Pro 27UD-10) then decompresses the stream
itself. This mode is signalled by DP_DSC_PASSTHROUGH_IS_SUPPORTED (DPCD
0x060 bit1) on the PCON.
> diff --git a/drivers/gpu/drm/i915/display/intel_dp.c b/drivers/gpu/drm/i915/display/intel_dp.c
> index 0cd5e6b5034cf..e0e90219a150d 100644
> --- a/drivers/gpu/drm/i915/display/intel_dp.c
> +++ b/drivers/gpu/drm/i915/display/intel_dp.c
[ ... ]
> @@ -2393,7 +2424,19 @@ int intel_dp_dsc_compute_config(struct intel_dp *intel_dp,
> }
> }
>
> - if (!intel_dp_dsc_get_slice_config(connector, adjusted_mode->crtc_clock,
> + if (connector->dp.pcon_dsc_passthrough) {
> + /*
> + * PCON passthrough: no PCON encoder DPCD, derive slice config
> + * from the downstream HDMI 2.1 sink DSC capabilities in EDID.
> + */
> + if (!intel_dp_pcon_passthrough_dsc_slice_config(intel_dp,
> + pipe_config,
> + &pipe_config->dsc.slice_config)) {
> + drm_dbg_kms(display->drm,
> + "PCON DSC passthrough: no valid slice config\n");
> + return -EINVAL;
> + }
> + } else if (!intel_dp_dsc_get_slice_config(connector, adjusted_mode->crtc_clock,
> adjusted_mode->crtc_hdisplay, num_joined_pipes,
> &pipe_config->dsc.slice_config))
> return -EINVAL;
[ ... ]
> +static bool
> +intel_dp_pcon_passthrough_dsc_slice_config(struct intel_dp *intel_dp,
> + const struct intel_crtc_state *crtc_state,
> + struct intel_dsc_slice_config *config_ret)
> +{
> + struct intel_display *display = to_intel_display(intel_dp);
> + struct intel_connector *connector = intel_dp->attached_connector;
> + const struct drm_display_info *info = &connector->base.display_info;
> + int num_joined_pipes = intel_crtc_num_joined_pipes(crtc_state);
> + int hdmi_throughput = info->hdmi.dsc_cap.clk_per_slice;
> + int hdmi_max_slices = info->hdmi.dsc_cap.max_slices;
> + int target_slices;
> + int slices_per_pipe;
[Severity: High]
Does this code correctly handle MST topologies? The caller
intel_dp_dsc_compute_config() already has the correct connector available, but
does not pass it down. Instead, intel_dp_pcon_passthrough_dsc_slice_config()
derives it via intel_dp->attached_connector.
For an MST topology, this points to the physical root connector (the hub), not
the virtual MST connector corresponding to the display. The root connector's
display_info lacks the downstream HDMI sink's DSC capabilities from EDID, which
causes info->hdmi.dsc_cap.max_slices and clk_per_slice to be zero, leading
intel_hdmi_dsc_get_num_slices() to fail unconditionally.
Should intel_dp_pcon_passthrough_dsc_slice_config() accept an explicit
struct intel_connector * parameter from its caller to ensure MST streams use
the correct EDID capabilities?
> +
> + /*
> + * Derive the required slice count from the downstream HDMI 2.1 sink
> + * DSC capabilities in EDID (not from the PCON encoder DPCD which is
> + * all-zero for passthrough-only devices).
> + */
> + /*
> + * src_max_slice_width: pass INT_MAX so the HDMI spec limit of 2720px
> + * applies; the source VDSC HW limit (5120px) is higher so it is not
> + * the binding constraint here.
> + * src_max_slices: use hdmi_max_slices as the binding upper limit since
> + * the PCON passthrough capability bit (already checked) is the gate;
> + * the for-loop below further constrains to what the Intel VDSC HW can
> + * actually produce.
> + */
> + target_slices = intel_hdmi_dsc_get_num_slices(&crtc_state->hw.adjusted_mode,
> + crtc_state->output_format,
> + hdmi_max_slices, INT_MAX,
> + hdmi_max_slices,
> + hdmi_throughput);
[Severity: Medium]
Does this configuration respect the PCON adapter's passthrough limits?
While intel_dp_mode_valid_with_dsc() properly caps the validated slice count
using the PCON's own passthrough limit from dsc_dpcd, this function directly
passes hdmi_max_slices as the src_max_slices parameter to
intel_hdmi_dsc_get_num_slices().
If the HDMI 2.1 sink supports a higher maximum DSC slice count than the
intermediate PCON adapter, the source VDSC engine could be configured with a
slice count that the PCON cannot forward.
Should this be bounded by the PCON's DPCD slice limit to ensure the source is
not programmed beyond the adapter's capabilities?
> + if (!target_slices)
> + return false;
> +
--
Sashiko AI review · https://sashiko.dev/#/patchset/20260909051308.388381-1-xiaolu.xie@intel.com?part=1
next prev parent reply other threads:[~2026-09-09 5:29 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-09-06 9:41 [PATCH v4] drm/i915/dp: enable DSC passthrough for HDMI 2.1 PCON devices Xiao Lu
2026-09-06 10:00 ` sashiko-bot
2026-09-06 10:23 ` ✓ i915.CI.BAT: success for drm/i915/dp: enable DSC passthrough for HDMI 2.1 PCON devices (rev4) Patchwork
2026-09-06 12:28 ` ✗ i915.CI.Full: failure " Patchwork
2026-09-07 4:41 ` [PATCH v5 1/2] drm/dp/mst: recognize DP-to-HDMI PCON as virtual DPCD in DP-to-DP topology Xiao Lu
2026-09-07 4:41 ` [PATCH v5 2/2] drm/i915/dp: enable DSC passthrough for HDMI 2.1 PCON devices Xiao Lu
2026-09-07 4:56 ` sashiko-bot
2026-09-07 4:53 ` [PATCH v5 1/2] drm/dp/mst: recognize DP-to-HDMI PCON as virtual DPCD in DP-to-DP topology sashiko-bot
2026-09-07 4:44 ` [PATCH v5 0/2] drm/i915/dp: enable DSC passthrough for HDMI 2.1 PCON devices Xiao Lu
2026-09-07 4:44 ` [PATCH v5 1/2] drm/dp/mst: recognize DP-to-HDMI PCON as virtual DPCD in DP-to-DP topology Xiao Lu
2026-09-07 4:54 ` sashiko-bot
2026-09-07 4:44 ` [PATCH v5 2/2] drm/i915/dp: enable DSC passthrough for HDMI 2.1 PCON devices Xiao Lu
2026-09-07 5:04 ` sashiko-bot
2026-09-09 3:35 ` [PATCH v6 1/2] drm/dp/mst: recognize DP-to-HDMI PCON as virtual DPCD in DP-to-DP topology Xiao Lu
2026-09-09 3:35 ` [PATCH v6 2/2] drm/i915/dp: enable DSC passthrough for HDMI 2.1 PCON devices Xiao Lu
2026-09-09 3:47 ` sashiko-bot
2026-09-09 4:10 ` [PATCH v7 1/2] drm/dp/mst: recognize DP-to-HDMI PCON as virtual DPCD in DP-to-DP topology Xiao Lu
2026-09-09 4:10 ` [PATCH v7 2/2] drm/i915/dp: enable DSC passthrough for HDMI 2.1 PCON devices Xiao Lu
2026-09-09 4:21 ` sashiko-bot
2026-09-09 5:13 ` [PATCH v8] " Xiao Lu
2026-09-09 5:29 ` sashiko-bot [this message]
2026-09-09 5:42 ` [PATCH v9] " Xiao Lu
2026-09-09 5:57 ` sashiko-bot
2026-09-09 4:20 ` [PATCH v7 1/2] drm/dp/mst: recognize DP-to-HDMI PCON as virtual DPCD in DP-to-DP topology sashiko-bot
2026-09-07 6:30 ` ✓ i915.CI.BAT: success for drm/i915/dp: enable DSC passthrough for HDMI 2.1 PCON devices (rev7) Patchwork
2026-09-07 11:33 ` ✓ i915.CI.Full: " Patchwork
2026-09-09 3:50 ` ✗ Fi.CI.BUILD: failure for drm/i915/dp: enable DSC passthrough for HDMI 2.1 PCON devices (rev9) Patchwork
2026-09-09 4:24 ` ✗ Fi.CI.BUILD: failure for drm/i915/dp: enable DSC passthrough for HDMI 2.1 PCON devices (rev11) Patchwork
2026-09-09 6:01 ` ✓ i915.CI.BAT: success for drm/i915/dp: enable DSC passthrough for HDMI 2.1 PCON devices (rev12) Patchwork
2026-09-09 6:36 ` ✓ i915.CI.BAT: success for drm/i915/dp: enable DSC passthrough for HDMI 2.1 PCON devices (rev13) Patchwork
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260909052911.C2EEF1F00A3A@smtp.kernel.org \
--to=sashiko-bot@kernel.org \
--cc=intel-gfx@lists.freedesktop.org \
--cc=sashiko-reviews@lists.linux.dev \
--cc=xiaolu.xie@intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.