All of lore.kernel.org
 help / color / mirror / Atom feed
From: "CK Hu (胡俊光)" <ck.hu@mediatek.com>
To: "Mac Shen (沈俊)" <Mac.Shen@mediatek.com>,
	"chunkuang.hu@kernel.org" <chunkuang.hu@kernel.org>,
	"Jitao Shi (石记涛)" <jitao.shi@mediatek.com>,
	"daniel@ffwll.ch" <daniel@ffwll.ch>,
	"p.zabel@pengutronix.de" <p.zabel@pengutronix.de>,
	"airlied@gmail.com" <airlied@gmail.com>,
	"matthias.bgg@gmail.com" <matthias.bgg@gmail.com>,
	"angelogioacchino.delregno@collabora.com"
	<angelogioacchino.delregno@collabora.com>
Cc: "dri-devel@lists.freedesktop.org"
	<dri-devel@lists.freedesktop.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"linux-mediatek@lists.infradead.org"
	<linux-mediatek@lists.infradead.org>,
	"linux-arm-kernel@lists.infradead.org"
	<linux-arm-kernel@lists.infradead.org>,
	"Shuijing Li (李水静)" <Shuijing.Li@mediatek.com>
Subject: Re: [PATCH v3 2/3] Subject: [PATCH] drm/mediatek/dp: Add HDCP2.x feature for DisplayPort
Date: Thu, 18 Jul 2024 06:23:14 +0000	[thread overview]
Message-ID: <2fd0c2ffd18bb9ab26a033c9e308626d70a9edbf.camel@mediatek.com> (raw)
In-Reply-To: <20240608120219.21817-3-mac.shen@mediatek.com>

Hi, Mac:

On Sat, 2024-06-08 at 20:01 +0800, mac.shen wrote:
> Changes in v3:
> - refine the function to get system time
> - refine the flow to do HDCP with content type and
>   protection value which set by user space
> - refine the flow to update content protection
> - refine the flow to do HDCP2.x authentication
> per suggestion from the previous thread:
> https://urldefense.com/v3/__https://patchwork.kernel.org/project/linux-mediatek__;!!CTRNKA9wMg0ARbw!md6xUiYN88D2YmETs8FQgaExM2zH8S1SmAEU9GRchwpNsXOyDFul3ziVKhRpCJaj8Rcn-gvM-801runjwA$ 
> /patch/20240205055055.25340-3-mac.shen@mediatek.com/
> 
> Signed-off-by: mac.shen <mac.shen@mediatek.com>
> ---

[snip]

