[PATCH] drm/i915/hdcp: Use HDCP2_STREAM_STATUS to verify content type status

Jani Nikula jani.nikula at linux.intel.com
Thu Jun 19 08:43:33 UTC 2025


On Thu, 19 Jun 2025, Suraj Kandpal <suraj.kandpal at intel.com> wrote:
> From PTL we need to move to using HDCP2_STREAM_STATUS to check if
> the written content type info is the same as we expect since
> HDCP2_AUTH_STREAM is inaccessible to us now.

The commit message talks about "verify" and "check", but in reality it's
just a warning and move on.

When can this happen?

> Signed-off-by: Suraj Kandpal <suraj.kandpal at intel.com>
> ---
>  drivers/gpu/drm/i915/display/intel_dp_hdcp.c | 13 ++++++++++---
>  1 file changed, 10 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_dp_hdcp.c b/drivers/gpu/drm/i915/display/intel_dp_hdcp.c
> index 7bd775fb65a0..131fc0cae13b 100644
> --- a/drivers/gpu/drm/i915/display/intel_dp_hdcp.c
> +++ b/drivers/gpu/drm/i915/display/intel_dp_hdcp.c
> @@ -806,9 +806,11 @@ intel_dp_mst_hdcp2_stream_encryption(struct intel_connector *connector,
>  	enum port port = dig_port->base.port;
>  	int ret;
>  
> -	drm_WARN_ON(display->drm, enable &&
> -		    !!(intel_de_read(display, HDCP2_AUTH_STREAM(display, cpu_transcoder, port))
> -		    & AUTH_STREAM_TYPE) != data->streams[0].stream_type);
> +	if (DISPLAY_VER(display) < 30)
> +		drm_WARN_ON(display->drm, enable &&
> +			    !!(intel_de_read(display,
> +			    HDCP2_AUTH_STREAM(display, cpu_transcoder, port))
> +			    & AUTH_STREAM_TYPE) != data->streams[0].stream_type);

As a side note, can we please stop shoving complex intel_de_reads()
inside a WARN_ON()? Separate the read and conditions for the warn.

Moreover, stream_type is u8, and it's compared some boolean logic.

>  
>  	ret = intel_dp_mst_toggle_hdcp_stream_select(connector, enable);
>  	if (ret)
> @@ -824,6 +826,11 @@ intel_dp_mst_hdcp2_stream_encryption(struct intel_connector *connector,
>  		return -ETIMEDOUT;
>  	}
>  
> +	if (DISPLAY_VER(display) >= 30)
> +		drm_WARN_ON(display->drm, enable &&
> +			    !!(intel_de_read(display,
> +			    HDCP2_STREAM_STATUS(display, cpu_transcoder, port))
> +			    & STREAM_TYPE_STATUS) != data->streams[0].stream_type);

And this is now duplicated in two places.

Please deduplicate and simplify.

BR,
Jani.

>  	return 0;
>  }

-- 
Jani Nikula, Intel


More information about the Intel-gfx mailing list