All of lore.kernel.org
 help / color / mirror / Atom feed
From: Ramalingam C <ramalingam.c@intel.com>
To: intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org,
	daniel@ffwll.ch
Cc: gwan-gyeong.mun@intel.com
Subject: [PATCH v4 07/13] drm/i915: SRM revocation check for HDCP1.4 and 2.2
Date: Fri,  5 Apr 2019 14:12:56 +0530	[thread overview]
Message-ID: <20190405084302.5548-8-ramalingam.c@intel.com> (raw)
In-Reply-To: <20190405084302.5548-1-ramalingam.c@intel.com>

DRM HDCP SRM revocation check services are used from I915 for HDCP1.4
and 2.2 revocation check during the respective authentication flow.

Signed-off-by: Ramalingam C <ramalingam.c@intel.com>
---
 drivers/gpu/drm/i915/intel_hdcp.c | 25 ++++++++++++++++++++++++-
 1 file changed, 24 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/i915/intel_hdcp.c b/drivers/gpu/drm/i915/intel_hdcp.c
index 19130f9b970d..6982a2e6cf9a 100644
--- a/drivers/gpu/drm/i915/intel_hdcp.c
+++ b/drivers/gpu/drm/i915/intel_hdcp.c
@@ -531,6 +531,11 @@ int intel_hdcp_auth_downstream(struct intel_digital_port *intel_dig_port,
 	if (ret)
 		goto err;
 
+	if (drm_hdcp_ksvs_revocated(ksv_fifo, num_downstream)) {
+		DRM_ERROR("Revocated Ksv(s) in ksv_fifo\n");
+		return -EPERM;
+	}
+
 	/*
 	 * When V prime mismatches, DP Spec mandates re-read of
 	 * V prime atleast twice.
@@ -625,6 +630,11 @@ static int intel_hdcp_auth(struct intel_digital_port *intel_dig_port,
 	if (ret < 0)
 		return ret;
 
+	if (drm_hdcp_ksvs_revocated(bksv.shim, 1)) {
+		DRM_ERROR("BKSV is revocated\n");
+		return -EPERM;
+	}
+
 	I915_WRITE(PORT_HDCP_BKSVLO(port), bksv.reg[0]);
 	I915_WRITE(PORT_HDCP_BKSVHI(port), bksv.reg[1]);
 
@@ -1193,6 +1203,11 @@ static int hdcp2_authentication_key_exchange(struct intel_connector *connector)
 
 	hdcp->is_repeater = HDCP_2_2_RX_REPEATER(msgs.send_cert.rx_caps[2]);
 
+	if (drm_hdcp_ksvs_revocated(msgs.send_cert.cert_rx.receiver_id, 1)) {
+		DRM_ERROR("Receiver ID is revocated\n");
+		return -EPERM;
+	}
+
 	/*
 	 * Here msgs.no_stored_km will hold msgs corresponding to the km
 	 * stored also.
@@ -1350,8 +1365,8 @@ int hdcp2_authenticate_repeater_topology(struct intel_connector *connector)
 		struct hdcp2_rep_send_ack rep_ack;
 	} msgs;
 	const struct intel_hdcp_shim *shim = hdcp->shim;
+	u32 seq_num_v, device_cnt;
 	u8 *rx_info;
-	u32 seq_num_v;
 	int ret;
 
 	ret = shim->read_2_2_msg(intel_dig_port, HDCP_2_2_REP_SEND_RECVID_LIST,
@@ -1376,6 +1391,14 @@ int hdcp2_authenticate_repeater_topology(struct intel_connector *connector)
 		return -EINVAL;
 	}
 
+	device_cnt = HDCP_2_2_DEV_COUNT_HI(rx_info[0]) << 4 ||
+			HDCP_2_2_DEV_COUNT_LO(rx_info[1]);
+	if (drm_hdcp_ksvs_revocated(msgs.recvid_list.receiver_ids,
+				    device_cnt)) {
+		DRM_ERROR("Revoked receiver ID(s) is in list\n");
+		return -EPERM;
+	}
+
 	ret = hdcp2_verify_rep_topology_prepare_ack(connector,
 						    &msgs.recvid_list,
 						    &msgs.rep_ack);
-- 
2.19.1

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

  parent reply	other threads:[~2019-04-05  8:42 UTC|newest]

Thread overview: 29+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-04-05  8:42 [PATCH v4 00/13] HDCP2.2 Phase II Ramalingam C
2019-04-05  8:42 ` [PATCH v4 01/13] drm: move content protection property to mode_config Ramalingam C
2019-04-05  8:42 ` [PATCH v4 02/13] drm/i915: debugfs: HDCP2.2 capability read Ramalingam C
2019-04-05  8:42 ` [PATCH v4 03/13] drm: Add Content protection type property Ramalingam C
2019-04-05  8:42 ` [PATCH v4 04/13] drm/i915: Attach content " Ramalingam C
2019-04-05  8:42 ` [PATCH v4 05/13] drivers: create binary sysfs for class Ramalingam C
2019-04-05  9:23   ` Greg Kroah-Hartman
2019-04-05 10:36     ` Ramalingam C
2019-04-05 12:32       ` Greg Kroah-Hartman
2019-04-15 12:41         ` Ramalingam C
2019-04-15 14:47           ` Greg Kroah-Hartman
2019-04-15 17:14             ` Ramalingam C
2019-04-15 18:01               ` Greg Kroah-Hartman
2019-04-15 19:14                 ` Daniel Vetter
2019-04-16  9:04                   ` Greg Kroah-Hartman
2019-04-16  9:25                     ` Daniel Vetter
2019-04-05  8:42 ` [PATCH v4 06/13] drm: HDCP SRM binary sysfs for subsystem Ramalingam C
2019-04-05  8:42 ` Ramalingam C [this message]
2019-04-05  8:42 ` [PATCH v4 08/13] drm/hdcp: gathering hdcp related code into drm_hdcp.c Ramalingam C
2019-04-05  8:42 ` [PATCH v4 09/13] drm: uevent for connector status change Ramalingam C
2019-04-05  8:42 ` [PATCH v4 10/13] drm/hdcp: update content protection property with uevent Ramalingam C
2019-04-05  8:43 ` [PATCH v4 11/13] drm/i915: update the hdcp state " Ramalingam C
2019-04-05  8:43 ` [PATCH v4 12/13] drm: Add CP downstream_info property Ramalingam C
2019-04-05  8:43 ` [PATCH v4 13/13] drm/i915: Populate downstream info for HDCP Ramalingam C
2019-04-05 12:03   ` Ramalingam C
2019-04-05 11:16 ` ✗ Fi.CI.CHECKPATCH: warning for HDCP2.2 Phase II (rev5) Patchwork
2019-04-05 11:26 ` ✗ Fi.CI.SPARSE: " Patchwork
2019-04-05 11:41 ` ✓ Fi.CI.BAT: success " Patchwork
2019-04-06  7:11 ` ✓ Fi.CI.IGT: " 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=20190405084302.5548-8-ramalingam.c@intel.com \
    --to=ramalingam.c@intel.com \
    --cc=daniel@ffwll.ch \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=gwan-gyeong.mun@intel.com \
    --cc=intel-gfx@lists.freedesktop.org \
    /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.