> +/* Authentication flow starts from here */
> +static int dp_tx_hdcp2x_key_exchange(struct mtk_hdcp_info *hdcp_info)
> +{
> +	struct mtk_dp *mtk_dp = container_of(hdcp_info, struct mtk_dp, hdcp_info);
> +	bool stored;
> +	int ret;
> +
> +	if (!hdcp_info->hdcp2_info.capable)
> +		return -EAGAIN;
> +
> +	ret = dp_tx_hdcp2x_init(hdcp_info);
> +	if (ret)
> +		return ret;
> +
> +	ret = dp_tx_hdcp2x_write_ake_init(hdcp_info);
> +	if (ret)
> +		return ret;
> +
> +	ret = dp_tx_hdcp2x_read_ake_send_cert(hdcp_info);
> +	if (ret)
> +		return ret;
> +
> +	hdcp_info->hdcp2_info.repeater =
> +		HDCP_2_2_RX_REPEATER(hdcp_info->hdcp2_info.hdcp_rx.send_cert.rx_caps[2]);
> +
> +	if (drm_hdcp_check_ksvs_revoked(mtk_dp->drm_dev,
> +					hdcp_info->hdcp2_info.hdcp_rx.send_cert.cert_rx.receiver_id,
> +					1) > 0) {
> +		dev_err(mtk_dp->dev, "[HDCP2.X] Receiver ID is revoked\n");
> +		return -EPERM;
> +	}
> +
> +	ret = tee_ake_certificate(hdcp_info,
> +				  (u8 *)&hdcp_info->hdcp2_info.hdcp_rx.cert_rx, &stored,
> +		hdcp_info->hdcp2_info.ake_stored_km.e_kh_km_m +
> +		HDCP_2_2_E_KH_KM_LEN,
> +		hdcp_info->hdcp2_info.ake_stored_km.e_kh_km_m);
> +	if (ret)
> +		return ret;
> +
> +	hdcp_info->hdcp2_info.stored_km = stored;
> +
> +	if (!hdcp_info->hdcp2_info.stored_km) {
> +		ret = tee_enc_rsaes_oaep(hdcp_info,
> +					 hdcp_info->hdcp2_info.hdcp_tx.no_stored_km.e_kpub_km);
> +		if (ret)
> +			return ret;
> +
> +		ret = dp_tx_hdcp2x_write_ake_no_stored_km(hdcp_info);
> +		if (ret)
> +			return ret;
> +
> +	} else {
> +		ret = dp_tx_hdcp2x_write_ake_stored_km(hdcp_info);
> +		if (ret)
> +			return ret;
> +	}
> +
> +	ret = dp_tx_hdcp2x_read_ake_send_hprime(hdcp_info);
> +	if (ret)
> +		return ret;
> +
> +	ret = tee_ake_h_prime(hdcp_info,
> +			      hdcp_info->hdcp2_info.hdcp_tx.ake_init.r_tx,
> +		hdcp_info->hdcp2_info.hdcp_rx.send_cert.r_rx,
> +		hdcp_info->hdcp2_info.hdcp_rx.send_cert.rx_caps,
> +		(u8 *)&hdcp_info->hdcp2_info.hdcp_tx.tx_caps,
> +		hdcp_info->hdcp2_info.hdcp_rx.send_hprime.h_prime,
> +		HDCP_2_2_H_PRIME_LEN);

hdcp_info->hdcp2_info.hdcp_tx.ake_init,
hdcp_info->hdcp2_info.hdcp_rx.send_cert,
hdcp_info->hdcp2_info.hdcp_rx.send_hprime,
hdcp_info->hdcp2_info.hdcp_tx.no_stored_km,
hdcp_info->hdcp2_info.stored_km,
hdcp_info->hdcp2_info.hdcp_rx.pairing_info

are used only in dp_tx_hdcp2x_key_exchange(), so make them as local variable in dp_tx_hdcp2x_key_exchange().

hdcp_info->hdcp2_info.hdcp_tx.tx_caps is constant value, so use t_tx_caps[] directly instead of using hdcp_info->hdcp2_info.hdcp_tx.tx_caps.

Regards,
CK

> +	if (ret) {
> +		if (hdcp_info->hdcp2_info.stored_km)
> +			tee_clear_paring(hdcp_info);
> +		return ret;
> +	}
> +
> +	if (!hdcp_info->hdcp2_info.stored_km) {
> +		ret = dp_tx_hdcp2x_read_ake_send_pairing_info(hdcp_info);
> +		if (ret)
> +			return ret;
> +
> +		/* Store m, km, Ekh(km) */
> +		ret = tee_ake_paring(hdcp_info,
> +				     hdcp_info->hdcp2_info.hdcp_rx.pairing_info.e_kh_km);
> +		if (ret)
> +			return ret;
> +	}
> +
> +	return 0;
> +}
> +

WARNING: multiple messages have this Message-ID (diff)
From: "CK Hu (胡俊光)" <ck.hu@mediatek.com>
To: "Mac Shen (沈俊)" <Mac.Shen@mediatek.com>,
	"chunkuang.hu@kernel.org" <chunkuang.hu@kernel.org>,
	"Jitao Shi (石记涛)" <jitao.shi@mediatek.com>,
	"daniel@ffwll.ch" <daniel@ffwll.ch>,
	"p.zabel@pengutronix.de" <p.zabel@pengutronix.de>,
	"airlied@gmail.com" <airlied@gmail.com>,
	"matthias.bgg@gmail.com" <matthias.bgg@gmail.com>,
	"angelogioacchino.delregno@collabora.com"
	<angelogioacchino.delregno@collabora.com>
Cc: "dri-devel@lists.freedesktop.org"
	<dri-devel@lists.freedesktop.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"linux-mediatek@lists.infradead.org"
	<linux-mediatek@lists.infradead.org>,
	"linux-arm-kernel@lists.infradead.org"
	<linux-arm-kernel@lists.infradead.org>,
	"Shuijing Li (李水静)" <Shuijing.Li@mediatek.com>
Subject: Re: [PATCH v3 2/3] Subject: [PATCH] drm/mediatek/dp: Add HDCP2.x feature for DisplayPort
Date: Thu, 18 Jul 2024 06:23:14 +0000	[thread overview]
Message-ID: <2fd0c2ffd18bb9ab26a033c9e308626d70a9edbf.camel@mediatek.com> (raw)
In-Reply-To: <20240608120219.21817-3-mac.shen@mediatek.com>

[-- Attachment #1: Type: text/plain, Size: 3805 bytes --]

Hi, Mac:

On Sat, 2024-06-08 at 20:01 +0800, mac.shen wrote:
> Changes in v3:
> - refine the function to get system time
> - refine the flow to do HDCP with content type and
>   protection value which set by user space
> - refine the flow to update content protection
> - refine the flow to do HDCP2.x authentication
> per suggestion from the previous thread:
> https://urldefense.com/v3/__https://patchwork.kernel.org/project/linux-mediatek__;!!CTRNKA9wMg0ARbw!md6xUiYN88D2YmETs8FQgaExM2zH8S1SmAEU9GRchwpNsXOyDFul3ziVKhRpCJaj8Rcn-gvM-801runjwA$ 
> /patch/20240205055055.25340-3-mac.shen@mediatek.com/
> 
> Signed-off-by: mac.shen <mac.shen@mediatek.com>
> ---

[snip]

> +/* Authentication flow starts from here */
> +static int dp_tx_hdcp2x_key_exchange(struct mtk_hdcp_info *hdcp_info)
> +{
> +	struct mtk_dp *mtk_dp = container_of(hdcp_info, struct mtk_dp, hdcp_info);
> +	bool stored;
> +	int ret;
> +
> +	if (!hdcp_info->hdcp2_info.capable)
> +		return -EAGAIN;
> +
> +	ret = dp_tx_hdcp2x_init(hdcp_info);
> +	if (ret)
> +		return ret;
> +
> +	ret = dp_tx_hdcp2x_write_ake_init(hdcp_info);
> +	if (ret)
> +		return ret;
> +
> +	ret = dp_tx_hdcp2x_read_ake_send_cert(hdcp_info);
> +	if (ret)
> +		return ret;
> +
> +	hdcp_info->hdcp2_info.repeater =
> +		HDCP_2_2_RX_REPEATER(hdcp_info->hdcp2_info.hdcp_rx.send_cert.rx_caps[2]);
> +
> +	if (drm_hdcp_check_ksvs_revoked(mtk_dp->drm_dev,
> +					hdcp_info->hdcp2_info.hdcp_rx.send_cert.cert_rx.receiver_id,
> +					1) > 0) {
> +		dev_err(mtk_dp->dev, "[HDCP2.X] Receiver ID is revoked\n");
> +		return -EPERM;
> +	}
> +
> +	ret = tee_ake_certificate(hdcp_info,
> +				  (u8 *)&hdcp_info->hdcp2_info.hdcp_rx.cert_rx, &stored,
> +		hdcp_info->hdcp2_info.ake_stored_km.e_kh_km_m +
> +		HDCP_2_2_E_KH_KM_LEN,
> +		hdcp_info->hdcp2_info.ake_stored_km.e_kh_km_m);
> +	if (ret)
> +		return ret;
> +
> +	hdcp_info->hdcp2_info.stored_km = stored;
> +
> +	if (!hdcp_info->hdcp2_info.stored_km) {
> +		ret = tee_enc_rsaes_oaep(hdcp_info,
> +					 hdcp_info->hdcp2_info.hdcp_tx.no_stored_km.e_kpub_km);
> +		if (ret)
> +			return ret;
> +
> +		ret = dp_tx_hdcp2x_write_ake_no_stored_km(hdcp_info);
> +		if (ret)
> +			return ret;
> +
> +	} else {
> +		ret = dp_tx_hdcp2x_write_ake_stored_km(hdcp_info);
> +		if (ret)
> +			return ret;
> +	}
> +
> +	ret = dp_tx_hdcp2x_read_ake_send_hprime(hdcp_info);
> +	if (ret)
> +		return ret;
> +
> +	ret = tee_ake_h_prime(hdcp_info,
> +			      hdcp_info->hdcp2_info.hdcp_tx.ake_init.r_tx,
> +		hdcp_info->hdcp2_info.hdcp_rx.send_cert.r_rx,
> +		hdcp_info->hdcp2_info.hdcp_rx.send_cert.rx_caps,
> +		(u8 *)&hdcp_info->hdcp2_info.hdcp_tx.tx_caps,
> +		hdcp_info->hdcp2_info.hdcp_rx.send_hprime.h_prime,
> +		HDCP_2_2_H_PRIME_LEN);

hdcp_info->hdcp2_info.hdcp_tx.ake_init,
hdcp_info->hdcp2_info.hdcp_rx.send_cert,
hdcp_info->hdcp2_info.hdcp_rx.send_hprime,
hdcp_info->hdcp2_info.hdcp_tx.no_stored_km,
hdcp_info->hdcp2_info.stored_km,
hdcp_info->hdcp2_info.hdcp_rx.pairing_info

are used only in dp_tx_hdcp2x_key_exchange(), so make them as local variable in dp_tx_hdcp2x_key_exchange().

hdcp_info->hdcp2_info.hdcp_tx.tx_caps is constant value, so use t_tx_caps[] directly instead of using hdcp_info->hdcp2_info.hdcp_tx.tx_caps.

Regards,
CK

> +	if (ret) {
> +		if (hdcp_info->hdcp2_info.stored_km)
> +			tee_clear_paring(hdcp_info);
> +		return ret;
> +	}
> +
> +	if (!hdcp_info->hdcp2_info.stored_km) {
> +		ret = dp_tx_hdcp2x_read_ake_send_pairing_info(hdcp_info);
> +		if (ret)
> +			return ret;
> +
> +		/* Store m, km, Ekh(km) */
> +		ret = tee_ake_paring(hdcp_info,
> +				     hdcp_info->hdcp2_info.hdcp_rx.pairing_info.e_kh_km);
> +		if (ret)
> +			return ret;
> +	}
> +
> +	return 0;
> +}
> +

[-- Attachment #2: Type: text/html, Size: 6231 bytes --]

  parent reply	other threads:[~2024-07-18  6:23 UTC|newest]

Thread overview: 42+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-06-08 12:01 [PATCH v3 0/3] Add HDCP feature for DisplayPort mac.shen
2024-06-08 12:01 ` mac.shen
2024-06-08 12:01 ` [PATCH v3 1/3] Subject: [PATCH] drm/mediatek/dp: Add tee client application for HDCP feature mac.shen
2024-06-08 12:01   ` mac.shen
2024-06-08 12:01 ` [PATCH v3 2/3] Subject: [PATCH] drm/mediatek/dp: Add HDCP2.x feature for DisplayPort mac.shen
2024-06-08 12:01   ` mac.shen
2024-07-18  5:41   ` CK Hu (胡俊光)
2024-07-18  5:41     ` CK Hu (胡俊光)
2024-07-18  6:23   ` CK Hu (胡俊光) [this message]
2024-07-18  6:23     ` CK Hu (胡俊光)
2024-07-18  7:48   ` CK Hu (胡俊光)
2024-07-18  7:48     ` CK Hu (胡俊光)
2024-07-19  4:05   ` CK Hu (胡俊光)
2024-07-19  4:05     ` CK Hu (胡俊光)
2024-07-23  7:16   ` CK Hu (胡俊光)
2024-07-23  7:16     ` CK Hu (胡俊光)
2024-08-12  7:05   ` CK Hu (胡俊光)
2024-08-12  7:05     ` CK Hu (胡俊光)
2024-08-12  7:25   ` CK Hu (胡俊光)
2024-08-12  7:25     ` CK Hu (胡俊光)
2024-08-22  5:39   ` CK Hu (胡俊光)
2024-08-22  5:39     ` CK Hu (胡俊光)
2024-08-22  6:20   ` CK Hu (胡俊光)
2024-08-22  6:20     ` CK Hu (胡俊光)
2024-08-23  1:07   ` CK Hu (胡俊光)
2024-08-23  1:07     ` CK Hu (胡俊光)
2024-08-23  2:44   ` CK Hu (胡俊光)
2024-08-23  2:44     ` CK Hu (胡俊光)
2024-08-23  7:30   ` CK Hu (胡俊光)
2024-08-23  7:30     ` CK Hu (胡俊光)
2024-10-30  8:20   ` CK Hu (胡俊光)
2024-10-30  8:20     ` CK Hu (胡俊光)
2024-11-01  7:18   ` CK Hu (胡俊光)
2024-11-01  7:18     ` CK Hu (胡俊光)
2024-11-07  7:05     ` CK Hu (胡俊光)
2024-11-07  7:05       ` CK Hu (胡俊光)
2024-11-01  9:01   ` CK Hu (胡俊光)
2024-11-01  9:01     ` CK Hu (胡俊光)
2024-06-08 12:01 ` [PATCH v3 3/3] Subject: [PATCH] drm/mediatek/dp: Add HDCP1.x " mac.shen
2024-06-08 12:01   ` mac.shen
2024-08-30  9:03   ` CK Hu (胡俊光)
2024-08-30  9:03     ` CK Hu (胡俊光)

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=2fd0c2ffd18bb9ab26a033c9e308626d70a9edbf.camel@mediatek.com \
    --to=ck.hu@mediatek.com \
    --cc=Mac.Shen@mediatek.com \
    --cc=Shuijing.Li@mediatek.com \
    --cc=airlied@gmail.com \
    --cc=angelogioacchino.delregno@collabora.com \
    --cc=chunkuang.hu@kernel.org \
    --cc=daniel@ffwll.ch \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=jitao.shi@mediatek.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mediatek@lists.infradead.org \
    --cc=matthias.bgg@gmail.com \
    --cc=p.zabel@pengutronix.de \
    /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.