Intel-GFX Archive on lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 00/10] drm/i915/hdcp: refactor HDCP GSC
@ 2025-04-24 20:01 Jani Nikula
  2025-04-24 20:01 ` [PATCH 01/10] drm/i915/hdcp: remove duplicate declarations Jani Nikula
                   ` (12 more replies)
  0 siblings, 13 replies; 29+ messages in thread
From: Jani Nikula @ 2025-04-24 20:01 UTC (permalink / raw)
  To: intel-gfx, intel-xe; +Cc: jani.nikula

Reduce duplication, clarify interfaces between parts, and stop using
drm_i915_private in the display parts.

Jani Nikula (10):
  drm/i915/hdcp: remove duplicate declarations
  drm/i915/hdcp: deduplicate and refactor HDCP GSC ops initialization
  drm/i915/hdcp: split HDCP GSC message alloc/save responsibilities
  drm/i915/hdcp: rename struct intel_hdcp_gsc_message to
    intel_hdcp_gsc_context
  drm/i915/hdcp: rename HDCP GSC context alloc/free functions
  drm/i915/hdcp: pass the context to the HDCP GSC message interface
  drm/i915/hdcp: switch the HDCP GSC message interface from u8* to void*
  drm/i915/hdcp: simplify HDCP GSC firmware usage selection
  drm/i915/hdcp: pass struct drm_device to driver specific HDCP GSC code
  drm/i915/hdcp: drop unnecessary include from intel_hdcp_gsc.h

 .../gpu/drm/i915/display/intel_display_core.h |   2 +-
 drivers/gpu/drm/i915/display/intel_hdcp.c     |  13 +-
 drivers/gpu/drm/i915/display/intel_hdcp_gsc.c | 124 ++++--------
 drivers/gpu/drm/i915/display/intel_hdcp_gsc.h |  20 +-
 .../drm/i915/display/intel_hdcp_gsc_message.c | 181 ++++++++++++------
 .../drm/i915/display/intel_hdcp_gsc_message.h |  63 +-----
 drivers/gpu/drm/xe/display/xe_hdcp_gsc.c      | 133 ++++---------
 7 files changed, 219 insertions(+), 317 deletions(-)

-- 
2.39.5


^ permalink raw reply	[flat|nested] 29+ messages in thread

* [PATCH 01/10] drm/i915/hdcp: remove duplicate declarations
  2025-04-24 20:01 [PATCH 00/10] drm/i915/hdcp: refactor HDCP GSC Jani Nikula
@ 2025-04-24 20:01 ` Jani Nikula
  2025-04-30  4:10   ` Kandpal, Suraj
  2025-04-24 20:01 ` [PATCH 02/10] drm/i915/hdcp: deduplicate and refactor HDCP GSC ops initialization Jani Nikula
                   ` (11 subsequent siblings)
  12 siblings, 1 reply; 29+ messages in thread
From: Jani Nikula @ 2025-04-24 20:01 UTC (permalink / raw)
  To: intel-gfx, intel-xe; +Cc: jani.nikula, Suraj Kandpal

intel_hdcp_gsc_msg_send() and intel_hdcp_gsc_check_status() are declared
in intel_hdcp_gsc.h.

Cc: Suraj Kandpal <suraj.kandpal@intel.com>
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
 drivers/gpu/drm/i915/display/intel_hdcp_gsc_message.c | 1 +
 drivers/gpu/drm/i915/display/intel_hdcp_gsc_message.h | 5 -----
 2 files changed, 1 insertion(+), 5 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_hdcp_gsc_message.c b/drivers/gpu/drm/i915/display/intel_hdcp_gsc_message.c
index 129104fa9b16..d4620b54beba 100644
--- a/drivers/gpu/drm/i915/display/intel_hdcp_gsc_message.c
+++ b/drivers/gpu/drm/i915/display/intel_hdcp_gsc_message.c
@@ -8,6 +8,7 @@
 
 #include "i915_drv.h"
 #include "intel_display_types.h"
+#include "intel_hdcp_gsc.h"
 #include "intel_hdcp_gsc_message.h"
 
 int
diff --git a/drivers/gpu/drm/i915/display/intel_hdcp_gsc_message.h b/drivers/gpu/drm/i915/display/intel_hdcp_gsc_message.h
index 2d597f27e931..1af2f7c745fd 100644
--- a/drivers/gpu/drm/i915/display/intel_hdcp_gsc_message.h
+++ b/drivers/gpu/drm/i915/display/intel_hdcp_gsc_message.h
@@ -9,7 +9,6 @@
 #include <linux/types.h>
 
 struct device;
-struct drm_i915_private;
 struct hdcp_port_data;
 struct hdcp2_ake_init;
 struct hdcp2_ake_send_cert;
@@ -24,10 +23,6 @@ struct hdcp2_rep_send_ack;
 struct hdcp2_rep_stream_ready;
 struct intel_display;
 
-ssize_t intel_hdcp_gsc_msg_send(struct drm_i915_private *i915, u8 *msg_in,
-				size_t msg_in_len, u8 *msg_out,
-				size_t msg_out_len);
-bool intel_hdcp_gsc_check_status(struct intel_display *display);
 int
 intel_hdcp_gsc_initiate_session(struct device *dev, struct hdcp_port_data *data,
 				struct hdcp2_ake_init *ake_data);
-- 
2.39.5


^ permalink raw reply related	[flat|nested] 29+ messages in thread

* [PATCH 02/10] drm/i915/hdcp: deduplicate and refactor HDCP GSC ops initialization
  2025-04-24 20:01 [PATCH 00/10] drm/i915/hdcp: refactor HDCP GSC Jani Nikula
  2025-04-24 20:01 ` [PATCH 01/10] drm/i915/hdcp: remove duplicate declarations Jani Nikula
@ 2025-04-24 20:01 ` Jani Nikula
  2025-05-02  3:33   ` Kandpal, Suraj
  2025-04-24 20:01 ` [PATCH 03/10] drm/i915/hdcp: split HDCP GSC message alloc/save responsibilities Jani Nikula
                   ` (10 subsequent siblings)
  12 siblings, 1 reply; 29+ messages in thread
From: Jani Nikula @ 2025-04-24 20:01 UTC (permalink / raw)
  To: intel-gfx, intel-xe; +Cc: jani.nikula, Suraj Kandpal

The gsc_hdcp_ops is duplicated and initialized exactly the same way in
two different places (for i915 and xe), and requires forward
declarations for all the hooks. Deduplicate, and make the functions
static.

There are slight differences in the i915 and xe implementations of
intel_hdcp_gsc_init() and intel_hdcp_gsc_fini(). Take the best of both,
and improve.

We need to expose intel_hdcp_gsc_hdcp2_init() and
intel_hdcp_gsc_free_message() for this, and create the latter for xe.

Cc: Suraj Kandpal <suraj.kandpal@intel.com>
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
 drivers/gpu/drm/i915/display/intel_hdcp.c     |  1 +
 drivers/gpu/drm/i915/display/intel_hdcp_gsc.c | 46 +---------
 drivers/gpu/drm/i915/display/intel_hdcp_gsc.h |  5 +-
 .../drm/i915/display/intel_hdcp_gsc_message.c | 84 +++++++++++++++----
 .../drm/i915/display/intel_hdcp_gsc_message.h | 58 +------------
 drivers/gpu/drm/xe/display/xe_hdcp_gsc.c      | 50 +----------
 6 files changed, 79 insertions(+), 165 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_hdcp.c b/drivers/gpu/drm/i915/display/intel_hdcp.c
index 411f17655f89..4857685c4020 100644
--- a/drivers/gpu/drm/i915/display/intel_hdcp.c
+++ b/drivers/gpu/drm/i915/display/intel_hdcp.c
@@ -27,6 +27,7 @@
 #include "intel_dp_mst.h"
 #include "intel_hdcp.h"
 #include "intel_hdcp_gsc.h"
+#include "intel_hdcp_gsc_message.h"
 #include "intel_hdcp_regs.h"
 #include "intel_hdcp_shim.h"
 #include "intel_pcode.h"
diff --git a/drivers/gpu/drm/i915/display/intel_hdcp_gsc.c b/drivers/gpu/drm/i915/display/intel_hdcp_gsc.c
index 55965844d829..92a3ad2166f6 100644
--- a/drivers/gpu/drm/i915/display/intel_hdcp_gsc.c
+++ b/drivers/gpu/drm/i915/display/intel_hdcp_gsc.c
@@ -11,7 +11,6 @@
 #include "i915_drv.h"
 #include "i915_utils.h"
 #include "intel_hdcp_gsc.h"
-#include "intel_hdcp_gsc_message.h"
 
 struct intel_hdcp_gsc_message {
 	struct i915_vma *vma;
@@ -91,23 +90,7 @@ static int intel_hdcp_gsc_initialize_message(struct drm_i915_private *i915,
 	return err;
 }
 
-static const struct i915_hdcp_ops gsc_hdcp_ops = {
-	.initiate_hdcp2_session = intel_hdcp_gsc_initiate_session,
-	.verify_receiver_cert_prepare_km =
-				intel_hdcp_gsc_verify_receiver_cert_prepare_km,
-	.verify_hprime = intel_hdcp_gsc_verify_hprime,
-	.store_pairing_info = intel_hdcp_gsc_store_pairing_info,
-	.initiate_locality_check = intel_hdcp_gsc_initiate_locality_check,
-	.verify_lprime = intel_hdcp_gsc_verify_lprime,
-	.get_session_key = intel_hdcp_gsc_get_session_key,
-	.repeater_check_flow_prepare_ack =
-				intel_hdcp_gsc_repeater_check_flow_prepare_ack,
-	.verify_mprime = intel_hdcp_gsc_verify_mprime,
-	.enable_hdcp_authentication = intel_hdcp_gsc_enable_authentication,
-	.close_hdcp_session = intel_hdcp_gsc_close_session,
-};
-
-static int intel_hdcp_gsc_hdcp2_init(struct intel_display *display)
+int intel_hdcp_gsc_hdcp2_init(struct intel_display *display)
 {
 	struct drm_i915_private *i915 = to_i915(display->drm);
 	struct intel_hdcp_gsc_message *hdcp_message;
@@ -131,7 +114,7 @@ static int intel_hdcp_gsc_hdcp2_init(struct intel_display *display)
 	return ret;
 }
 
-static void intel_hdcp_gsc_free_message(struct intel_display *display)
+void intel_hdcp_gsc_free_message(struct intel_display *display)
 {
 	struct intel_hdcp_gsc_message *hdcp_message =
 					display->hdcp.hdcp_message;
@@ -142,31 +125,6 @@ static void intel_hdcp_gsc_free_message(struct intel_display *display)
 	kfree(hdcp_message);
 }
 
-int intel_hdcp_gsc_init(struct intel_display *display)
-{
-	struct i915_hdcp_arbiter *data;
-	int ret;
-
-	data = kzalloc(sizeof(struct i915_hdcp_arbiter), GFP_KERNEL);
-	if (!data)
-		return -ENOMEM;
-
-	mutex_lock(&display->hdcp.hdcp_mutex);
-	display->hdcp.arbiter = data;
-	display->hdcp.arbiter->hdcp_dev = display->drm->dev;
-	display->hdcp.arbiter->ops = &gsc_hdcp_ops;
-	ret = intel_hdcp_gsc_hdcp2_init(display);
-	mutex_unlock(&display->hdcp.hdcp_mutex);
-
-	return ret;
-}
-
-void intel_hdcp_gsc_fini(struct intel_display *display)
-{
-	intel_hdcp_gsc_free_message(display);
-	kfree(display->hdcp.arbiter);
-}
-
 static int intel_gsc_send_sync(struct drm_i915_private *i915,
 			       struct intel_gsc_mtl_header *header_in,
 			       struct intel_gsc_mtl_header *header_out,
diff --git a/drivers/gpu/drm/i915/display/intel_hdcp_gsc.h b/drivers/gpu/drm/i915/display/intel_hdcp_gsc.h
index 5695a5e4f609..ad41e7e80095 100644
--- a/drivers/gpu/drm/i915/display/intel_hdcp_gsc.h
+++ b/drivers/gpu/drm/i915/display/intel_hdcp_gsc.h
@@ -17,8 +17,9 @@ bool intel_hdcp_gsc_cs_required(struct intel_display *display);
 ssize_t intel_hdcp_gsc_msg_send(struct drm_i915_private *i915, u8 *msg_in,
 				size_t msg_in_len, u8 *msg_out,
 				size_t msg_out_len);
-int intel_hdcp_gsc_init(struct intel_display *display);
-void intel_hdcp_gsc_fini(struct intel_display *display);
 bool intel_hdcp_gsc_check_status(struct intel_display *display);
 
+int intel_hdcp_gsc_hdcp2_init(struct intel_display *display);
+void intel_hdcp_gsc_free_message(struct intel_display *display);
+
 #endif /* __INTEL_HDCP_GCS_H__ */
diff --git a/drivers/gpu/drm/i915/display/intel_hdcp_gsc_message.c b/drivers/gpu/drm/i915/display/intel_hdcp_gsc_message.c
index d4620b54beba..8e2aafff71d5 100644
--- a/drivers/gpu/drm/i915/display/intel_hdcp_gsc_message.c
+++ b/drivers/gpu/drm/i915/display/intel_hdcp_gsc_message.c
@@ -11,7 +11,7 @@
 #include "intel_hdcp_gsc.h"
 #include "intel_hdcp_gsc_message.h"
 
-int
+static int
 intel_hdcp_gsc_initiate_session(struct device *dev, struct hdcp_port_data *data,
 				struct hdcp2_ake_init *ake_data)
 {
@@ -65,7 +65,7 @@ intel_hdcp_gsc_initiate_session(struct device *dev, struct hdcp_port_data *data,
 	return 0;
 }
 
-int
+static int
 intel_hdcp_gsc_verify_receiver_cert_prepare_km(struct device *dev,
 					       struct hdcp_port_data *data,
 					       struct hdcp2_ake_send_cert *rx_cert,
@@ -135,7 +135,7 @@ intel_hdcp_gsc_verify_receiver_cert_prepare_km(struct device *dev,
 	return 0;
 }
 
-int
+static int
 intel_hdcp_gsc_verify_hprime(struct device *dev, struct hdcp_port_data *data,
 			     struct hdcp2_ake_send_hprime *rx_hprime)
 {
@@ -185,7 +185,7 @@ intel_hdcp_gsc_verify_hprime(struct device *dev, struct hdcp_port_data *data,
 	return 0;
 }
 
-int
+static int
 intel_hdcp_gsc_store_pairing_info(struct device *dev, struct hdcp_port_data *data,
 				  struct hdcp2_ake_send_pairing_info *pairing_info)
 {
@@ -237,7 +237,7 @@ intel_hdcp_gsc_store_pairing_info(struct device *dev, struct hdcp_port_data *dat
 	return 0;
 }
 
-int
+static int
 intel_hdcp_gsc_initiate_locality_check(struct device *dev,
 				       struct hdcp_port_data *data,
 				       struct hdcp2_lc_init *lc_init_data)
@@ -286,7 +286,7 @@ intel_hdcp_gsc_initiate_locality_check(struct device *dev,
 	return 0;
 }
 
-int
+static int
 intel_hdcp_gsc_verify_lprime(struct device *dev, struct hdcp_port_data *data,
 			     struct hdcp2_lc_send_lprime *rx_lprime)
 {
@@ -338,9 +338,10 @@ intel_hdcp_gsc_verify_lprime(struct device *dev, struct hdcp_port_data *data,
 	return 0;
 }
 
-int intel_hdcp_gsc_get_session_key(struct device *dev,
-				   struct hdcp_port_data *data,
-				   struct hdcp2_ske_send_eks *ske_data)
+static int
+intel_hdcp_gsc_get_session_key(struct device *dev,
+			       struct hdcp_port_data *data,
+			       struct hdcp2_ske_send_eks *ske_data)
 {
 	struct wired_cmd_get_session_key_in get_skey_in = {};
 	struct wired_cmd_get_session_key_out get_skey_out = {};
@@ -388,7 +389,7 @@ int intel_hdcp_gsc_get_session_key(struct device *dev,
 	return 0;
 }
 
-int
+static int
 intel_hdcp_gsc_repeater_check_flow_prepare_ack(struct device *dev,
 					       struct hdcp_port_data *data,
 					       struct hdcp2_rep_send_receiverid_list
@@ -454,9 +455,10 @@ intel_hdcp_gsc_repeater_check_flow_prepare_ack(struct device *dev,
 	return 0;
 }
 
-int intel_hdcp_gsc_verify_mprime(struct device *dev,
-				 struct hdcp_port_data *data,
-				 struct hdcp2_rep_stream_ready *stream_ready)
+static int
+intel_hdcp_gsc_verify_mprime(struct device *dev,
+			     struct hdcp_port_data *data,
+			     struct hdcp2_rep_stream_ready *stream_ready)
 {
 	struct wired_cmd_repeater_auth_stream_req_in *verify_mprime_in;
 	struct wired_cmd_repeater_auth_stream_req_out verify_mprime_out = {};
@@ -519,8 +521,8 @@ int intel_hdcp_gsc_verify_mprime(struct device *dev,
 	return 0;
 }
 
-int intel_hdcp_gsc_enable_authentication(struct device *dev,
-					 struct hdcp_port_data *data)
+static int intel_hdcp_gsc_enable_authentication(struct device *dev,
+						struct hdcp_port_data *data)
 {
 	struct wired_cmd_enable_auth_in enable_auth_in = {};
 	struct wired_cmd_enable_auth_out enable_auth_out = {};
@@ -566,7 +568,7 @@ int intel_hdcp_gsc_enable_authentication(struct device *dev,
 	return 0;
 }
 
-int
+static int
 intel_hdcp_gsc_close_session(struct device *dev, struct hdcp_port_data *data)
 {
 	struct wired_cmd_close_session_in session_close_in = {};
@@ -612,3 +614,53 @@ intel_hdcp_gsc_close_session(struct device *dev, struct hdcp_port_data *data)
 
 	return 0;
 }
+
+static const struct i915_hdcp_ops gsc_hdcp_ops = {
+	.initiate_hdcp2_session = intel_hdcp_gsc_initiate_session,
+	.verify_receiver_cert_prepare_km =
+				intel_hdcp_gsc_verify_receiver_cert_prepare_km,
+	.verify_hprime = intel_hdcp_gsc_verify_hprime,
+	.store_pairing_info = intel_hdcp_gsc_store_pairing_info,
+	.initiate_locality_check = intel_hdcp_gsc_initiate_locality_check,
+	.verify_lprime = intel_hdcp_gsc_verify_lprime,
+	.get_session_key = intel_hdcp_gsc_get_session_key,
+	.repeater_check_flow_prepare_ack =
+				intel_hdcp_gsc_repeater_check_flow_prepare_ack,
+	.verify_mprime = intel_hdcp_gsc_verify_mprime,
+	.enable_hdcp_authentication = intel_hdcp_gsc_enable_authentication,
+	.close_hdcp_session = intel_hdcp_gsc_close_session,
+};
+
+int intel_hdcp_gsc_init(struct intel_display *display)
+{
+	struct i915_hdcp_arbiter *arbiter;
+	int ret;
+
+	arbiter = kzalloc(sizeof(*arbiter), GFP_KERNEL);
+	if (!arbiter)
+		return -ENOMEM;
+
+	mutex_lock(&display->hdcp.hdcp_mutex);
+
+	ret = intel_hdcp_gsc_hdcp2_init(display);
+	if (ret) {
+		kfree(arbiter);
+		goto out;
+	}
+
+	display->hdcp.arbiter = arbiter;
+	display->hdcp.arbiter->hdcp_dev = display->drm->dev;
+	display->hdcp.arbiter->ops = &gsc_hdcp_ops;
+
+out:
+	mutex_unlock(&display->hdcp.hdcp_mutex);
+
+	return ret;
+}
+
+void intel_hdcp_gsc_fini(struct intel_display *display)
+{
+	intel_hdcp_gsc_free_message(display);
+	kfree(display->hdcp.arbiter);
+	display->hdcp.arbiter = NULL;
+}
diff --git a/drivers/gpu/drm/i915/display/intel_hdcp_gsc_message.h b/drivers/gpu/drm/i915/display/intel_hdcp_gsc_message.h
index 1af2f7c745fd..9f54157a4a3e 100644
--- a/drivers/gpu/drm/i915/display/intel_hdcp_gsc_message.h
+++ b/drivers/gpu/drm/i915/display/intel_hdcp_gsc_message.h
@@ -6,63 +6,9 @@
 #ifndef __INTEL_HDCP_GSC_MESSAGE_H__
 #define __INTEL_HDCP_GSC_MESSAGE_H__
 
-#include <linux/types.h>
-
-struct device;
-struct hdcp_port_data;
-struct hdcp2_ake_init;
-struct hdcp2_ake_send_cert;
-struct hdcp2_ake_no_stored_km;
-struct hdcp2_ake_send_hprime;
-struct hdcp2_ake_send_pairing_info;
-struct hdcp2_lc_init;
-struct hdcp2_lc_send_lprime;
-struct hdcp2_ske_send_eks;
-struct hdcp2_rep_send_receiverid_list;
-struct hdcp2_rep_send_ack;
-struct hdcp2_rep_stream_ready;
 struct intel_display;
 
-int
-intel_hdcp_gsc_initiate_session(struct device *dev, struct hdcp_port_data *data,
-				struct hdcp2_ake_init *ake_data);
-int
-intel_hdcp_gsc_verify_receiver_cert_prepare_km(struct device *dev,
-					       struct hdcp_port_data *data,
-					       struct hdcp2_ake_send_cert *rx_cert,
-					       bool *km_stored,
-					       struct hdcp2_ake_no_stored_km
-					       *ek_pub_km,
-					       size_t *msg_sz);
-int
-intel_hdcp_gsc_verify_hprime(struct device *dev, struct hdcp_port_data *data,
-			     struct hdcp2_ake_send_hprime *rx_hprime);
-int
-intel_hdcp_gsc_store_pairing_info(struct device *dev, struct hdcp_port_data *data,
-				  struct hdcp2_ake_send_pairing_info *pairing_info);
-int
-intel_hdcp_gsc_initiate_locality_check(struct device *dev,
-				       struct hdcp_port_data *data,
-				       struct hdcp2_lc_init *lc_init_data);
-int
-intel_hdcp_gsc_verify_lprime(struct device *dev, struct hdcp_port_data *data,
-			     struct hdcp2_lc_send_lprime *rx_lprime);
-int intel_hdcp_gsc_get_session_key(struct device *dev,
-				   struct hdcp_port_data *data,
-				   struct hdcp2_ske_send_eks *ske_data);
-int
-intel_hdcp_gsc_repeater_check_flow_prepare_ack(struct device *dev,
-					       struct hdcp_port_data *data,
-					       struct hdcp2_rep_send_receiverid_list
-					       *rep_topology,
-					       struct hdcp2_rep_send_ack
-					       *rep_send_ack);
-int intel_hdcp_gsc_verify_mprime(struct device *dev,
-				 struct hdcp_port_data *data,
-				 struct hdcp2_rep_stream_ready *stream_ready);
-int intel_hdcp_gsc_enable_authentication(struct device *dev,
-					 struct hdcp_port_data *data);
-int
-intel_hdcp_gsc_close_session(struct device *dev, struct hdcp_port_data *data);
+int intel_hdcp_gsc_init(struct intel_display *display);
+void intel_hdcp_gsc_fini(struct intel_display *display);
 
 #endif /* __INTEL_HDCP_GSC_MESSAGE_H__ */
diff --git a/drivers/gpu/drm/xe/display/xe_hdcp_gsc.c b/drivers/gpu/drm/xe/display/xe_hdcp_gsc.c
index 7c02323e9531..21cfecf077bf 100644
--- a/drivers/gpu/drm/xe/display/xe_hdcp_gsc.c
+++ b/drivers/gpu/drm/xe/display/xe_hdcp_gsc.c
@@ -9,7 +9,6 @@
 
 #include "abi/gsc_command_header_abi.h"
 #include "intel_hdcp_gsc.h"
-#include "intel_hdcp_gsc_message.h"
 #include "xe_bo.h"
 #include "xe_device.h"
 #include "xe_device_types.h"
@@ -100,7 +99,7 @@ static int intel_hdcp_gsc_initialize_message(struct intel_display *display,
 	return ret;
 }
 
-static int intel_hdcp_gsc_hdcp2_init(struct intel_display *display)
+int intel_hdcp_gsc_hdcp2_init(struct intel_display *display)
 {
 	struct intel_hdcp_gsc_message *hdcp_message;
 	int ret;
@@ -125,58 +124,15 @@ static int intel_hdcp_gsc_hdcp2_init(struct intel_display *display)
 	return ret;
 }
 
-static const struct i915_hdcp_ops gsc_hdcp_ops = {
-	.initiate_hdcp2_session = intel_hdcp_gsc_initiate_session,
-	.verify_receiver_cert_prepare_km =
-				intel_hdcp_gsc_verify_receiver_cert_prepare_km,
-	.verify_hprime = intel_hdcp_gsc_verify_hprime,
-	.store_pairing_info = intel_hdcp_gsc_store_pairing_info,
-	.initiate_locality_check = intel_hdcp_gsc_initiate_locality_check,
-	.verify_lprime = intel_hdcp_gsc_verify_lprime,
-	.get_session_key = intel_hdcp_gsc_get_session_key,
-	.repeater_check_flow_prepare_ack =
-				intel_hdcp_gsc_repeater_check_flow_prepare_ack,
-	.verify_mprime = intel_hdcp_gsc_verify_mprime,
-	.enable_hdcp_authentication = intel_hdcp_gsc_enable_authentication,
-	.close_hdcp_session = intel_hdcp_gsc_close_session,
-};
-
-int intel_hdcp_gsc_init(struct intel_display *display)
-{
-	struct i915_hdcp_arbiter *data;
-	int ret;
-
-	data = kzalloc(sizeof(*data), GFP_KERNEL);
-	if (!data)
-		return -ENOMEM;
-
-	mutex_lock(&display->hdcp.hdcp_mutex);
-	display->hdcp.arbiter = data;
-	display->hdcp.arbiter->hdcp_dev = display->drm->dev;
-	display->hdcp.arbiter->ops = &gsc_hdcp_ops;
-	ret = intel_hdcp_gsc_hdcp2_init(display);
-	if (ret)
-		kfree(data);
-
-	mutex_unlock(&display->hdcp.hdcp_mutex);
-
-	return ret;
-}
-
-void intel_hdcp_gsc_fini(struct intel_display *display)
+void intel_hdcp_gsc_free_message(struct intel_display *display)
 {
-	struct intel_hdcp_gsc_message *hdcp_message =
-					display->hdcp.hdcp_message;
-	struct i915_hdcp_arbiter *arb = display->hdcp.arbiter;
+	struct intel_hdcp_gsc_message *hdcp_message = display->hdcp.hdcp_message;
 
 	if (hdcp_message) {
 		xe_bo_unpin_map_no_vm(hdcp_message->hdcp_bo);
 		kfree(hdcp_message);
 		display->hdcp.hdcp_message = NULL;
 	}
-
-	kfree(arb);
-	display->hdcp.arbiter = NULL;
 }
 
 static int xe_gsc_send_sync(struct xe_device *xe,
-- 
2.39.5


^ permalink raw reply related	[flat|nested] 29+ messages in thread

* [PATCH 03/10] drm/i915/hdcp: split HDCP GSC message alloc/save responsibilities
  2025-04-24 20:01 [PATCH 00/10] drm/i915/hdcp: refactor HDCP GSC Jani Nikula
  2025-04-24 20:01 ` [PATCH 01/10] drm/i915/hdcp: remove duplicate declarations Jani Nikula
  2025-04-24 20:01 ` [PATCH 02/10] drm/i915/hdcp: deduplicate and refactor HDCP GSC ops initialization Jani Nikula
@ 2025-04-24 20:01 ` Jani Nikula
  2025-05-02  3:36   ` Kandpal, Suraj
  2025-04-24 20:01 ` [PATCH 04/10] drm/i915/hdcp: rename struct intel_hdcp_gsc_message to intel_hdcp_gsc_context Jani Nikula
                   ` (9 subsequent siblings)
  12 siblings, 1 reply; 29+ messages in thread
From: Jani Nikula @ 2025-04-24 20:01 UTC (permalink / raw)
  To: intel-gfx, intel-xe; +Cc: jani.nikula, Suraj Kandpal

Allocate and initialize the HDCP GSC message in
intel_hdcp_gsc_hdcp2_init() as before, but store the pointer to
display->hdcp.hdcp_message in the caller. Similarly, pass in the pointer
to intel_hdcp_gsc_free_message().

Cc: Suraj Kandpal <suraj.kandpal@intel.com>
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
 drivers/gpu/drm/i915/display/intel_hdcp_gsc.c | 22 +++++++++----------
 drivers/gpu/drm/i915/display/intel_hdcp_gsc.h |  4 ++--
 .../drm/i915/display/intel_hdcp_gsc_message.c | 12 ++++++----
 drivers/gpu/drm/xe/display/xe_hdcp_gsc.c      | 22 ++++++++-----------
 4 files changed, 29 insertions(+), 31 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_hdcp_gsc.c b/drivers/gpu/drm/i915/display/intel_hdcp_gsc.c
index 92a3ad2166f6..68d912dbd658 100644
--- a/drivers/gpu/drm/i915/display/intel_hdcp_gsc.c
+++ b/drivers/gpu/drm/i915/display/intel_hdcp_gsc.c
@@ -90,37 +90,35 @@ static int intel_hdcp_gsc_initialize_message(struct drm_i915_private *i915,
 	return err;
 }
 
-int intel_hdcp_gsc_hdcp2_init(struct intel_display *display)
+struct intel_hdcp_gsc_message *intel_hdcp_gsc_hdcp2_init(struct intel_display *display)
 {
 	struct drm_i915_private *i915 = to_i915(display->drm);
 	struct intel_hdcp_gsc_message *hdcp_message;
 	int ret;
 
 	hdcp_message = kzalloc(sizeof(*hdcp_message), GFP_KERNEL);
-
 	if (!hdcp_message)
-		return -ENOMEM;
+		return ERR_PTR(-ENOMEM);
 
 	/*
 	 * NOTE: No need to lock the comp mutex here as it is already
 	 * going to be taken before this function called
 	 */
-	display->hdcp.hdcp_message = hdcp_message;
 	ret = intel_hdcp_gsc_initialize_message(i915, hdcp_message);
-
-	if (ret)
+	if (ret) {
 		drm_err(display->drm, "Could not initialize hdcp_message\n");
+		kfree(hdcp_message);
+		hdcp_message = ERR_PTR(ret);
+	}
 
-	return ret;
+	return hdcp_message;
 }
 
-void intel_hdcp_gsc_free_message(struct intel_display *display)
+void intel_hdcp_gsc_free_message(struct intel_hdcp_gsc_message *hdcp_message)
 {
-	struct intel_hdcp_gsc_message *hdcp_message =
-					display->hdcp.hdcp_message;
+	if (!hdcp_message)
+		return;
 
-	hdcp_message->hdcp_cmd_in = NULL;
-	hdcp_message->hdcp_cmd_out = NULL;
 	i915_vma_unpin_and_release(&hdcp_message->vma, I915_VMA_RELEASE_MAP);
 	kfree(hdcp_message);
 }
diff --git a/drivers/gpu/drm/i915/display/intel_hdcp_gsc.h b/drivers/gpu/drm/i915/display/intel_hdcp_gsc.h
index ad41e7e80095..f3362720d742 100644
--- a/drivers/gpu/drm/i915/display/intel_hdcp_gsc.h
+++ b/drivers/gpu/drm/i915/display/intel_hdcp_gsc.h
@@ -19,7 +19,7 @@ ssize_t intel_hdcp_gsc_msg_send(struct drm_i915_private *i915, u8 *msg_in,
 				size_t msg_out_len);
 bool intel_hdcp_gsc_check_status(struct intel_display *display);
 
-int intel_hdcp_gsc_hdcp2_init(struct intel_display *display);
-void intel_hdcp_gsc_free_message(struct intel_display *display);
+struct intel_hdcp_gsc_message *intel_hdcp_gsc_hdcp2_init(struct intel_display *display);
+void intel_hdcp_gsc_free_message(struct intel_hdcp_gsc_message *hdcp_message);
 
 #endif /* __INTEL_HDCP_GCS_H__ */
diff --git a/drivers/gpu/drm/i915/display/intel_hdcp_gsc_message.c b/drivers/gpu/drm/i915/display/intel_hdcp_gsc_message.c
index 8e2aafff71d5..11aa6772f272 100644
--- a/drivers/gpu/drm/i915/display/intel_hdcp_gsc_message.c
+++ b/drivers/gpu/drm/i915/display/intel_hdcp_gsc_message.c
@@ -633,8 +633,9 @@ static const struct i915_hdcp_ops gsc_hdcp_ops = {
 
 int intel_hdcp_gsc_init(struct intel_display *display)
 {
+	struct intel_hdcp_gsc_message *hdcp_message;
 	struct i915_hdcp_arbiter *arbiter;
-	int ret;
+	int ret = 0;
 
 	arbiter = kzalloc(sizeof(*arbiter), GFP_KERNEL);
 	if (!arbiter)
@@ -642,8 +643,9 @@ int intel_hdcp_gsc_init(struct intel_display *display)
 
 	mutex_lock(&display->hdcp.hdcp_mutex);
 
-	ret = intel_hdcp_gsc_hdcp2_init(display);
-	if (ret) {
+	hdcp_message = intel_hdcp_gsc_hdcp2_init(display);
+	if (IS_ERR(hdcp_message)) {
+		ret = PTR_ERR(hdcp_message);
 		kfree(arbiter);
 		goto out;
 	}
@@ -651,6 +653,7 @@ int intel_hdcp_gsc_init(struct intel_display *display)
 	display->hdcp.arbiter = arbiter;
 	display->hdcp.arbiter->hdcp_dev = display->drm->dev;
 	display->hdcp.arbiter->ops = &gsc_hdcp_ops;
+	display->hdcp.hdcp_message = hdcp_message;
 
 out:
 	mutex_unlock(&display->hdcp.hdcp_mutex);
@@ -660,7 +663,8 @@ int intel_hdcp_gsc_init(struct intel_display *display)
 
 void intel_hdcp_gsc_fini(struct intel_display *display)
 {
-	intel_hdcp_gsc_free_message(display);
+	intel_hdcp_gsc_free_message(display->hdcp.hdcp_message);
+	display->hdcp.hdcp_message = NULL;
 	kfree(display->hdcp.arbiter);
 	display->hdcp.arbiter = NULL;
 }
diff --git a/drivers/gpu/drm/xe/display/xe_hdcp_gsc.c b/drivers/gpu/drm/xe/display/xe_hdcp_gsc.c
index 21cfecf077bf..d15565bf2f9f 100644
--- a/drivers/gpu/drm/xe/display/xe_hdcp_gsc.c
+++ b/drivers/gpu/drm/xe/display/xe_hdcp_gsc.c
@@ -99,15 +99,14 @@ static int intel_hdcp_gsc_initialize_message(struct intel_display *display,
 	return ret;
 }
 
-int intel_hdcp_gsc_hdcp2_init(struct intel_display *display)
+struct intel_hdcp_gsc_message *intel_hdcp_gsc_hdcp2_init(struct intel_display *display)
 {
 	struct intel_hdcp_gsc_message *hdcp_message;
 	int ret;
 
 	hdcp_message = kzalloc(sizeof(*hdcp_message), GFP_KERNEL);
-
 	if (!hdcp_message)
-		return -ENOMEM;
+		return ERR_PTR(-ENOMEM);
 
 	/*
 	 * NOTE: No need to lock the comp mutex here as it is already
@@ -117,22 +116,19 @@ int intel_hdcp_gsc_hdcp2_init(struct intel_display *display)
 	if (ret) {
 		drm_err(display->drm, "Could not initialize hdcp_message\n");
 		kfree(hdcp_message);
-		return ret;
+		hdcp_message = ERR_PTR(ret);
 	}
 
-	display->hdcp.hdcp_message = hdcp_message;
-	return ret;
+	return hdcp_message;
 }
 
-void intel_hdcp_gsc_free_message(struct intel_display *display)
+void intel_hdcp_gsc_free_message(struct intel_hdcp_gsc_message *hdcp_message)
 {
-	struct intel_hdcp_gsc_message *hdcp_message = display->hdcp.hdcp_message;
+	if (!hdcp_message)
+		return;
 
-	if (hdcp_message) {
-		xe_bo_unpin_map_no_vm(hdcp_message->hdcp_bo);
-		kfree(hdcp_message);
-		display->hdcp.hdcp_message = NULL;
-	}
+	xe_bo_unpin_map_no_vm(hdcp_message->hdcp_bo);
+	kfree(hdcp_message);
 }
 
 static int xe_gsc_send_sync(struct xe_device *xe,
-- 
2.39.5


^ permalink raw reply related	[flat|nested] 29+ messages in thread

* [PATCH 04/10] drm/i915/hdcp: rename struct intel_hdcp_gsc_message to intel_hdcp_gsc_context
  2025-04-24 20:01 [PATCH 00/10] drm/i915/hdcp: refactor HDCP GSC Jani Nikula
                   ` (2 preceding siblings ...)
  2025-04-24 20:01 ` [PATCH 03/10] drm/i915/hdcp: split HDCP GSC message alloc/save responsibilities Jani Nikula
@ 2025-04-24 20:01 ` Jani Nikula
  2025-04-30  4:35   ` Kandpal, Suraj
  2025-04-24 20:01 ` [PATCH 05/10] drm/i915/hdcp: rename HDCP GSC context alloc/free functions Jani Nikula
                   ` (8 subsequent siblings)
  12 siblings, 1 reply; 29+ messages in thread
From: Jani Nikula @ 2025-04-24 20:01 UTC (permalink / raw)
  To: intel-gfx, intel-xe; +Cc: jani.nikula, Suraj Kandpal

It's really about the context more than about the message.

Cc: Suraj Kandpal <suraj.kandpal@intel.com>
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
 .../gpu/drm/i915/display/intel_display_core.h |  2 +-
 drivers/gpu/drm/i915/display/intel_hdcp_gsc.c | 52 ++++++++---------
 drivers/gpu/drm/i915/display/intel_hdcp_gsc.h |  6 +-
 .../drm/i915/display/intel_hdcp_gsc_message.c | 14 ++---
 drivers/gpu/drm/xe/display/xe_hdcp_gsc.c      | 58 +++++++++----------
 5 files changed, 66 insertions(+), 66 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_display_core.h b/drivers/gpu/drm/i915/display/intel_display_core.h
index 613af57abd1b..dc834cef75c7 100644
--- a/drivers/gpu/drm/i915/display/intel_display_core.h
+++ b/drivers/gpu/drm/i915/display/intel_display_core.h
@@ -430,7 +430,7 @@ struct intel_display {
 		 * reused when sending message to gsc cs.
 		 * this is only populated post Meteorlake
 		 */
-		struct intel_hdcp_gsc_message *hdcp_message;
+		struct intel_hdcp_gsc_context *gsc_context;
 		/* Mutex to protect the above hdcp related values. */
 		struct mutex hdcp_mutex;
 	} hdcp;
diff --git a/drivers/gpu/drm/i915/display/intel_hdcp_gsc.c b/drivers/gpu/drm/i915/display/intel_hdcp_gsc.c
index 68d912dbd658..3e1dc2f7310c 100644
--- a/drivers/gpu/drm/i915/display/intel_hdcp_gsc.c
+++ b/drivers/gpu/drm/i915/display/intel_hdcp_gsc.c
@@ -12,7 +12,7 @@
 #include "i915_utils.h"
 #include "intel_hdcp_gsc.h"
 
-struct intel_hdcp_gsc_message {
+struct intel_hdcp_gsc_context {
 	struct i915_vma *vma;
 	void *hdcp_cmd_in;
 	void *hdcp_cmd_out;
@@ -40,7 +40,7 @@ bool intel_hdcp_gsc_check_status(struct intel_display *display)
 
 /*This function helps allocate memory for the command that we will send to gsc cs */
 static int intel_hdcp_gsc_initialize_message(struct drm_i915_private *i915,
-					     struct intel_hdcp_gsc_message *hdcp_message)
+					     struct intel_hdcp_gsc_context *gsc_context)
 {
 	struct intel_gt *gt = i915->media_gt;
 	struct drm_i915_gem_object *obj = NULL;
@@ -77,9 +77,9 @@ static int intel_hdcp_gsc_initialize_message(struct drm_i915_private *i915,
 
 	memset(cmd_in, 0, obj->base.size);
 
-	hdcp_message->hdcp_cmd_in = cmd_in;
-	hdcp_message->hdcp_cmd_out = cmd_out;
-	hdcp_message->vma = vma;
+	gsc_context->hdcp_cmd_in = cmd_in;
+	gsc_context->hdcp_cmd_out = cmd_out;
+	gsc_context->vma = vma;
 
 	return 0;
 
@@ -90,37 +90,37 @@ static int intel_hdcp_gsc_initialize_message(struct drm_i915_private *i915,
 	return err;
 }
 
-struct intel_hdcp_gsc_message *intel_hdcp_gsc_hdcp2_init(struct intel_display *display)
+struct intel_hdcp_gsc_context *intel_hdcp_gsc_hdcp2_init(struct intel_display *display)
 {
 	struct drm_i915_private *i915 = to_i915(display->drm);
-	struct intel_hdcp_gsc_message *hdcp_message;
+	struct intel_hdcp_gsc_context *gsc_context;
 	int ret;
 
-	hdcp_message = kzalloc(sizeof(*hdcp_message), GFP_KERNEL);
-	if (!hdcp_message)
+	gsc_context = kzalloc(sizeof(*gsc_context), GFP_KERNEL);
+	if (!gsc_context)
 		return ERR_PTR(-ENOMEM);
 
 	/*
 	 * NOTE: No need to lock the comp mutex here as it is already
 	 * going to be taken before this function called
 	 */
-	ret = intel_hdcp_gsc_initialize_message(i915, hdcp_message);
+	ret = intel_hdcp_gsc_initialize_message(i915, gsc_context);
 	if (ret) {
-		drm_err(display->drm, "Could not initialize hdcp_message\n");
-		kfree(hdcp_message);
-		hdcp_message = ERR_PTR(ret);
+		drm_err(display->drm, "Could not initialize gsc_context\n");
+		kfree(gsc_context);
+		gsc_context = ERR_PTR(ret);
 	}
 
-	return hdcp_message;
+	return gsc_context;
 }
 
-void intel_hdcp_gsc_free_message(struct intel_hdcp_gsc_message *hdcp_message)
+void intel_hdcp_gsc_free_message(struct intel_hdcp_gsc_context *gsc_context)
 {
-	if (!hdcp_message)
+	if (!gsc_context)
 		return;
 
-	i915_vma_unpin_and_release(&hdcp_message->vma, I915_VMA_RELEASE_MAP);
-	kfree(hdcp_message);
+	i915_vma_unpin_and_release(&gsc_context->vma, I915_VMA_RELEASE_MAP);
+	kfree(gsc_context);
 }
 
 static int intel_gsc_send_sync(struct drm_i915_private *i915,
@@ -167,7 +167,7 @@ static int intel_gsc_send_sync(struct drm_i915_private *i915,
 /*
  * This function can now be used for sending requests and will also handle
  * receipt of reply messages hence no different function of message retrieval
- * is required. We will initialize intel_hdcp_gsc_message structure then add
+ * is required. We will initialize intel_hdcp_gsc_context structure then add
  * gsc cs memory header as stated in specs after which the normal HDCP payload
  * will follow
  */
@@ -178,7 +178,7 @@ ssize_t intel_hdcp_gsc_msg_send(struct drm_i915_private *i915, u8 *msg_in,
 	struct intel_gt *gt = i915->media_gt;
 	struct intel_gsc_mtl_header *header_in, *header_out;
 	const size_t max_msg_size = PAGE_SIZE - sizeof(*header_in);
-	struct intel_hdcp_gsc_message *hdcp_message;
+	struct intel_hdcp_gsc_context *gsc_context;
 	u64 addr_in, addr_out, host_session_id;
 	u32 reply_size, msg_size_in, msg_size_out;
 	int ret, tries = 0;
@@ -191,10 +191,10 @@ ssize_t intel_hdcp_gsc_msg_send(struct drm_i915_private *i915, u8 *msg_in,
 
 	msg_size_in = msg_in_len + sizeof(*header_in);
 	msg_size_out = msg_out_len + sizeof(*header_out);
-	hdcp_message = i915->display.hdcp.hdcp_message;
-	header_in = hdcp_message->hdcp_cmd_in;
-	header_out = hdcp_message->hdcp_cmd_out;
-	addr_in = i915_ggtt_offset(hdcp_message->vma);
+	gsc_context = i915->display.hdcp.gsc_context;
+	header_in = gsc_context->hdcp_cmd_in;
+	header_out = gsc_context->hdcp_cmd_out;
+	addr_in = i915_ggtt_offset(gsc_context->vma);
 	addr_out = addr_in + PAGE_SIZE;
 
 	memset(header_in, 0, msg_size_in);
@@ -202,7 +202,7 @@ ssize_t intel_hdcp_gsc_msg_send(struct drm_i915_private *i915, u8 *msg_in,
 	get_random_bytes(&host_session_id, sizeof(u64));
 	intel_gsc_uc_heci_cmd_emit_mtl_header(header_in, HECI_MEADDRESS_HDCP,
 					      msg_size_in, host_session_id);
-	memcpy(hdcp_message->hdcp_cmd_in + sizeof(*header_in), msg_in, msg_in_len);
+	memcpy(gsc_context->hdcp_cmd_in + sizeof(*header_in), msg_in, msg_in_len);
 
 	/*
 	 * Keep sending request in case the pending bit is set no need to add
@@ -236,7 +236,7 @@ ssize_t intel_hdcp_gsc_msg_send(struct drm_i915_private *i915, u8 *msg_in,
 			    reply_size, (u32)msg_out_len);
 	}
 
-	memcpy(msg_out, hdcp_message->hdcp_cmd_out + sizeof(*header_out), msg_out_len);
+	memcpy(msg_out, gsc_context->hdcp_cmd_out + sizeof(*header_out), msg_out_len);
 
 err:
 	return ret;
diff --git a/drivers/gpu/drm/i915/display/intel_hdcp_gsc.h b/drivers/gpu/drm/i915/display/intel_hdcp_gsc.h
index f3362720d742..31080df80097 100644
--- a/drivers/gpu/drm/i915/display/intel_hdcp_gsc.h
+++ b/drivers/gpu/drm/i915/display/intel_hdcp_gsc.h
@@ -11,7 +11,7 @@
 
 struct drm_i915_private;
 struct intel_display;
-struct intel_hdcp_gsc_message;
+struct intel_hdcp_gsc_context;
 
 bool intel_hdcp_gsc_cs_required(struct intel_display *display);
 ssize_t intel_hdcp_gsc_msg_send(struct drm_i915_private *i915, u8 *msg_in,
@@ -19,7 +19,7 @@ ssize_t intel_hdcp_gsc_msg_send(struct drm_i915_private *i915, u8 *msg_in,
 				size_t msg_out_len);
 bool intel_hdcp_gsc_check_status(struct intel_display *display);
 
-struct intel_hdcp_gsc_message *intel_hdcp_gsc_hdcp2_init(struct intel_display *display);
-void intel_hdcp_gsc_free_message(struct intel_hdcp_gsc_message *hdcp_message);
+struct intel_hdcp_gsc_context *intel_hdcp_gsc_hdcp2_init(struct intel_display *display);
+void intel_hdcp_gsc_free_message(struct intel_hdcp_gsc_context *gsc_context);
 
 #endif /* __INTEL_HDCP_GCS_H__ */
diff --git a/drivers/gpu/drm/i915/display/intel_hdcp_gsc_message.c b/drivers/gpu/drm/i915/display/intel_hdcp_gsc_message.c
index 11aa6772f272..94ca571ab481 100644
--- a/drivers/gpu/drm/i915/display/intel_hdcp_gsc_message.c
+++ b/drivers/gpu/drm/i915/display/intel_hdcp_gsc_message.c
@@ -633,7 +633,7 @@ static const struct i915_hdcp_ops gsc_hdcp_ops = {
 
 int intel_hdcp_gsc_init(struct intel_display *display)
 {
-	struct intel_hdcp_gsc_message *hdcp_message;
+	struct intel_hdcp_gsc_context *gsc_context;
 	struct i915_hdcp_arbiter *arbiter;
 	int ret = 0;
 
@@ -643,9 +643,9 @@ int intel_hdcp_gsc_init(struct intel_display *display)
 
 	mutex_lock(&display->hdcp.hdcp_mutex);
 
-	hdcp_message = intel_hdcp_gsc_hdcp2_init(display);
-	if (IS_ERR(hdcp_message)) {
-		ret = PTR_ERR(hdcp_message);
+	gsc_context = intel_hdcp_gsc_hdcp2_init(display);
+	if (IS_ERR(gsc_context)) {
+		ret = PTR_ERR(gsc_context);
 		kfree(arbiter);
 		goto out;
 	}
@@ -653,7 +653,7 @@ int intel_hdcp_gsc_init(struct intel_display *display)
 	display->hdcp.arbiter = arbiter;
 	display->hdcp.arbiter->hdcp_dev = display->drm->dev;
 	display->hdcp.arbiter->ops = &gsc_hdcp_ops;
-	display->hdcp.hdcp_message = hdcp_message;
+	display->hdcp.gsc_context = gsc_context;
 
 out:
 	mutex_unlock(&display->hdcp.hdcp_mutex);
@@ -663,8 +663,8 @@ int intel_hdcp_gsc_init(struct intel_display *display)
 
 void intel_hdcp_gsc_fini(struct intel_display *display)
 {
-	intel_hdcp_gsc_free_message(display->hdcp.hdcp_message);
-	display->hdcp.hdcp_message = NULL;
+	intel_hdcp_gsc_free_message(display->hdcp.gsc_context);
+	display->hdcp.gsc_context = NULL;
 	kfree(display->hdcp.arbiter);
 	display->hdcp.arbiter = NULL;
 }
diff --git a/drivers/gpu/drm/xe/display/xe_hdcp_gsc.c b/drivers/gpu/drm/xe/display/xe_hdcp_gsc.c
index d15565bf2f9f..68fac12ac666 100644
--- a/drivers/gpu/drm/xe/display/xe_hdcp_gsc.c
+++ b/drivers/gpu/drm/xe/display/xe_hdcp_gsc.c
@@ -21,7 +21,7 @@
 
 #define HECI_MEADDRESS_HDCP 18
 
-struct intel_hdcp_gsc_message {
+struct intel_hdcp_gsc_context {
 	struct xe_bo *hdcp_bo;
 	u64 hdcp_cmd_in;
 	u64 hdcp_cmd_out;
@@ -69,7 +69,7 @@ bool intel_hdcp_gsc_check_status(struct intel_display *display)
 
 /*This function helps allocate memory for the command that we will send to gsc cs */
 static int intel_hdcp_gsc_initialize_message(struct intel_display *display,
-					     struct intel_hdcp_gsc_message *hdcp_message)
+					     struct intel_hdcp_gsc_context *gsc_context)
 {
 	struct xe_device *xe = to_xe_device(display->drm);
 	struct xe_bo *bo = NULL;
@@ -92,57 +92,57 @@ static int intel_hdcp_gsc_initialize_message(struct intel_display *display,
 	cmd_out = cmd_in + PAGE_SIZE;
 	xe_map_memset(xe, &bo->vmap, 0, 0, bo->size);
 
-	hdcp_message->hdcp_bo = bo;
-	hdcp_message->hdcp_cmd_in = cmd_in;
-	hdcp_message->hdcp_cmd_out = cmd_out;
+	gsc_context->hdcp_bo = bo;
+	gsc_context->hdcp_cmd_in = cmd_in;
+	gsc_context->hdcp_cmd_out = cmd_out;
 out:
 	return ret;
 }
 
-struct intel_hdcp_gsc_message *intel_hdcp_gsc_hdcp2_init(struct intel_display *display)
+struct intel_hdcp_gsc_context *intel_hdcp_gsc_hdcp2_init(struct intel_display *display)
 {
-	struct intel_hdcp_gsc_message *hdcp_message;
+	struct intel_hdcp_gsc_context *gsc_context;
 	int ret;
 
-	hdcp_message = kzalloc(sizeof(*hdcp_message), GFP_KERNEL);
-	if (!hdcp_message)
+	gsc_context = kzalloc(sizeof(*gsc_context), GFP_KERNEL);
+	if (!gsc_context)
 		return ERR_PTR(-ENOMEM);
 
 	/*
 	 * NOTE: No need to lock the comp mutex here as it is already
 	 * going to be taken before this function called
 	 */
-	ret = intel_hdcp_gsc_initialize_message(display, hdcp_message);
+	ret = intel_hdcp_gsc_initialize_message(display, gsc_context);
 	if (ret) {
-		drm_err(display->drm, "Could not initialize hdcp_message\n");
-		kfree(hdcp_message);
-		hdcp_message = ERR_PTR(ret);
+		drm_err(display->drm, "Could not initialize gsc_context\n");
+		kfree(gsc_context);
+		gsc_context = ERR_PTR(ret);
 	}
 
-	return hdcp_message;
+	return gsc_context;
 }
 
-void intel_hdcp_gsc_free_message(struct intel_hdcp_gsc_message *hdcp_message)
+void intel_hdcp_gsc_free_message(struct intel_hdcp_gsc_context *gsc_context)
 {
-	if (!hdcp_message)
+	if (!gsc_context)
 		return;
 
-	xe_bo_unpin_map_no_vm(hdcp_message->hdcp_bo);
-	kfree(hdcp_message);
+	xe_bo_unpin_map_no_vm(gsc_context->hdcp_bo);
+	kfree(gsc_context);
 }
 
 static int xe_gsc_send_sync(struct xe_device *xe,
-			    struct intel_hdcp_gsc_message *hdcp_message,
+			    struct intel_hdcp_gsc_context *gsc_context,
 			    u32 msg_size_in, u32 msg_size_out,
 			    u32 addr_out_off)
 {
-	struct xe_gt *gt = hdcp_message->hdcp_bo->tile->media_gt;
-	struct iosys_map *map = &hdcp_message->hdcp_bo->vmap;
+	struct xe_gt *gt = gsc_context->hdcp_bo->tile->media_gt;
+	struct iosys_map *map = &gsc_context->hdcp_bo->vmap;
 	struct xe_gsc *gsc = &gt->uc.gsc;
 	int ret;
 
-	ret = xe_gsc_pkt_submit_kernel(gsc, hdcp_message->hdcp_cmd_in, msg_size_in,
-				       hdcp_message->hdcp_cmd_out, msg_size_out);
+	ret = xe_gsc_pkt_submit_kernel(gsc, gsc_context->hdcp_cmd_in, msg_size_in,
+				       gsc_context->hdcp_cmd_out, msg_size_out);
 	if (ret) {
 		drm_err(&xe->drm, "failed to send gsc HDCP msg (%d)\n", ret);
 		return ret;
@@ -162,7 +162,7 @@ ssize_t intel_hdcp_gsc_msg_send(struct xe_device *xe, u8 *msg_in,
 				size_t msg_out_len)
 {
 	const size_t max_msg_size = PAGE_SIZE - HDCP_GSC_HEADER_SIZE;
-	struct intel_hdcp_gsc_message *hdcp_message;
+	struct intel_hdcp_gsc_context *gsc_context;
 	u64 host_session_id;
 	u32 msg_size_in, msg_size_out;
 	u32 addr_out_off, addr_in_wr_off = 0;
@@ -175,15 +175,15 @@ ssize_t intel_hdcp_gsc_msg_send(struct xe_device *xe, u8 *msg_in,
 
 	msg_size_in = msg_in_len + HDCP_GSC_HEADER_SIZE;
 	msg_size_out = msg_out_len + HDCP_GSC_HEADER_SIZE;
-	hdcp_message = xe->display.hdcp.hdcp_message;
+	gsc_context = xe->display.hdcp.gsc_context;
 	addr_out_off = PAGE_SIZE;
 
 	host_session_id = xe_gsc_create_host_session_id();
 	xe_pm_runtime_get_noresume(xe);
-	addr_in_wr_off = xe_gsc_emit_header(xe, &hdcp_message->hdcp_bo->vmap,
+	addr_in_wr_off = xe_gsc_emit_header(xe, &gsc_context->hdcp_bo->vmap,
 					    addr_in_wr_off, HECI_MEADDRESS_HDCP,
 					    host_session_id, msg_in_len);
-	xe_map_memcpy_to(xe, &hdcp_message->hdcp_bo->vmap, addr_in_wr_off,
+	xe_map_memcpy_to(xe, &gsc_context->hdcp_bo->vmap, addr_in_wr_off,
 			 msg_in, msg_in_len);
 	/*
 	 * Keep sending request in case the pending bit is set no need to add
@@ -192,7 +192,7 @@ ssize_t intel_hdcp_gsc_msg_send(struct xe_device *xe, u8 *msg_in,
 	 * 20 times each message 50 ms apart
 	 */
 	do {
-		ret = xe_gsc_send_sync(xe, hdcp_message, msg_size_in, msg_size_out,
+		ret = xe_gsc_send_sync(xe, gsc_context, msg_size_in, msg_size_out,
 				       addr_out_off);
 
 		/* Only try again if gsc says so */
@@ -206,7 +206,7 @@ ssize_t intel_hdcp_gsc_msg_send(struct xe_device *xe, u8 *msg_in,
 	if (ret)
 		goto out;
 
-	xe_map_memcpy_from(xe, msg_out, &hdcp_message->hdcp_bo->vmap,
+	xe_map_memcpy_from(xe, msg_out, &gsc_context->hdcp_bo->vmap,
 			   addr_out_off + HDCP_GSC_HEADER_SIZE,
 			   msg_out_len);
 
-- 
2.39.5


^ permalink raw reply related	[flat|nested] 29+ messages in thread

* [PATCH 05/10] drm/i915/hdcp: rename HDCP GSC context alloc/free functions
  2025-04-24 20:01 [PATCH 00/10] drm/i915/hdcp: refactor HDCP GSC Jani Nikula
                   ` (3 preceding siblings ...)
  2025-04-24 20:01 ` [PATCH 04/10] drm/i915/hdcp: rename struct intel_hdcp_gsc_message to intel_hdcp_gsc_context Jani Nikula
@ 2025-04-24 20:01 ` Jani Nikula
  2025-05-02  3:43   ` Kandpal, Suraj
  2025-04-24 20:01 ` [PATCH 06/10] drm/i915/hdcp: pass the context to the HDCP GSC message interface Jani Nikula
                   ` (7 subsequent siblings)
  12 siblings, 1 reply; 29+ messages in thread
From: Jani Nikula @ 2025-04-24 20:01 UTC (permalink / raw)
  To: intel-gfx, intel-xe; +Cc: jani.nikula, Suraj Kandpal

Name the functions intel_hdcp_gsc_context_alloc() and
intel_hdcp_gsc_context_free() for consistency.

Cc: Suraj Kandpal <suraj.kandpal@intel.com>
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
 drivers/gpu/drm/i915/display/intel_hdcp_gsc.c         | 4 ++--
 drivers/gpu/drm/i915/display/intel_hdcp_gsc.h         | 4 ++--
 drivers/gpu/drm/i915/display/intel_hdcp_gsc_message.c | 4 ++--
 drivers/gpu/drm/xe/display/xe_hdcp_gsc.c              | 4 ++--
 4 files changed, 8 insertions(+), 8 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_hdcp_gsc.c b/drivers/gpu/drm/i915/display/intel_hdcp_gsc.c
index 3e1dc2f7310c..efcd3a4b41ed 100644
--- a/drivers/gpu/drm/i915/display/intel_hdcp_gsc.c
+++ b/drivers/gpu/drm/i915/display/intel_hdcp_gsc.c
@@ -90,7 +90,7 @@ static int intel_hdcp_gsc_initialize_message(struct drm_i915_private *i915,
 	return err;
 }
 
-struct intel_hdcp_gsc_context *intel_hdcp_gsc_hdcp2_init(struct intel_display *display)
+struct intel_hdcp_gsc_context *intel_hdcp_gsc_context_alloc(struct intel_display *display)
 {
 	struct drm_i915_private *i915 = to_i915(display->drm);
 	struct intel_hdcp_gsc_context *gsc_context;
@@ -114,7 +114,7 @@ struct intel_hdcp_gsc_context *intel_hdcp_gsc_hdcp2_init(struct intel_display *d
 	return gsc_context;
 }
 
-void intel_hdcp_gsc_free_message(struct intel_hdcp_gsc_context *gsc_context)
+void intel_hdcp_gsc_context_free(struct intel_hdcp_gsc_context *gsc_context)
 {
 	if (!gsc_context)
 		return;
diff --git a/drivers/gpu/drm/i915/display/intel_hdcp_gsc.h b/drivers/gpu/drm/i915/display/intel_hdcp_gsc.h
index 31080df80097..227c00a837d8 100644
--- a/drivers/gpu/drm/i915/display/intel_hdcp_gsc.h
+++ b/drivers/gpu/drm/i915/display/intel_hdcp_gsc.h
@@ -19,7 +19,7 @@ ssize_t intel_hdcp_gsc_msg_send(struct drm_i915_private *i915, u8 *msg_in,
 				size_t msg_out_len);
 bool intel_hdcp_gsc_check_status(struct intel_display *display);
 
-struct intel_hdcp_gsc_context *intel_hdcp_gsc_hdcp2_init(struct intel_display *display);
-void intel_hdcp_gsc_free_message(struct intel_hdcp_gsc_context *gsc_context);
+struct intel_hdcp_gsc_context *intel_hdcp_gsc_context_alloc(struct intel_display *display);
+void intel_hdcp_gsc_context_free(struct intel_hdcp_gsc_context *gsc_context);
 
 #endif /* __INTEL_HDCP_GCS_H__ */
diff --git a/drivers/gpu/drm/i915/display/intel_hdcp_gsc_message.c b/drivers/gpu/drm/i915/display/intel_hdcp_gsc_message.c
index 94ca571ab481..92143226858c 100644
--- a/drivers/gpu/drm/i915/display/intel_hdcp_gsc_message.c
+++ b/drivers/gpu/drm/i915/display/intel_hdcp_gsc_message.c
@@ -643,7 +643,7 @@ int intel_hdcp_gsc_init(struct intel_display *display)
 
 	mutex_lock(&display->hdcp.hdcp_mutex);
 
-	gsc_context = intel_hdcp_gsc_hdcp2_init(display);
+	gsc_context = intel_hdcp_gsc_context_alloc(display);
 	if (IS_ERR(gsc_context)) {
 		ret = PTR_ERR(gsc_context);
 		kfree(arbiter);
@@ -663,7 +663,7 @@ int intel_hdcp_gsc_init(struct intel_display *display)
 
 void intel_hdcp_gsc_fini(struct intel_display *display)
 {
-	intel_hdcp_gsc_free_message(display->hdcp.gsc_context);
+	intel_hdcp_gsc_context_free(display->hdcp.gsc_context);
 	display->hdcp.gsc_context = NULL;
 	kfree(display->hdcp.arbiter);
 	display->hdcp.arbiter = NULL;
diff --git a/drivers/gpu/drm/xe/display/xe_hdcp_gsc.c b/drivers/gpu/drm/xe/display/xe_hdcp_gsc.c
index 68fac12ac666..16458c1ddbe6 100644
--- a/drivers/gpu/drm/xe/display/xe_hdcp_gsc.c
+++ b/drivers/gpu/drm/xe/display/xe_hdcp_gsc.c
@@ -99,7 +99,7 @@ static int intel_hdcp_gsc_initialize_message(struct intel_display *display,
 	return ret;
 }
 
-struct intel_hdcp_gsc_context *intel_hdcp_gsc_hdcp2_init(struct intel_display *display)
+struct intel_hdcp_gsc_context *intel_hdcp_gsc_context_alloc(struct intel_display *display)
 {
 	struct intel_hdcp_gsc_context *gsc_context;
 	int ret;
@@ -122,7 +122,7 @@ struct intel_hdcp_gsc_context *intel_hdcp_gsc_hdcp2_init(struct intel_display *d
 	return gsc_context;
 }
 
-void intel_hdcp_gsc_free_message(struct intel_hdcp_gsc_context *gsc_context)
+void intel_hdcp_gsc_context_free(struct intel_hdcp_gsc_context *gsc_context)
 {
 	if (!gsc_context)
 		return;
-- 
2.39.5


^ permalink raw reply related	[flat|nested] 29+ messages in thread

* [PATCH 06/10] drm/i915/hdcp: pass the context to the HDCP GSC message interface
  2025-04-24 20:01 [PATCH 00/10] drm/i915/hdcp: refactor HDCP GSC Jani Nikula
                   ` (4 preceding siblings ...)
  2025-04-24 20:01 ` [PATCH 05/10] drm/i915/hdcp: rename HDCP GSC context alloc/free functions Jani Nikula
@ 2025-04-24 20:01 ` Jani Nikula
  2025-05-02  9:08   ` Kandpal, Suraj
  2025-04-24 20:01 ` [PATCH 07/10] drm/i915/hdcp: switch the HDCP GSC message interface from u8* to void* Jani Nikula
                   ` (6 subsequent siblings)
  12 siblings, 1 reply; 29+ messages in thread
From: Jani Nikula @ 2025-04-24 20:01 UTC (permalink / raw)
  To: intel-gfx, intel-xe; +Cc: jani.nikula, Suraj Kandpal

The opaque HDCP GSC context nicely abstracts the differences between
drivers. Pass that instead of struct drm_i915_private or struct
xe_device to intel_hdcp_gsc_msg_send(). We can store the driver specific
data in the context.

This lets us drop the dependency on i915_drv.h from
intel_hdcp_gsc_message.c.

Cc: Suraj Kandpal <suraj.kandpal@intel.com>
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
 drivers/gpu/drm/i915/display/intel_hdcp_gsc.c | 11 +--
 drivers/gpu/drm/i915/display/intel_hdcp_gsc.h |  7 +-
 .../drm/i915/display/intel_hdcp_gsc_message.c | 70 ++++++++++---------
 drivers/gpu/drm/xe/display/xe_hdcp_gsc.c      | 12 ++--
 4 files changed, 52 insertions(+), 48 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_hdcp_gsc.c b/drivers/gpu/drm/i915/display/intel_hdcp_gsc.c
index efcd3a4b41ed..77c4df6c6181 100644
--- a/drivers/gpu/drm/i915/display/intel_hdcp_gsc.c
+++ b/drivers/gpu/drm/i915/display/intel_hdcp_gsc.c
@@ -13,6 +13,7 @@
 #include "intel_hdcp_gsc.h"
 
 struct intel_hdcp_gsc_context {
+	struct drm_i915_private *i915;
 	struct i915_vma *vma;
 	void *hdcp_cmd_in;
 	void *hdcp_cmd_out;
@@ -80,6 +81,7 @@ static int intel_hdcp_gsc_initialize_message(struct drm_i915_private *i915,
 	gsc_context->hdcp_cmd_in = cmd_in;
 	gsc_context->hdcp_cmd_out = cmd_out;
 	gsc_context->vma = vma;
+	gsc_context->i915 = i915;
 
 	return 0;
 
@@ -171,14 +173,14 @@ static int intel_gsc_send_sync(struct drm_i915_private *i915,
  * gsc cs memory header as stated in specs after which the normal HDCP payload
  * will follow
  */
-ssize_t intel_hdcp_gsc_msg_send(struct drm_i915_private *i915, u8 *msg_in,
-				size_t msg_in_len, u8 *msg_out,
-				size_t msg_out_len)
+ssize_t intel_hdcp_gsc_msg_send(struct intel_hdcp_gsc_context *gsc_context,
+				u8 *msg_in, size_t msg_in_len,
+				u8 *msg_out, size_t msg_out_len)
 {
+	struct drm_i915_private *i915 = gsc_context->i915;
 	struct intel_gt *gt = i915->media_gt;
 	struct intel_gsc_mtl_header *header_in, *header_out;
 	const size_t max_msg_size = PAGE_SIZE - sizeof(*header_in);
-	struct intel_hdcp_gsc_context *gsc_context;
 	u64 addr_in, addr_out, host_session_id;
 	u32 reply_size, msg_size_in, msg_size_out;
 	int ret, tries = 0;
@@ -191,7 +193,6 @@ ssize_t intel_hdcp_gsc_msg_send(struct drm_i915_private *i915, u8 *msg_in,
 
 	msg_size_in = msg_in_len + sizeof(*header_in);
 	msg_size_out = msg_out_len + sizeof(*header_out);
-	gsc_context = i915->display.hdcp.gsc_context;
 	header_in = gsc_context->hdcp_cmd_in;
 	header_out = gsc_context->hdcp_cmd_out;
 	addr_in = i915_ggtt_offset(gsc_context->vma);
diff --git a/drivers/gpu/drm/i915/display/intel_hdcp_gsc.h b/drivers/gpu/drm/i915/display/intel_hdcp_gsc.h
index 227c00a837d8..7133e631a938 100644
--- a/drivers/gpu/drm/i915/display/intel_hdcp_gsc.h
+++ b/drivers/gpu/drm/i915/display/intel_hdcp_gsc.h
@@ -9,14 +9,13 @@
 #include <linux/err.h>
 #include <linux/types.h>
 
-struct drm_i915_private;
 struct intel_display;
 struct intel_hdcp_gsc_context;
 
 bool intel_hdcp_gsc_cs_required(struct intel_display *display);
-ssize_t intel_hdcp_gsc_msg_send(struct drm_i915_private *i915, u8 *msg_in,
-				size_t msg_in_len, u8 *msg_out,
-				size_t msg_out_len);
+ssize_t intel_hdcp_gsc_msg_send(struct intel_hdcp_gsc_context *gsc_context,
+				u8 *msg_in, size_t msg_in_len,
+				u8 *msg_out, size_t msg_out_len);
 bool intel_hdcp_gsc_check_status(struct intel_display *display);
 
 struct intel_hdcp_gsc_context *intel_hdcp_gsc_context_alloc(struct intel_display *display);
diff --git a/drivers/gpu/drm/i915/display/intel_hdcp_gsc_message.c b/drivers/gpu/drm/i915/display/intel_hdcp_gsc_message.c
index 92143226858c..d87f61d773ca 100644
--- a/drivers/gpu/drm/i915/display/intel_hdcp_gsc_message.c
+++ b/drivers/gpu/drm/i915/display/intel_hdcp_gsc_message.c
@@ -4,9 +4,11 @@
  */
 
 #include <linux/err.h>
+
+#include <drm/drm_print.h>
 #include <drm/intel/i915_hdcp_interface.h>
 
-#include "i915_drv.h"
+#include "intel_display_core.h"
 #include "intel_display_types.h"
 #include "intel_hdcp_gsc.h"
 #include "intel_hdcp_gsc_message.h"
@@ -17,8 +19,8 @@ intel_hdcp_gsc_initiate_session(struct device *dev, struct hdcp_port_data *data,
 {
 	struct wired_cmd_initiate_hdcp2_session_in session_init_in = {};
 	struct wired_cmd_initiate_hdcp2_session_out session_init_out = {};
+	struct intel_hdcp_gsc_context *gsc_context;
 	struct intel_display *display;
-	struct drm_i915_private *i915;
 	ssize_t byte;
 
 	if (!dev || !data || !ake_data)
@@ -29,7 +31,7 @@ intel_hdcp_gsc_initiate_session(struct device *dev, struct hdcp_port_data *data,
 		dev_err(dev, "DRM not initialized, aborting HDCP.\n");
 		return -ENODEV;
 	}
-	i915 = to_i915(display->drm);
+	gsc_context = display->hdcp.gsc_context;
 
 	session_init_in.header.api_version = HDCP_API_VERSION;
 	session_init_in.header.command_id = WIRED_INITIATE_HDCP2_SESSION;
@@ -42,7 +44,7 @@ intel_hdcp_gsc_initiate_session(struct device *dev, struct hdcp_port_data *data,
 	session_init_in.port.attached_transcoder = (u8)data->hdcp_transcoder;
 	session_init_in.protocol = data->protocol;
 
-	byte = intel_hdcp_gsc_msg_send(i915, (u8 *)&session_init_in,
+	byte = intel_hdcp_gsc_msg_send(gsc_context, (u8 *)&session_init_in,
 				       sizeof(session_init_in),
 				       (u8 *)&session_init_out,
 				       sizeof(session_init_out));
@@ -76,8 +78,8 @@ intel_hdcp_gsc_verify_receiver_cert_prepare_km(struct device *dev,
 {
 	struct wired_cmd_verify_receiver_cert_in verify_rxcert_in = {};
 	struct wired_cmd_verify_receiver_cert_out verify_rxcert_out = {};
+	struct intel_hdcp_gsc_context *gsc_context;
 	struct intel_display *display;
-	struct drm_i915_private *i915;
 	ssize_t byte;
 
 	if (!dev || !data || !rx_cert || !km_stored || !ek_pub_km || !msg_sz)
@@ -88,7 +90,7 @@ intel_hdcp_gsc_verify_receiver_cert_prepare_km(struct device *dev,
 		dev_err(dev, "DRM not initialized, aborting HDCP.\n");
 		return -ENODEV;
 	}
-	i915 = to_i915(display->drm);
+	gsc_context = display->hdcp.gsc_context;
 
 	verify_rxcert_in.header.api_version = HDCP_API_VERSION;
 	verify_rxcert_in.header.command_id = WIRED_VERIFY_RECEIVER_CERT;
@@ -104,7 +106,7 @@ intel_hdcp_gsc_verify_receiver_cert_prepare_km(struct device *dev,
 	memcpy(verify_rxcert_in.r_rx, &rx_cert->r_rx, HDCP_2_2_RRX_LEN);
 	memcpy(verify_rxcert_in.rx_caps, rx_cert->rx_caps, HDCP_2_2_RXCAPS_LEN);
 
-	byte = intel_hdcp_gsc_msg_send(i915, (u8 *)&verify_rxcert_in,
+	byte = intel_hdcp_gsc_msg_send(gsc_context, (u8 *)&verify_rxcert_in,
 				       sizeof(verify_rxcert_in),
 				       (u8 *)&verify_rxcert_out,
 				       sizeof(verify_rxcert_out));
@@ -141,8 +143,8 @@ intel_hdcp_gsc_verify_hprime(struct device *dev, struct hdcp_port_data *data,
 {
 	struct wired_cmd_ake_send_hprime_in send_hprime_in = {};
 	struct wired_cmd_ake_send_hprime_out send_hprime_out = {};
+	struct intel_hdcp_gsc_context *gsc_context;
 	struct intel_display *display;
-	struct drm_i915_private *i915;
 	ssize_t byte;
 
 	if (!dev || !data || !rx_hprime)
@@ -153,7 +155,7 @@ intel_hdcp_gsc_verify_hprime(struct device *dev, struct hdcp_port_data *data,
 		dev_err(dev, "DRM not initialized, aborting HDCP.\n");
 		return -ENODEV;
 	}
-	i915 = to_i915(display->drm);
+	gsc_context = display->hdcp.gsc_context;
 
 	send_hprime_in.header.api_version = HDCP_API_VERSION;
 	send_hprime_in.header.command_id = WIRED_AKE_SEND_HPRIME;
@@ -167,7 +169,7 @@ intel_hdcp_gsc_verify_hprime(struct device *dev, struct hdcp_port_data *data,
 	memcpy(send_hprime_in.h_prime, rx_hprime->h_prime,
 	       HDCP_2_2_H_PRIME_LEN);
 
-	byte = intel_hdcp_gsc_msg_send(i915, (u8 *)&send_hprime_in,
+	byte = intel_hdcp_gsc_msg_send(gsc_context, (u8 *)&send_hprime_in,
 				       sizeof(send_hprime_in),
 				       (u8 *)&send_hprime_out,
 				       sizeof(send_hprime_out));
@@ -191,8 +193,8 @@ intel_hdcp_gsc_store_pairing_info(struct device *dev, struct hdcp_port_data *dat
 {
 	struct wired_cmd_ake_send_pairing_info_in pairing_info_in = {};
 	struct wired_cmd_ake_send_pairing_info_out pairing_info_out = {};
+	struct intel_hdcp_gsc_context *gsc_context;
 	struct intel_display *display;
-	struct drm_i915_private *i915;
 	ssize_t byte;
 
 	if (!dev || !data || !pairing_info)
@@ -203,7 +205,7 @@ intel_hdcp_gsc_store_pairing_info(struct device *dev, struct hdcp_port_data *dat
 		dev_err(dev, "DRM not initialized, aborting HDCP.\n");
 		return -ENODEV;
 	}
-	i915 = to_i915(display->drm);
+	gsc_context = display->hdcp.gsc_context;
 
 	pairing_info_in.header.api_version = HDCP_API_VERSION;
 	pairing_info_in.header.command_id = WIRED_AKE_SEND_PAIRING_INFO;
@@ -218,7 +220,7 @@ intel_hdcp_gsc_store_pairing_info(struct device *dev, struct hdcp_port_data *dat
 	memcpy(pairing_info_in.e_kh_km, pairing_info->e_kh_km,
 	       HDCP_2_2_E_KH_KM_LEN);
 
-	byte = intel_hdcp_gsc_msg_send(i915, (u8 *)&pairing_info_in,
+	byte = intel_hdcp_gsc_msg_send(gsc_context, (u8 *)&pairing_info_in,
 				       sizeof(pairing_info_in),
 				       (u8 *)&pairing_info_out,
 				       sizeof(pairing_info_out));
@@ -244,8 +246,8 @@ intel_hdcp_gsc_initiate_locality_check(struct device *dev,
 {
 	struct wired_cmd_init_locality_check_in lc_init_in = {};
 	struct wired_cmd_init_locality_check_out lc_init_out = {};
+	struct intel_hdcp_gsc_context *gsc_context;
 	struct intel_display *display;
-	struct drm_i915_private *i915;
 	ssize_t byte;
 
 	if (!dev || !data || !lc_init_data)
@@ -256,7 +258,7 @@ intel_hdcp_gsc_initiate_locality_check(struct device *dev,
 		dev_err(dev, "DRM not initialized, aborting HDCP.\n");
 		return -ENODEV;
 	}
-	i915 = to_i915(display->drm);
+	gsc_context = display->hdcp.gsc_context;
 
 	lc_init_in.header.api_version = HDCP_API_VERSION;
 	lc_init_in.header.command_id = WIRED_INIT_LOCALITY_CHECK;
@@ -267,7 +269,7 @@ intel_hdcp_gsc_initiate_locality_check(struct device *dev,
 	lc_init_in.port.physical_port = (u8)data->hdcp_ddi;
 	lc_init_in.port.attached_transcoder = (u8)data->hdcp_transcoder;
 
-	byte = intel_hdcp_gsc_msg_send(i915, (u8 *)&lc_init_in, sizeof(lc_init_in),
+	byte = intel_hdcp_gsc_msg_send(gsc_context, (u8 *)&lc_init_in, sizeof(lc_init_in),
 				       (u8 *)&lc_init_out, sizeof(lc_init_out));
 	if (byte < 0) {
 		drm_dbg_kms(display->drm, "intel_hdcp_gsc_msg_send failed. %zd\n", byte);
@@ -292,8 +294,8 @@ intel_hdcp_gsc_verify_lprime(struct device *dev, struct hdcp_port_data *data,
 {
 	struct wired_cmd_validate_locality_in verify_lprime_in = {};
 	struct wired_cmd_validate_locality_out verify_lprime_out = {};
+	struct intel_hdcp_gsc_context *gsc_context;
 	struct intel_display *display;
-	struct drm_i915_private *i915;
 	ssize_t byte;
 
 	if (!dev || !data || !rx_lprime)
@@ -304,7 +306,7 @@ intel_hdcp_gsc_verify_lprime(struct device *dev, struct hdcp_port_data *data,
 		dev_err(dev, "DRM not initialized, aborting HDCP.\n");
 		return -ENODEV;
 	}
-	i915 = to_i915(display->drm);
+	gsc_context = display->hdcp.gsc_context;
 
 	verify_lprime_in.header.api_version = HDCP_API_VERSION;
 	verify_lprime_in.header.command_id = WIRED_VALIDATE_LOCALITY;
@@ -319,7 +321,7 @@ intel_hdcp_gsc_verify_lprime(struct device *dev, struct hdcp_port_data *data,
 	memcpy(verify_lprime_in.l_prime, rx_lprime->l_prime,
 	       HDCP_2_2_L_PRIME_LEN);
 
-	byte = intel_hdcp_gsc_msg_send(i915, (u8 *)&verify_lprime_in,
+	byte = intel_hdcp_gsc_msg_send(gsc_context, (u8 *)&verify_lprime_in,
 				       sizeof(verify_lprime_in),
 				       (u8 *)&verify_lprime_out,
 				       sizeof(verify_lprime_out));
@@ -345,8 +347,8 @@ intel_hdcp_gsc_get_session_key(struct device *dev,
 {
 	struct wired_cmd_get_session_key_in get_skey_in = {};
 	struct wired_cmd_get_session_key_out get_skey_out = {};
+	struct intel_hdcp_gsc_context *gsc_context;
 	struct intel_display *display;
-	struct drm_i915_private *i915;
 	ssize_t byte;
 
 	if (!dev || !data || !ske_data)
@@ -357,7 +359,7 @@ intel_hdcp_gsc_get_session_key(struct device *dev,
 		dev_err(dev, "DRM not initialized, aborting HDCP.\n");
 		return -ENODEV;
 	}
-	i915 = to_i915(display->drm);
+	gsc_context = display->hdcp.gsc_context;
 
 	get_skey_in.header.api_version = HDCP_API_VERSION;
 	get_skey_in.header.command_id = WIRED_GET_SESSION_KEY;
@@ -368,7 +370,7 @@ intel_hdcp_gsc_get_session_key(struct device *dev,
 	get_skey_in.port.physical_port = (u8)data->hdcp_ddi;
 	get_skey_in.port.attached_transcoder = (u8)data->hdcp_transcoder;
 
-	byte = intel_hdcp_gsc_msg_send(i915, (u8 *)&get_skey_in, sizeof(get_skey_in),
+	byte = intel_hdcp_gsc_msg_send(gsc_context, (u8 *)&get_skey_in, sizeof(get_skey_in),
 				       (u8 *)&get_skey_out, sizeof(get_skey_out));
 	if (byte < 0) {
 		drm_dbg_kms(display->drm, "intel_hdcp_gsc_msg_send failed. %zd\n", byte);
@@ -399,8 +401,8 @@ intel_hdcp_gsc_repeater_check_flow_prepare_ack(struct device *dev,
 {
 	struct wired_cmd_verify_repeater_in verify_repeater_in = {};
 	struct wired_cmd_verify_repeater_out verify_repeater_out = {};
+	struct intel_hdcp_gsc_context *gsc_context;
 	struct intel_display *display;
-	struct drm_i915_private *i915;
 	ssize_t byte;
 
 	if (!dev || !rep_topology || !rep_send_ack || !data)
@@ -411,7 +413,7 @@ intel_hdcp_gsc_repeater_check_flow_prepare_ack(struct device *dev,
 		dev_err(dev, "DRM not initialized, aborting HDCP.\n");
 		return -ENODEV;
 	}
-	i915 = to_i915(display->drm);
+	gsc_context = display->hdcp.gsc_context;
 
 	verify_repeater_in.header.api_version = HDCP_API_VERSION;
 	verify_repeater_in.header.command_id = WIRED_VERIFY_REPEATER;
@@ -432,7 +434,7 @@ intel_hdcp_gsc_repeater_check_flow_prepare_ack(struct device *dev,
 	memcpy(verify_repeater_in.receiver_ids, rep_topology->receiver_ids,
 	       HDCP_2_2_RECEIVER_IDS_MAX_LEN);
 
-	byte = intel_hdcp_gsc_msg_send(i915, (u8 *)&verify_repeater_in,
+	byte = intel_hdcp_gsc_msg_send(gsc_context, (u8 *)&verify_repeater_in,
 				       sizeof(verify_repeater_in),
 				       (u8 *)&verify_repeater_out,
 				       sizeof(verify_repeater_out));
@@ -462,8 +464,8 @@ intel_hdcp_gsc_verify_mprime(struct device *dev,
 {
 	struct wired_cmd_repeater_auth_stream_req_in *verify_mprime_in;
 	struct wired_cmd_repeater_auth_stream_req_out verify_mprime_out = {};
+	struct intel_hdcp_gsc_context *gsc_context;
 	struct intel_display *display;
-	struct drm_i915_private *i915;
 	ssize_t byte;
 	size_t cmd_size;
 
@@ -475,7 +477,7 @@ intel_hdcp_gsc_verify_mprime(struct device *dev,
 		dev_err(dev, "DRM not initialized, aborting HDCP.\n");
 		return -ENODEV;
 	}
-	i915 = to_i915(display->drm);
+	gsc_context = display->hdcp.gsc_context;
 
 	cmd_size = struct_size(verify_mprime_in, streams, data->k);
 	if (cmd_size == SIZE_MAX)
@@ -502,7 +504,7 @@ intel_hdcp_gsc_verify_mprime(struct device *dev,
 
 	verify_mprime_in->k = cpu_to_be16(data->k);
 
-	byte = intel_hdcp_gsc_msg_send(i915, (u8 *)verify_mprime_in, cmd_size,
+	byte = intel_hdcp_gsc_msg_send(gsc_context, (u8 *)verify_mprime_in, cmd_size,
 				       (u8 *)&verify_mprime_out,
 				       sizeof(verify_mprime_out));
 	kfree(verify_mprime_in);
@@ -526,8 +528,8 @@ static int intel_hdcp_gsc_enable_authentication(struct device *dev,
 {
 	struct wired_cmd_enable_auth_in enable_auth_in = {};
 	struct wired_cmd_enable_auth_out enable_auth_out = {};
+	struct intel_hdcp_gsc_context *gsc_context;
 	struct intel_display *display;
-	struct drm_i915_private *i915;
 	ssize_t byte;
 
 	if (!dev || !data)
@@ -538,7 +540,7 @@ static int intel_hdcp_gsc_enable_authentication(struct device *dev,
 		dev_err(dev, "DRM not initialized, aborting HDCP.\n");
 		return -ENODEV;
 	}
-	i915 = to_i915(display->drm);
+	gsc_context = display->hdcp.gsc_context;
 
 	enable_auth_in.header.api_version = HDCP_API_VERSION;
 	enable_auth_in.header.command_id = WIRED_ENABLE_AUTH;
@@ -550,7 +552,7 @@ static int intel_hdcp_gsc_enable_authentication(struct device *dev,
 	enable_auth_in.port.attached_transcoder = (u8)data->hdcp_transcoder;
 	enable_auth_in.stream_type = data->streams[0].stream_type;
 
-	byte = intel_hdcp_gsc_msg_send(i915, (u8 *)&enable_auth_in,
+	byte = intel_hdcp_gsc_msg_send(gsc_context, (u8 *)&enable_auth_in,
 				       sizeof(enable_auth_in),
 				       (u8 *)&enable_auth_out,
 				       sizeof(enable_auth_out));
@@ -573,8 +575,8 @@ intel_hdcp_gsc_close_session(struct device *dev, struct hdcp_port_data *data)
 {
 	struct wired_cmd_close_session_in session_close_in = {};
 	struct wired_cmd_close_session_out session_close_out = {};
+	struct intel_hdcp_gsc_context *gsc_context;
 	struct intel_display *display;
-	struct drm_i915_private *i915;
 	ssize_t byte;
 
 	if (!dev || !data)
@@ -585,7 +587,7 @@ intel_hdcp_gsc_close_session(struct device *dev, struct hdcp_port_data *data)
 		dev_err(dev, "DRM not initialized, aborting HDCP.\n");
 		return -ENODEV;
 	}
-	i915 = to_i915(display->drm);
+	gsc_context = display->hdcp.gsc_context;
 
 	session_close_in.header.api_version = HDCP_API_VERSION;
 	session_close_in.header.command_id = WIRED_CLOSE_SESSION;
@@ -597,7 +599,7 @@ intel_hdcp_gsc_close_session(struct device *dev, struct hdcp_port_data *data)
 	session_close_in.port.physical_port = (u8)data->hdcp_ddi;
 	session_close_in.port.attached_transcoder = (u8)data->hdcp_transcoder;
 
-	byte = intel_hdcp_gsc_msg_send(i915, (u8 *)&session_close_in,
+	byte = intel_hdcp_gsc_msg_send(gsc_context, (u8 *)&session_close_in,
 				       sizeof(session_close_in),
 				       (u8 *)&session_close_out,
 				       sizeof(session_close_out));
diff --git a/drivers/gpu/drm/xe/display/xe_hdcp_gsc.c b/drivers/gpu/drm/xe/display/xe_hdcp_gsc.c
index 16458c1ddbe6..7b8237a5aeee 100644
--- a/drivers/gpu/drm/xe/display/xe_hdcp_gsc.c
+++ b/drivers/gpu/drm/xe/display/xe_hdcp_gsc.c
@@ -22,6 +22,7 @@
 #define HECI_MEADDRESS_HDCP 18
 
 struct intel_hdcp_gsc_context {
+	struct xe_device *xe;
 	struct xe_bo *hdcp_bo;
 	u64 hdcp_cmd_in;
 	u64 hdcp_cmd_out;
@@ -95,6 +96,8 @@ static int intel_hdcp_gsc_initialize_message(struct intel_display *display,
 	gsc_context->hdcp_bo = bo;
 	gsc_context->hdcp_cmd_in = cmd_in;
 	gsc_context->hdcp_cmd_out = cmd_out;
+	gsc_context->xe = xe;
+
 out:
 	return ret;
 }
@@ -157,12 +160,12 @@ static int xe_gsc_send_sync(struct xe_device *xe,
 	return ret;
 }
 
-ssize_t intel_hdcp_gsc_msg_send(struct xe_device *xe, u8 *msg_in,
-				size_t msg_in_len, u8 *msg_out,
-				size_t msg_out_len)
+ssize_t intel_hdcp_gsc_msg_send(struct intel_hdcp_gsc_context *gsc_context,
+				u8 *msg_in, size_t msg_in_len,
+				u8 *msg_out, size_t msg_out_len)
 {
+	struct xe_device *xe = gsc_context->xe;
 	const size_t max_msg_size = PAGE_SIZE - HDCP_GSC_HEADER_SIZE;
-	struct intel_hdcp_gsc_context *gsc_context;
 	u64 host_session_id;
 	u32 msg_size_in, msg_size_out;
 	u32 addr_out_off, addr_in_wr_off = 0;
@@ -175,7 +178,6 @@ ssize_t intel_hdcp_gsc_msg_send(struct xe_device *xe, u8 *msg_in,
 
 	msg_size_in = msg_in_len + HDCP_GSC_HEADER_SIZE;
 	msg_size_out = msg_out_len + HDCP_GSC_HEADER_SIZE;
-	gsc_context = xe->display.hdcp.gsc_context;
 	addr_out_off = PAGE_SIZE;
 
 	host_session_id = xe_gsc_create_host_session_id();
-- 
2.39.5


^ permalink raw reply related	[flat|nested] 29+ messages in thread

* [PATCH 07/10] drm/i915/hdcp: switch the HDCP GSC message interface from u8* to void*
  2025-04-24 20:01 [PATCH 00/10] drm/i915/hdcp: refactor HDCP GSC Jani Nikula
                   ` (5 preceding siblings ...)
  2025-04-24 20:01 ` [PATCH 06/10] drm/i915/hdcp: pass the context to the HDCP GSC message interface Jani Nikula
@ 2025-04-24 20:01 ` Jani Nikula
  2025-04-30  4:25   ` Kandpal, Suraj
  2025-04-24 20:01 ` [PATCH 08/10] drm/i915/hdcp: simplify HDCP GSC firmware usage selection Jani Nikula
                   ` (5 subsequent siblings)
  12 siblings, 1 reply; 29+ messages in thread
From: Jani Nikula @ 2025-04-24 20:01 UTC (permalink / raw)
  To: intel-gfx, intel-xe; +Cc: jani.nikula, Suraj Kandpal

The in/out buffers are just opaque data, and don't need to be considered
u8*. Switching to void* lets us drop a ton of unnecessary casts.

Cc: Suraj Kandpal <suraj.kandpal@intel.com>
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
 drivers/gpu/drm/i915/display/intel_hdcp_gsc.c |  4 +-
 drivers/gpu/drm/i915/display/intel_hdcp_gsc.h |  4 +-
 .../drm/i915/display/intel_hdcp_gsc_message.c | 44 +++++++++----------
 drivers/gpu/drm/xe/display/xe_hdcp_gsc.c      |  4 +-
 4 files changed, 28 insertions(+), 28 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_hdcp_gsc.c b/drivers/gpu/drm/i915/display/intel_hdcp_gsc.c
index 77c4df6c6181..1ea2c7204444 100644
--- a/drivers/gpu/drm/i915/display/intel_hdcp_gsc.c
+++ b/drivers/gpu/drm/i915/display/intel_hdcp_gsc.c
@@ -174,8 +174,8 @@ static int intel_gsc_send_sync(struct drm_i915_private *i915,
  * will follow
  */
 ssize_t intel_hdcp_gsc_msg_send(struct intel_hdcp_gsc_context *gsc_context,
-				u8 *msg_in, size_t msg_in_len,
-				u8 *msg_out, size_t msg_out_len)
+				void *msg_in, size_t msg_in_len,
+				void *msg_out, size_t msg_out_len)
 {
 	struct drm_i915_private *i915 = gsc_context->i915;
 	struct intel_gt *gt = i915->media_gt;
diff --git a/drivers/gpu/drm/i915/display/intel_hdcp_gsc.h b/drivers/gpu/drm/i915/display/intel_hdcp_gsc.h
index 7133e631a938..fbef56db54f2 100644
--- a/drivers/gpu/drm/i915/display/intel_hdcp_gsc.h
+++ b/drivers/gpu/drm/i915/display/intel_hdcp_gsc.h
@@ -14,8 +14,8 @@ struct intel_hdcp_gsc_context;
 
 bool intel_hdcp_gsc_cs_required(struct intel_display *display);
 ssize_t intel_hdcp_gsc_msg_send(struct intel_hdcp_gsc_context *gsc_context,
-				u8 *msg_in, size_t msg_in_len,
-				u8 *msg_out, size_t msg_out_len);
+				void *msg_in, size_t msg_in_len,
+				void *msg_out, size_t msg_out_len);
 bool intel_hdcp_gsc_check_status(struct intel_display *display);
 
 struct intel_hdcp_gsc_context *intel_hdcp_gsc_context_alloc(struct intel_display *display);
diff --git a/drivers/gpu/drm/i915/display/intel_hdcp_gsc_message.c b/drivers/gpu/drm/i915/display/intel_hdcp_gsc_message.c
index d87f61d773ca..4226e8705d2b 100644
--- a/drivers/gpu/drm/i915/display/intel_hdcp_gsc_message.c
+++ b/drivers/gpu/drm/i915/display/intel_hdcp_gsc_message.c
@@ -44,9 +44,9 @@ intel_hdcp_gsc_initiate_session(struct device *dev, struct hdcp_port_data *data,
 	session_init_in.port.attached_transcoder = (u8)data->hdcp_transcoder;
 	session_init_in.protocol = data->protocol;
 
-	byte = intel_hdcp_gsc_msg_send(gsc_context, (u8 *)&session_init_in,
+	byte = intel_hdcp_gsc_msg_send(gsc_context, &session_init_in,
 				       sizeof(session_init_in),
-				       (u8 *)&session_init_out,
+				       &session_init_out,
 				       sizeof(session_init_out));
 	if (byte < 0) {
 		drm_dbg_kms(display->drm, "intel_hdcp_gsc_msg_send failed. %zd\n", byte);
@@ -106,9 +106,9 @@ intel_hdcp_gsc_verify_receiver_cert_prepare_km(struct device *dev,
 	memcpy(verify_rxcert_in.r_rx, &rx_cert->r_rx, HDCP_2_2_RRX_LEN);
 	memcpy(verify_rxcert_in.rx_caps, rx_cert->rx_caps, HDCP_2_2_RXCAPS_LEN);
 
-	byte = intel_hdcp_gsc_msg_send(gsc_context, (u8 *)&verify_rxcert_in,
+	byte = intel_hdcp_gsc_msg_send(gsc_context, &verify_rxcert_in,
 				       sizeof(verify_rxcert_in),
-				       (u8 *)&verify_rxcert_out,
+				       &verify_rxcert_out,
 				       sizeof(verify_rxcert_out));
 	if (byte < 0) {
 		drm_dbg_kms(display->drm, "intel_hdcp_gsc_msg_send failed: %zd\n", byte);
@@ -169,9 +169,9 @@ intel_hdcp_gsc_verify_hprime(struct device *dev, struct hdcp_port_data *data,
 	memcpy(send_hprime_in.h_prime, rx_hprime->h_prime,
 	       HDCP_2_2_H_PRIME_LEN);
 
-	byte = intel_hdcp_gsc_msg_send(gsc_context, (u8 *)&send_hprime_in,
+	byte = intel_hdcp_gsc_msg_send(gsc_context, &send_hprime_in,
 				       sizeof(send_hprime_in),
-				       (u8 *)&send_hprime_out,
+				       &send_hprime_out,
 				       sizeof(send_hprime_out));
 	if (byte < 0) {
 		drm_dbg_kms(display->drm, "intel_hdcp_gsc_msg_send failed. %zd\n", byte);
@@ -220,9 +220,9 @@ intel_hdcp_gsc_store_pairing_info(struct device *dev, struct hdcp_port_data *dat
 	memcpy(pairing_info_in.e_kh_km, pairing_info->e_kh_km,
 	       HDCP_2_2_E_KH_KM_LEN);
 
-	byte = intel_hdcp_gsc_msg_send(gsc_context, (u8 *)&pairing_info_in,
+	byte = intel_hdcp_gsc_msg_send(gsc_context, &pairing_info_in,
 				       sizeof(pairing_info_in),
-				       (u8 *)&pairing_info_out,
+				       &pairing_info_out,
 				       sizeof(pairing_info_out));
 	if (byte < 0) {
 		drm_dbg_kms(display->drm, "intel_hdcp_gsc_msg_send failed. %zd\n", byte);
@@ -269,8 +269,8 @@ intel_hdcp_gsc_initiate_locality_check(struct device *dev,
 	lc_init_in.port.physical_port = (u8)data->hdcp_ddi;
 	lc_init_in.port.attached_transcoder = (u8)data->hdcp_transcoder;
 
-	byte = intel_hdcp_gsc_msg_send(gsc_context, (u8 *)&lc_init_in, sizeof(lc_init_in),
-				       (u8 *)&lc_init_out, sizeof(lc_init_out));
+	byte = intel_hdcp_gsc_msg_send(gsc_context, &lc_init_in, sizeof(lc_init_in),
+				       &lc_init_out, sizeof(lc_init_out));
 	if (byte < 0) {
 		drm_dbg_kms(display->drm, "intel_hdcp_gsc_msg_send failed. %zd\n", byte);
 		return byte;
@@ -321,9 +321,9 @@ intel_hdcp_gsc_verify_lprime(struct device *dev, struct hdcp_port_data *data,
 	memcpy(verify_lprime_in.l_prime, rx_lprime->l_prime,
 	       HDCP_2_2_L_PRIME_LEN);
 
-	byte = intel_hdcp_gsc_msg_send(gsc_context, (u8 *)&verify_lprime_in,
+	byte = intel_hdcp_gsc_msg_send(gsc_context, &verify_lprime_in,
 				       sizeof(verify_lprime_in),
-				       (u8 *)&verify_lprime_out,
+				       &verify_lprime_out,
 				       sizeof(verify_lprime_out));
 	if (byte < 0) {
 		drm_dbg_kms(display->drm, "intel_hdcp_gsc_msg_send failed. %zd\n", byte);
@@ -370,8 +370,8 @@ intel_hdcp_gsc_get_session_key(struct device *dev,
 	get_skey_in.port.physical_port = (u8)data->hdcp_ddi;
 	get_skey_in.port.attached_transcoder = (u8)data->hdcp_transcoder;
 
-	byte = intel_hdcp_gsc_msg_send(gsc_context, (u8 *)&get_skey_in, sizeof(get_skey_in),
-				       (u8 *)&get_skey_out, sizeof(get_skey_out));
+	byte = intel_hdcp_gsc_msg_send(gsc_context, &get_skey_in, sizeof(get_skey_in),
+				       &get_skey_out, sizeof(get_skey_out));
 	if (byte < 0) {
 		drm_dbg_kms(display->drm, "intel_hdcp_gsc_msg_send failed. %zd\n", byte);
 		return byte;
@@ -434,9 +434,9 @@ intel_hdcp_gsc_repeater_check_flow_prepare_ack(struct device *dev,
 	memcpy(verify_repeater_in.receiver_ids, rep_topology->receiver_ids,
 	       HDCP_2_2_RECEIVER_IDS_MAX_LEN);
 
-	byte = intel_hdcp_gsc_msg_send(gsc_context, (u8 *)&verify_repeater_in,
+	byte = intel_hdcp_gsc_msg_send(gsc_context, &verify_repeater_in,
 				       sizeof(verify_repeater_in),
-				       (u8 *)&verify_repeater_out,
+				       &verify_repeater_out,
 				       sizeof(verify_repeater_out));
 	if (byte < 0) {
 		drm_dbg_kms(display->drm, "intel_hdcp_gsc_msg_send failed. %zd\n", byte);
@@ -504,8 +504,8 @@ intel_hdcp_gsc_verify_mprime(struct device *dev,
 
 	verify_mprime_in->k = cpu_to_be16(data->k);
 
-	byte = intel_hdcp_gsc_msg_send(gsc_context, (u8 *)verify_mprime_in, cmd_size,
-				       (u8 *)&verify_mprime_out,
+	byte = intel_hdcp_gsc_msg_send(gsc_context, verify_mprime_in, cmd_size,
+				       &verify_mprime_out,
 				       sizeof(verify_mprime_out));
 	kfree(verify_mprime_in);
 	if (byte < 0) {
@@ -552,9 +552,9 @@ static int intel_hdcp_gsc_enable_authentication(struct device *dev,
 	enable_auth_in.port.attached_transcoder = (u8)data->hdcp_transcoder;
 	enable_auth_in.stream_type = data->streams[0].stream_type;
 
-	byte = intel_hdcp_gsc_msg_send(gsc_context, (u8 *)&enable_auth_in,
+	byte = intel_hdcp_gsc_msg_send(gsc_context, &enable_auth_in,
 				       sizeof(enable_auth_in),
-				       (u8 *)&enable_auth_out,
+				       &enable_auth_out,
 				       sizeof(enable_auth_out));
 	if (byte < 0) {
 		drm_dbg_kms(display->drm, "intel_hdcp_gsc_msg_send failed. %zd\n", byte);
@@ -599,9 +599,9 @@ intel_hdcp_gsc_close_session(struct device *dev, struct hdcp_port_data *data)
 	session_close_in.port.physical_port = (u8)data->hdcp_ddi;
 	session_close_in.port.attached_transcoder = (u8)data->hdcp_transcoder;
 
-	byte = intel_hdcp_gsc_msg_send(gsc_context, (u8 *)&session_close_in,
+	byte = intel_hdcp_gsc_msg_send(gsc_context, &session_close_in,
 				       sizeof(session_close_in),
-				       (u8 *)&session_close_out,
+				       &session_close_out,
 				       sizeof(session_close_out));
 	if (byte < 0) {
 		drm_dbg_kms(display->drm, "intel_hdcp_gsc_msg_send failed. %zd\n", byte);
diff --git a/drivers/gpu/drm/xe/display/xe_hdcp_gsc.c b/drivers/gpu/drm/xe/display/xe_hdcp_gsc.c
index 7b8237a5aeee..7712d53627f0 100644
--- a/drivers/gpu/drm/xe/display/xe_hdcp_gsc.c
+++ b/drivers/gpu/drm/xe/display/xe_hdcp_gsc.c
@@ -161,8 +161,8 @@ static int xe_gsc_send_sync(struct xe_device *xe,
 }
 
 ssize_t intel_hdcp_gsc_msg_send(struct intel_hdcp_gsc_context *gsc_context,
-				u8 *msg_in, size_t msg_in_len,
-				u8 *msg_out, size_t msg_out_len)
+				void *msg_in, size_t msg_in_len,
+				void *msg_out, size_t msg_out_len)
 {
 	struct xe_device *xe = gsc_context->xe;
 	const size_t max_msg_size = PAGE_SIZE - HDCP_GSC_HEADER_SIZE;
-- 
2.39.5


^ permalink raw reply related	[flat|nested] 29+ messages in thread

* [PATCH 08/10] drm/i915/hdcp: simplify HDCP GSC firmware usage selection
  2025-04-24 20:01 [PATCH 00/10] drm/i915/hdcp: refactor HDCP GSC Jani Nikula
                   ` (6 preceding siblings ...)
  2025-04-24 20:01 ` [PATCH 07/10] drm/i915/hdcp: switch the HDCP GSC message interface from u8* to void* Jani Nikula
@ 2025-04-24 20:01 ` Jani Nikula
  2025-04-30  4:30   ` Kandpal, Suraj
  2025-04-24 20:01 ` [PATCH 09/10] drm/i915/hdcp: pass struct drm_device to driver specific HDCP GSC code Jani Nikula
                   ` (4 subsequent siblings)
  12 siblings, 1 reply; 29+ messages in thread
From: Jani Nikula @ 2025-04-24 20:01 UTC (permalink / raw)
  To: intel-gfx, intel-xe; +Cc: jani.nikula, Suraj Kandpal

Just localize the GSC decision inside intel_hdcp.c, and deduplicate the
conditions.

Cc: Suraj Kandpal <suraj.kandpal@intel.com>
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
 drivers/gpu/drm/i915/display/intel_hdcp.c     | 10 ++++++----
 drivers/gpu/drm/i915/display/intel_hdcp_gsc.c |  5 -----
 drivers/gpu/drm/i915/display/intel_hdcp_gsc.h |  1 -
 drivers/gpu/drm/xe/display/xe_hdcp_gsc.c      |  5 -----
 4 files changed, 6 insertions(+), 15 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_hdcp.c b/drivers/gpu/drm/i915/display/intel_hdcp.c
index 4857685c4020..39bcf8f3d810 100644
--- a/drivers/gpu/drm/i915/display/intel_hdcp.c
+++ b/drivers/gpu/drm/i915/display/intel_hdcp.c
@@ -32,6 +32,8 @@
 #include "intel_hdcp_shim.h"
 #include "intel_pcode.h"
 
+#define USE_HDCP_GSC(__display)		(DISPLAY_VER(__display) >= 14)
+
 #define KEY_LOAD_TRIES	5
 #define HDCP2_LC_RETRY_CNT			3
 
@@ -251,7 +253,7 @@ static bool intel_hdcp2_prerequisite(struct intel_connector *connector)
 		return false;
 
 	/* If MTL+ make sure gsc is loaded and proxy is setup */
-	if (intel_hdcp_gsc_cs_required(display)) {
+	if (USE_HDCP_GSC(display)) {
 		if (!intel_hdcp_gsc_check_status(display))
 			return false;
 	}
@@ -2340,7 +2342,7 @@ static int initialize_hdcp_port_data(struct intel_connector *connector,
 
 static bool is_hdcp2_supported(struct intel_display *display)
 {
-	if (intel_hdcp_gsc_cs_required(display))
+	if (USE_HDCP_GSC(display))
 		return true;
 
 	if (!IS_ENABLED(CONFIG_INTEL_MEI_HDCP))
@@ -2364,7 +2366,7 @@ void intel_hdcp_component_init(struct intel_display *display)
 
 	display->hdcp.comp_added = true;
 	mutex_unlock(&display->hdcp.hdcp_mutex);
-	if (intel_hdcp_gsc_cs_required(display))
+	if (USE_HDCP_GSC(display))
 		ret = intel_hdcp_gsc_init(display);
 	else
 		ret = component_add_typed(display->drm->dev, &i915_hdcp_ops,
@@ -2639,7 +2641,7 @@ void intel_hdcp_component_fini(struct intel_display *display)
 	display->hdcp.comp_added = false;
 	mutex_unlock(&display->hdcp.hdcp_mutex);
 
-	if (intel_hdcp_gsc_cs_required(display))
+	if (USE_HDCP_GSC(display))
 		intel_hdcp_gsc_fini(display);
 	else
 		component_del(display->drm->dev, &i915_hdcp_ops);
diff --git a/drivers/gpu/drm/i915/display/intel_hdcp_gsc.c b/drivers/gpu/drm/i915/display/intel_hdcp_gsc.c
index 1ea2c7204444..4194ef77f7c3 100644
--- a/drivers/gpu/drm/i915/display/intel_hdcp_gsc.c
+++ b/drivers/gpu/drm/i915/display/intel_hdcp_gsc.c
@@ -19,11 +19,6 @@ struct intel_hdcp_gsc_context {
 	void *hdcp_cmd_out;
 };
 
-bool intel_hdcp_gsc_cs_required(struct intel_display *display)
-{
-	return DISPLAY_VER(display) >= 14;
-}
-
 bool intel_hdcp_gsc_check_status(struct intel_display *display)
 {
 	struct drm_i915_private *i915 = to_i915(display->drm);
diff --git a/drivers/gpu/drm/i915/display/intel_hdcp_gsc.h b/drivers/gpu/drm/i915/display/intel_hdcp_gsc.h
index fbef56db54f2..e963c1fcc39e 100644
--- a/drivers/gpu/drm/i915/display/intel_hdcp_gsc.h
+++ b/drivers/gpu/drm/i915/display/intel_hdcp_gsc.h
@@ -12,7 +12,6 @@
 struct intel_display;
 struct intel_hdcp_gsc_context;
 
-bool intel_hdcp_gsc_cs_required(struct intel_display *display);
 ssize_t intel_hdcp_gsc_msg_send(struct intel_hdcp_gsc_context *gsc_context,
 				void *msg_in, size_t msg_in_len,
 				void *msg_out, size_t msg_out_len);
diff --git a/drivers/gpu/drm/xe/display/xe_hdcp_gsc.c b/drivers/gpu/drm/xe/display/xe_hdcp_gsc.c
index 7712d53627f0..078916072c10 100644
--- a/drivers/gpu/drm/xe/display/xe_hdcp_gsc.c
+++ b/drivers/gpu/drm/xe/display/xe_hdcp_gsc.c
@@ -30,11 +30,6 @@ struct intel_hdcp_gsc_context {
 
 #define HDCP_GSC_HEADER_SIZE sizeof(struct intel_gsc_mtl_header)
 
-bool intel_hdcp_gsc_cs_required(struct intel_display *display)
-{
-	return DISPLAY_VER(display) >= 14;
-}
-
 bool intel_hdcp_gsc_check_status(struct intel_display *display)
 {
 	struct xe_device *xe = to_xe_device(display->drm);
-- 
2.39.5


^ permalink raw reply related	[flat|nested] 29+ messages in thread

* [PATCH 09/10] drm/i915/hdcp: pass struct drm_device to driver specific HDCP GSC code
  2025-04-24 20:01 [PATCH 00/10] drm/i915/hdcp: refactor HDCP GSC Jani Nikula
                   ` (7 preceding siblings ...)
  2025-04-24 20:01 ` [PATCH 08/10] drm/i915/hdcp: simplify HDCP GSC firmware usage selection Jani Nikula
@ 2025-04-24 20:01 ` Jani Nikula
  2025-05-02  9:18   ` Kandpal, Suraj
  2025-04-24 20:01 ` [PATCH 10/10] drm/i915/hdcp: drop unnecessary include from intel_hdcp_gsc.h Jani Nikula
                   ` (3 subsequent siblings)
  12 siblings, 1 reply; 29+ messages in thread
From: Jani Nikula @ 2025-04-24 20:01 UTC (permalink / raw)
  To: intel-gfx, intel-xe; +Cc: jani.nikula, Suraj Kandpal

The driver specific HDCP GSC code will eventually be part of the driver
cores rather than display. Remove the struct intel_display references
from them, and pass struct drm_device instead.

Cc: Suraj Kandpal <suraj.kandpal@intel.com>
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
 drivers/gpu/drm/i915/display/intel_hdcp.c        |  2 +-
 drivers/gpu/drm/i915/display/intel_hdcp_gsc.c    | 12 ++++++------
 drivers/gpu/drm/i915/display/intel_hdcp_gsc.h    |  6 +++---
 .../drm/i915/display/intel_hdcp_gsc_message.c    |  2 +-
 drivers/gpu/drm/xe/display/xe_hdcp_gsc.c         | 16 ++++++++--------
 5 files changed, 19 insertions(+), 19 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_hdcp.c b/drivers/gpu/drm/i915/display/intel_hdcp.c
index 39bcf8f3d810..3e3038f4ee1f 100644
--- a/drivers/gpu/drm/i915/display/intel_hdcp.c
+++ b/drivers/gpu/drm/i915/display/intel_hdcp.c
@@ -254,7 +254,7 @@ static bool intel_hdcp2_prerequisite(struct intel_connector *connector)
 
 	/* If MTL+ make sure gsc is loaded and proxy is setup */
 	if (USE_HDCP_GSC(display)) {
-		if (!intel_hdcp_gsc_check_status(display))
+		if (!intel_hdcp_gsc_check_status(display->drm))
 			return false;
 	}
 
diff --git a/drivers/gpu/drm/i915/display/intel_hdcp_gsc.c b/drivers/gpu/drm/i915/display/intel_hdcp_gsc.c
index 4194ef77f7c3..6a22862d6be1 100644
--- a/drivers/gpu/drm/i915/display/intel_hdcp_gsc.c
+++ b/drivers/gpu/drm/i915/display/intel_hdcp_gsc.c
@@ -19,14 +19,14 @@ struct intel_hdcp_gsc_context {
 	void *hdcp_cmd_out;
 };
 
-bool intel_hdcp_gsc_check_status(struct intel_display *display)
+bool intel_hdcp_gsc_check_status(struct drm_device *drm)
 {
-	struct drm_i915_private *i915 = to_i915(display->drm);
+	struct drm_i915_private *i915 = to_i915(drm);
 	struct intel_gt *gt = i915->media_gt;
 	struct intel_gsc_uc *gsc = gt ? &gt->uc.gsc : NULL;
 
 	if (!gsc || !intel_uc_fw_is_running(&gsc->fw)) {
-		drm_dbg_kms(display->drm,
+		drm_dbg_kms(&i915->drm,
 			    "GSC components required for HDCP2.2 are not ready\n");
 		return false;
 	}
@@ -87,9 +87,9 @@ static int intel_hdcp_gsc_initialize_message(struct drm_i915_private *i915,
 	return err;
 }
 
-struct intel_hdcp_gsc_context *intel_hdcp_gsc_context_alloc(struct intel_display *display)
+struct intel_hdcp_gsc_context *intel_hdcp_gsc_context_alloc(struct drm_device *drm)
 {
-	struct drm_i915_private *i915 = to_i915(display->drm);
+	struct drm_i915_private *i915 = to_i915(drm);
 	struct intel_hdcp_gsc_context *gsc_context;
 	int ret;
 
@@ -103,7 +103,7 @@ struct intel_hdcp_gsc_context *intel_hdcp_gsc_context_alloc(struct intel_display
 	 */
 	ret = intel_hdcp_gsc_initialize_message(i915, gsc_context);
 	if (ret) {
-		drm_err(display->drm, "Could not initialize gsc_context\n");
+		drm_err(&i915->drm, "Could not initialize gsc_context\n");
 		kfree(gsc_context);
 		gsc_context = ERR_PTR(ret);
 	}
diff --git a/drivers/gpu/drm/i915/display/intel_hdcp_gsc.h b/drivers/gpu/drm/i915/display/intel_hdcp_gsc.h
index e963c1fcc39e..e014336aa2e4 100644
--- a/drivers/gpu/drm/i915/display/intel_hdcp_gsc.h
+++ b/drivers/gpu/drm/i915/display/intel_hdcp_gsc.h
@@ -9,15 +9,15 @@
 #include <linux/err.h>
 #include <linux/types.h>
 
-struct intel_display;
+struct drm_device;
 struct intel_hdcp_gsc_context;
 
 ssize_t intel_hdcp_gsc_msg_send(struct intel_hdcp_gsc_context *gsc_context,
 				void *msg_in, size_t msg_in_len,
 				void *msg_out, size_t msg_out_len);
-bool intel_hdcp_gsc_check_status(struct intel_display *display);
+bool intel_hdcp_gsc_check_status(struct drm_device *drm);
 
-struct intel_hdcp_gsc_context *intel_hdcp_gsc_context_alloc(struct intel_display *display);
+struct intel_hdcp_gsc_context *intel_hdcp_gsc_context_alloc(struct drm_device *drm);
 void intel_hdcp_gsc_context_free(struct intel_hdcp_gsc_context *gsc_context);
 
 #endif /* __INTEL_HDCP_GCS_H__ */
diff --git a/drivers/gpu/drm/i915/display/intel_hdcp_gsc_message.c b/drivers/gpu/drm/i915/display/intel_hdcp_gsc_message.c
index 4226e8705d2b..98967bb148e3 100644
--- a/drivers/gpu/drm/i915/display/intel_hdcp_gsc_message.c
+++ b/drivers/gpu/drm/i915/display/intel_hdcp_gsc_message.c
@@ -645,7 +645,7 @@ int intel_hdcp_gsc_init(struct intel_display *display)
 
 	mutex_lock(&display->hdcp.hdcp_mutex);
 
-	gsc_context = intel_hdcp_gsc_context_alloc(display);
+	gsc_context = intel_hdcp_gsc_context_alloc(display->drm);
 	if (IS_ERR(gsc_context)) {
 		ret = PTR_ERR(gsc_context);
 		kfree(arbiter);
diff --git a/drivers/gpu/drm/xe/display/xe_hdcp_gsc.c b/drivers/gpu/drm/xe/display/xe_hdcp_gsc.c
index 078916072c10..b35a6f201d4a 100644
--- a/drivers/gpu/drm/xe/display/xe_hdcp_gsc.c
+++ b/drivers/gpu/drm/xe/display/xe_hdcp_gsc.c
@@ -30,9 +30,9 @@ struct intel_hdcp_gsc_context {
 
 #define HDCP_GSC_HEADER_SIZE sizeof(struct intel_gsc_mtl_header)
 
-bool intel_hdcp_gsc_check_status(struct intel_display *display)
+bool intel_hdcp_gsc_check_status(struct drm_device *drm)
 {
-	struct xe_device *xe = to_xe_device(display->drm);
+	struct xe_device *xe = to_xe_device(drm);
 	struct xe_tile *tile = xe_device_get_root_tile(xe);
 	struct xe_gt *gt = tile->media_gt;
 	struct xe_gsc *gsc = &gt->uc.gsc;
@@ -64,10 +64,9 @@ bool intel_hdcp_gsc_check_status(struct intel_display *display)
 }
 
 /*This function helps allocate memory for the command that we will send to gsc cs */
-static int intel_hdcp_gsc_initialize_message(struct intel_display *display,
+static int intel_hdcp_gsc_initialize_message(struct xe_device *xe,
 					     struct intel_hdcp_gsc_context *gsc_context)
 {
-	struct xe_device *xe = to_xe_device(display->drm);
 	struct xe_bo *bo = NULL;
 	u64 cmd_in, cmd_out;
 	int ret = 0;
@@ -79,7 +78,7 @@ static int intel_hdcp_gsc_initialize_message(struct intel_display *display,
 				  XE_BO_FLAG_GGTT);
 
 	if (IS_ERR(bo)) {
-		drm_err(display->drm, "Failed to allocate bo for HDCP streaming command!\n");
+		drm_err(&xe->drm, "Failed to allocate bo for HDCP streaming command!\n");
 		ret = PTR_ERR(bo);
 		goto out;
 	}
@@ -97,8 +96,9 @@ static int intel_hdcp_gsc_initialize_message(struct intel_display *display,
 	return ret;
 }
 
-struct intel_hdcp_gsc_context *intel_hdcp_gsc_context_alloc(struct intel_display *display)
+struct intel_hdcp_gsc_context *intel_hdcp_gsc_context_alloc(struct drm_device *drm)
 {
+	struct xe_device *xe = to_xe_device(drm);
 	struct intel_hdcp_gsc_context *gsc_context;
 	int ret;
 
@@ -110,9 +110,9 @@ struct intel_hdcp_gsc_context *intel_hdcp_gsc_context_alloc(struct intel_display
 	 * NOTE: No need to lock the comp mutex here as it is already
 	 * going to be taken before this function called
 	 */
-	ret = intel_hdcp_gsc_initialize_message(display, gsc_context);
+	ret = intel_hdcp_gsc_initialize_message(xe, gsc_context);
 	if (ret) {
-		drm_err(display->drm, "Could not initialize gsc_context\n");
+		drm_err(&xe->drm, "Could not initialize gsc_context\n");
 		kfree(gsc_context);
 		gsc_context = ERR_PTR(ret);
 	}
-- 
2.39.5


^ permalink raw reply related	[flat|nested] 29+ messages in thread

* [PATCH 10/10] drm/i915/hdcp: drop unnecessary include from intel_hdcp_gsc.h
  2025-04-24 20:01 [PATCH 00/10] drm/i915/hdcp: refactor HDCP GSC Jani Nikula
                   ` (8 preceding siblings ...)
  2025-04-24 20:01 ` [PATCH 09/10] drm/i915/hdcp: pass struct drm_device to driver specific HDCP GSC code Jani Nikula
@ 2025-04-24 20:01 ` Jani Nikula
  2025-05-02  9:19   ` Kandpal, Suraj
  2025-04-24 21:01 ` ✗ Fi.CI.SPARSE: warning for drm/i915/hdcp: refactor HDCP GSC Patchwork
                   ` (2 subsequent siblings)
  12 siblings, 1 reply; 29+ messages in thread
From: Jani Nikula @ 2025-04-24 20:01 UTC (permalink / raw)
  To: intel-gfx, intel-xe; +Cc: jani.nikula, Suraj Kandpal

Nothing in intel_hdcp_gsc.c needs linux/err.h. Remove it.

Cc: Suraj Kandpal <suraj.kandpal@intel.com>
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
 drivers/gpu/drm/i915/display/intel_hdcp_gsc.h | 1 -
 1 file changed, 1 deletion(-)

diff --git a/drivers/gpu/drm/i915/display/intel_hdcp_gsc.h b/drivers/gpu/drm/i915/display/intel_hdcp_gsc.h
index e014336aa2e4..9305c14aaffe 100644
--- a/drivers/gpu/drm/i915/display/intel_hdcp_gsc.h
+++ b/drivers/gpu/drm/i915/display/intel_hdcp_gsc.h
@@ -6,7 +6,6 @@
 #ifndef __INTEL_HDCP_GSC_H__
 #define __INTEL_HDCP_GSC_H__
 
-#include <linux/err.h>
 #include <linux/types.h>
 
 struct drm_device;
-- 
2.39.5


^ permalink raw reply related	[flat|nested] 29+ messages in thread

* ✗ Fi.CI.SPARSE: warning for drm/i915/hdcp: refactor HDCP GSC
  2025-04-24 20:01 [PATCH 00/10] drm/i915/hdcp: refactor HDCP GSC Jani Nikula
                   ` (9 preceding siblings ...)
  2025-04-24 20:01 ` [PATCH 10/10] drm/i915/hdcp: drop unnecessary include from intel_hdcp_gsc.h Jani Nikula
@ 2025-04-24 21:01 ` Patchwork
  2025-04-24 21:24 ` ✓ i915.CI.BAT: success " Patchwork
  2025-04-25  5:46 ` ✗ i915.CI.Full: failure " Patchwork
  12 siblings, 0 replies; 29+ messages in thread
From: Patchwork @ 2025-04-24 21:01 UTC (permalink / raw)
  To: Jani Nikula; +Cc: intel-gfx

== Series Details ==

Series: drm/i915/hdcp: refactor HDCP GSC
URL   : https://patchwork.freedesktop.org/series/148230/
State : warning

== Summary ==

Error: dim sparse failed
Sparse version: v0.6.2
Fast mode used, each commit won't be checked separately.



^ permalink raw reply	[flat|nested] 29+ messages in thread

* ✓ i915.CI.BAT: success for drm/i915/hdcp: refactor HDCP GSC
  2025-04-24 20:01 [PATCH 00/10] drm/i915/hdcp: refactor HDCP GSC Jani Nikula
                   ` (10 preceding siblings ...)
  2025-04-24 21:01 ` ✗ Fi.CI.SPARSE: warning for drm/i915/hdcp: refactor HDCP GSC Patchwork
@ 2025-04-24 21:24 ` Patchwork
  2025-04-25  5:46 ` ✗ i915.CI.Full: failure " Patchwork
  12 siblings, 0 replies; 29+ messages in thread
From: Patchwork @ 2025-04-24 21:24 UTC (permalink / raw)
  To: Jani Nikula; +Cc: intel-gfx

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

== Series Details ==

Series: drm/i915/hdcp: refactor HDCP GSC
URL   : https://patchwork.freedesktop.org/series/148230/
State : success

== Summary ==

CI Bug Log - changes from CI_DRM_16462 -> Patchwork_148230v1
====================================================

Summary
-------

  **SUCCESS**

  No regressions found.

  External URL: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/index.html

Participating hosts (41 -> 42)
------------------------------

  Additional (1): bat-arlh-2 

Known issues
------------

  Here are the changes found in Patchwork_148230v1 that come from known issues:

### IGT changes ###

#### Issues hit ####

  * igt@fbdev@eof:
    - bat-arlh-2:         NOTRUN -> [SKIP][1] ([i915#11345] / [i915#11346]) +3 other tests skip
   [1]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/bat-arlh-2/igt@fbdev@eof.html

  * igt@fbdev@info:
    - bat-arlh-2:         NOTRUN -> [SKIP][2] ([i915#11346] / [i915#1849])
   [2]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/bat-arlh-2/igt@fbdev@info.html

  * igt@gem_exec_fence@basic-busy@vecs0:
    - bat-rpls-4:         [PASS][3] -> [DMESG-WARN][4] ([i915#13400]) +1 other test dmesg-warn
   [3]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16462/bat-rpls-4/igt@gem_exec_fence@basic-busy@vecs0.html
   [4]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/bat-rpls-4/igt@gem_exec_fence@basic-busy@vecs0.html

  * igt@gem_lmem_swapping@basic:
    - bat-arlh-2:         NOTRUN -> [SKIP][5] ([i915#10213] / [i915#11346] / [i915#11671]) +3 other tests skip
   [5]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/bat-arlh-2/igt@gem_lmem_swapping@basic.html

  * igt@gem_mmap@basic:
    - bat-arlh-2:         NOTRUN -> [SKIP][6] ([i915#11343] / [i915#11346])
   [6]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/bat-arlh-2/igt@gem_mmap@basic.html

  * igt@gem_render_tiled_blits@basic:
    - bat-arlh-2:         NOTRUN -> [SKIP][7] ([i915#10197] / [i915#10211] / [i915#11346] / [i915#11725])
   [7]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/bat-arlh-2/igt@gem_render_tiled_blits@basic.html

  * igt@gem_tiled_blits@basic:
    - bat-arlh-2:         NOTRUN -> [SKIP][8] ([i915#11346] / [i915#12637]) +4 other tests skip
   [8]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/bat-arlh-2/igt@gem_tiled_blits@basic.html

  * igt@gem_tiled_pread_basic:
    - bat-arlh-2:         NOTRUN -> [SKIP][9] ([i915#10206] / [i915#11346] / [i915#11724])
   [9]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/bat-arlh-2/igt@gem_tiled_pread_basic.html

  * igt@i915_module_load@load:
    - bat-twl-2:          [PASS][10] -> [DMESG-WARN][11] ([i915#13736])
   [10]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16462/bat-twl-2/igt@i915_module_load@load.html
   [11]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/bat-twl-2/igt@i915_module_load@load.html

  * igt@i915_pm_rps@basic-api:
    - bat-arlh-2:         NOTRUN -> [SKIP][12] ([i915#10209] / [i915#11346] / [i915#11681])
   [12]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/bat-arlh-2/igt@i915_pm_rps@basic-api.html

  * igt@i915_selftest@live:
    - bat-arlh-2:         NOTRUN -> [ABORT][13] ([i915#13723]) +1 other test abort
   [13]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/bat-arlh-2/igt@i915_selftest@live.html

  * igt@intel_hwmon@hwmon-read:
    - bat-arlh-2:         NOTRUN -> [SKIP][14] ([i915#11346] / [i915#11680] / [i915#7707]) +1 other test skip
   [14]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/bat-arlh-2/igt@intel_hwmon@hwmon-read.html

  * igt@kms_addfb_basic@addfb25-y-tiled-small-legacy:
    - bat-arlh-2:         NOTRUN -> [SKIP][15] ([i915#10200] / [i915#11346] / [i915#11666] / [i915#12203])
   [15]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/bat-arlh-2/igt@kms_addfb_basic@addfb25-y-tiled-small-legacy.html

  * igt@kms_addfb_basic@basic-x-tiled-legacy:
    - bat-arlh-2:         NOTRUN -> [SKIP][16] ([i915#10200] / [i915#11346] / [i915#11666]) +8 other tests skip
   [16]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/bat-arlh-2/igt@kms_addfb_basic@basic-x-tiled-legacy.html

  * igt@kms_psr@psr-primary-page-flip:
    - bat-arlh-2:         NOTRUN -> [SKIP][17] ([i915#11346]) +32 other tests skip
   [17]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/bat-arlh-2/igt@kms_psr@psr-primary-page-flip.html

  * igt@kms_setmode@basic-clone-single-crtc:
    - bat-arlh-2:         NOTRUN -> [SKIP][18] ([i915#10208] / [i915#11346] / [i915#8809])
   [18]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/bat-arlh-2/igt@kms_setmode@basic-clone-single-crtc.html

  * igt@prime_vgem@basic-fence-read:
    - bat-arlh-2:         NOTRUN -> [SKIP][19] ([i915#10212] / [i915#11346] / [i915#11726])
   [19]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/bat-arlh-2/igt@prime_vgem@basic-fence-read.html

  * igt@prime_vgem@basic-read:
    - bat-arlh-2:         NOTRUN -> [SKIP][20] ([i915#10214] / [i915#11346] / [i915#11726])
   [20]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/bat-arlh-2/igt@prime_vgem@basic-read.html

  * igt@prime_vgem@basic-write:
    - bat-arlh-2:         NOTRUN -> [SKIP][21] ([i915#10216] / [i915#11346] / [i915#11723])
   [21]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/bat-arlh-2/igt@prime_vgem@basic-write.html

  
#### Possible fixes ####

  * igt@i915_selftest@live@workarounds:
    - bat-dg2-9:          [DMESG-FAIL][22] ([i915#12061]) -> [PASS][23] +1 other test pass
   [22]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16462/bat-dg2-9/igt@i915_selftest@live@workarounds.html
   [23]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/bat-dg2-9/igt@i915_selftest@live@workarounds.html
    - bat-mtlp-9:         [DMESG-FAIL][24] ([i915#12061]) -> [PASS][25] +1 other test pass
   [24]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16462/bat-mtlp-9/igt@i915_selftest@live@workarounds.html
   [25]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/bat-mtlp-9/igt@i915_selftest@live@workarounds.html
    - bat-arls-6:         [DMESG-FAIL][26] ([i915#12061]) -> [PASS][27] +1 other test pass
   [26]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16462/bat-arls-6/igt@i915_selftest@live@workarounds.html
   [27]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/bat-arls-6/igt@i915_selftest@live@workarounds.html

  
  [i915#10197]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10197
  [i915#10200]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10200
  [i915#10206]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10206
  [i915#10208]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10208
  [i915#10209]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10209
  [i915#10211]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10211
  [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#11343]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11343
  [i915#11345]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11345
  [i915#11346]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11346
  [i915#11666]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11666
  [i915#11671]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11671
  [i915#11680]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11680
  [i915#11681]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11681
  [i915#11723]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11723
  [i915#11724]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11724
  [i915#11725]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11725
  [i915#11726]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11726
  [i915#12061]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12061
  [i915#12203]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12203
  [i915#12637]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12637
  [i915#13400]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13400
  [i915#13723]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13723
  [i915#13736]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13736
  [i915#1849]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/1849
  [i915#7707]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7707
  [i915#8809]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8809


Build changes
-------------

  * Linux: CI_DRM_16462 -> Patchwork_148230v1

  CI-20190529: 20190529
  CI_DRM_16462: 62267356da69c54c08ef08df02c0afc39aba1c22 @ git://anongit.freedesktop.org/gfx-ci/linux
  IGT_8336: 8336
  Patchwork_148230v1: 62267356da69c54c08ef08df02c0afc39aba1c22 @ git://anongit.freedesktop.org/gfx-ci/linux

== Logs ==

For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/index.html

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

^ permalink raw reply	[flat|nested] 29+ messages in thread

* ✗ i915.CI.Full: failure for drm/i915/hdcp: refactor HDCP GSC
  2025-04-24 20:01 [PATCH 00/10] drm/i915/hdcp: refactor HDCP GSC Jani Nikula
                   ` (11 preceding siblings ...)
  2025-04-24 21:24 ` ✓ i915.CI.BAT: success " Patchwork
@ 2025-04-25  5:46 ` Patchwork
  12 siblings, 0 replies; 29+ messages in thread
From: Patchwork @ 2025-04-25  5:46 UTC (permalink / raw)
  To: Jani Nikula; +Cc: intel-gfx

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

== Series Details ==

Series: drm/i915/hdcp: refactor HDCP GSC
URL   : https://patchwork.freedesktop.org/series/148230/
State : failure

== Summary ==

CI Bug Log - changes from CI_DRM_16462_full -> Patchwork_148230v1_full
====================================================

Summary
-------

  **FAILURE**

  Serious unknown changes coming with Patchwork_148230v1_full absolutely need to be
  verified manually.
  
  If you think the reported changes have nothing to do with the changes
  introduced in Patchwork_148230v1_full, 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.

  

Participating hosts (10 -> 10)
------------------------------

  No changes in participating hosts

Possible new issues
-------------------

  Here are the unknown changes that may have been introduced in Patchwork_148230v1_full:

### IGT changes ###

#### Possible regressions ####

  * igt@gem_mmap_offset@mmap-unmap@smem0:
    - shard-snb:          [PASS][1] -> [INCOMPLETE][2] +1 other test incomplete
   [1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16462/shard-snb5/igt@gem_mmap_offset@mmap-unmap@smem0.html
   [2]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-snb6/igt@gem_mmap_offset@mmap-unmap@smem0.html

  
Known issues
------------

  Here are the changes found in Patchwork_148230v1_full that come from known issues:

### IGT changes ###

#### Issues hit ####

  * igt@api_intel_bb@blit-reloc-purge-cache:
    - shard-dg2-9:        NOTRUN -> [SKIP][3] ([i915#8411])
   [3]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-dg2-9/igt@api_intel_bb@blit-reloc-purge-cache.html

  * igt@api_intel_bb@object-reloc-purge-cache:
    - shard-dg2:          NOTRUN -> [SKIP][4] ([i915#8411])
   [4]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-dg2-2/igt@api_intel_bb@object-reloc-purge-cache.html

  * igt@gem_bad_reloc@negative-reloc-bltcopy:
    - shard-mtlp:         NOTRUN -> [SKIP][5] ([i915#3281]) +8 other tests skip
   [5]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-mtlp-3/igt@gem_bad_reloc@negative-reloc-bltcopy.html

  * igt@gem_bad_reloc@negative-reloc-lut:
    - shard-rkl:          NOTRUN -> [SKIP][6] ([i915#3281]) +5 other tests skip
   [6]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-rkl-3/igt@gem_bad_reloc@negative-reloc-lut.html

  * igt@gem_busy@semaphore:
    - shard-dg2:          NOTRUN -> [SKIP][7] ([i915#3936])
   [7]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-dg2-11/igt@gem_busy@semaphore.html

  * igt@gem_ccs@large-ctrl-surf-copy:
    - shard-rkl:          NOTRUN -> [SKIP][8] ([i915#13008])
   [8]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-rkl-8/igt@gem_ccs@large-ctrl-surf-copy.html

  * igt@gem_ccs@suspend-resume:
    - shard-dg2:          [PASS][9] -> [INCOMPLETE][10] ([i915#13356]) +1 other test incomplete
   [9]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16462/shard-dg2-3/igt@gem_ccs@suspend-resume.html
   [10]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-dg2-7/igt@gem_ccs@suspend-resume.html

  * igt@gem_close_race@multigpu-basic-threads:
    - shard-dg2:          NOTRUN -> [SKIP][11] ([i915#7697])
   [11]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-dg2-6/igt@gem_close_race@multigpu-basic-threads.html
    - shard-mtlp:         NOTRUN -> [SKIP][12] ([i915#7697])
   [12]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-mtlp-3/igt@gem_close_race@multigpu-basic-threads.html

  * igt@gem_compute@compute-square:
    - shard-dg2:          NOTRUN -> [FAIL][13] ([i915#13665])
   [13]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-dg2-2/igt@gem_compute@compute-square.html

  * igt@gem_ctx_persistence@heartbeat-many:
    - shard-mtlp:         NOTRUN -> [SKIP][14] ([i915#8555]) +1 other test skip
   [14]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-mtlp-4/igt@gem_ctx_persistence@heartbeat-many.html
    - shard-dg2:          NOTRUN -> [SKIP][15] ([i915#8555]) +1 other test skip
   [15]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-dg2-4/igt@gem_ctx_persistence@heartbeat-many.html

  * igt@gem_ctx_sseu@invalid-args:
    - shard-dg2:          NOTRUN -> [SKIP][16] ([i915#280])
   [16]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-dg2-6/igt@gem_ctx_sseu@invalid-args.html

  * igt@gem_ctx_sseu@invalid-sseu:
    - shard-mtlp:         NOTRUN -> [SKIP][17] ([i915#280]) +1 other test skip
   [17]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-mtlp-1/igt@gem_ctx_sseu@invalid-sseu.html

  * igt@gem_ctx_sseu@mmap-args:
    - shard-rkl:          NOTRUN -> [SKIP][18] ([i915#280])
   [18]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-rkl-3/igt@gem_ctx_sseu@mmap-args.html

  * igt@gem_exec_balancer@bonded-pair:
    - shard-dg2-9:        NOTRUN -> [SKIP][19] ([i915#4771])
   [19]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-dg2-9/igt@gem_exec_balancer@bonded-pair.html

  * igt@gem_exec_balancer@parallel-out-fence:
    - shard-rkl:          NOTRUN -> [SKIP][20] ([i915#4525]) +1 other test skip
   [20]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-rkl-8/igt@gem_exec_balancer@parallel-out-fence.html

  * igt@gem_exec_capture@capture-invisible:
    - shard-rkl:          NOTRUN -> [SKIP][21] ([i915#6334]) +1 other test skip
   [21]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-rkl-3/igt@gem_exec_capture@capture-invisible.html

  * igt@gem_exec_endless@dispatch:
    - shard-dg2:          [PASS][22] -> [TIMEOUT][23] ([i915#3778] / [i915#7016])
   [22]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16462/shard-dg2-10/igt@gem_exec_endless@dispatch.html
   [23]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-dg2-8/igt@gem_exec_endless@dispatch.html

  * igt@gem_exec_endless@dispatch@vecs1:
    - shard-dg2:          [PASS][24] -> [TIMEOUT][25] ([i915#7016])
   [24]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16462/shard-dg2-10/igt@gem_exec_endless@dispatch@vecs1.html
   [25]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-dg2-8/igt@gem_exec_endless@dispatch@vecs1.html

  * igt@gem_exec_flush@basic-uc-ro-default:
    - shard-dg2:          NOTRUN -> [SKIP][26] ([i915#3539] / [i915#4852]) +1 other test skip
   [26]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-dg2-6/igt@gem_exec_flush@basic-uc-ro-default.html

  * igt@gem_exec_flush@basic-wb-rw-default:
    - shard-dg2-9:        NOTRUN -> [SKIP][27] ([i915#3539] / [i915#4852])
   [27]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-dg2-9/igt@gem_exec_flush@basic-wb-rw-default.html

  * igt@gem_exec_gttfill@engines@rcs0:
    - shard-rkl:          [PASS][28] -> [DMESG-WARN][29] ([i915#12964]) +2 other tests dmesg-warn
   [28]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16462/shard-rkl-8/igt@gem_exec_gttfill@engines@rcs0.html
   [29]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-rkl-3/igt@gem_exec_gttfill@engines@rcs0.html

  * igt@gem_exec_params@rsvd2-dirt:
    - shard-mtlp:         NOTRUN -> [SKIP][30] ([i915#5107])
   [30]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-mtlp-4/igt@gem_exec_params@rsvd2-dirt.html
    - shard-dg2:          NOTRUN -> [SKIP][31] ([i915#5107])
   [31]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-dg2-4/igt@gem_exec_params@rsvd2-dirt.html

  * igt@gem_exec_reloc@basic-cpu-gtt-noreloc:
    - shard-dg2:          NOTRUN -> [SKIP][32] ([i915#3281]) +11 other tests skip
   [32]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-dg2-4/igt@gem_exec_reloc@basic-cpu-gtt-noreloc.html

  * igt@gem_exec_reloc@basic-cpu-read:
    - shard-dg2-9:        NOTRUN -> [SKIP][33] ([i915#3281]) +3 other tests skip
   [33]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-dg2-9/igt@gem_exec_reloc@basic-cpu-read.html

  * igt@gem_exec_schedule@reorder-wide:
    - shard-dg2-9:        NOTRUN -> [SKIP][34] ([i915#4537] / [i915#4812])
   [34]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-dg2-9/igt@gem_exec_schedule@reorder-wide.html

  * igt@gem_exec_schedule@semaphore-power:
    - shard-mtlp:         NOTRUN -> [SKIP][35] ([i915#4537] / [i915#4812]) +1 other test skip
   [35]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-mtlp-3/igt@gem_exec_schedule@semaphore-power.html
    - shard-dg2:          NOTRUN -> [SKIP][36] ([i915#4537] / [i915#4812])
   [36]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-dg2-6/igt@gem_exec_schedule@semaphore-power.html

  * igt@gem_exec_suspend@basic-s0@smem:
    - shard-rkl:          NOTRUN -> [INCOMPLETE][37] ([i915#13304]) +1 other test incomplete
   [37]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-rkl-3/igt@gem_exec_suspend@basic-s0@smem.html

  * igt@gem_fence_thrash@bo-write-verify-y:
    - shard-dg2-9:        NOTRUN -> [SKIP][38] ([i915#4860]) +1 other test skip
   [38]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-dg2-9/igt@gem_fence_thrash@bo-write-verify-y.html

  * igt@gem_fenced_exec_thrash@no-spare-fences:
    - shard-mtlp:         NOTRUN -> [SKIP][39] ([i915#4860]) +1 other test skip
   [39]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-mtlp-4/igt@gem_fenced_exec_thrash@no-spare-fences.html
    - shard-dg2:          NOTRUN -> [SKIP][40] ([i915#4860])
   [40]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-dg2-4/igt@gem_fenced_exec_thrash@no-spare-fences.html

  * igt@gem_lmem_swapping@heavy-verify-multi:
    - shard-mtlp:         NOTRUN -> [SKIP][41] ([i915#4613]) +1 other test skip
   [41]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-mtlp-4/igt@gem_lmem_swapping@heavy-verify-multi.html

  * igt@gem_lmem_swapping@smem-oom:
    - shard-rkl:          NOTRUN -> [SKIP][42] ([i915#4613])
   [42]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-rkl-8/igt@gem_lmem_swapping@smem-oom.html

  * igt@gem_madvise@dontneed-before-exec:
    - shard-mtlp:         NOTRUN -> [SKIP][43] ([i915#3282]) +3 other tests skip
   [43]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-mtlp-7/igt@gem_madvise@dontneed-before-exec.html

  * igt@gem_media_fill@media-fill:
    - shard-dg2:          NOTRUN -> [SKIP][44] ([i915#8289])
   [44]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-dg2-2/igt@gem_media_fill@media-fill.html

  * igt@gem_mmap_gtt@cpuset-medium-copy:
    - shard-mtlp:         NOTRUN -> [SKIP][45] ([i915#4077]) +8 other tests skip
   [45]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-mtlp-4/igt@gem_mmap_gtt@cpuset-medium-copy.html

  * igt@gem_mmap_gtt@pf-nonblock:
    - shard-dg2-9:        NOTRUN -> [SKIP][46] ([i915#4077]) +3 other tests skip
   [46]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-dg2-9/igt@gem_mmap_gtt@pf-nonblock.html

  * igt@gem_mmap_gtt@zero-extend:
    - shard-dg2:          NOTRUN -> [SKIP][47] ([i915#4077]) +6 other tests skip
   [47]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-dg2-8/igt@gem_mmap_gtt@zero-extend.html

  * igt@gem_mmap_wc@copy:
    - shard-dg2-9:        NOTRUN -> [SKIP][48] ([i915#4083]) +1 other test skip
   [48]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-dg2-9/igt@gem_mmap_wc@copy.html

  * igt@gem_mmap_wc@pf-nonblock:
    - shard-mtlp:         NOTRUN -> [SKIP][49] ([i915#4083])
   [49]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-mtlp-1/igt@gem_mmap_wc@pf-nonblock.html

  * igt@gem_mmap_wc@write-prefaulted:
    - shard-dg2:          NOTRUN -> [SKIP][50] ([i915#4083]) +2 other tests skip
   [50]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-dg2-2/igt@gem_mmap_wc@write-prefaulted.html

  * igt@gem_pread@self:
    - shard-dg2:          NOTRUN -> [SKIP][51] ([i915#3282]) +6 other tests skip
   [51]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-dg2-4/igt@gem_pread@self.html

  * igt@gem_pxp@create-valid-protected-context:
    - shard-rkl:          [PASS][52] -> [TIMEOUT][53] ([i915#12964])
   [52]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16462/shard-rkl-8/igt@gem_pxp@create-valid-protected-context.html
   [53]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-rkl-3/igt@gem_pxp@create-valid-protected-context.html

  * igt@gem_pxp@regular-baseline-src-copy-readible:
    - shard-dg2:          NOTRUN -> [SKIP][54] ([i915#4270]) +1 other test skip
   [54]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-dg2-2/igt@gem_pxp@regular-baseline-src-copy-readible.html

  * igt@gem_pxp@reject-modify-context-protection-off-2:
    - shard-dg2-9:        NOTRUN -> [SKIP][55] ([i915#4270]) +1 other test skip
   [55]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-dg2-9/igt@gem_pxp@reject-modify-context-protection-off-2.html

  * igt@gem_readwrite@read-bad-handle:
    - shard-dg2-9:        NOTRUN -> [SKIP][56] ([i915#3282])
   [56]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-dg2-9/igt@gem_readwrite@read-bad-handle.html

  * igt@gem_render_copy@y-tiled-ccs-to-y-tiled:
    - shard-dg2-9:        NOTRUN -> [SKIP][57] ([i915#5190] / [i915#8428]) +4 other tests skip
   [57]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-dg2-9/igt@gem_render_copy@y-tiled-ccs-to-y-tiled.html

  * igt@gem_render_copy@y-tiled-to-vebox-y-tiled:
    - shard-mtlp:         NOTRUN -> [SKIP][58] ([i915#8428]) +5 other tests skip
   [58]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-mtlp-1/igt@gem_render_copy@y-tiled-to-vebox-y-tiled.html

  * igt@gem_render_copy@y-tiled-to-vebox-yf-tiled:
    - shard-dg2:          NOTRUN -> [SKIP][59] ([i915#5190] / [i915#8428]) +4 other tests skip
   [59]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-dg2-6/igt@gem_render_copy@y-tiled-to-vebox-yf-tiled.html

  * igt@gem_set_tiling_vs_blt@tiled-to-tiled:
    - shard-dg2:          NOTRUN -> [SKIP][60] ([i915#4079])
   [60]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-dg2-6/igt@gem_set_tiling_vs_blt@tiled-to-tiled.html

  * igt@gem_userptr_blits@create-destroy-unsync:
    - shard-rkl:          NOTRUN -> [SKIP][61] ([i915#3297])
   [61]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-rkl-8/igt@gem_userptr_blits@create-destroy-unsync.html

  * igt@gem_userptr_blits@map-fixed-invalidate-overlap:
    - shard-dg2-9:        NOTRUN -> [SKIP][62] ([i915#3297] / [i915#4880])
   [62]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-dg2-9/igt@gem_userptr_blits@map-fixed-invalidate-overlap.html

  * igt@gem_userptr_blits@map-fixed-invalidate-overlap-busy:
    - shard-dg2:          NOTRUN -> [SKIP][63] ([i915#3297] / [i915#4880])
   [63]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-dg2-11/igt@gem_userptr_blits@map-fixed-invalidate-overlap-busy.html

  * igt@gem_userptr_blits@unsync-overlap:
    - shard-dg2:          NOTRUN -> [SKIP][64] ([i915#3297]) +1 other test skip
   [64]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-dg2-2/igt@gem_userptr_blits@unsync-overlap.html

  * igt@gem_userptr_blits@unsync-unmap-after-close:
    - shard-mtlp:         NOTRUN -> [SKIP][65] ([i915#3297]) +2 other tests skip
   [65]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-mtlp-7/igt@gem_userptr_blits@unsync-unmap-after-close.html

  * igt@gen7_exec_parse@batch-without-end:
    - shard-rkl:          NOTRUN -> [SKIP][66] +7 other tests skip
   [66]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-rkl-8/igt@gen7_exec_parse@batch-without-end.html

  * igt@gen7_exec_parse@bitmasks:
    - shard-dg2-9:        NOTRUN -> [SKIP][67] +1 other test skip
   [67]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-dg2-9/igt@gen7_exec_parse@bitmasks.html

  * igt@gen9_exec_parse@basic-rejected:
    - shard-dg2:          NOTRUN -> [SKIP][68] ([i915#2856]) +2 other tests skip
   [68]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-dg2-6/igt@gen9_exec_parse@basic-rejected.html

  * igt@gen9_exec_parse@bb-start-cmd:
    - shard-mtlp:         NOTRUN -> [SKIP][69] ([i915#2856]) +1 other test skip
   [69]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-mtlp-7/igt@gen9_exec_parse@bb-start-cmd.html

  * igt@gen9_exec_parse@cmd-crossing-page:
    - shard-dg2-9:        NOTRUN -> [SKIP][70] ([i915#2856])
   [70]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-dg2-9/igt@gen9_exec_parse@cmd-crossing-page.html

  * igt@gen9_exec_parse@unaligned-jump:
    - shard-rkl:          NOTRUN -> [SKIP][71] ([i915#2527])
   [71]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-rkl-8/igt@gen9_exec_parse@unaligned-jump.html

  * igt@i915_drm_fdinfo@busy-check-all@ccs0:
    - shard-mtlp:         NOTRUN -> [SKIP][72] ([i915#11527]) +6 other tests skip
   [72]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-mtlp-4/igt@i915_drm_fdinfo@busy-check-all@ccs0.html

  * igt@i915_drm_fdinfo@busy-check-all@vecs0:
    - shard-dg2:          NOTRUN -> [SKIP][73] ([i915#11527]) +7 other tests skip
   [73]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-dg2-4/igt@i915_drm_fdinfo@busy-check-all@vecs0.html

  * igt@i915_drm_fdinfo@virtual-busy:
    - shard-mtlp:         NOTRUN -> [SKIP][74] ([i915#14118])
   [74]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-mtlp-1/igt@i915_drm_fdinfo@virtual-busy.html

  * igt@i915_drm_fdinfo@virtual-busy-hang:
    - shard-dg2-9:        NOTRUN -> [SKIP][75] ([i915#14118])
   [75]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-dg2-9/igt@i915_drm_fdinfo@virtual-busy-hang.html

  * igt@i915_drm_fdinfo@virtual-busy-idle:
    - shard-dg2:          NOTRUN -> [SKIP][76] ([i915#14118]) +1 other test skip
   [76]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-dg2-2/igt@i915_drm_fdinfo@virtual-busy-idle.html

  * igt@i915_module_load@resize-bar:
    - shard-rkl:          NOTRUN -> [SKIP][77] ([i915#6412])
   [77]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-rkl-8/igt@i915_module_load@resize-bar.html

  * igt@i915_pm_rc6_residency@rc6-idle@gt0-bcs0:
    - shard-dg1:          [PASS][78] -> [FAIL][79] ([i915#3591])
   [78]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16462/shard-dg1-12/igt@i915_pm_rc6_residency@rc6-idle@gt0-bcs0.html
   [79]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-dg1-15/igt@i915_pm_rc6_residency@rc6-idle@gt0-bcs0.html

  * igt@i915_pm_rps@min-max-config-idle:
    - shard-dg2-9:        NOTRUN -> [SKIP][80] ([i915#11681] / [i915#6621])
   [80]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-dg2-9/igt@i915_pm_rps@min-max-config-idle.html

  * igt@i915_pm_rps@reset:
    - shard-mtlp:         NOTRUN -> [FAIL][81] ([i915#8346])
   [81]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-mtlp-4/igt@i915_pm_rps@reset.html

  * igt@i915_pm_sseu@full-enable:
    - shard-dg2:          NOTRUN -> [SKIP][82] ([i915#4387])
   [82]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-dg2-2/igt@i915_pm_sseu@full-enable.html

  * igt@i915_suspend@forcewake:
    - shard-glk:          NOTRUN -> [INCOMPLETE][83] ([i915#4817])
   [83]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-glk1/igt@i915_suspend@forcewake.html

  * igt@kms_addfb_basic@addfb25-x-tiled-mismatch-legacy:
    - shard-mtlp:         NOTRUN -> [SKIP][84] ([i915#4212]) +3 other tests skip
   [84]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-mtlp-7/igt@kms_addfb_basic@addfb25-x-tiled-mismatch-legacy.html
    - shard-dg2-9:        NOTRUN -> [SKIP][85] ([i915#4212]) +1 other test skip
   [85]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-dg2-9/igt@kms_addfb_basic@addfb25-x-tiled-mismatch-legacy.html

  * igt@kms_addfb_basic@basic-y-tiled-legacy:
    - shard-dg2:          NOTRUN -> [SKIP][86] ([i915#4215] / [i915#5190])
   [86]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-dg2-4/igt@kms_addfb_basic@basic-y-tiled-legacy.html

  * igt@kms_async_flips@async-flip-with-page-flip-events-atomic@pipe-c-hdmi-a-2-4-mc-ccs:
    - shard-dg2-9:        NOTRUN -> [SKIP][87] ([i915#8709]) +7 other tests skip
   [87]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-dg2-9/igt@kms_async_flips@async-flip-with-page-flip-events-atomic@pipe-c-hdmi-a-2-4-mc-ccs.html

  * igt@kms_async_flips@async-flip-with-page-flip-events@pipe-a-edp-1-4-rc-ccs-cc:
    - shard-mtlp:         NOTRUN -> [SKIP][88] ([i915#8709]) +7 other tests skip
   [88]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-mtlp-1/igt@kms_async_flips@async-flip-with-page-flip-events@pipe-a-edp-1-4-rc-ccs-cc.html

  * igt@kms_atomic_transition@plane-all-modeset-transition-fencing:
    - shard-dg2:          [PASS][89] -> [FAIL][90] ([i915#5956]) +1 other test fail
   [89]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16462/shard-dg2-2/igt@kms_atomic_transition@plane-all-modeset-transition-fencing.html
   [90]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-dg2-2/igt@kms_atomic_transition@plane-all-modeset-transition-fencing.html
    - shard-mtlp:         NOTRUN -> [SKIP][91] ([i915#1769] / [i915#3555])
   [91]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-mtlp-1/igt@kms_atomic_transition@plane-all-modeset-transition-fencing.html

  * igt@kms_atomic_transition@plane-all-modeset-transition@pipe-a-dp-4:
    - shard-dg2:          NOTRUN -> [FAIL][92] ([i915#5956])
   [92]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-dg2-10/igt@kms_atomic_transition@plane-all-modeset-transition@pipe-a-dp-4.html

  * igt@kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-180-hflip:
    - shard-rkl:          NOTRUN -> [SKIP][93] ([i915#5286]) +1 other test skip
   [93]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-rkl-8/igt@kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-180-hflip.html

  * igt@kms_big_fb@linear-8bpp-rotate-270:
    - shard-rkl:          NOTRUN -> [SKIP][94] ([i915#3638])
   [94]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-rkl-3/igt@kms_big_fb@linear-8bpp-rotate-270.html

  * igt@kms_big_fb@y-tiled-8bpp-rotate-180:
    - shard-dg2:          NOTRUN -> [SKIP][95] ([i915#4538] / [i915#5190]) +10 other tests skip
   [95]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-dg2-2/igt@kms_big_fb@y-tiled-8bpp-rotate-180.html

  * igt@kms_big_fb@yf-tiled-16bpp-rotate-0:
    - shard-mtlp:         NOTRUN -> [SKIP][96] +14 other tests skip
   [96]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-mtlp-4/igt@kms_big_fb@yf-tiled-16bpp-rotate-0.html

  * igt@kms_big_fb@yf-tiled-32bpp-rotate-270:
    - shard-dg2-9:        NOTRUN -> [SKIP][97] ([i915#4538] / [i915#5190]) +4 other tests skip
   [97]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-dg2-9/igt@kms_big_fb@yf-tiled-32bpp-rotate-270.html

  * igt@kms_big_fb@yf-tiled-addfb:
    - shard-mtlp:         NOTRUN -> [SKIP][98] ([i915#6187]) +1 other test skip
   [98]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-mtlp-4/igt@kms_big_fb@yf-tiled-addfb.html

  * igt@kms_ccs@bad-aux-stride-4-tiled-mtl-mc-ccs@pipe-d-hdmi-a-2:
    - shard-dg2-9:        NOTRUN -> [SKIP][99] ([i915#10307] / [i915#6095]) +24 other tests skip
   [99]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-dg2-9/igt@kms_ccs@bad-aux-stride-4-tiled-mtl-mc-ccs@pipe-d-hdmi-a-2.html

  * igt@kms_ccs@bad-rotation-90-4-tiled-bmg-ccs:
    - shard-dg2-9:        NOTRUN -> [SKIP][100] ([i915#12313])
   [100]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-dg2-9/igt@kms_ccs@bad-rotation-90-4-tiled-bmg-ccs.html

  * igt@kms_ccs@bad-rotation-90-4-tiled-mtl-mc-ccs:
    - shard-rkl:          NOTRUN -> [SKIP][101] ([i915#14098] / [i915#6095]) +13 other tests skip
   [101]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-rkl-3/igt@kms_ccs@bad-rotation-90-4-tiled-mtl-mc-ccs.html

  * igt@kms_ccs@bad-rotation-90-4-tiled-mtl-rc-ccs@pipe-d-hdmi-a-1:
    - shard-dg2:          NOTRUN -> [SKIP][102] ([i915#10307] / [i915#10434] / [i915#6095]) +3 other tests skip
   [102]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-dg2-4/igt@kms_ccs@bad-rotation-90-4-tiled-mtl-rc-ccs@pipe-d-hdmi-a-1.html

  * igt@kms_ccs@bad-rotation-90-y-tiled-gen12-rc-ccs-cc@pipe-b-edp-1:
    - shard-mtlp:         NOTRUN -> [SKIP][103] ([i915#6095]) +39 other tests skip
   [103]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-mtlp-1/igt@kms_ccs@bad-rotation-90-y-tiled-gen12-rc-ccs-cc@pipe-b-edp-1.html

  * igt@kms_ccs@ccs-on-another-bo-4-tiled-mtl-mc-ccs@pipe-a-hdmi-a-2:
    - shard-rkl:          NOTRUN -> [SKIP][104] ([i915#6095]) +9 other tests skip
   [104]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-rkl-8/igt@kms_ccs@ccs-on-another-bo-4-tiled-mtl-mc-ccs@pipe-a-hdmi-a-2.html

  * igt@kms_ccs@crc-primary-basic-4-tiled-lnl-ccs:
    - shard-dg2:          NOTRUN -> [SKIP][105] ([i915#12313])
   [105]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-dg2-8/igt@kms_ccs@crc-primary-basic-4-tiled-lnl-ccs.html

  * igt@kms_ccs@crc-primary-rotation-180-4-tiled-dg2-rc-ccs@pipe-a-hdmi-a-3:
    - shard-dg1:          NOTRUN -> [SKIP][106] ([i915#4423] / [i915#6095])
   [106]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-dg1-12/igt@kms_ccs@crc-primary-rotation-180-4-tiled-dg2-rc-ccs@pipe-a-hdmi-a-3.html

  * igt@kms_ccs@crc-primary-suspend-4-tiled-bmg-ccs:
    - shard-mtlp:         NOTRUN -> [SKIP][107] ([i915#12805])
   [107]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-mtlp-4/igt@kms_ccs@crc-primary-suspend-4-tiled-bmg-ccs.html

  * igt@kms_ccs@crc-primary-suspend-4-tiled-lnl-ccs:
    - shard-dg2:          NOTRUN -> [SKIP][108] ([i915#12805]) +1 other test skip
   [108]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-dg2-6/igt@kms_ccs@crc-primary-suspend-4-tiled-lnl-ccs.html

  * igt@kms_ccs@crc-primary-suspend-4-tiled-mtl-rc-ccs-cc@pipe-c-dp-4:
    - shard-dg2:          NOTRUN -> [SKIP][109] ([i915#6095]) +19 other tests skip
   [109]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-dg2-10/igt@kms_ccs@crc-primary-suspend-4-tiled-mtl-rc-ccs-cc@pipe-c-dp-4.html

  * igt@kms_ccs@crc-primary-suspend-4-tiled-mtl-rc-ccs-cc@pipe-d-hdmi-a-3:
    - shard-dg1:          NOTRUN -> [SKIP][110] ([i915#6095]) +158 other tests skip
   [110]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-dg1-12/igt@kms_ccs@crc-primary-suspend-4-tiled-mtl-rc-ccs-cc@pipe-d-hdmi-a-3.html

  * igt@kms_ccs@crc-sprite-planes-basic-yf-tiled-ccs@pipe-a-dp-4:
    - shard-dg2:          NOTRUN -> [SKIP][111] ([i915#10307] / [i915#6095]) +139 other tests skip
   [111]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-dg2-10/igt@kms_ccs@crc-sprite-planes-basic-yf-tiled-ccs@pipe-a-dp-4.html

  * igt@kms_ccs@random-ccs-data-4-tiled-bmg-ccs:
    - shard-rkl:          NOTRUN -> [SKIP][112] ([i915#12313])
   [112]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-rkl-8/igt@kms_ccs@random-ccs-data-4-tiled-bmg-ccs.html

  * igt@kms_cdclk@mode-transition:
    - shard-mtlp:         NOTRUN -> [SKIP][113] ([i915#13781]) +4 other tests skip
   [113]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-mtlp-1/igt@kms_cdclk@mode-transition.html

  * igt@kms_chamelium_frames@dp-crc-multiple:
    - shard-dg2-9:        NOTRUN -> [SKIP][114] ([i915#11151] / [i915#7828]) +2 other tests skip
   [114]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-dg2-9/igt@kms_chamelium_frames@dp-crc-multiple.html

  * igt@kms_chamelium_frames@hdmi-crc-fast:
    - shard-dg2:          NOTRUN -> [SKIP][115] ([i915#11151] / [i915#7828]) +6 other tests skip
   [115]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-dg2-8/igt@kms_chamelium_frames@hdmi-crc-fast.html

  * igt@kms_chamelium_hpd@dp-hpd-storm:
    - shard-rkl:          NOTRUN -> [SKIP][116] ([i915#11151] / [i915#7828])
   [116]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-rkl-8/igt@kms_chamelium_hpd@dp-hpd-storm.html

  * igt@kms_chamelium_hpd@hdmi-hpd-enable-disable-mode:
    - shard-mtlp:         NOTRUN -> [SKIP][117] ([i915#11151] / [i915#7828]) +6 other tests skip
   [117]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-mtlp-3/igt@kms_chamelium_hpd@hdmi-hpd-enable-disable-mode.html

  * igt@kms_content_protection@lic-type-0@pipe-a-dp-4:
    - shard-dg2:          NOTRUN -> [FAIL][118] ([i915#7173])
   [118]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-dg2-10/igt@kms_content_protection@lic-type-0@pipe-a-dp-4.html

  * igt@kms_content_protection@mei-interface:
    - shard-dg2:          NOTRUN -> [SKIP][119] ([i915#9424]) +1 other test skip
   [119]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-dg2-8/igt@kms_content_protection@mei-interface.html

  * igt@kms_content_protection@srm:
    - shard-dg2-9:        NOTRUN -> [SKIP][120] ([i915#7118])
   [120]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-dg2-9/igt@kms_content_protection@srm.html

  * igt@kms_content_protection@uevent:
    - shard-mtlp:         NOTRUN -> [SKIP][121] ([i915#6944] / [i915#9424]) +3 other tests skip
   [121]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-mtlp-4/igt@kms_content_protection@uevent.html
    - shard-dg2:          NOTRUN -> [SKIP][122] ([i915#7118] / [i915#9424])
   [122]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-dg2-4/igt@kms_content_protection@uevent.html

  * igt@kms_cursor_crc@cursor-offscreen-32x10:
    - shard-dg2:          NOTRUN -> [SKIP][123] ([i915#3555])
   [123]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-dg2-2/igt@kms_cursor_crc@cursor-offscreen-32x10.html

  * igt@kms_cursor_crc@cursor-offscreen-512x512:
    - shard-dg2:          NOTRUN -> [SKIP][124] ([i915#13049]) +1 other test skip
   [124]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-dg2-4/igt@kms_cursor_crc@cursor-offscreen-512x512.html

  * igt@kms_cursor_crc@cursor-offscreen-64x21:
    - shard-mtlp:         NOTRUN -> [SKIP][125] ([i915#8814])
   [125]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-mtlp-1/igt@kms_cursor_crc@cursor-offscreen-64x21.html

  * igt@kms_cursor_crc@cursor-rapid-movement-512x512:
    - shard-mtlp:         NOTRUN -> [SKIP][126] ([i915#13049])
   [126]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-mtlp-4/igt@kms_cursor_crc@cursor-rapid-movement-512x512.html

  * igt@kms_cursor_crc@cursor-sliding-512x512:
    - shard-dg2-9:        NOTRUN -> [SKIP][127] ([i915#13049])
   [127]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-dg2-9/igt@kms_cursor_crc@cursor-sliding-512x512.html

  * igt@kms_cursor_legacy@2x-long-flip-vs-cursor-atomic:
    - shard-dg2:          NOTRUN -> [SKIP][128] ([i915#13046] / [i915#5354]) +7 other tests skip
   [128]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-dg2-6/igt@kms_cursor_legacy@2x-long-flip-vs-cursor-atomic.html

  * igt@kms_cursor_legacy@basic-busy-flip-before-cursor-varying-size:
    - shard-dg2:          NOTRUN -> [SKIP][129] ([i915#4103] / [i915#4213]) +1 other test skip
   [129]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-dg2-2/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-varying-size.html

  * igt@kms_cursor_legacy@cursora-vs-flipb-atomic-transitions:
    - shard-dg2-9:        NOTRUN -> [SKIP][130] ([i915#13046] / [i915#5354]) +2 other tests skip
   [130]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-dg2-9/igt@kms_cursor_legacy@cursora-vs-flipb-atomic-transitions.html

  * igt@kms_cursor_legacy@cursorb-vs-flipa-atomic-transitions:
    - shard-mtlp:         NOTRUN -> [SKIP][131] ([i915#9809]) +3 other tests skip
   [131]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-mtlp-4/igt@kms_cursor_legacy@cursorb-vs-flipa-atomic-transitions.html

  * igt@kms_cursor_legacy@short-busy-flip-before-cursor-toggle:
    - shard-mtlp:         NOTRUN -> [SKIP][132] ([i915#4213]) +1 other test skip
   [132]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-mtlp-1/igt@kms_cursor_legacy@short-busy-flip-before-cursor-toggle.html

  * igt@kms_dither@fb-8bpc-vs-panel-8bpc:
    - shard-dg2-9:        NOTRUN -> [SKIP][133] ([i915#3555]) +1 other test skip
   [133]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-dg2-9/igt@kms_dither@fb-8bpc-vs-panel-8bpc.html

  * igt@kms_dp_link_training@non-uhbr-mst:
    - shard-dg2:          NOTRUN -> [SKIP][134] ([i915#13749])
   [134]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-dg2-11/igt@kms_dp_link_training@non-uhbr-mst.html

  * igt@kms_dsc@dsc-with-bpc:
    - shard-mtlp:         NOTRUN -> [SKIP][135] ([i915#3555] / [i915#3840])
   [135]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-mtlp-1/igt@kms_dsc@dsc-with-bpc.html

  * igt@kms_dsc@dsc-with-formats:
    - shard-rkl:          NOTRUN -> [SKIP][136] ([i915#3555] / [i915#3840])
   [136]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-rkl-8/igt@kms_dsc@dsc-with-formats.html

  * igt@kms_fbc_dirty_rect@fbc-dirty-rectangle-out-visible-area:
    - shard-dg2-9:        NOTRUN -> [SKIP][137] ([i915#13798])
   [137]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-dg2-9/igt@kms_fbc_dirty_rect@fbc-dirty-rectangle-out-visible-area.html

  * igt@kms_fbcon_fbt@psr-suspend:
    - shard-dg2-9:        NOTRUN -> [SKIP][138] ([i915#3469])
   [138]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-dg2-9/igt@kms_fbcon_fbt@psr-suspend.html

  * igt@kms_feature_discovery@chamelium:
    - shard-mtlp:         NOTRUN -> [SKIP][139] ([i915#4854])
   [139]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-mtlp-3/igt@kms_feature_discovery@chamelium.html
    - shard-dg2:          NOTRUN -> [SKIP][140] ([i915#4854])
   [140]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-dg2-6/igt@kms_feature_discovery@chamelium.html

  * igt@kms_feature_discovery@dp-mst:
    - shard-rkl:          NOTRUN -> [SKIP][141] ([i915#9337])
   [141]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-rkl-3/igt@kms_feature_discovery@dp-mst.html

  * igt@kms_feature_discovery@psr2:
    - shard-dg2:          NOTRUN -> [SKIP][142] ([i915#658])
   [142]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-dg2-4/igt@kms_feature_discovery@psr2.html

  * igt@kms_fence_pin_leak:
    - shard-dg2-9:        NOTRUN -> [SKIP][143] ([i915#4881])
   [143]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-dg2-9/igt@kms_fence_pin_leak.html

  * igt@kms_flip@2x-blocking-wf_vblank:
    - shard-dg2:          NOTRUN -> [SKIP][144] ([i915#9934]) +1 other test skip
   [144]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-dg2-6/igt@kms_flip@2x-blocking-wf_vblank.html

  * igt@kms_flip@2x-busy-flip:
    - shard-dg2-9:        NOTRUN -> [SKIP][145] ([i915#9934]) +2 other tests skip
   [145]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-dg2-9/igt@kms_flip@2x-busy-flip.html

  * igt@kms_flip@2x-dpms-vs-vblank-race:
    - shard-mtlp:         NOTRUN -> [SKIP][146] ([i915#3637] / [i915#9934]) +6 other tests skip
   [146]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-mtlp-1/igt@kms_flip@2x-dpms-vs-vblank-race.html

  * igt@kms_flip@2x-flip-vs-rmfb:
    - shard-rkl:          NOTRUN -> [SKIP][147] ([i915#9934]) +3 other tests skip
   [147]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-rkl-8/igt@kms_flip@2x-flip-vs-rmfb.html

  * igt@kms_flip@2x-flip-vs-suspend@ab-vga1-hdmi-a1:
    - shard-snb:          [PASS][148] -> [TIMEOUT][149] ([i915#14033]) +1 other test timeout
   [148]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16462/shard-snb7/igt@kms_flip@2x-flip-vs-suspend@ab-vga1-hdmi-a1.html
   [149]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-snb4/igt@kms_flip@2x-flip-vs-suspend@ab-vga1-hdmi-a1.html

  * igt@kms_flip@flip-vs-absolute-wf_vblank-interruptible:
    - shard-rkl:          NOTRUN -> [FAIL][150] ([i915#13734]) +2 other tests fail
   [150]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-rkl-8/igt@kms_flip@flip-vs-absolute-wf_vblank-interruptible.html

  * igt@kms_flip@flip-vs-suspend-interruptible:
    - shard-dg1:          [PASS][151] -> [DMESG-WARN][152] ([i915#4423]) +5 other tests dmesg-warn
   [151]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16462/shard-dg1-15/igt@kms_flip@flip-vs-suspend-interruptible.html
   [152]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-dg1-12/igt@kms_flip@flip-vs-suspend-interruptible.html

  * igt@kms_flip@flip-vs-suspend-interruptible@b-hdmi-a3:
    - shard-dg1:          NOTRUN -> [DMESG-WARN][153] ([i915#4423]) +1 other test dmesg-warn
   [153]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-dg1-12/igt@kms_flip@flip-vs-suspend-interruptible@b-hdmi-a3.html

  * igt@kms_flip_scaled_crc@flip-32bpp-4tile-to-64bpp-4tile-upscaling:
    - shard-rkl:          NOTRUN -> [SKIP][154] ([i915#2672] / [i915#3555])
   [154]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-rkl-3/igt@kms_flip_scaled_crc@flip-32bpp-4tile-to-64bpp-4tile-upscaling.html

  * igt@kms_flip_scaled_crc@flip-32bpp-4tile-to-64bpp-4tile-upscaling@pipe-a-valid-mode:
    - shard-rkl:          NOTRUN -> [SKIP][155] ([i915#2672])
   [155]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-rkl-3/igt@kms_flip_scaled_crc@flip-32bpp-4tile-to-64bpp-4tile-upscaling@pipe-a-valid-mode.html

  * igt@kms_flip_scaled_crc@flip-32bpp-yftile-to-32bpp-yftileccs-downscaling:
    - shard-dg2:          NOTRUN -> [SKIP][156] ([i915#2672] / [i915#3555]) +2 other tests skip
   [156]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-dg2-8/igt@kms_flip_scaled_crc@flip-32bpp-yftile-to-32bpp-yftileccs-downscaling.html

  * igt@kms_flip_scaled_crc@flip-32bpp-yftile-to-32bpp-yftileccs-downscaling@pipe-a-valid-mode:
    - shard-dg2:          NOTRUN -> [SKIP][157] ([i915#2672]) +3 other tests skip
   [157]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-dg2-8/igt@kms_flip_scaled_crc@flip-32bpp-yftile-to-32bpp-yftileccs-downscaling@pipe-a-valid-mode.html

  * igt@kms_flip_scaled_crc@flip-32bpp-yftileccs-to-64bpp-yftile-upscaling:
    - shard-mtlp:         NOTRUN -> [SKIP][158] ([i915#2672] / [i915#3555] / [i915#8813]) +1 other test skip
   [158]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-mtlp-4/igt@kms_flip_scaled_crc@flip-32bpp-yftileccs-to-64bpp-yftile-upscaling.html

  * igt@kms_flip_scaled_crc@flip-32bpp-yftileccs-to-64bpp-yftile-upscaling@pipe-a-default-mode:
    - shard-mtlp:         NOTRUN -> [SKIP][159] ([i915#2672] / [i915#8813]) +1 other test skip
   [159]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-mtlp-4/igt@kms_flip_scaled_crc@flip-32bpp-yftileccs-to-64bpp-yftile-upscaling@pipe-a-default-mode.html

  * igt@kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-upscaling:
    - shard-dg2:          NOTRUN -> [SKIP][160] ([i915#2672] / [i915#3555] / [i915#5190])
   [160]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-dg2-6/igt@kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-upscaling.html

  * igt@kms_flip_scaled_crc@flip-64bpp-xtile-to-16bpp-xtile-downscaling:
    - shard-mtlp:         NOTRUN -> [SKIP][161] ([i915#3555] / [i915#8810] / [i915#8813]) +1 other test skip
   [161]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-mtlp-1/igt@kms_flip_scaled_crc@flip-64bpp-xtile-to-16bpp-xtile-downscaling.html

  * igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-16bpp-yftile-upscaling:
    - shard-dg2-9:        NOTRUN -> [SKIP][162] ([i915#2672] / [i915#3555])
   [162]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-dg2-9/igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-16bpp-yftile-upscaling.html

  * igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-16bpp-yftile-upscaling@pipe-a-valid-mode:
    - shard-dg2-9:        NOTRUN -> [SKIP][163] ([i915#2672])
   [163]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-dg2-9/igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-16bpp-yftile-upscaling@pipe-a-valid-mode.html

  * igt@kms_frontbuffer_tracking@fbc-1p-primscrn-pri-indfb-draw-mmap-gtt:
    - shard-mtlp:         NOTRUN -> [SKIP][164] ([i915#8708]) +6 other tests skip
   [164]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-mtlp-7/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-pri-indfb-draw-mmap-gtt.html

  * igt@kms_frontbuffer_tracking@fbc-2p-primscrn-pri-shrfb-draw-mmap-gtt:
    - shard-dg2:          NOTRUN -> [SKIP][165] ([i915#8708]) +13 other tests skip
   [165]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-dg2-4/igt@kms_frontbuffer_tracking@fbc-2p-primscrn-pri-shrfb-draw-mmap-gtt.html

  * igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-indfb-plflip-blt:
    - shard-dg2-9:        NOTRUN -> [SKIP][166] ([i915#5354]) +10 other tests skip
   [166]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-dg2-9/igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-indfb-plflip-blt.html

  * igt@kms_frontbuffer_tracking@fbc-tiling-y:
    - shard-mtlp:         NOTRUN -> [SKIP][167] ([i915#10055])
   [167]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-mtlp-4/igt@kms_frontbuffer_tracking@fbc-tiling-y.html
    - shard-dg2:          NOTRUN -> [SKIP][168] ([i915#10055])
   [168]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-dg2-4/igt@kms_frontbuffer_tracking@fbc-tiling-y.html

  * igt@kms_frontbuffer_tracking@fbcpsr-1p-offscren-pri-indfb-draw-pwrite:
    - shard-dg2:          NOTRUN -> [SKIP][169] ([i915#3458]) +12 other tests skip
   [169]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-dg2-6/igt@kms_frontbuffer_tracking@fbcpsr-1p-offscren-pri-indfb-draw-pwrite.html

  * igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-pri-indfb-draw-mmap-gtt:
    - shard-dg2-9:        NOTRUN -> [SKIP][170] ([i915#8708]) +13 other tests skip
   [170]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-dg2-9/igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-pri-indfb-draw-mmap-gtt.html

  * igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-cur-indfb-draw-mmap-wc:
    - shard-rkl:          NOTRUN -> [SKIP][171] ([i915#1825]) +7 other tests skip
   [171]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-rkl-3/igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-cur-indfb-draw-mmap-wc.html

  * igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-pri-shrfb-draw-mmap-cpu:
    - shard-mtlp:         NOTRUN -> [SKIP][172] ([i915#1825]) +21 other tests skip
   [172]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-mtlp-4/igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-pri-shrfb-draw-mmap-cpu.html

  * igt@kms_frontbuffer_tracking@pipe-fbc-rte:
    - shard-dg2:          NOTRUN -> [SKIP][173] ([i915#9766])
   [173]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-dg2-8/igt@kms_frontbuffer_tracking@pipe-fbc-rte.html

  * igt@kms_frontbuffer_tracking@psr-1p-offscren-pri-shrfb-draw-render:
    - shard-dg2-9:        NOTRUN -> [SKIP][174] ([i915#3458]) +6 other tests skip
   [174]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-dg2-9/igt@kms_frontbuffer_tracking@psr-1p-offscren-pri-shrfb-draw-render.html

  * igt@kms_frontbuffer_tracking@psr-1p-primscrn-pri-indfb-draw-render:
    - shard-rkl:          NOTRUN -> [SKIP][175] ([i915#3023]) +8 other tests skip
   [175]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-rkl-8/igt@kms_frontbuffer_tracking@psr-1p-primscrn-pri-indfb-draw-render.html

  * igt@kms_frontbuffer_tracking@psr-2p-scndscrn-pri-shrfb-draw-pwrite:
    - shard-dg2:          NOTRUN -> [SKIP][176] ([i915#5354]) +29 other tests skip
   [176]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-dg2-11/igt@kms_frontbuffer_tracking@psr-2p-scndscrn-pri-shrfb-draw-pwrite.html

  * igt@kms_hdr@static-swap:
    - shard-mtlp:         NOTRUN -> [SKIP][177] ([i915#3555] / [i915#8228])
   [177]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-mtlp-7/igt@kms_hdr@static-swap.html
    - shard-dg2-9:        NOTRUN -> [SKIP][178] ([i915#3555] / [i915#8228])
   [178]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-dg2-9/igt@kms_hdr@static-swap.html

  * igt@kms_hdr@static-toggle-dpms:
    - shard-rkl:          NOTRUN -> [SKIP][179] ([i915#3555] / [i915#8228])
   [179]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-rkl-8/igt@kms_hdr@static-toggle-dpms.html

  * igt@kms_invalid_mode@clock-too-high:
    - shard-mtlp:         NOTRUN -> [SKIP][180] ([i915#3555] / [i915#6403] / [i915#8826])
   [180]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-mtlp-1/igt@kms_invalid_mode@clock-too-high.html

  * igt@kms_invalid_mode@clock-too-high@pipe-a-edp-1:
    - shard-mtlp:         NOTRUN -> [SKIP][181] ([i915#9457]) +2 other tests skip
   [181]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-mtlp-1/igt@kms_invalid_mode@clock-too-high@pipe-a-edp-1.html

  * igt@kms_invalid_mode@clock-too-high@pipe-d-edp-1:
    - shard-mtlp:         NOTRUN -> [SKIP][182] ([i915#8826] / [i915#9457])
   [182]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-mtlp-1/igt@kms_invalid_mode@clock-too-high@pipe-d-edp-1.html

  * igt@kms_joiner@basic-force-ultra-joiner:
    - shard-mtlp:         NOTRUN -> [SKIP][183] ([i915#10656])
   [183]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-mtlp-4/igt@kms_joiner@basic-force-ultra-joiner.html
    - shard-dg2:          NOTRUN -> [SKIP][184] ([i915#10656])
   [184]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-dg2-4/igt@kms_joiner@basic-force-ultra-joiner.html

  * igt@kms_joiner@basic-ultra-joiner:
    - shard-dg2:          NOTRUN -> [SKIP][185] ([i915#12339])
   [185]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-dg2-8/igt@kms_joiner@basic-ultra-joiner.html

  * igt@kms_joiner@invalid-modeset-force-ultra-joiner:
    - shard-dg2-9:        NOTRUN -> [SKIP][186] ([i915#10656]) +1 other test skip
   [186]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-dg2-9/igt@kms_joiner@invalid-modeset-force-ultra-joiner.html

  * igt@kms_joiner@switch-modeset-ultra-joiner-big-joiner:
    - shard-mtlp:         NOTRUN -> [SKIP][187] ([i915#13522])
   [187]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-mtlp-7/igt@kms_joiner@switch-modeset-ultra-joiner-big-joiner.html
    - shard-dg2-9:        NOTRUN -> [SKIP][188] ([i915#13522])
   [188]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-dg2-9/igt@kms_joiner@switch-modeset-ultra-joiner-big-joiner.html

  * igt@kms_multipipe_modeset@basic-max-pipe-crc-check:
    - shard-mtlp:         NOTRUN -> [SKIP][189] ([i915#4816])
   [189]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-mtlp-4/igt@kms_multipipe_modeset@basic-max-pipe-crc-check.html
    - shard-dg2:          NOTRUN -> [SKIP][190] ([i915#4816])
   [190]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-dg2-4/igt@kms_multipipe_modeset@basic-max-pipe-crc-check.html

  * igt@kms_panel_fitting@legacy:
    - shard-rkl:          NOTRUN -> [SKIP][191] ([i915#6301])
   [191]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-rkl-3/igt@kms_panel_fitting@legacy.html

  * igt@kms_pipe_b_c_ivb@disable-pipe-b-enable-pipe-c:
    - shard-dg2:          NOTRUN -> [SKIP][192] +8 other tests skip
   [192]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-dg2-4/igt@kms_pipe_b_c_ivb@disable-pipe-b-enable-pipe-c.html

  * igt@kms_plane_lowres@tiling-y:
    - shard-mtlp:         NOTRUN -> [SKIP][193] ([i915#3555] / [i915#8821])
   [193]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-mtlp-7/igt@kms_plane_lowres@tiling-y.html

  * igt@kms_plane_lowres@tiling-yf:
    - shard-dg2:          NOTRUN -> [SKIP][194] ([i915#3555] / [i915#8821])
   [194]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-dg2-6/igt@kms_plane_lowres@tiling-yf.html

  * igt@kms_plane_multiple@2x-tiling-none:
    - shard-rkl:          NOTRUN -> [SKIP][195] ([i915#13958])
   [195]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-rkl-8/igt@kms_plane_multiple@2x-tiling-none.html

  * igt@kms_plane_scaling@plane-downscale-factor-0-25-with-pixel-format@pipe-d:
    - shard-dg2:          NOTRUN -> [SKIP][196] ([i915#12247]) +7 other tests skip
   [196]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-dg2-11/igt@kms_plane_scaling@plane-downscale-factor-0-25-with-pixel-format@pipe-d.html

  * igt@kms_plane_scaling@plane-downscale-factor-0-25-with-rotation:
    - shard-dg2:          NOTRUN -> [SKIP][197] ([i915#12247] / [i915#9423]) +1 other test skip
   [197]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-dg2-6/igt@kms_plane_scaling@plane-downscale-factor-0-25-with-rotation.html

  * igt@kms_plane_scaling@planes-downscale-factor-0-25-upscale-factor-0-25:
    - shard-rkl:          NOTRUN -> [SKIP][198] ([i915#12247] / [i915#6953])
   [198]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-rkl-8/igt@kms_plane_scaling@planes-downscale-factor-0-25-upscale-factor-0-25.html

  * igt@kms_plane_scaling@planes-downscale-factor-0-25-upscale-factor-0-25@pipe-a:
    - shard-rkl:          NOTRUN -> [SKIP][199] ([i915#12247]) +2 other tests skip
   [199]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-rkl-8/igt@kms_plane_scaling@planes-downscale-factor-0-25-upscale-factor-0-25@pipe-a.html

  * igt@kms_plane_scaling@planes-unity-scaling-downscale-factor-0-5:
    - shard-mtlp:         NOTRUN -> [SKIP][200] ([i915#6953])
   [200]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-mtlp-3/igt@kms_plane_scaling@planes-unity-scaling-downscale-factor-0-5.html

  * igt@kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-5:
    - shard-mtlp:         NOTRUN -> [SKIP][201] ([i915#12247] / [i915#3555] / [i915#6953])
   [201]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-mtlp-7/igt@kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-5.html

  * igt@kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-5@pipe-a:
    - shard-mtlp:         NOTRUN -> [SKIP][202] ([i915#12247]) +7 other tests skip
   [202]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-mtlp-7/igt@kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-5@pipe-a.html

  * igt@kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-5@pipe-b:
    - shard-snb:          NOTRUN -> [SKIP][203] +5 other tests skip
   [203]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-snb7/igt@kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-5@pipe-b.html

  * igt@kms_pm_dc@dc3co-vpb-simulation:
    - shard-mtlp:         NOTRUN -> [SKIP][204] ([i915#9292])
   [204]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-mtlp-1/igt@kms_pm_dc@dc3co-vpb-simulation.html

  * igt@kms_pm_dc@dc5-retention-flops:
    - shard-mtlp:         NOTRUN -> [SKIP][205] ([i915#3828])
   [205]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-mtlp-7/igt@kms_pm_dc@dc5-retention-flops.html

  * igt@kms_pm_dc@dc6-psr:
    - shard-rkl:          NOTRUN -> [SKIP][206] ([i915#9685])
   [206]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-rkl-8/igt@kms_pm_dc@dc6-psr.html

  * igt@kms_pm_lpsp@screens-disabled:
    - shard-mtlp:         NOTRUN -> [SKIP][207] ([i915#8430])
   [207]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-mtlp-3/igt@kms_pm_lpsp@screens-disabled.html
    - shard-dg2:          NOTRUN -> [SKIP][208] ([i915#8430])
   [208]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-dg2-6/igt@kms_pm_lpsp@screens-disabled.html

  * igt@kms_pm_rpm@dpms-lpsp:
    - shard-dg2-9:        NOTRUN -> [SKIP][209] ([i915#9519])
   [209]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-dg2-9/igt@kms_pm_rpm@dpms-lpsp.html

  * igt@kms_pm_rpm@dpms-mode-unset-non-lpsp:
    - shard-dg2:          [PASS][210] -> [SKIP][211] ([i915#9519]) +1 other test skip
   [210]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16462/shard-dg2-7/igt@kms_pm_rpm@dpms-mode-unset-non-lpsp.html
   [211]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-dg2-8/igt@kms_pm_rpm@dpms-mode-unset-non-lpsp.html

  * igt@kms_prime@basic-crc-vgem:
    - shard-dg2:          NOTRUN -> [SKIP][212] ([i915#6524] / [i915#6805])
   [212]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-dg2-2/igt@kms_prime@basic-crc-vgem.html

  * igt@kms_psr2_sf@fbc-psr2-overlay-plane-update-continuous-sf:
    - shard-glk:          NOTRUN -> [SKIP][213] ([i915#11520])
   [213]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-glk1/igt@kms_psr2_sf@fbc-psr2-overlay-plane-update-continuous-sf.html

  * igt@kms_psr2_sf@fbc-psr2-overlay-primary-update-sf-dmg-area@pipe-a-edp-1:
    - shard-mtlp:         NOTRUN -> [SKIP][214] ([i915#9808])
   [214]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-mtlp-1/igt@kms_psr2_sf@fbc-psr2-overlay-primary-update-sf-dmg-area@pipe-a-edp-1.html

  * igt@kms_psr2_sf@fbc-psr2-overlay-primary-update-sf-dmg-area@pipe-b-edp-1:
    - shard-mtlp:         NOTRUN -> [SKIP][215] ([i915#12316]) +6 other tests skip
   [215]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-mtlp-1/igt@kms_psr2_sf@fbc-psr2-overlay-primary-update-sf-dmg-area@pipe-b-edp-1.html

  * igt@kms_psr2_sf@pr-cursor-plane-move-continuous-exceed-fully-sf:
    - shard-dg2-9:        NOTRUN -> [SKIP][216] ([i915#11520]) +4 other tests skip
   [216]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-dg2-9/igt@kms_psr2_sf@pr-cursor-plane-move-continuous-exceed-fully-sf.html

  * igt@kms_psr2_sf@psr2-cursor-plane-move-continuous-exceed-sf:
    - shard-dg2:          NOTRUN -> [SKIP][217] ([i915#11520]) +8 other tests skip
   [217]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-dg2-2/igt@kms_psr2_sf@psr2-cursor-plane-move-continuous-exceed-sf.html

  * igt@kms_psr2_sf@psr2-overlay-plane-update-sf-dmg-area:
    - shard-rkl:          NOTRUN -> [SKIP][218] ([i915#11520]) +1 other test skip
   [218]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-rkl-8/igt@kms_psr2_sf@psr2-overlay-plane-update-sf-dmg-area.html

  * igt@kms_psr2_su@frontbuffer-xrgb8888:
    - shard-mtlp:         NOTRUN -> [SKIP][219] ([i915#4348])
   [219]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-mtlp-7/igt@kms_psr2_su@frontbuffer-xrgb8888.html
    - shard-dg2-9:        NOTRUN -> [SKIP][220] ([i915#9683])
   [220]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-dg2-9/igt@kms_psr2_su@frontbuffer-xrgb8888.html

  * igt@kms_psr2_su@page_flip-p010:
    - shard-dg2:          NOTRUN -> [SKIP][221] ([i915#9683])
   [221]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-dg2-2/igt@kms_psr2_su@page_flip-p010.html

  * igt@kms_psr@fbc-psr-primary-mmap-cpu:
    - shard-dg2-9:        NOTRUN -> [SKIP][222] ([i915#1072] / [i915#9732]) +7 other tests skip
   [222]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-dg2-9/igt@kms_psr@fbc-psr-primary-mmap-cpu.html

  * igt@kms_psr@fbc-psr-primary-page-flip:
    - shard-dg2:          NOTRUN -> [SKIP][223] ([i915#1072] / [i915#9732]) +14 other tests skip
   [223]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-dg2-4/igt@kms_psr@fbc-psr-primary-page-flip.html

  * igt@kms_psr@fbc-psr2-sprite-plane-onoff:
    - shard-mtlp:         NOTRUN -> [SKIP][224] ([i915#9688]) +12 other tests skip
   [224]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-mtlp-4/igt@kms_psr@fbc-psr2-sprite-plane-onoff.html

  * igt@kms_psr@fbc-psr2-sprite-render:
    - shard-rkl:          NOTRUN -> [SKIP][225] ([i915#1072] / [i915#9732]) +7 other tests skip
   [225]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-rkl-8/igt@kms_psr@fbc-psr2-sprite-render.html

  * igt@kms_psr@psr2-cursor-plane-onoff:
    - shard-glk:          NOTRUN -> [SKIP][226] +17 other tests skip
   [226]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-glk1/igt@kms_psr@psr2-cursor-plane-onoff.html

  * igt@kms_psr_stress_test@invalidate-primary-flip-overlay:
    - shard-dg2-9:        NOTRUN -> [SKIP][227] ([i915#9685])
   [227]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-dg2-9/igt@kms_psr_stress_test@invalidate-primary-flip-overlay.html

  * igt@kms_rotation_crc@primary-rotation-270:
    - shard-dg2:          NOTRUN -> [SKIP][228] ([i915#12755])
   [228]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-dg2-2/igt@kms_rotation_crc@primary-rotation-270.html

  * igt@kms_rotation_crc@primary-y-tiled-reflect-x-90:
    - shard-mtlp:         NOTRUN -> [SKIP][229] ([i915#12755])
   [229]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-mtlp-3/igt@kms_rotation_crc@primary-y-tiled-reflect-x-90.html
    - shard-dg2:          NOTRUN -> [SKIP][230] ([i915#12755] / [i915#5190])
   [230]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-dg2-6/igt@kms_rotation_crc@primary-y-tiled-reflect-x-90.html

  * igt@kms_rotation_crc@primary-yf-tiled-reflect-x-0:
    - shard-dg2-9:        NOTRUN -> [SKIP][231] ([i915#5190]) +1 other test skip
   [231]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-dg2-9/igt@kms_rotation_crc@primary-yf-tiled-reflect-x-0.html

  * igt@kms_rotation_crc@primary-yf-tiled-reflect-x-180:
    - shard-mtlp:         NOTRUN -> [SKIP][232] ([i915#5289])
   [232]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-mtlp-4/igt@kms_rotation_crc@primary-yf-tiled-reflect-x-180.html
    - shard-dg2:          NOTRUN -> [SKIP][233] ([i915#5190]) +1 other test skip
   [233]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-dg2-4/igt@kms_rotation_crc@primary-yf-tiled-reflect-x-180.html

  * igt@kms_rotation_crc@sprite-rotation-90:
    - shard-dg2-9:        NOTRUN -> [SKIP][234] ([i915#12755]) +1 other test skip
   [234]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-dg2-9/igt@kms_rotation_crc@sprite-rotation-90.html

  * igt@kms_selftest@drm_framebuffer:
    - shard-mtlp:         NOTRUN -> [ABORT][235] ([i915#13179]) +1 other test abort
   [235]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-mtlp-7/igt@kms_selftest@drm_framebuffer.html

  * igt@kms_vrr@flip-basic-fastset:
    - shard-rkl:          NOTRUN -> [SKIP][236] ([i915#9906])
   [236]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-rkl-8/igt@kms_vrr@flip-basic-fastset.html

  * igt@kms_vrr@max-min:
    - shard-mtlp:         NOTRUN -> [SKIP][237] ([i915#8808] / [i915#9906]) +1 other test skip
   [237]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-mtlp-7/igt@kms_vrr@max-min.html

  * igt@kms_vrr@seamless-rr-switch-virtual:
    - shard-dg2:          NOTRUN -> [SKIP][238] ([i915#9906])
   [238]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-dg2-6/igt@kms_vrr@seamless-rr-switch-virtual.html

  * igt@kms_writeback@writeback-check-output:
    - shard-dg2-9:        NOTRUN -> [SKIP][239] ([i915#2437])
   [239]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-dg2-9/igt@kms_writeback@writeback-check-output.html

  * igt@kms_writeback@writeback-pixel-formats:
    - shard-rkl:          NOTRUN -> [SKIP][240] ([i915#2437] / [i915#9412])
   [240]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-rkl-3/igt@kms_writeback@writeback-pixel-formats.html

  * igt@perf@mi-rpc:
    - shard-mtlp:         NOTRUN -> [SKIP][241] ([i915#2434])
   [241]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-mtlp-1/igt@perf@mi-rpc.html

  * igt@perf_pmu@busy-double-start:
    - shard-mtlp:         NOTRUN -> [FAIL][242] ([i915#4349]) +2 other tests fail
   [242]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-mtlp-3/igt@perf_pmu@busy-double-start.html

  * igt@perf_pmu@rc6@other-idle-gt0:
    - shard-dg2:          NOTRUN -> [SKIP][243] ([i915#8516])
   [243]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-dg2-6/igt@perf_pmu@rc6@other-idle-gt0.html

  * igt@prime_vgem@basic-fence-read:
    - shard-dg2-9:        NOTRUN -> [SKIP][244] ([i915#3291] / [i915#3708])
   [244]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-dg2-9/igt@prime_vgem@basic-fence-read.html

  * igt@prime_vgem@basic-write:
    - shard-dg2:          NOTRUN -> [SKIP][245] ([i915#3291] / [i915#3708])
   [245]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-dg2-6/igt@prime_vgem@basic-write.html

  * igt@prime_vgem@coherency-gtt:
    - shard-dg2:          NOTRUN -> [SKIP][246] ([i915#3708] / [i915#4077])
   [246]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-dg2-2/igt@prime_vgem@coherency-gtt.html

  * igt@prime_vgem@fence-read-hang:
    - shard-rkl:          NOTRUN -> [SKIP][247] ([i915#3708])
   [247]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-rkl-8/igt@prime_vgem@fence-read-hang.html

  * igt@prime_vgem@fence-write-hang:
    - shard-dg2-9:        NOTRUN -> [SKIP][248] ([i915#3708])
   [248]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-dg2-9/igt@prime_vgem@fence-write-hang.html

  * igt@sriov_basic@bind-unbind-vf:
    - shard-dg2:          NOTRUN -> [SKIP][249] ([i915#9917]) +2 other tests skip
   [249]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-dg2-6/igt@sriov_basic@bind-unbind-vf.html

  * igt@sriov_basic@enable-vfs-autoprobe-on@numvfs-2:
    - shard-mtlp:         NOTRUN -> [FAIL][250] ([i915#12910]) +29 other tests fail
   [250]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-mtlp-4/igt@sriov_basic@enable-vfs-autoprobe-on@numvfs-2.html

  * igt@tools_test@sysfs_l3_parity:
    - shard-dg2:          NOTRUN -> [SKIP][251] ([i915#4818])
   [251]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-dg2-2/igt@tools_test@sysfs_l3_parity.html

  
#### Possible fixes ####

  * igt@gem_eio@hibernate:
    - shard-mtlp:         [ABORT][252] ([i915#13193] / [i915#13723] / [i915#7975]) -> [PASS][253]
   [252]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16462/shard-mtlp-7/igt@gem_eio@hibernate.html
   [253]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-mtlp-7/igt@gem_eio@hibernate.html

  * igt@gem_exec_suspend@basic-s0@smem:
    - shard-dg2:          [INCOMPLETE][254] ([i915#11441] / [i915#13304]) -> [PASS][255] +1 other test pass
   [254]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16462/shard-dg2-4/igt@gem_exec_suspend@basic-s0@smem.html
   [255]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-dg2-2/igt@gem_exec_suspend@basic-s0@smem.html

  * igt@gem_exec_suspend@basic-s4-devices:
    - shard-dg2:          [ABORT][256] ([i915#7975] / [i915#8213]) -> [PASS][257] +1 other test pass
   [256]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16462/shard-dg2-1/igt@gem_exec_suspend@basic-s4-devices.html
   [257]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-dg2-11/igt@gem_exec_suspend@basic-s4-devices.html

  * igt@gem_lmem_swapping@smem-oom@lmem0:
    - shard-dg1:          [TIMEOUT][258] ([i915#14044] / [i915#5493]) -> [PASS][259] +1 other test pass
   [258]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16462/shard-dg1-14/igt@gem_lmem_swapping@smem-oom@lmem0.html
   [259]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-dg1-12/igt@gem_lmem_swapping@smem-oom@lmem0.html

  * igt@i915_pm_freq_api@freq-suspend@gt0:
    - shard-dg2:          [INCOMPLETE][260] ([i915#12455] / [i915#13820]) -> [PASS][261] +1 other test pass
   [260]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16462/shard-dg2-7/igt@i915_pm_freq_api@freq-suspend@gt0.html
   [261]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-dg2-8/igt@i915_pm_freq_api@freq-suspend@gt0.html

  * igt@kms_async_flips@alternate-sync-async-flip-atomic:
    - shard-dg1:          [FAIL][262] ([i915#13320]) -> [PASS][263]
   [262]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16462/shard-dg1-15/igt@kms_async_flips@alternate-sync-async-flip-atomic.html
   [263]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-dg1-14/igt@kms_async_flips@alternate-sync-async-flip-atomic.html

  * igt@kms_async_flips@alternate-sync-async-flip-atomic@pipe-a-hdmi-a-4:
    - shard-dg1:          [FAIL][264] ([i915#12518]) -> [PASS][265]
   [264]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16462/shard-dg1-15/igt@kms_async_flips@alternate-sync-async-flip-atomic@pipe-a-hdmi-a-4.html
   [265]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-dg1-14/igt@kms_async_flips@alternate-sync-async-flip-atomic@pipe-a-hdmi-a-4.html

  * igt@kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-0-hflip:
    - shard-mtlp:         [FAIL][266] ([i915#5138]) -> [PASS][267]
   [266]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16462/shard-mtlp-4/igt@kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-0-hflip.html
   [267]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-mtlp-6/igt@kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-0-hflip.html

  * igt@kms_dp_link_training@non-uhbr-sst:
    - shard-dg2:          [SKIP][268] ([i915#13749]) -> [PASS][269]
   [268]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16462/shard-dg2-1/igt@kms_dp_link_training@non-uhbr-sst.html
   [269]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-dg2-10/igt@kms_dp_link_training@non-uhbr-sst.html

  * igt@kms_flip@2x-flip-vs-suspend-interruptible@ab-vga1-hdmi-a1:
    - shard-snb:          [TIMEOUT][270] ([i915#14033]) -> [PASS][271] +1 other test pass
   [270]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16462/shard-snb6/igt@kms_flip@2x-flip-vs-suspend-interruptible@ab-vga1-hdmi-a1.html
   [271]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-snb7/igt@kms_flip@2x-flip-vs-suspend-interruptible@ab-vga1-hdmi-a1.html

  * igt@kms_flip@2x-plain-flip-ts-check:
    - shard-snb:          [FAIL][272] ([i915#11832] / [i915#13734]) -> [PASS][273] +1 other test pass
   [272]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16462/shard-snb7/igt@kms_flip@2x-plain-flip-ts-check.html
   [273]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-snb4/igt@kms_flip@2x-plain-flip-ts-check.html

  * igt@kms_hdr@static-toggle-suspend:
    - shard-dg2:          [SKIP][274] ([i915#3555] / [i915#8228]) -> [PASS][275]
   [274]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16462/shard-dg2-1/igt@kms_hdr@static-toggle-suspend.html
   [275]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-dg2-11/igt@kms_hdr@static-toggle-suspend.html

  * igt@kms_plane_scaling@intel-max-src-size:
    - shard-dg2:          [SKIP][276] ([i915#6953] / [i915#9423]) -> [PASS][277]
   [276]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16462/shard-dg2-1/igt@kms_plane_scaling@intel-max-src-size.html
   [277]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-dg2-10/igt@kms_plane_scaling@intel-max-src-size.html

  * igt@kms_pm_rpm@modeset-non-lpsp-stress-no-wait:
    - shard-dg2:          [SKIP][278] ([i915#9519]) -> [PASS][279]
   [278]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16462/shard-dg2-8/igt@kms_pm_rpm@modeset-non-lpsp-stress-no-wait.html
   [279]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-dg2-1/igt@kms_pm_rpm@modeset-non-lpsp-stress-no-wait.html

  * igt@kms_setmode@basic:
    - shard-snb:          [FAIL][280] ([i915#5465]) -> [PASS][281] +2 other tests pass
   [280]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16462/shard-snb1/igt@kms_setmode@basic.html
   [281]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-snb1/igt@kms_setmode@basic.html

  * igt@perf_pmu@busy-hang@vecs0:
    - shard-mtlp:         [ABORT][282] ([i915#13193] / [i915#13723]) -> [PASS][283] +4 other tests pass
   [282]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16462/shard-mtlp-7/igt@perf_pmu@busy-hang@vecs0.html
   [283]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-mtlp-1/igt@perf_pmu@busy-hang@vecs0.html

  
#### Warnings ####

  * igt@kms_ccs@crc-primary-rotation-180-4-tiled-dg2-rc-ccs:
    - shard-dg1:          [SKIP][284] ([i915#6095]) -> [SKIP][285] ([i915#4423] / [i915#6095])
   [284]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16462/shard-dg1-15/igt@kms_ccs@crc-primary-rotation-180-4-tiled-dg2-rc-ccs.html
   [285]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-dg1-12/igt@kms_ccs@crc-primary-rotation-180-4-tiled-dg2-rc-ccs.html

  * igt@kms_ccs@crc-sprite-planes-basic-4-tiled-mtl-mc-ccs@pipe-b-hdmi-a-2:
    - shard-rkl:          [SKIP][286] ([i915#6095]) -> [SKIP][287] ([i915#14098] / [i915#6095]) +2 other tests skip
   [286]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16462/shard-rkl-8/igt@kms_ccs@crc-sprite-planes-basic-4-tiled-mtl-mc-ccs@pipe-b-hdmi-a-2.html
   [287]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-rkl-3/igt@kms_ccs@crc-sprite-planes-basic-4-tiled-mtl-mc-ccs@pipe-b-hdmi-a-2.html

  * igt@kms_content_protection@lic-type-0:
    - shard-dg2:          [SKIP][288] ([i915#9424]) -> [FAIL][289] ([i915#7173])
   [288]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16462/shard-dg2-1/igt@kms_content_protection@lic-type-0.html
   [289]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-dg2-10/igt@kms_content_protection@lic-type-0.html

  * igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-spr-indfb-draw-pwrite:
    - shard-dg2:          [SKIP][290] ([i915#3458]) -> [SKIP][291] ([i915#10433] / [i915#3458])
   [290]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16462/shard-dg2-6/igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-spr-indfb-draw-pwrite.html
   [291]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-dg2-4/igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-spr-indfb-draw-pwrite.html

  * igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-spr-indfb-move:
    - shard-dg1:          [SKIP][292] ([i915#4423]) -> [SKIP][293]
   [292]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16462/shard-dg1-19/igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-spr-indfb-move.html
   [293]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-dg1-15/igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-spr-indfb-move.html

  * igt@kms_frontbuffer_tracking@psr-1p-offscren-pri-shrfb-draw-pwrite:
    - shard-dg2:          [SKIP][294] ([i915#10433] / [i915#3458]) -> [SKIP][295] ([i915#3458]) +2 other tests skip
   [294]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16462/shard-dg2-4/igt@kms_frontbuffer_tracking@psr-1p-offscren-pri-shrfb-draw-pwrite.html
   [295]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-dg2-1/igt@kms_frontbuffer_tracking@psr-1p-offscren-pri-shrfb-draw-pwrite.html

  * igt@kms_frontbuffer_tracking@psr-2p-scndscrn-pri-shrfb-draw-render:
    - shard-dg1:          [SKIP][296] -> [SKIP][297] ([i915#4423])
   [296]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16462/shard-dg1-15/igt@kms_frontbuffer_tracking@psr-2p-scndscrn-pri-shrfb-draw-render.html
   [297]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-dg1-12/igt@kms_frontbuffer_tracking@psr-2p-scndscrn-pri-shrfb-draw-render.html

  * igt@kms_hdr@brightness-with-hdr:
    - shard-dg2:          [SKIP][298] ([i915#12713]) -> [SKIP][299] ([i915#13331])
   [298]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16462/shard-dg2-1/igt@kms_hdr@brightness-with-hdr.html
   [299]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/shard-dg2-10/igt@kms_hdr@brightness-with-hdr.html

  
  [i915#10055]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10055
  [i915#10307]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10307
  [i915#10433]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10433
  [i915#10434]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10434
  [i915#10656]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10656
  [i915#1072]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/1072
  [i915#11151]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11151
  [i915#11441]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11441
  [i915#11520]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11520
  [i915#11527]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11527
  [i915#11681]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11681
  [i915#11832]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11832
  [i915#12247]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12247
  [i915#12313]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12313
  [i915#12316]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12316
  [i915#12339]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12339
  [i915#12455]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12455
  [i915#12518]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12518
  [i915#12713]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12713
  [i915#12755]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12755
  [i915#12805]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12805
  [i915#12910]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12910
  [i915#12964]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12964
  [i915#13008]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13008
  [i915#13046]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13046
  [i915#13049]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13049
  [i915#13179]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13179
  [i915#13193]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13193
  [i915#13304]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13304
  [i915#13320]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13320
  [i915#13331]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13331
  [i915#13356]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13356
  [i915#13522]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13522
  [i915#13665]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13665
  [i915#13723]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13723
  [i915#13734]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13734
  [i915#13749]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13749
  [i915#13781]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13781
  [i915#13798]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13798
  [i915#13820]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13820
  [i915#13958]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13958
  [i915#14033]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/14033
  [i915#14044]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/14044
  [i915#14098]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/14098
  [i915#14118]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/14118
  [i915#1769]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/1769
  [i915#1825]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/1825
  [i915#2434]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2434
  [i915#2437]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2437
  [i915#2527]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2527
  [i915#2672]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2672
  [i915#280]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/280
  [i915#2856]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2856
  [i915#3023]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3023
  [i915#3281]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3281
  [i915#3282]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3282
  [i915#3291]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3291
  [i915#3297]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3297
  [i915#3458]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3458
  [i915#3469]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3469
  [i915#3539]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3539
  [i915#3555]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3555
  [i915#3591]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3591
  [i915#3637]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3637
  [i915#3638]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3638
  [i915#3708]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3708
  [i915#3778]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3778
  [i915#3828]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3828
  [i915#3840]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3840
  [i915#3936]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3936
  [i915#4077]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4077
  [i915#4079]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4079
  [i915#4083]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4083
  [i915#4103]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4103
  [i915#4212]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4212
  [i915#4213]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4213
  [i915#4215]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4215
  [i915#4270]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4270
  [i915#4348]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4348
  [i915#4349]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4349
  [i915#4387]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4387
  [i915#4423]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4423
  [i915#4525]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4525
  [i915#4537]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4537
  [i915#4538]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4538
  [i915#4613]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4613
  [i915#4771]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4771
  [i915#4812]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4812
  [i915#4816]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4816
  [i915#4817]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4817
  [i915#4818]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4818
  [i915#4852]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4852
  [i915#4854]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4854
  [i915#4860]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4860
  [i915#4880]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4880
  [i915#4881]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4881
  [i915#5107]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5107
  [i915#5138]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5138
  [i915#5190]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5190
  [i915#5286]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5286
  [i915#5289]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5289
  [i915#5354]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5354
  [i915#5465]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5465
  [i915#5493]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5493
  [i915#5956]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5956
  [i915#6095]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6095
  [i915#6187]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6187
  [i915#6301]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6301
  [i915#6334]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6334
  [i915#6403]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6403
  [i915#6412]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6412
  [i915#6524]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6524
  [i915#658]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/658
  [i915#6621]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6621
  [i915#6805]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6805
  [i915#6944]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6944
  [i915#6953]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6953
  [i915#7016]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7016
  [i915#7118]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7118
  [i915#7173]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7173
  [i915#7697]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7697
  [i915#7828]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7828
  [i915#7975]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7975
  [i915#8213]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8213
  [i915#8228]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8228
  [i915#8289]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8289
  [i915#8346]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8346
  [i915#8411]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8411
  [i915#8428]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8428
  [i915#8430]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8430
  [i915#8516]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8516
  [i915#8555]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8555
  [i915#8708]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8708
  [i915#8709]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8709
  [i915#8808]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8808
  [i915#8810]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8810
  [i915#8813]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8813
  [i915#8814]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8814
  [i915#8821]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8821
  [i915#8826]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8826
  [i915#9292]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9292
  [i915#9337]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9337
  [i915#9412]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9412
  [i915#9423]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9423
  [i915#9424]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9424
  [i915#9457]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9457
  [i915#9519]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9519
  [i915#9683]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9683
  [i915#9685]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9685
  [i915#9688]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9688
  [i915#9732]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9732
  [i915#9766]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9766
  [i915#9808]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9808
  [i915#9809]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9809
  [i915#9906]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9906
  [i915#9917]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9917
  [i915#9934]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9934


Build changes
-------------

  * Linux: CI_DRM_16462 -> Patchwork_148230v1

  CI-20190529: 20190529
  CI_DRM_16462: 62267356da69c54c08ef08df02c0afc39aba1c22 @ git://anongit.freedesktop.org/gfx-ci/linux
  IGT_8336: 8336
  Patchwork_148230v1: 62267356da69c54c08ef08df02c0afc39aba1c22 @ git://anongit.freedesktop.org/gfx-ci/linux
  piglit_4509: fdc5a4ca11124ab8413c7988896eec4c97336694 @ git://anongit.freedesktop.org/piglit

== Logs ==

For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_148230v1/index.html

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

^ permalink raw reply	[flat|nested] 29+ messages in thread

* RE: [PATCH 01/10] drm/i915/hdcp: remove duplicate declarations
  2025-04-24 20:01 ` [PATCH 01/10] drm/i915/hdcp: remove duplicate declarations Jani Nikula
@ 2025-04-30  4:10   ` Kandpal, Suraj
  0 siblings, 0 replies; 29+ messages in thread
From: Kandpal, Suraj @ 2025-04-30  4:10 UTC (permalink / raw)
  To: Nikula, Jani, intel-gfx@lists.freedesktop.org,
	intel-xe@lists.freedesktop.org



> -----Original Message-----
> From: Nikula, Jani <jani.nikula@intel.com>
> Sent: Friday, April 25, 2025 1:32 AM
> To: intel-gfx@lists.freedesktop.org; intel-xe@lists.freedesktop.org
> Cc: Nikula, Jani <jani.nikula@intel.com>; Kandpal, Suraj
> <suraj.kandpal@intel.com>
> Subject: [PATCH 01/10] drm/i915/hdcp: remove duplicate declarations
> 
> intel_hdcp_gsc_msg_send() and intel_hdcp_gsc_check_status() are declared in
> intel_hdcp_gsc.h.
> 
> Cc: Suraj Kandpal <suraj.kandpal@intel.com>
> Signed-off-by: Jani Nikula <jani.nikula@intel.com>

LGTM,
Reviewed-by: Suraj Kandpal <suraj.kandpal@intel.com>

> ---
>  drivers/gpu/drm/i915/display/intel_hdcp_gsc_message.c | 1 +
> drivers/gpu/drm/i915/display/intel_hdcp_gsc_message.h | 5 -----
>  2 files changed, 1 insertion(+), 5 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/display/intel_hdcp_gsc_message.c
> b/drivers/gpu/drm/i915/display/intel_hdcp_gsc_message.c
> index 129104fa9b16..d4620b54beba 100644
> --- a/drivers/gpu/drm/i915/display/intel_hdcp_gsc_message.c
> +++ b/drivers/gpu/drm/i915/display/intel_hdcp_gsc_message.c
> @@ -8,6 +8,7 @@
> 
>  #include "i915_drv.h"
>  #include "intel_display_types.h"
> +#include "intel_hdcp_gsc.h"
>  #include "intel_hdcp_gsc_message.h"
> 
>  int
> diff --git a/drivers/gpu/drm/i915/display/intel_hdcp_gsc_message.h
> b/drivers/gpu/drm/i915/display/intel_hdcp_gsc_message.h
> index 2d597f27e931..1af2f7c745fd 100644
> --- a/drivers/gpu/drm/i915/display/intel_hdcp_gsc_message.h
> +++ b/drivers/gpu/drm/i915/display/intel_hdcp_gsc_message.h
> @@ -9,7 +9,6 @@
>  #include <linux/types.h>
> 
>  struct device;
> -struct drm_i915_private;
>  struct hdcp_port_data;
>  struct hdcp2_ake_init;
>  struct hdcp2_ake_send_cert;
> @@ -24,10 +23,6 @@ struct hdcp2_rep_send_ack;  struct
> hdcp2_rep_stream_ready;  struct intel_display;
> 
> -ssize_t intel_hdcp_gsc_msg_send(struct drm_i915_private *i915, u8 *msg_in,
> -				size_t msg_in_len, u8 *msg_out,
> -				size_t msg_out_len);
> -bool intel_hdcp_gsc_check_status(struct intel_display *display);  int
> intel_hdcp_gsc_initiate_session(struct device *dev, struct hdcp_port_data
> *data,
>  				struct hdcp2_ake_init *ake_data);
> --
> 2.39.5


^ permalink raw reply	[flat|nested] 29+ messages in thread

* RE: [PATCH 07/10] drm/i915/hdcp: switch the HDCP GSC message interface from u8* to void*
  2025-04-24 20:01 ` [PATCH 07/10] drm/i915/hdcp: switch the HDCP GSC message interface from u8* to void* Jani Nikula
@ 2025-04-30  4:25   ` Kandpal, Suraj
  0 siblings, 0 replies; 29+ messages in thread
From: Kandpal, Suraj @ 2025-04-30  4:25 UTC (permalink / raw)
  To: Nikula, Jani, intel-gfx@lists.freedesktop.org,
	intel-xe@lists.freedesktop.org



> -----Original Message-----
> From: Nikula, Jani <jani.nikula@intel.com>
> Sent: Friday, April 25, 2025 1:32 AM
> To: intel-gfx@lists.freedesktop.org; intel-xe@lists.freedesktop.org
> Cc: Nikula, Jani <jani.nikula@intel.com>; Kandpal, Suraj
> <suraj.kandpal@intel.com>
> Subject: [PATCH 07/10] drm/i915/hdcp: switch the HDCP GSC message interface
> from u8* to void*
> 
> The in/out buffers are just opaque data, and don't need to be considered u8*.
> Switching to void* lets us drop a ton of unnecessary casts.
> 
> Cc: Suraj Kandpal <suraj.kandpal@intel.com>
> Signed-off-by: Jani Nikula <jani.nikula@intel.com>

LGTM,
Reviewed-by: Suraj Kandpal <suraj.kandpal@intel.com>

> ---
>  drivers/gpu/drm/i915/display/intel_hdcp_gsc.c |  4 +-
> drivers/gpu/drm/i915/display/intel_hdcp_gsc.h |  4 +-
> .../drm/i915/display/intel_hdcp_gsc_message.c | 44 +++++++++----------
>  drivers/gpu/drm/xe/display/xe_hdcp_gsc.c      |  4 +-
>  4 files changed, 28 insertions(+), 28 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/display/intel_hdcp_gsc.c
> b/drivers/gpu/drm/i915/display/intel_hdcp_gsc.c
> index 77c4df6c6181..1ea2c7204444 100644
> --- a/drivers/gpu/drm/i915/display/intel_hdcp_gsc.c
> +++ b/drivers/gpu/drm/i915/display/intel_hdcp_gsc.c
> @@ -174,8 +174,8 @@ static int intel_gsc_send_sync(struct drm_i915_private
> *i915,
>   * will follow
>   */
>  ssize_t intel_hdcp_gsc_msg_send(struct intel_hdcp_gsc_context *gsc_context,
> -				u8 *msg_in, size_t msg_in_len,
> -				u8 *msg_out, size_t msg_out_len)
> +				void *msg_in, size_t msg_in_len,
> +				void *msg_out, size_t msg_out_len)
>  {
>  	struct drm_i915_private *i915 = gsc_context->i915;
>  	struct intel_gt *gt = i915->media_gt;
> diff --git a/drivers/gpu/drm/i915/display/intel_hdcp_gsc.h
> b/drivers/gpu/drm/i915/display/intel_hdcp_gsc.h
> index 7133e631a938..fbef56db54f2 100644
> --- a/drivers/gpu/drm/i915/display/intel_hdcp_gsc.h
> +++ b/drivers/gpu/drm/i915/display/intel_hdcp_gsc.h
> @@ -14,8 +14,8 @@ struct intel_hdcp_gsc_context;
> 
>  bool intel_hdcp_gsc_cs_required(struct intel_display *display);  ssize_t
> intel_hdcp_gsc_msg_send(struct intel_hdcp_gsc_context *gsc_context,
> -				u8 *msg_in, size_t msg_in_len,
> -				u8 *msg_out, size_t msg_out_len);
> +				void *msg_in, size_t msg_in_len,
> +				void *msg_out, size_t msg_out_len);
>  bool intel_hdcp_gsc_check_status(struct intel_display *display);
> 
>  struct intel_hdcp_gsc_context *intel_hdcp_gsc_context_alloc(struct
> intel_display *display); diff --git
> a/drivers/gpu/drm/i915/display/intel_hdcp_gsc_message.c
> b/drivers/gpu/drm/i915/display/intel_hdcp_gsc_message.c
> index d87f61d773ca..4226e8705d2b 100644
> --- a/drivers/gpu/drm/i915/display/intel_hdcp_gsc_message.c
> +++ b/drivers/gpu/drm/i915/display/intel_hdcp_gsc_message.c
> @@ -44,9 +44,9 @@ intel_hdcp_gsc_initiate_session(struct device *dev, struct
> hdcp_port_data *data,
>  	session_init_in.port.attached_transcoder = (u8)data->hdcp_transcoder;
>  	session_init_in.protocol = data->protocol;
> 
> -	byte = intel_hdcp_gsc_msg_send(gsc_context, (u8 *)&session_init_in,
> +	byte = intel_hdcp_gsc_msg_send(gsc_context, &session_init_in,
>  				       sizeof(session_init_in),
> -				       (u8 *)&session_init_out,
> +				       &session_init_out,
>  				       sizeof(session_init_out));
>  	if (byte < 0) {
>  		drm_dbg_kms(display->drm, "intel_hdcp_gsc_msg_send failed.
> %zd\n", byte); @@ -106,9 +106,9 @@
> intel_hdcp_gsc_verify_receiver_cert_prepare_km(struct device *dev,
>  	memcpy(verify_rxcert_in.r_rx, &rx_cert->r_rx, HDCP_2_2_RRX_LEN);
>  	memcpy(verify_rxcert_in.rx_caps, rx_cert->rx_caps,
> HDCP_2_2_RXCAPS_LEN);
> 
> -	byte = intel_hdcp_gsc_msg_send(gsc_context, (u8 *)&verify_rxcert_in,
> +	byte = intel_hdcp_gsc_msg_send(gsc_context, &verify_rxcert_in,
>  				       sizeof(verify_rxcert_in),
> -				       (u8 *)&verify_rxcert_out,
> +				       &verify_rxcert_out,
>  				       sizeof(verify_rxcert_out));
>  	if (byte < 0) {
>  		drm_dbg_kms(display->drm, "intel_hdcp_gsc_msg_send failed:
> %zd\n", byte); @@ -169,9 +169,9 @@ intel_hdcp_gsc_verify_hprime(struct
> device *dev, struct hdcp_port_data *data,
>  	memcpy(send_hprime_in.h_prime, rx_hprime->h_prime,
>  	       HDCP_2_2_H_PRIME_LEN);
> 
> -	byte = intel_hdcp_gsc_msg_send(gsc_context, (u8 *)&send_hprime_in,
> +	byte = intel_hdcp_gsc_msg_send(gsc_context, &send_hprime_in,
>  				       sizeof(send_hprime_in),
> -				       (u8 *)&send_hprime_out,
> +				       &send_hprime_out,
>  				       sizeof(send_hprime_out));
>  	if (byte < 0) {
>  		drm_dbg_kms(display->drm, "intel_hdcp_gsc_msg_send failed.
> %zd\n", byte); @@ -220,9 +220,9 @@ intel_hdcp_gsc_store_pairing_info(struct
> device *dev, struct hdcp_port_data *dat
>  	memcpy(pairing_info_in.e_kh_km, pairing_info->e_kh_km,
>  	       HDCP_2_2_E_KH_KM_LEN);
> 
> -	byte = intel_hdcp_gsc_msg_send(gsc_context, (u8 *)&pairing_info_in,
> +	byte = intel_hdcp_gsc_msg_send(gsc_context, &pairing_info_in,
>  				       sizeof(pairing_info_in),
> -				       (u8 *)&pairing_info_out,
> +				       &pairing_info_out,
>  				       sizeof(pairing_info_out));
>  	if (byte < 0) {
>  		drm_dbg_kms(display->drm, "intel_hdcp_gsc_msg_send failed.
> %zd\n", byte); @@ -269,8 +269,8 @@
> intel_hdcp_gsc_initiate_locality_check(struct device *dev,
>  	lc_init_in.port.physical_port = (u8)data->hdcp_ddi;
>  	lc_init_in.port.attached_transcoder = (u8)data->hdcp_transcoder;
> 
> -	byte = intel_hdcp_gsc_msg_send(gsc_context, (u8 *)&lc_init_in,
> sizeof(lc_init_in),
> -				       (u8 *)&lc_init_out, sizeof(lc_init_out));
> +	byte = intel_hdcp_gsc_msg_send(gsc_context, &lc_init_in,
> sizeof(lc_init_in),
> +				       &lc_init_out, sizeof(lc_init_out));
>  	if (byte < 0) {
>  		drm_dbg_kms(display->drm, "intel_hdcp_gsc_msg_send failed.
> %zd\n", byte);
>  		return byte;
> @@ -321,9 +321,9 @@ intel_hdcp_gsc_verify_lprime(struct device *dev, struct
> hdcp_port_data *data,
>  	memcpy(verify_lprime_in.l_prime, rx_lprime->l_prime,
>  	       HDCP_2_2_L_PRIME_LEN);
> 
> -	byte = intel_hdcp_gsc_msg_send(gsc_context, (u8 *)&verify_lprime_in,
> +	byte = intel_hdcp_gsc_msg_send(gsc_context, &verify_lprime_in,
>  				       sizeof(verify_lprime_in),
> -				       (u8 *)&verify_lprime_out,
> +				       &verify_lprime_out,
>  				       sizeof(verify_lprime_out));
>  	if (byte < 0) {
>  		drm_dbg_kms(display->drm, "intel_hdcp_gsc_msg_send failed.
> %zd\n", byte); @@ -370,8 +370,8 @@ intel_hdcp_gsc_get_session_key(struct
> device *dev,
>  	get_skey_in.port.physical_port = (u8)data->hdcp_ddi;
>  	get_skey_in.port.attached_transcoder = (u8)data->hdcp_transcoder;
> 
> -	byte = intel_hdcp_gsc_msg_send(gsc_context, (u8 *)&get_skey_in,
> sizeof(get_skey_in),
> -				       (u8 *)&get_skey_out,
> sizeof(get_skey_out));
> +	byte = intel_hdcp_gsc_msg_send(gsc_context, &get_skey_in,
> sizeof(get_skey_in),
> +				       &get_skey_out, sizeof(get_skey_out));
>  	if (byte < 0) {
>  		drm_dbg_kms(display->drm, "intel_hdcp_gsc_msg_send failed.
> %zd\n", byte);
>  		return byte;
> @@ -434,9 +434,9 @@
> intel_hdcp_gsc_repeater_check_flow_prepare_ack(struct device *dev,
>  	memcpy(verify_repeater_in.receiver_ids, rep_topology->receiver_ids,
>  	       HDCP_2_2_RECEIVER_IDS_MAX_LEN);
> 
> -	byte = intel_hdcp_gsc_msg_send(gsc_context, (u8
> *)&verify_repeater_in,
> +	byte = intel_hdcp_gsc_msg_send(gsc_context, &verify_repeater_in,
>  				       sizeof(verify_repeater_in),
> -				       (u8 *)&verify_repeater_out,
> +				       &verify_repeater_out,
>  				       sizeof(verify_repeater_out));
>  	if (byte < 0) {
>  		drm_dbg_kms(display->drm, "intel_hdcp_gsc_msg_send failed.
> %zd\n", byte); @@ -504,8 +504,8 @@ intel_hdcp_gsc_verify_mprime(struct
> device *dev,
> 
>  	verify_mprime_in->k = cpu_to_be16(data->k);
> 
> -	byte = intel_hdcp_gsc_msg_send(gsc_context, (u8 *)verify_mprime_in,
> cmd_size,
> -				       (u8 *)&verify_mprime_out,
> +	byte = intel_hdcp_gsc_msg_send(gsc_context, verify_mprime_in,
> cmd_size,
> +				       &verify_mprime_out,
>  				       sizeof(verify_mprime_out));
>  	kfree(verify_mprime_in);
>  	if (byte < 0) {
> @@ -552,9 +552,9 @@ static int intel_hdcp_gsc_enable_authentication(struct
> device *dev,
>  	enable_auth_in.port.attached_transcoder = (u8)data->hdcp_transcoder;
>  	enable_auth_in.stream_type = data->streams[0].stream_type;
> 
> -	byte = intel_hdcp_gsc_msg_send(gsc_context, (u8 *)&enable_auth_in,
> +	byte = intel_hdcp_gsc_msg_send(gsc_context, &enable_auth_in,
>  				       sizeof(enable_auth_in),
> -				       (u8 *)&enable_auth_out,
> +				       &enable_auth_out,
>  				       sizeof(enable_auth_out));
>  	if (byte < 0) {
>  		drm_dbg_kms(display->drm, "intel_hdcp_gsc_msg_send failed.
> %zd\n", byte); @@ -599,9 +599,9 @@ intel_hdcp_gsc_close_session(struct
> device *dev, struct hdcp_port_data *data)
>  	session_close_in.port.physical_port = (u8)data->hdcp_ddi;
>  	session_close_in.port.attached_transcoder = (u8)data-
> >hdcp_transcoder;
> 
> -	byte = intel_hdcp_gsc_msg_send(gsc_context, (u8 *)&session_close_in,
> +	byte = intel_hdcp_gsc_msg_send(gsc_context, &session_close_in,
>  				       sizeof(session_close_in),
> -				       (u8 *)&session_close_out,
> +				       &session_close_out,
>  				       sizeof(session_close_out));
>  	if (byte < 0) {
>  		drm_dbg_kms(display->drm, "intel_hdcp_gsc_msg_send failed.
> %zd\n", byte); diff --git a/drivers/gpu/drm/xe/display/xe_hdcp_gsc.c
> b/drivers/gpu/drm/xe/display/xe_hdcp_gsc.c
> index 7b8237a5aeee..7712d53627f0 100644
> --- a/drivers/gpu/drm/xe/display/xe_hdcp_gsc.c
> +++ b/drivers/gpu/drm/xe/display/xe_hdcp_gsc.c
> @@ -161,8 +161,8 @@ static int xe_gsc_send_sync(struct xe_device *xe,  }
> 
>  ssize_t intel_hdcp_gsc_msg_send(struct intel_hdcp_gsc_context *gsc_context,
> -				u8 *msg_in, size_t msg_in_len,
> -				u8 *msg_out, size_t msg_out_len)
> +				void *msg_in, size_t msg_in_len,
> +				void *msg_out, size_t msg_out_len)
>  {
>  	struct xe_device *xe = gsc_context->xe;
>  	const size_t max_msg_size = PAGE_SIZE - HDCP_GSC_HEADER_SIZE;
> --
> 2.39.5


^ permalink raw reply	[flat|nested] 29+ messages in thread

* RE: [PATCH 08/10] drm/i915/hdcp: simplify HDCP GSC firmware usage selection
  2025-04-24 20:01 ` [PATCH 08/10] drm/i915/hdcp: simplify HDCP GSC firmware usage selection Jani Nikula
@ 2025-04-30  4:30   ` Kandpal, Suraj
  0 siblings, 0 replies; 29+ messages in thread
From: Kandpal, Suraj @ 2025-04-30  4:30 UTC (permalink / raw)
  To: Nikula, Jani, intel-gfx@lists.freedesktop.org,
	intel-xe@lists.freedesktop.org



> -----Original Message-----
> From: Nikula, Jani <jani.nikula@intel.com>
> Sent: Friday, April 25, 2025 1:32 AM
> To: intel-gfx@lists.freedesktop.org; intel-xe@lists.freedesktop.org
> Cc: Nikula, Jani <jani.nikula@intel.com>; Kandpal, Suraj
> <suraj.kandpal@intel.com>
> Subject: [PATCH 08/10] drm/i915/hdcp: simplify HDCP GSC firmware usage
> selection
> 
> Just localize the GSC decision inside intel_hdcp.c, and deduplicate the
> conditions.
> 
> Cc: Suraj Kandpal <suraj.kandpal@intel.com>
> Signed-off-by: Jani Nikula <jani.nikula@intel.com>

LGTM,
Reviewed-by: Suraj Kandpal <suraj.kandpal@intel.com>

> ---
>  drivers/gpu/drm/i915/display/intel_hdcp.c     | 10 ++++++----
>  drivers/gpu/drm/i915/display/intel_hdcp_gsc.c |  5 -----
> drivers/gpu/drm/i915/display/intel_hdcp_gsc.h |  1 -
>  drivers/gpu/drm/xe/display/xe_hdcp_gsc.c      |  5 -----
>  4 files changed, 6 insertions(+), 15 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/display/intel_hdcp.c
> b/drivers/gpu/drm/i915/display/intel_hdcp.c
> index 4857685c4020..39bcf8f3d810 100644
> --- a/drivers/gpu/drm/i915/display/intel_hdcp.c
> +++ b/drivers/gpu/drm/i915/display/intel_hdcp.c
> @@ -32,6 +32,8 @@
>  #include "intel_hdcp_shim.h"
>  #include "intel_pcode.h"
> 
> +#define USE_HDCP_GSC(__display)		(DISPLAY_VER(__display) >=
> 14)
> +
>  #define KEY_LOAD_TRIES	5
>  #define HDCP2_LC_RETRY_CNT			3
> 
> @@ -251,7 +253,7 @@ static bool intel_hdcp2_prerequisite(struct
> intel_connector *connector)
>  		return false;
> 
>  	/* If MTL+ make sure gsc is loaded and proxy is setup */
> -	if (intel_hdcp_gsc_cs_required(display)) {
> +	if (USE_HDCP_GSC(display)) {
>  		if (!intel_hdcp_gsc_check_status(display))
>  			return false;
>  	}
> @@ -2340,7 +2342,7 @@ static int initialize_hdcp_port_data(struct
> intel_connector *connector,
> 
>  static bool is_hdcp2_supported(struct intel_display *display)  {
> -	if (intel_hdcp_gsc_cs_required(display))
> +	if (USE_HDCP_GSC(display))
>  		return true;
> 
>  	if (!IS_ENABLED(CONFIG_INTEL_MEI_HDCP))
> @@ -2364,7 +2366,7 @@ void intel_hdcp_component_init(struct intel_display
> *display)
> 
>  	display->hdcp.comp_added = true;
>  	mutex_unlock(&display->hdcp.hdcp_mutex);
> -	if (intel_hdcp_gsc_cs_required(display))
> +	if (USE_HDCP_GSC(display))
>  		ret = intel_hdcp_gsc_init(display);
>  	else
>  		ret = component_add_typed(display->drm->dev,
> &i915_hdcp_ops, @@ -2639,7 +2641,7 @@ void
> intel_hdcp_component_fini(struct intel_display *display)
>  	display->hdcp.comp_added = false;
>  	mutex_unlock(&display->hdcp.hdcp_mutex);
> 
> -	if (intel_hdcp_gsc_cs_required(display))
> +	if (USE_HDCP_GSC(display))
>  		intel_hdcp_gsc_fini(display);
>  	else
>  		component_del(display->drm->dev, &i915_hdcp_ops); diff --git
> a/drivers/gpu/drm/i915/display/intel_hdcp_gsc.c
> b/drivers/gpu/drm/i915/display/intel_hdcp_gsc.c
> index 1ea2c7204444..4194ef77f7c3 100644
> --- a/drivers/gpu/drm/i915/display/intel_hdcp_gsc.c
> +++ b/drivers/gpu/drm/i915/display/intel_hdcp_gsc.c
> @@ -19,11 +19,6 @@ struct intel_hdcp_gsc_context {
>  	void *hdcp_cmd_out;
>  };
> 
> -bool intel_hdcp_gsc_cs_required(struct intel_display *display) -{
> -	return DISPLAY_VER(display) >= 14;
> -}
> -
>  bool intel_hdcp_gsc_check_status(struct intel_display *display)  {
>  	struct drm_i915_private *i915 = to_i915(display->drm); diff --git
> a/drivers/gpu/drm/i915/display/intel_hdcp_gsc.h
> b/drivers/gpu/drm/i915/display/intel_hdcp_gsc.h
> index fbef56db54f2..e963c1fcc39e 100644
> --- a/drivers/gpu/drm/i915/display/intel_hdcp_gsc.h
> +++ b/drivers/gpu/drm/i915/display/intel_hdcp_gsc.h
> @@ -12,7 +12,6 @@
>  struct intel_display;
>  struct intel_hdcp_gsc_context;
> 
> -bool intel_hdcp_gsc_cs_required(struct intel_display *display);  ssize_t
> intel_hdcp_gsc_msg_send(struct intel_hdcp_gsc_context *gsc_context,
>  				void *msg_in, size_t msg_in_len,
>  				void *msg_out, size_t msg_out_len); diff --git
> a/drivers/gpu/drm/xe/display/xe_hdcp_gsc.c
> b/drivers/gpu/drm/xe/display/xe_hdcp_gsc.c
> index 7712d53627f0..078916072c10 100644
> --- a/drivers/gpu/drm/xe/display/xe_hdcp_gsc.c
> +++ b/drivers/gpu/drm/xe/display/xe_hdcp_gsc.c
> @@ -30,11 +30,6 @@ struct intel_hdcp_gsc_context {
> 
>  #define HDCP_GSC_HEADER_SIZE sizeof(struct intel_gsc_mtl_header)
> 
> -bool intel_hdcp_gsc_cs_required(struct intel_display *display) -{
> -	return DISPLAY_VER(display) >= 14;
> -}
> -
>  bool intel_hdcp_gsc_check_status(struct intel_display *display)  {
>  	struct xe_device *xe = to_xe_device(display->drm);
> --
> 2.39.5


^ permalink raw reply	[flat|nested] 29+ messages in thread

* RE: [PATCH 04/10] drm/i915/hdcp: rename struct intel_hdcp_gsc_message to intel_hdcp_gsc_context
  2025-04-24 20:01 ` [PATCH 04/10] drm/i915/hdcp: rename struct intel_hdcp_gsc_message to intel_hdcp_gsc_context Jani Nikula
@ 2025-04-30  4:35   ` Kandpal, Suraj
  2025-04-30  9:13     ` Jani Nikula
  0 siblings, 1 reply; 29+ messages in thread
From: Kandpal, Suraj @ 2025-04-30  4:35 UTC (permalink / raw)
  To: Nikula, Jani, intel-gfx@lists.freedesktop.org,
	intel-xe@lists.freedesktop.org
  Cc: Nautiyal, Ankit K



> -----Original Message-----
> From: Nikula, Jani <jani.nikula@intel.com>
> Sent: Friday, April 25, 2025 1:32 AM
> To: intel-gfx@lists.freedesktop.org; intel-xe@lists.freedesktop.org
> Cc: Nikula, Jani <jani.nikula@intel.com>; Kandpal, Suraj
> <suraj.kandpal@intel.com>
> Subject: [PATCH 04/10] drm/i915/hdcp: rename struct intel_hdcp_gsc_message
> to intel_hdcp_gsc_context
> 
> It's really about the context more than about the message.
> 
> Cc: Suraj Kandpal <suraj.kandpal@intel.com>
> Signed-off-by: Jani Nikula <jani.nikula@intel.com>
> ---
>  .../gpu/drm/i915/display/intel_display_core.h |  2 +-
> drivers/gpu/drm/i915/display/intel_hdcp_gsc.c | 52 ++++++++---------
> drivers/gpu/drm/i915/display/intel_hdcp_gsc.h |  6 +-
> .../drm/i915/display/intel_hdcp_gsc_message.c | 14 ++---
>  drivers/gpu/drm/xe/display/xe_hdcp_gsc.c      | 58 +++++++++----------
>  5 files changed, 66 insertions(+), 66 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/display/intel_display_core.h
> b/drivers/gpu/drm/i915/display/intel_display_core.h
> index 613af57abd1b..dc834cef75c7 100644
> --- a/drivers/gpu/drm/i915/display/intel_display_core.h
> +++ b/drivers/gpu/drm/i915/display/intel_display_core.h
> @@ -430,7 +430,7 @@ struct intel_display {
>  		 * reused when sending message to gsc cs.
>  		 * this is only populated post Meteorlake
>  		 */
> -		struct intel_hdcp_gsc_message *hdcp_message;
> +		struct intel_hdcp_gsc_context *gsc_context;
>  		/* Mutex to protect the above hdcp related values. */
>  		struct mutex hdcp_mutex;
>  	} hdcp;
> diff --git a/drivers/gpu/drm/i915/display/intel_hdcp_gsc.c
> b/drivers/gpu/drm/i915/display/intel_hdcp_gsc.c
> index 68d912dbd658..3e1dc2f7310c 100644
> --- a/drivers/gpu/drm/i915/display/intel_hdcp_gsc.c
> +++ b/drivers/gpu/drm/i915/display/intel_hdcp_gsc.c
> @@ -12,7 +12,7 @@
>  #include "i915_utils.h"
>  #include "intel_hdcp_gsc.h"
> 
> -struct intel_hdcp_gsc_message {
> +struct intel_hdcp_gsc_context {
>  	struct i915_vma *vma;
>  	void *hdcp_cmd_in;
>  	void *hdcp_cmd_out;

I feel this should be message_context if we are renaming it since the data inside it will contain
Hdcp message specific data once filled out and the addresses where this message is store so
If we really have to rename it then message_context over just context.
That way we also leave the hdcp_message variable name alone not having to rename it at every use.

Regards,
Suraj Kandpal

> @@ -40,7 +40,7 @@ bool intel_hdcp_gsc_check_status(struct intel_display
> *display)
> 
>  /*This function helps allocate memory for the command that we will send to
> gsc cs */  static int intel_hdcp_gsc_initialize_message(struct drm_i915_private
> *i915,
> -					     struct intel_hdcp_gsc_message
> *hdcp_message)
> +					     struct intel_hdcp_gsc_context
> *gsc_context)
>  {
>  	struct intel_gt *gt = i915->media_gt;
>  	struct drm_i915_gem_object *obj = NULL; @@ -77,9 +77,9 @@ static
> int intel_hdcp_gsc_initialize_message(struct drm_i915_private *i915,
> 
>  	memset(cmd_in, 0, obj->base.size);
> 
> -	hdcp_message->hdcp_cmd_in = cmd_in;
> -	hdcp_message->hdcp_cmd_out = cmd_out;
> -	hdcp_message->vma = vma;
> +	gsc_context->hdcp_cmd_in = cmd_in;
> +	gsc_context->hdcp_cmd_out = cmd_out;
> +	gsc_context->vma = vma;
> 
>  	return 0;
> 
> @@ -90,37 +90,37 @@ static int intel_hdcp_gsc_initialize_message(struct
> drm_i915_private *i915,
>  	return err;
>  }
> 
> -struct intel_hdcp_gsc_message *intel_hdcp_gsc_hdcp2_init(struct intel_display
> *display)
> +struct intel_hdcp_gsc_context *intel_hdcp_gsc_hdcp2_init(struct
> +intel_display *display)
>  {
>  	struct drm_i915_private *i915 = to_i915(display->drm);
> -	struct intel_hdcp_gsc_message *hdcp_message;
> +	struct intel_hdcp_gsc_context *gsc_context;
>  	int ret;
> 
> -	hdcp_message = kzalloc(sizeof(*hdcp_message), GFP_KERNEL);
> -	if (!hdcp_message)
> +	gsc_context = kzalloc(sizeof(*gsc_context), GFP_KERNEL);
> +	if (!gsc_context)
>  		return ERR_PTR(-ENOMEM);
> 
>  	/*
>  	 * NOTE: No need to lock the comp mutex here as it is already
>  	 * going to be taken before this function called
>  	 */
> -	ret = intel_hdcp_gsc_initialize_message(i915, hdcp_message);
> +	ret = intel_hdcp_gsc_initialize_message(i915, gsc_context);
>  	if (ret) {
> -		drm_err(display->drm, "Could not initialize hdcp_message\n");
> -		kfree(hdcp_message);
> -		hdcp_message = ERR_PTR(ret);
> +		drm_err(display->drm, "Could not initialize gsc_context\n");
> +		kfree(gsc_context);
> +		gsc_context = ERR_PTR(ret);
>  	}
> 
> -	return hdcp_message;
> +	return gsc_context;
>  }
> 
> -void intel_hdcp_gsc_free_message(struct intel_hdcp_gsc_message
> *hdcp_message)
> +void intel_hdcp_gsc_free_message(struct intel_hdcp_gsc_context
> +*gsc_context)
>  {
> -	if (!hdcp_message)
> +	if (!gsc_context)
>  		return;
> 
> -	i915_vma_unpin_and_release(&hdcp_message->vma,
> I915_VMA_RELEASE_MAP);
> -	kfree(hdcp_message);
> +	i915_vma_unpin_and_release(&gsc_context->vma,
> I915_VMA_RELEASE_MAP);
> +	kfree(gsc_context);
>  }
> 
>  static int intel_gsc_send_sync(struct drm_i915_private *i915, @@ -167,7
> +167,7 @@ static int intel_gsc_send_sync(struct drm_i915_private *i915,
>  /*
>   * This function can now be used for sending requests and will also handle
>   * receipt of reply messages hence no different function of message retrieval
> - * is required. We will initialize intel_hdcp_gsc_message structure then add
> + * is required. We will initialize intel_hdcp_gsc_context structure
> + then add
>   * gsc cs memory header as stated in specs after which the normal HDCP
> payload
>   * will follow
>   */
> @@ -178,7 +178,7 @@ ssize_t intel_hdcp_gsc_msg_send(struct
> drm_i915_private *i915, u8 *msg_in,
>  	struct intel_gt *gt = i915->media_gt;
>  	struct intel_gsc_mtl_header *header_in, *header_out;
>  	const size_t max_msg_size = PAGE_SIZE - sizeof(*header_in);
> -	struct intel_hdcp_gsc_message *hdcp_message;
> +	struct intel_hdcp_gsc_context *gsc_context;
>  	u64 addr_in, addr_out, host_session_id;
>  	u32 reply_size, msg_size_in, msg_size_out;
>  	int ret, tries = 0;
> @@ -191,10 +191,10 @@ ssize_t intel_hdcp_gsc_msg_send(struct
> drm_i915_private *i915, u8 *msg_in,
> 
>  	msg_size_in = msg_in_len + sizeof(*header_in);
>  	msg_size_out = msg_out_len + sizeof(*header_out);
> -	hdcp_message = i915->display.hdcp.hdcp_message;
> -	header_in = hdcp_message->hdcp_cmd_in;
> -	header_out = hdcp_message->hdcp_cmd_out;
> -	addr_in = i915_ggtt_offset(hdcp_message->vma);
> +	gsc_context = i915->display.hdcp.gsc_context;
> +	header_in = gsc_context->hdcp_cmd_in;
> +	header_out = gsc_context->hdcp_cmd_out;
> +	addr_in = i915_ggtt_offset(gsc_context->vma);
>  	addr_out = addr_in + PAGE_SIZE;
> 
>  	memset(header_in, 0, msg_size_in);
> @@ -202,7 +202,7 @@ ssize_t intel_hdcp_gsc_msg_send(struct
> drm_i915_private *i915, u8 *msg_in,
>  	get_random_bytes(&host_session_id, sizeof(u64));
>  	intel_gsc_uc_heci_cmd_emit_mtl_header(header_in,
> HECI_MEADDRESS_HDCP,
>  					      msg_size_in, host_session_id);
> -	memcpy(hdcp_message->hdcp_cmd_in + sizeof(*header_in), msg_in,
> msg_in_len);
> +	memcpy(gsc_context->hdcp_cmd_in + sizeof(*header_in), msg_in,
> +msg_in_len);
> 
>  	/*
>  	 * Keep sending request in case the pending bit is set no need to add
> @@ -236,7 +236,7 @@ ssize_t intel_hdcp_gsc_msg_send(struct
> drm_i915_private *i915, u8 *msg_in,
>  			    reply_size, (u32)msg_out_len);
>  	}
> 
> -	memcpy(msg_out, hdcp_message->hdcp_cmd_out +
> sizeof(*header_out), msg_out_len);
> +	memcpy(msg_out, gsc_context->hdcp_cmd_out + sizeof(*header_out),
> +msg_out_len);
> 
>  err:
>  	return ret;
> diff --git a/drivers/gpu/drm/i915/display/intel_hdcp_gsc.h
> b/drivers/gpu/drm/i915/display/intel_hdcp_gsc.h
> index f3362720d742..31080df80097 100644
> --- a/drivers/gpu/drm/i915/display/intel_hdcp_gsc.h
> +++ b/drivers/gpu/drm/i915/display/intel_hdcp_gsc.h
> @@ -11,7 +11,7 @@
> 
>  struct drm_i915_private;
>  struct intel_display;
> -struct intel_hdcp_gsc_message;
> +struct intel_hdcp_gsc_context;
> 
>  bool intel_hdcp_gsc_cs_required(struct intel_display *display);  ssize_t
> intel_hdcp_gsc_msg_send(struct drm_i915_private *i915, u8 *msg_in, @@ -
> 19,7 +19,7 @@ ssize_t intel_hdcp_gsc_msg_send(struct drm_i915_private
> *i915, u8 *msg_in,
>  				size_t msg_out_len);
>  bool intel_hdcp_gsc_check_status(struct intel_display *display);
> 
> -struct intel_hdcp_gsc_message *intel_hdcp_gsc_hdcp2_init(struct intel_display
> *display); -void intel_hdcp_gsc_free_message(struct intel_hdcp_gsc_message
> *hdcp_message);
> +struct intel_hdcp_gsc_context *intel_hdcp_gsc_hdcp2_init(struct
> +intel_display *display); void intel_hdcp_gsc_free_message(struct
> +intel_hdcp_gsc_context *gsc_context);
> 
>  #endif /* __INTEL_HDCP_GCS_H__ */
> diff --git a/drivers/gpu/drm/i915/display/intel_hdcp_gsc_message.c
> b/drivers/gpu/drm/i915/display/intel_hdcp_gsc_message.c
> index 11aa6772f272..94ca571ab481 100644
> --- a/drivers/gpu/drm/i915/display/intel_hdcp_gsc_message.c
> +++ b/drivers/gpu/drm/i915/display/intel_hdcp_gsc_message.c
> @@ -633,7 +633,7 @@ static const struct i915_hdcp_ops gsc_hdcp_ops = {
> 
>  int intel_hdcp_gsc_init(struct intel_display *display)  {
> -	struct intel_hdcp_gsc_message *hdcp_message;
> +	struct intel_hdcp_gsc_context *gsc_context;
>  	struct i915_hdcp_arbiter *arbiter;
>  	int ret = 0;
> 
> @@ -643,9 +643,9 @@ int intel_hdcp_gsc_init(struct intel_display *display)
> 
>  	mutex_lock(&display->hdcp.hdcp_mutex);
> 
> -	hdcp_message = intel_hdcp_gsc_hdcp2_init(display);
> -	if (IS_ERR(hdcp_message)) {
> -		ret = PTR_ERR(hdcp_message);
> +	gsc_context = intel_hdcp_gsc_hdcp2_init(display);
> +	if (IS_ERR(gsc_context)) {
> +		ret = PTR_ERR(gsc_context);
>  		kfree(arbiter);
>  		goto out;
>  	}
> @@ -653,7 +653,7 @@ int intel_hdcp_gsc_init(struct intel_display *display)
>  	display->hdcp.arbiter = arbiter;
>  	display->hdcp.arbiter->hdcp_dev = display->drm->dev;
>  	display->hdcp.arbiter->ops = &gsc_hdcp_ops;
> -	display->hdcp.hdcp_message = hdcp_message;
> +	display->hdcp.gsc_context = gsc_context;
> 
>  out:
>  	mutex_unlock(&display->hdcp.hdcp_mutex);
> @@ -663,8 +663,8 @@ int intel_hdcp_gsc_init(struct intel_display *display)
> 
>  void intel_hdcp_gsc_fini(struct intel_display *display)  {
> -	intel_hdcp_gsc_free_message(display->hdcp.hdcp_message);
> -	display->hdcp.hdcp_message = NULL;
> +	intel_hdcp_gsc_free_message(display->hdcp.gsc_context);
> +	display->hdcp.gsc_context = NULL;
>  	kfree(display->hdcp.arbiter);
>  	display->hdcp.arbiter = NULL;
>  }
> diff --git a/drivers/gpu/drm/xe/display/xe_hdcp_gsc.c
> b/drivers/gpu/drm/xe/display/xe_hdcp_gsc.c
> index d15565bf2f9f..68fac12ac666 100644
> --- a/drivers/gpu/drm/xe/display/xe_hdcp_gsc.c
> +++ b/drivers/gpu/drm/xe/display/xe_hdcp_gsc.c
> @@ -21,7 +21,7 @@
> 
>  #define HECI_MEADDRESS_HDCP 18
> 
> -struct intel_hdcp_gsc_message {
> +struct intel_hdcp_gsc_context {
>  	struct xe_bo *hdcp_bo;
>  	u64 hdcp_cmd_in;
>  	u64 hdcp_cmd_out;
> @@ -69,7 +69,7 @@ bool intel_hdcp_gsc_check_status(struct intel_display
> *display)
> 
>  /*This function helps allocate memory for the command that we will send to
> gsc cs */  static int intel_hdcp_gsc_initialize_message(struct intel_display
> *display,
> -					     struct intel_hdcp_gsc_message
> *hdcp_message)
> +					     struct intel_hdcp_gsc_context
> *gsc_context)
>  {
>  	struct xe_device *xe = to_xe_device(display->drm);
>  	struct xe_bo *bo = NULL;
> @@ -92,57 +92,57 @@ static int intel_hdcp_gsc_initialize_message(struct
> intel_display *display,
>  	cmd_out = cmd_in + PAGE_SIZE;
>  	xe_map_memset(xe, &bo->vmap, 0, 0, bo->size);
> 
> -	hdcp_message->hdcp_bo = bo;
> -	hdcp_message->hdcp_cmd_in = cmd_in;
> -	hdcp_message->hdcp_cmd_out = cmd_out;
> +	gsc_context->hdcp_bo = bo;
> +	gsc_context->hdcp_cmd_in = cmd_in;
> +	gsc_context->hdcp_cmd_out = cmd_out;
>  out:
>  	return ret;
>  }
> 
> -struct intel_hdcp_gsc_message *intel_hdcp_gsc_hdcp2_init(struct intel_display
> *display)
> +struct intel_hdcp_gsc_context *intel_hdcp_gsc_hdcp2_init(struct
> +intel_display *display)
>  {
> -	struct intel_hdcp_gsc_message *hdcp_message;
> +	struct intel_hdcp_gsc_context *gsc_context;
>  	int ret;
> 
> -	hdcp_message = kzalloc(sizeof(*hdcp_message), GFP_KERNEL);
> -	if (!hdcp_message)
> +	gsc_context = kzalloc(sizeof(*gsc_context), GFP_KERNEL);
> +	if (!gsc_context)
>  		return ERR_PTR(-ENOMEM);
> 
>  	/*
>  	 * NOTE: No need to lock the comp mutex here as it is already
>  	 * going to be taken before this function called
>  	 */
> -	ret = intel_hdcp_gsc_initialize_message(display, hdcp_message);
> +	ret = intel_hdcp_gsc_initialize_message(display, gsc_context);
>  	if (ret) {
> -		drm_err(display->drm, "Could not initialize hdcp_message\n");
> -		kfree(hdcp_message);
> -		hdcp_message = ERR_PTR(ret);
> +		drm_err(display->drm, "Could not initialize gsc_context\n");
> +		kfree(gsc_context);
> +		gsc_context = ERR_PTR(ret);
>  	}
> 
> -	return hdcp_message;
> +	return gsc_context;
>  }
> 
> -void intel_hdcp_gsc_free_message(struct intel_hdcp_gsc_message
> *hdcp_message)
> +void intel_hdcp_gsc_free_message(struct intel_hdcp_gsc_context
> +*gsc_context)
>  {
> -	if (!hdcp_message)
> +	if (!gsc_context)
>  		return;
> 
> -	xe_bo_unpin_map_no_vm(hdcp_message->hdcp_bo);
> -	kfree(hdcp_message);
> +	xe_bo_unpin_map_no_vm(gsc_context->hdcp_bo);
> +	kfree(gsc_context);
>  }
> 
>  static int xe_gsc_send_sync(struct xe_device *xe,
> -			    struct intel_hdcp_gsc_message *hdcp_message,
> +			    struct intel_hdcp_gsc_context *gsc_context,
>  			    u32 msg_size_in, u32 msg_size_out,
>  			    u32 addr_out_off)
>  {
> -	struct xe_gt *gt = hdcp_message->hdcp_bo->tile->media_gt;
> -	struct iosys_map *map = &hdcp_message->hdcp_bo->vmap;
> +	struct xe_gt *gt = gsc_context->hdcp_bo->tile->media_gt;
> +	struct iosys_map *map = &gsc_context->hdcp_bo->vmap;
>  	struct xe_gsc *gsc = &gt->uc.gsc;
>  	int ret;
> 
> -	ret = xe_gsc_pkt_submit_kernel(gsc, hdcp_message->hdcp_cmd_in,
> msg_size_in,
> -				       hdcp_message->hdcp_cmd_out,
> msg_size_out);
> +	ret = xe_gsc_pkt_submit_kernel(gsc, gsc_context->hdcp_cmd_in,
> msg_size_in,
> +				       gsc_context->hdcp_cmd_out,
> msg_size_out);
>  	if (ret) {
>  		drm_err(&xe->drm, "failed to send gsc HDCP msg (%d)\n", ret);
>  		return ret;
> @@ -162,7 +162,7 @@ ssize_t intel_hdcp_gsc_msg_send(struct xe_device *xe,
> u8 *msg_in,
>  				size_t msg_out_len)
>  {
>  	const size_t max_msg_size = PAGE_SIZE - HDCP_GSC_HEADER_SIZE;
> -	struct intel_hdcp_gsc_message *hdcp_message;
> +	struct intel_hdcp_gsc_context *gsc_context;
>  	u64 host_session_id;
>  	u32 msg_size_in, msg_size_out;
>  	u32 addr_out_off, addr_in_wr_off = 0;
> @@ -175,15 +175,15 @@ ssize_t intel_hdcp_gsc_msg_send(struct xe_device
> *xe, u8 *msg_in,
> 
>  	msg_size_in = msg_in_len + HDCP_GSC_HEADER_SIZE;
>  	msg_size_out = msg_out_len + HDCP_GSC_HEADER_SIZE;
> -	hdcp_message = xe->display.hdcp.hdcp_message;
> +	gsc_context = xe->display.hdcp.gsc_context;
>  	addr_out_off = PAGE_SIZE;
> 
>  	host_session_id = xe_gsc_create_host_session_id();
>  	xe_pm_runtime_get_noresume(xe);
> -	addr_in_wr_off = xe_gsc_emit_header(xe, &hdcp_message->hdcp_bo-
> >vmap,
> +	addr_in_wr_off = xe_gsc_emit_header(xe, &gsc_context->hdcp_bo-
> >vmap,
>  					    addr_in_wr_off,
> HECI_MEADDRESS_HDCP,
>  					    host_session_id, msg_in_len);
> -	xe_map_memcpy_to(xe, &hdcp_message->hdcp_bo->vmap,
> addr_in_wr_off,
> +	xe_map_memcpy_to(xe, &gsc_context->hdcp_bo->vmap,
> addr_in_wr_off,
>  			 msg_in, msg_in_len);
>  	/*
>  	 * Keep sending request in case the pending bit is set no need to add
> @@ -192,7 +192,7 @@ ssize_t intel_hdcp_gsc_msg_send(struct xe_device *xe,
> u8 *msg_in,
>  	 * 20 times each message 50 ms apart
>  	 */
>  	do {
> -		ret = xe_gsc_send_sync(xe, hdcp_message, msg_size_in,
> msg_size_out,
> +		ret = xe_gsc_send_sync(xe, gsc_context, msg_size_in,
> msg_size_out,
>  				       addr_out_off);
> 
>  		/* Only try again if gsc says so */
> @@ -206,7 +206,7 @@ ssize_t intel_hdcp_gsc_msg_send(struct xe_device *xe,
> u8 *msg_in,
>  	if (ret)
>  		goto out;
> 
> -	xe_map_memcpy_from(xe, msg_out, &hdcp_message->hdcp_bo-
> >vmap,
> +	xe_map_memcpy_from(xe, msg_out, &gsc_context->hdcp_bo->vmap,
>  			   addr_out_off + HDCP_GSC_HEADER_SIZE,
>  			   msg_out_len);
> 
> --
> 2.39.5


^ permalink raw reply	[flat|nested] 29+ messages in thread

* RE: [PATCH 04/10] drm/i915/hdcp: rename struct intel_hdcp_gsc_message to intel_hdcp_gsc_context
  2025-04-30  4:35   ` Kandpal, Suraj
@ 2025-04-30  9:13     ` Jani Nikula
  2025-05-02  3:37       ` Kandpal, Suraj
  0 siblings, 1 reply; 29+ messages in thread
From: Jani Nikula @ 2025-04-30  9:13 UTC (permalink / raw)
  To: Kandpal, Suraj, intel-gfx@lists.freedesktop.org,
	intel-xe@lists.freedesktop.org
  Cc: Nautiyal, Ankit K

On Wed, 30 Apr 2025, "Kandpal, Suraj" <suraj.kandpal@intel.com> wrote:
>> -----Original Message-----
>> From: Nikula, Jani <jani.nikula@intel.com>
>> Sent: Friday, April 25, 2025 1:32 AM
>> To: intel-gfx@lists.freedesktop.org; intel-xe@lists.freedesktop.org
>> Cc: Nikula, Jani <jani.nikula@intel.com>; Kandpal, Suraj
>> <suraj.kandpal@intel.com>
>> Subject: [PATCH 04/10] drm/i915/hdcp: rename struct intel_hdcp_gsc_message
>> to intel_hdcp_gsc_context
>> 
>> It's really about the context more than about the message.
>> 
>> Cc: Suraj Kandpal <suraj.kandpal@intel.com>
>> Signed-off-by: Jani Nikula <jani.nikula@intel.com>
>> ---
>>  .../gpu/drm/i915/display/intel_display_core.h |  2 +-
>> drivers/gpu/drm/i915/display/intel_hdcp_gsc.c | 52 ++++++++---------
>> drivers/gpu/drm/i915/display/intel_hdcp_gsc.h |  6 +-
>> .../drm/i915/display/intel_hdcp_gsc_message.c | 14 ++---
>>  drivers/gpu/drm/xe/display/xe_hdcp_gsc.c      | 58 +++++++++----------
>>  5 files changed, 66 insertions(+), 66 deletions(-)
>> 
>> diff --git a/drivers/gpu/drm/i915/display/intel_display_core.h
>> b/drivers/gpu/drm/i915/display/intel_display_core.h
>> index 613af57abd1b..dc834cef75c7 100644
>> --- a/drivers/gpu/drm/i915/display/intel_display_core.h
>> +++ b/drivers/gpu/drm/i915/display/intel_display_core.h
>> @@ -430,7 +430,7 @@ struct intel_display {
>>  		 * reused when sending message to gsc cs.
>>  		 * this is only populated post Meteorlake
>>  		 */
>> -		struct intel_hdcp_gsc_message *hdcp_message;
>> +		struct intel_hdcp_gsc_context *gsc_context;
>>  		/* Mutex to protect the above hdcp related values. */
>>  		struct mutex hdcp_mutex;
>>  	} hdcp;
>> diff --git a/drivers/gpu/drm/i915/display/intel_hdcp_gsc.c
>> b/drivers/gpu/drm/i915/display/intel_hdcp_gsc.c
>> index 68d912dbd658..3e1dc2f7310c 100644
>> --- a/drivers/gpu/drm/i915/display/intel_hdcp_gsc.c
>> +++ b/drivers/gpu/drm/i915/display/intel_hdcp_gsc.c
>> @@ -12,7 +12,7 @@
>>  #include "i915_utils.h"
>>  #include "intel_hdcp_gsc.h"
>> 
>> -struct intel_hdcp_gsc_message {
>> +struct intel_hdcp_gsc_context {
>>  	struct i915_vma *vma;
>>  	void *hdcp_cmd_in;
>>  	void *hdcp_cmd_out;
>
> I feel this should be message_context if we are renaming it since the data inside it will contain
> Hdcp message specific data once filled out and the addresses where this message is store so
> If we really have to rename it then message_context over just context.
> That way we also leave the hdcp_message variable name alone not having to rename it at every use.

My point is that it's not a *message*. It's a context that's shared and
used for all messages. I think "hdcp_message" as a struct member and as
a variable name is misleading, and I'd like to rename them anyway. It's
not even passed on to any message sending functions (yet).

See struct i2c_msg for what an actual message struct looks like. You
fill it in and and pass on to i2c_transfer() to send. struct
intel_hdcp_gsc_message is nothing like that.

I just think intel_hdcp_gsc_message_context is unwieldy, so I opted for
the shorter intel_hdcp_gsc_context. Moreover, in patch 6/10 I store more
info to it too.

I can rename if you like, but to what? Thoughts?


BR,
Jani.



>
> Regards,
> Suraj Kandpal
>
>> @@ -40,7 +40,7 @@ bool intel_hdcp_gsc_check_status(struct intel_display
>> *display)
>> 
>>  /*This function helps allocate memory for the command that we will send to
>> gsc cs */  static int intel_hdcp_gsc_initialize_message(struct drm_i915_private
>> *i915,
>> -					     struct intel_hdcp_gsc_message
>> *hdcp_message)
>> +					     struct intel_hdcp_gsc_context
>> *gsc_context)
>>  {
>>  	struct intel_gt *gt = i915->media_gt;
>>  	struct drm_i915_gem_object *obj = NULL; @@ -77,9 +77,9 @@ static
>> int intel_hdcp_gsc_initialize_message(struct drm_i915_private *i915,
>> 
>>  	memset(cmd_in, 0, obj->base.size);
>> 
>> -	hdcp_message->hdcp_cmd_in = cmd_in;
>> -	hdcp_message->hdcp_cmd_out = cmd_out;
>> -	hdcp_message->vma = vma;
>> +	gsc_context->hdcp_cmd_in = cmd_in;
>> +	gsc_context->hdcp_cmd_out = cmd_out;
>> +	gsc_context->vma = vma;
>> 
>>  	return 0;
>> 
>> @@ -90,37 +90,37 @@ static int intel_hdcp_gsc_initialize_message(struct
>> drm_i915_private *i915,
>>  	return err;
>>  }
>> 
>> -struct intel_hdcp_gsc_message *intel_hdcp_gsc_hdcp2_init(struct intel_display
>> *display)
>> +struct intel_hdcp_gsc_context *intel_hdcp_gsc_hdcp2_init(struct
>> +intel_display *display)
>>  {
>>  	struct drm_i915_private *i915 = to_i915(display->drm);
>> -	struct intel_hdcp_gsc_message *hdcp_message;
>> +	struct intel_hdcp_gsc_context *gsc_context;
>>  	int ret;
>> 
>> -	hdcp_message = kzalloc(sizeof(*hdcp_message), GFP_KERNEL);
>> -	if (!hdcp_message)
>> +	gsc_context = kzalloc(sizeof(*gsc_context), GFP_KERNEL);
>> +	if (!gsc_context)
>>  		return ERR_PTR(-ENOMEM);
>> 
>>  	/*
>>  	 * NOTE: No need to lock the comp mutex here as it is already
>>  	 * going to be taken before this function called
>>  	 */
>> -	ret = intel_hdcp_gsc_initialize_message(i915, hdcp_message);
>> +	ret = intel_hdcp_gsc_initialize_message(i915, gsc_context);
>>  	if (ret) {
>> -		drm_err(display->drm, "Could not initialize hdcp_message\n");
>> -		kfree(hdcp_message);
>> -		hdcp_message = ERR_PTR(ret);
>> +		drm_err(display->drm, "Could not initialize gsc_context\n");
>> +		kfree(gsc_context);
>> +		gsc_context = ERR_PTR(ret);
>>  	}
>> 
>> -	return hdcp_message;
>> +	return gsc_context;
>>  }
>> 
>> -void intel_hdcp_gsc_free_message(struct intel_hdcp_gsc_message
>> *hdcp_message)
>> +void intel_hdcp_gsc_free_message(struct intel_hdcp_gsc_context
>> +*gsc_context)
>>  {
>> -	if (!hdcp_message)
>> +	if (!gsc_context)
>>  		return;
>> 
>> -	i915_vma_unpin_and_release(&hdcp_message->vma,
>> I915_VMA_RELEASE_MAP);
>> -	kfree(hdcp_message);
>> +	i915_vma_unpin_and_release(&gsc_context->vma,
>> I915_VMA_RELEASE_MAP);
>> +	kfree(gsc_context);
>>  }
>> 
>>  static int intel_gsc_send_sync(struct drm_i915_private *i915, @@ -167,7
>> +167,7 @@ static int intel_gsc_send_sync(struct drm_i915_private *i915,
>>  /*
>>   * This function can now be used for sending requests and will also handle
>>   * receipt of reply messages hence no different function of message retrieval
>> - * is required. We will initialize intel_hdcp_gsc_message structure then add
>> + * is required. We will initialize intel_hdcp_gsc_context structure
>> + then add
>>   * gsc cs memory header as stated in specs after which the normal HDCP
>> payload
>>   * will follow
>>   */
>> @@ -178,7 +178,7 @@ ssize_t intel_hdcp_gsc_msg_send(struct
>> drm_i915_private *i915, u8 *msg_in,
>>  	struct intel_gt *gt = i915->media_gt;
>>  	struct intel_gsc_mtl_header *header_in, *header_out;
>>  	const size_t max_msg_size = PAGE_SIZE - sizeof(*header_in);
>> -	struct intel_hdcp_gsc_message *hdcp_message;
>> +	struct intel_hdcp_gsc_context *gsc_context;
>>  	u64 addr_in, addr_out, host_session_id;
>>  	u32 reply_size, msg_size_in, msg_size_out;
>>  	int ret, tries = 0;
>> @@ -191,10 +191,10 @@ ssize_t intel_hdcp_gsc_msg_send(struct
>> drm_i915_private *i915, u8 *msg_in,
>> 
>>  	msg_size_in = msg_in_len + sizeof(*header_in);
>>  	msg_size_out = msg_out_len + sizeof(*header_out);
>> -	hdcp_message = i915->display.hdcp.hdcp_message;
>> -	header_in = hdcp_message->hdcp_cmd_in;
>> -	header_out = hdcp_message->hdcp_cmd_out;
>> -	addr_in = i915_ggtt_offset(hdcp_message->vma);
>> +	gsc_context = i915->display.hdcp.gsc_context;
>> +	header_in = gsc_context->hdcp_cmd_in;
>> +	header_out = gsc_context->hdcp_cmd_out;
>> +	addr_in = i915_ggtt_offset(gsc_context->vma);
>>  	addr_out = addr_in + PAGE_SIZE;
>> 
>>  	memset(header_in, 0, msg_size_in);
>> @@ -202,7 +202,7 @@ ssize_t intel_hdcp_gsc_msg_send(struct
>> drm_i915_private *i915, u8 *msg_in,
>>  	get_random_bytes(&host_session_id, sizeof(u64));
>>  	intel_gsc_uc_heci_cmd_emit_mtl_header(header_in,
>> HECI_MEADDRESS_HDCP,
>>  					      msg_size_in, host_session_id);
>> -	memcpy(hdcp_message->hdcp_cmd_in + sizeof(*header_in), msg_in,
>> msg_in_len);
>> +	memcpy(gsc_context->hdcp_cmd_in + sizeof(*header_in), msg_in,
>> +msg_in_len);
>> 
>>  	/*
>>  	 * Keep sending request in case the pending bit is set no need to add
>> @@ -236,7 +236,7 @@ ssize_t intel_hdcp_gsc_msg_send(struct
>> drm_i915_private *i915, u8 *msg_in,
>>  			    reply_size, (u32)msg_out_len);
>>  	}
>> 
>> -	memcpy(msg_out, hdcp_message->hdcp_cmd_out +
>> sizeof(*header_out), msg_out_len);
>> +	memcpy(msg_out, gsc_context->hdcp_cmd_out + sizeof(*header_out),
>> +msg_out_len);
>> 
>>  err:
>>  	return ret;
>> diff --git a/drivers/gpu/drm/i915/display/intel_hdcp_gsc.h
>> b/drivers/gpu/drm/i915/display/intel_hdcp_gsc.h
>> index f3362720d742..31080df80097 100644
>> --- a/drivers/gpu/drm/i915/display/intel_hdcp_gsc.h
>> +++ b/drivers/gpu/drm/i915/display/intel_hdcp_gsc.h
>> @@ -11,7 +11,7 @@
>> 
>>  struct drm_i915_private;
>>  struct intel_display;
>> -struct intel_hdcp_gsc_message;
>> +struct intel_hdcp_gsc_context;
>> 
>>  bool intel_hdcp_gsc_cs_required(struct intel_display *display);  ssize_t
>> intel_hdcp_gsc_msg_send(struct drm_i915_private *i915, u8 *msg_in, @@ -
>> 19,7 +19,7 @@ ssize_t intel_hdcp_gsc_msg_send(struct drm_i915_private
>> *i915, u8 *msg_in,
>>  				size_t msg_out_len);
>>  bool intel_hdcp_gsc_check_status(struct intel_display *display);
>> 
>> -struct intel_hdcp_gsc_message *intel_hdcp_gsc_hdcp2_init(struct intel_display
>> *display); -void intel_hdcp_gsc_free_message(struct intel_hdcp_gsc_message
>> *hdcp_message);
>> +struct intel_hdcp_gsc_context *intel_hdcp_gsc_hdcp2_init(struct
>> +intel_display *display); void intel_hdcp_gsc_free_message(struct
>> +intel_hdcp_gsc_context *gsc_context);
>> 
>>  #endif /* __INTEL_HDCP_GCS_H__ */
>> diff --git a/drivers/gpu/drm/i915/display/intel_hdcp_gsc_message.c
>> b/drivers/gpu/drm/i915/display/intel_hdcp_gsc_message.c
>> index 11aa6772f272..94ca571ab481 100644
>> --- a/drivers/gpu/drm/i915/display/intel_hdcp_gsc_message.c
>> +++ b/drivers/gpu/drm/i915/display/intel_hdcp_gsc_message.c
>> @@ -633,7 +633,7 @@ static const struct i915_hdcp_ops gsc_hdcp_ops = {
>> 
>>  int intel_hdcp_gsc_init(struct intel_display *display)  {
>> -	struct intel_hdcp_gsc_message *hdcp_message;
>> +	struct intel_hdcp_gsc_context *gsc_context;
>>  	struct i915_hdcp_arbiter *arbiter;
>>  	int ret = 0;
>> 
>> @@ -643,9 +643,9 @@ int intel_hdcp_gsc_init(struct intel_display *display)
>> 
>>  	mutex_lock(&display->hdcp.hdcp_mutex);
>> 
>> -	hdcp_message = intel_hdcp_gsc_hdcp2_init(display);
>> -	if (IS_ERR(hdcp_message)) {
>> -		ret = PTR_ERR(hdcp_message);
>> +	gsc_context = intel_hdcp_gsc_hdcp2_init(display);
>> +	if (IS_ERR(gsc_context)) {
>> +		ret = PTR_ERR(gsc_context);
>>  		kfree(arbiter);
>>  		goto out;
>>  	}
>> @@ -653,7 +653,7 @@ int intel_hdcp_gsc_init(struct intel_display *display)
>>  	display->hdcp.arbiter = arbiter;
>>  	display->hdcp.arbiter->hdcp_dev = display->drm->dev;
>>  	display->hdcp.arbiter->ops = &gsc_hdcp_ops;
>> -	display->hdcp.hdcp_message = hdcp_message;
>> +	display->hdcp.gsc_context = gsc_context;
>> 
>>  out:
>>  	mutex_unlock(&display->hdcp.hdcp_mutex);
>> @@ -663,8 +663,8 @@ int intel_hdcp_gsc_init(struct intel_display *display)
>> 
>>  void intel_hdcp_gsc_fini(struct intel_display *display)  {
>> -	intel_hdcp_gsc_free_message(display->hdcp.hdcp_message);
>> -	display->hdcp.hdcp_message = NULL;
>> +	intel_hdcp_gsc_free_message(display->hdcp.gsc_context);
>> +	display->hdcp.gsc_context = NULL;
>>  	kfree(display->hdcp.arbiter);
>>  	display->hdcp.arbiter = NULL;
>>  }
>> diff --git a/drivers/gpu/drm/xe/display/xe_hdcp_gsc.c
>> b/drivers/gpu/drm/xe/display/xe_hdcp_gsc.c
>> index d15565bf2f9f..68fac12ac666 100644
>> --- a/drivers/gpu/drm/xe/display/xe_hdcp_gsc.c
>> +++ b/drivers/gpu/drm/xe/display/xe_hdcp_gsc.c
>> @@ -21,7 +21,7 @@
>> 
>>  #define HECI_MEADDRESS_HDCP 18
>> 
>> -struct intel_hdcp_gsc_message {
>> +struct intel_hdcp_gsc_context {
>>  	struct xe_bo *hdcp_bo;
>>  	u64 hdcp_cmd_in;
>>  	u64 hdcp_cmd_out;
>> @@ -69,7 +69,7 @@ bool intel_hdcp_gsc_check_status(struct intel_display
>> *display)
>> 
>>  /*This function helps allocate memory for the command that we will send to
>> gsc cs */  static int intel_hdcp_gsc_initialize_message(struct intel_display
>> *display,
>> -					     struct intel_hdcp_gsc_message
>> *hdcp_message)
>> +					     struct intel_hdcp_gsc_context
>> *gsc_context)
>>  {
>>  	struct xe_device *xe = to_xe_device(display->drm);
>>  	struct xe_bo *bo = NULL;
>> @@ -92,57 +92,57 @@ static int intel_hdcp_gsc_initialize_message(struct
>> intel_display *display,
>>  	cmd_out = cmd_in + PAGE_SIZE;
>>  	xe_map_memset(xe, &bo->vmap, 0, 0, bo->size);
>> 
>> -	hdcp_message->hdcp_bo = bo;
>> -	hdcp_message->hdcp_cmd_in = cmd_in;
>> -	hdcp_message->hdcp_cmd_out = cmd_out;
>> +	gsc_context->hdcp_bo = bo;
>> +	gsc_context->hdcp_cmd_in = cmd_in;
>> +	gsc_context->hdcp_cmd_out = cmd_out;
>>  out:
>>  	return ret;
>>  }
>> 
>> -struct intel_hdcp_gsc_message *intel_hdcp_gsc_hdcp2_init(struct intel_display
>> *display)
>> +struct intel_hdcp_gsc_context *intel_hdcp_gsc_hdcp2_init(struct
>> +intel_display *display)
>>  {
>> -	struct intel_hdcp_gsc_message *hdcp_message;
>> +	struct intel_hdcp_gsc_context *gsc_context;
>>  	int ret;
>> 
>> -	hdcp_message = kzalloc(sizeof(*hdcp_message), GFP_KERNEL);
>> -	if (!hdcp_message)
>> +	gsc_context = kzalloc(sizeof(*gsc_context), GFP_KERNEL);
>> +	if (!gsc_context)
>>  		return ERR_PTR(-ENOMEM);
>> 
>>  	/*
>>  	 * NOTE: No need to lock the comp mutex here as it is already
>>  	 * going to be taken before this function called
>>  	 */
>> -	ret = intel_hdcp_gsc_initialize_message(display, hdcp_message);
>> +	ret = intel_hdcp_gsc_initialize_message(display, gsc_context);
>>  	if (ret) {
>> -		drm_err(display->drm, "Could not initialize hdcp_message\n");
>> -		kfree(hdcp_message);
>> -		hdcp_message = ERR_PTR(ret);
>> +		drm_err(display->drm, "Could not initialize gsc_context\n");
>> +		kfree(gsc_context);
>> +		gsc_context = ERR_PTR(ret);
>>  	}
>> 
>> -	return hdcp_message;
>> +	return gsc_context;
>>  }
>> 
>> -void intel_hdcp_gsc_free_message(struct intel_hdcp_gsc_message
>> *hdcp_message)
>> +void intel_hdcp_gsc_free_message(struct intel_hdcp_gsc_context
>> +*gsc_context)
>>  {
>> -	if (!hdcp_message)
>> +	if (!gsc_context)
>>  		return;
>> 
>> -	xe_bo_unpin_map_no_vm(hdcp_message->hdcp_bo);
>> -	kfree(hdcp_message);
>> +	xe_bo_unpin_map_no_vm(gsc_context->hdcp_bo);
>> +	kfree(gsc_context);
>>  }
>> 
>>  static int xe_gsc_send_sync(struct xe_device *xe,
>> -			    struct intel_hdcp_gsc_message *hdcp_message,
>> +			    struct intel_hdcp_gsc_context *gsc_context,
>>  			    u32 msg_size_in, u32 msg_size_out,
>>  			    u32 addr_out_off)
>>  {
>> -	struct xe_gt *gt = hdcp_message->hdcp_bo->tile->media_gt;
>> -	struct iosys_map *map = &hdcp_message->hdcp_bo->vmap;
>> +	struct xe_gt *gt = gsc_context->hdcp_bo->tile->media_gt;
>> +	struct iosys_map *map = &gsc_context->hdcp_bo->vmap;
>>  	struct xe_gsc *gsc = &gt->uc.gsc;
>>  	int ret;
>> 
>> -	ret = xe_gsc_pkt_submit_kernel(gsc, hdcp_message->hdcp_cmd_in,
>> msg_size_in,
>> -				       hdcp_message->hdcp_cmd_out,
>> msg_size_out);
>> +	ret = xe_gsc_pkt_submit_kernel(gsc, gsc_context->hdcp_cmd_in,
>> msg_size_in,
>> +				       gsc_context->hdcp_cmd_out,
>> msg_size_out);
>>  	if (ret) {
>>  		drm_err(&xe->drm, "failed to send gsc HDCP msg (%d)\n", ret);
>>  		return ret;
>> @@ -162,7 +162,7 @@ ssize_t intel_hdcp_gsc_msg_send(struct xe_device *xe,
>> u8 *msg_in,
>>  				size_t msg_out_len)
>>  {
>>  	const size_t max_msg_size = PAGE_SIZE - HDCP_GSC_HEADER_SIZE;
>> -	struct intel_hdcp_gsc_message *hdcp_message;
>> +	struct intel_hdcp_gsc_context *gsc_context;
>>  	u64 host_session_id;
>>  	u32 msg_size_in, msg_size_out;
>>  	u32 addr_out_off, addr_in_wr_off = 0;
>> @@ -175,15 +175,15 @@ ssize_t intel_hdcp_gsc_msg_send(struct xe_device
>> *xe, u8 *msg_in,
>> 
>>  	msg_size_in = msg_in_len + HDCP_GSC_HEADER_SIZE;
>>  	msg_size_out = msg_out_len + HDCP_GSC_HEADER_SIZE;
>> -	hdcp_message = xe->display.hdcp.hdcp_message;
>> +	gsc_context = xe->display.hdcp.gsc_context;
>>  	addr_out_off = PAGE_SIZE;
>> 
>>  	host_session_id = xe_gsc_create_host_session_id();
>>  	xe_pm_runtime_get_noresume(xe);
>> -	addr_in_wr_off = xe_gsc_emit_header(xe, &hdcp_message->hdcp_bo-
>> >vmap,
>> +	addr_in_wr_off = xe_gsc_emit_header(xe, &gsc_context->hdcp_bo-
>> >vmap,
>>  					    addr_in_wr_off,
>> HECI_MEADDRESS_HDCP,
>>  					    host_session_id, msg_in_len);
>> -	xe_map_memcpy_to(xe, &hdcp_message->hdcp_bo->vmap,
>> addr_in_wr_off,
>> +	xe_map_memcpy_to(xe, &gsc_context->hdcp_bo->vmap,
>> addr_in_wr_off,
>>  			 msg_in, msg_in_len);
>>  	/*
>>  	 * Keep sending request in case the pending bit is set no need to add
>> @@ -192,7 +192,7 @@ ssize_t intel_hdcp_gsc_msg_send(struct xe_device *xe,
>> u8 *msg_in,
>>  	 * 20 times each message 50 ms apart
>>  	 */
>>  	do {
>> -		ret = xe_gsc_send_sync(xe, hdcp_message, msg_size_in,
>> msg_size_out,
>> +		ret = xe_gsc_send_sync(xe, gsc_context, msg_size_in,
>> msg_size_out,
>>  				       addr_out_off);
>> 
>>  		/* Only try again if gsc says so */
>> @@ -206,7 +206,7 @@ ssize_t intel_hdcp_gsc_msg_send(struct xe_device *xe,
>> u8 *msg_in,
>>  	if (ret)
>>  		goto out;
>> 
>> -	xe_map_memcpy_from(xe, msg_out, &hdcp_message->hdcp_bo-
>> >vmap,
>> +	xe_map_memcpy_from(xe, msg_out, &gsc_context->hdcp_bo->vmap,
>>  			   addr_out_off + HDCP_GSC_HEADER_SIZE,
>>  			   msg_out_len);
>> 
>> --
>> 2.39.5
>

-- 
Jani Nikula, Intel

^ permalink raw reply	[flat|nested] 29+ messages in thread

* RE: [PATCH 02/10] drm/i915/hdcp: deduplicate and refactor HDCP GSC ops initialization
  2025-04-24 20:01 ` [PATCH 02/10] drm/i915/hdcp: deduplicate and refactor HDCP GSC ops initialization Jani Nikula
@ 2025-05-02  3:33   ` Kandpal, Suraj
  0 siblings, 0 replies; 29+ messages in thread
From: Kandpal, Suraj @ 2025-05-02  3:33 UTC (permalink / raw)
  To: Nikula, Jani, intel-gfx@lists.freedesktop.org,
	intel-xe@lists.freedesktop.org



> -----Original Message-----
> From: Nikula, Jani <jani.nikula@intel.com>
> Sent: Friday, April 25, 2025 1:32 AM
> To: intel-gfx@lists.freedesktop.org; intel-xe@lists.freedesktop.org
> Cc: Nikula, Jani <jani.nikula@intel.com>; Kandpal, Suraj
> <suraj.kandpal@intel.com>
> Subject: [PATCH 02/10] drm/i915/hdcp: deduplicate and refactor HDCP GSC ops
> initialization
> 
> The gsc_hdcp_ops is duplicated and initialized exactly the same way in two
> different places (for i915 and xe), and requires forward declarations for all the
> hooks. Deduplicate, and make the functions static.
> 
> There are slight differences in the i915 and xe implementations of
> intel_hdcp_gsc_init() and intel_hdcp_gsc_fini(). Take the best of both, and
> improve.
> 
> We need to expose intel_hdcp_gsc_hdcp2_init() and
> intel_hdcp_gsc_free_message() for this, and create the latter for xe.
> 
> Cc: Suraj Kandpal <suraj.kandpal@intel.com>
> Signed-off-by: Jani Nikula <jani.nikula@intel.com>

LGTM,
Reviewed-by: Suraj Kandpal <suraj.kandpal@intel.com>

> ---
>  drivers/gpu/drm/i915/display/intel_hdcp.c     |  1 +
>  drivers/gpu/drm/i915/display/intel_hdcp_gsc.c | 46 +---------
> drivers/gpu/drm/i915/display/intel_hdcp_gsc.h |  5 +-
> .../drm/i915/display/intel_hdcp_gsc_message.c | 84 +++++++++++++++----
> .../drm/i915/display/intel_hdcp_gsc_message.h | 58 +------------
>  drivers/gpu/drm/xe/display/xe_hdcp_gsc.c      | 50 +----------
>  6 files changed, 79 insertions(+), 165 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/display/intel_hdcp.c
> b/drivers/gpu/drm/i915/display/intel_hdcp.c
> index 411f17655f89..4857685c4020 100644
> --- a/drivers/gpu/drm/i915/display/intel_hdcp.c
> +++ b/drivers/gpu/drm/i915/display/intel_hdcp.c
> @@ -27,6 +27,7 @@
>  #include "intel_dp_mst.h"
>  #include "intel_hdcp.h"
>  #include "intel_hdcp_gsc.h"
> +#include "intel_hdcp_gsc_message.h"
>  #include "intel_hdcp_regs.h"
>  #include "intel_hdcp_shim.h"
>  #include "intel_pcode.h"
> diff --git a/drivers/gpu/drm/i915/display/intel_hdcp_gsc.c
> b/drivers/gpu/drm/i915/display/intel_hdcp_gsc.c
> index 55965844d829..92a3ad2166f6 100644
> --- a/drivers/gpu/drm/i915/display/intel_hdcp_gsc.c
> +++ b/drivers/gpu/drm/i915/display/intel_hdcp_gsc.c
> @@ -11,7 +11,6 @@
>  #include "i915_drv.h"
>  #include "i915_utils.h"
>  #include "intel_hdcp_gsc.h"
> -#include "intel_hdcp_gsc_message.h"
> 
>  struct intel_hdcp_gsc_message {
>  	struct i915_vma *vma;
> @@ -91,23 +90,7 @@ static int intel_hdcp_gsc_initialize_message(struct
> drm_i915_private *i915,
>  	return err;
>  }
> 
> -static const struct i915_hdcp_ops gsc_hdcp_ops = {
> -	.initiate_hdcp2_session = intel_hdcp_gsc_initiate_session,
> -	.verify_receiver_cert_prepare_km =
> -
> 	intel_hdcp_gsc_verify_receiver_cert_prepare_km,
> -	.verify_hprime = intel_hdcp_gsc_verify_hprime,
> -	.store_pairing_info = intel_hdcp_gsc_store_pairing_info,
> -	.initiate_locality_check = intel_hdcp_gsc_initiate_locality_check,
> -	.verify_lprime = intel_hdcp_gsc_verify_lprime,
> -	.get_session_key = intel_hdcp_gsc_get_session_key,
> -	.repeater_check_flow_prepare_ack =
> -
> 	intel_hdcp_gsc_repeater_check_flow_prepare_ack,
> -	.verify_mprime = intel_hdcp_gsc_verify_mprime,
> -	.enable_hdcp_authentication =
> intel_hdcp_gsc_enable_authentication,
> -	.close_hdcp_session = intel_hdcp_gsc_close_session,
> -};
> -
> -static int intel_hdcp_gsc_hdcp2_init(struct intel_display *display)
> +int intel_hdcp_gsc_hdcp2_init(struct intel_display *display)
>  {
>  	struct drm_i915_private *i915 = to_i915(display->drm);
>  	struct intel_hdcp_gsc_message *hdcp_message; @@ -131,7 +114,7
> @@ static int intel_hdcp_gsc_hdcp2_init(struct intel_display *display)
>  	return ret;
>  }
> 
> -static void intel_hdcp_gsc_free_message(struct intel_display *display)
> +void intel_hdcp_gsc_free_message(struct intel_display *display)
>  {
>  	struct intel_hdcp_gsc_message *hdcp_message =
>  					display->hdcp.hdcp_message;
> @@ -142,31 +125,6 @@ static void intel_hdcp_gsc_free_message(struct
> intel_display *display)
>  	kfree(hdcp_message);
>  }
> 
> -int intel_hdcp_gsc_init(struct intel_display *display) -{
> -	struct i915_hdcp_arbiter *data;
> -	int ret;
> -
> -	data = kzalloc(sizeof(struct i915_hdcp_arbiter), GFP_KERNEL);
> -	if (!data)
> -		return -ENOMEM;
> -
> -	mutex_lock(&display->hdcp.hdcp_mutex);
> -	display->hdcp.arbiter = data;
> -	display->hdcp.arbiter->hdcp_dev = display->drm->dev;
> -	display->hdcp.arbiter->ops = &gsc_hdcp_ops;
> -	ret = intel_hdcp_gsc_hdcp2_init(display);
> -	mutex_unlock(&display->hdcp.hdcp_mutex);
> -
> -	return ret;
> -}
> -
> -void intel_hdcp_gsc_fini(struct intel_display *display) -{
> -	intel_hdcp_gsc_free_message(display);
> -	kfree(display->hdcp.arbiter);
> -}
> -
>  static int intel_gsc_send_sync(struct drm_i915_private *i915,
>  			       struct intel_gsc_mtl_header *header_in,
>  			       struct intel_gsc_mtl_header *header_out, diff --git
> a/drivers/gpu/drm/i915/display/intel_hdcp_gsc.h
> b/drivers/gpu/drm/i915/display/intel_hdcp_gsc.h
> index 5695a5e4f609..ad41e7e80095 100644
> --- a/drivers/gpu/drm/i915/display/intel_hdcp_gsc.h
> +++ b/drivers/gpu/drm/i915/display/intel_hdcp_gsc.h
> @@ -17,8 +17,9 @@ bool intel_hdcp_gsc_cs_required(struct intel_display
> *display);  ssize_t intel_hdcp_gsc_msg_send(struct drm_i915_private *i915, u8
> *msg_in,
>  				size_t msg_in_len, u8 *msg_out,
>  				size_t msg_out_len);
> -int intel_hdcp_gsc_init(struct intel_display *display); -void
> intel_hdcp_gsc_fini(struct intel_display *display);  bool
> intel_hdcp_gsc_check_status(struct intel_display *display);
> 
> +int intel_hdcp_gsc_hdcp2_init(struct intel_display *display); void
> +intel_hdcp_gsc_free_message(struct intel_display *display);
> +
>  #endif /* __INTEL_HDCP_GCS_H__ */
> diff --git a/drivers/gpu/drm/i915/display/intel_hdcp_gsc_message.c
> b/drivers/gpu/drm/i915/display/intel_hdcp_gsc_message.c
> index d4620b54beba..8e2aafff71d5 100644
> --- a/drivers/gpu/drm/i915/display/intel_hdcp_gsc_message.c
> +++ b/drivers/gpu/drm/i915/display/intel_hdcp_gsc_message.c
> @@ -11,7 +11,7 @@
>  #include "intel_hdcp_gsc.h"
>  #include "intel_hdcp_gsc_message.h"
> 
> -int
> +static int
>  intel_hdcp_gsc_initiate_session(struct device *dev, struct hdcp_port_data
> *data,
>  				struct hdcp2_ake_init *ake_data)
>  {
> @@ -65,7 +65,7 @@ intel_hdcp_gsc_initiate_session(struct device *dev, struct
> hdcp_port_data *data,
>  	return 0;
>  }
> 
> -int
> +static int
>  intel_hdcp_gsc_verify_receiver_cert_prepare_km(struct device *dev,
>  					       struct hdcp_port_data *data,
>  					       struct hdcp2_ake_send_cert
> *rx_cert, @@ -135,7 +135,7 @@
> intel_hdcp_gsc_verify_receiver_cert_prepare_km(struct device *dev,
>  	return 0;
>  }
> 
> -int
> +static int
>  intel_hdcp_gsc_verify_hprime(struct device *dev, struct hdcp_port_data
> *data,
>  			     struct hdcp2_ake_send_hprime *rx_hprime)  { @@ -
> 185,7 +185,7 @@ intel_hdcp_gsc_verify_hprime(struct device *dev, struct
> hdcp_port_data *data,
>  	return 0;
>  }
> 
> -int
> +static int
>  intel_hdcp_gsc_store_pairing_info(struct device *dev, struct hdcp_port_data
> *data,
>  				  struct hdcp2_ake_send_pairing_info
> *pairing_info)  { @@ -237,7 +237,7 @@
> intel_hdcp_gsc_store_pairing_info(struct device *dev, struct hdcp_port_data
> *dat
>  	return 0;
>  }
> 
> -int
> +static int
>  intel_hdcp_gsc_initiate_locality_check(struct device *dev,
>  				       struct hdcp_port_data *data,
>  				       struct hdcp2_lc_init *lc_init_data) @@ -
> 286,7 +286,7 @@ intel_hdcp_gsc_initiate_locality_check(struct device *dev,
>  	return 0;
>  }
> 
> -int
> +static int
>  intel_hdcp_gsc_verify_lprime(struct device *dev, struct hdcp_port_data *data,
>  			     struct hdcp2_lc_send_lprime *rx_lprime)  { @@ -
> 338,9 +338,10 @@ intel_hdcp_gsc_verify_lprime(struct device *dev, struct
> hdcp_port_data *data,
>  	return 0;
>  }
> 
> -int intel_hdcp_gsc_get_session_key(struct device *dev,
> -				   struct hdcp_port_data *data,
> -				   struct hdcp2_ske_send_eks *ske_data)
> +static int
> +intel_hdcp_gsc_get_session_key(struct device *dev,
> +			       struct hdcp_port_data *data,
> +			       struct hdcp2_ske_send_eks *ske_data)
>  {
>  	struct wired_cmd_get_session_key_in get_skey_in = {};
>  	struct wired_cmd_get_session_key_out get_skey_out = {}; @@ -388,7
> +389,7 @@ int intel_hdcp_gsc_get_session_key(struct device *dev,
>  	return 0;
>  }
> 
> -int
> +static int
>  intel_hdcp_gsc_repeater_check_flow_prepare_ack(struct device *dev,
>  					       struct hdcp_port_data *data,
>  					       struct
> hdcp2_rep_send_receiverid_list @@ -454,9 +455,10 @@
> intel_hdcp_gsc_repeater_check_flow_prepare_ack(struct device *dev,
>  	return 0;
>  }
> 
> -int intel_hdcp_gsc_verify_mprime(struct device *dev,
> -				 struct hdcp_port_data *data,
> -				 struct hdcp2_rep_stream_ready
> *stream_ready)
> +static int
> +intel_hdcp_gsc_verify_mprime(struct device *dev,
> +			     struct hdcp_port_data *data,
> +			     struct hdcp2_rep_stream_ready *stream_ready)
>  {
>  	struct wired_cmd_repeater_auth_stream_req_in *verify_mprime_in;
>  	struct wired_cmd_repeater_auth_stream_req_out verify_mprime_out
> = {}; @@ -519,8 +521,8 @@ int intel_hdcp_gsc_verify_mprime(struct device
> *dev,
>  	return 0;
>  }
> 
> -int intel_hdcp_gsc_enable_authentication(struct device *dev,
> -					 struct hdcp_port_data *data)
> +static int intel_hdcp_gsc_enable_authentication(struct device *dev,
> +						struct hdcp_port_data *data)
>  {
>  	struct wired_cmd_enable_auth_in enable_auth_in = {};
>  	struct wired_cmd_enable_auth_out enable_auth_out = {}; @@ -566,7
> +568,7 @@ int intel_hdcp_gsc_enable_authentication(struct device *dev,
>  	return 0;
>  }
> 
> -int
> +static int
>  intel_hdcp_gsc_close_session(struct device *dev, struct hdcp_port_data
> *data)  {
>  	struct wired_cmd_close_session_in session_close_in = {}; @@ -612,3
> +614,53 @@ intel_hdcp_gsc_close_session(struct device *dev, struct
> hdcp_port_data *data)
> 
>  	return 0;
>  }
> +
> +static const struct i915_hdcp_ops gsc_hdcp_ops = {
> +	.initiate_hdcp2_session = intel_hdcp_gsc_initiate_session,
> +	.verify_receiver_cert_prepare_km =
> +
> 	intel_hdcp_gsc_verify_receiver_cert_prepare_km,
> +	.verify_hprime = intel_hdcp_gsc_verify_hprime,
> +	.store_pairing_info = intel_hdcp_gsc_store_pairing_info,
> +	.initiate_locality_check = intel_hdcp_gsc_initiate_locality_check,
> +	.verify_lprime = intel_hdcp_gsc_verify_lprime,
> +	.get_session_key = intel_hdcp_gsc_get_session_key,
> +	.repeater_check_flow_prepare_ack =
> +
> 	intel_hdcp_gsc_repeater_check_flow_prepare_ack,
> +	.verify_mprime = intel_hdcp_gsc_verify_mprime,
> +	.enable_hdcp_authentication =
> intel_hdcp_gsc_enable_authentication,
> +	.close_hdcp_session = intel_hdcp_gsc_close_session, };
> +
> +int intel_hdcp_gsc_init(struct intel_display *display) {
> +	struct i915_hdcp_arbiter *arbiter;
> +	int ret;
> +
> +	arbiter = kzalloc(sizeof(*arbiter), GFP_KERNEL);
> +	if (!arbiter)
> +		return -ENOMEM;
> +
> +	mutex_lock(&display->hdcp.hdcp_mutex);
> +
> +	ret = intel_hdcp_gsc_hdcp2_init(display);
> +	if (ret) {
> +		kfree(arbiter);
> +		goto out;
> +	}
> +
> +	display->hdcp.arbiter = arbiter;
> +	display->hdcp.arbiter->hdcp_dev = display->drm->dev;
> +	display->hdcp.arbiter->ops = &gsc_hdcp_ops;
> +
> +out:
> +	mutex_unlock(&display->hdcp.hdcp_mutex);
> +
> +	return ret;
> +}
> +
> +void intel_hdcp_gsc_fini(struct intel_display *display) {
> +	intel_hdcp_gsc_free_message(display);
> +	kfree(display->hdcp.arbiter);
> +	display->hdcp.arbiter = NULL;
> +}
> diff --git a/drivers/gpu/drm/i915/display/intel_hdcp_gsc_message.h
> b/drivers/gpu/drm/i915/display/intel_hdcp_gsc_message.h
> index 1af2f7c745fd..9f54157a4a3e 100644
> --- a/drivers/gpu/drm/i915/display/intel_hdcp_gsc_message.h
> +++ b/drivers/gpu/drm/i915/display/intel_hdcp_gsc_message.h
> @@ -6,63 +6,9 @@
>  #ifndef __INTEL_HDCP_GSC_MESSAGE_H__
>  #define __INTEL_HDCP_GSC_MESSAGE_H__
> 
> -#include <linux/types.h>
> -
> -struct device;
> -struct hdcp_port_data;
> -struct hdcp2_ake_init;
> -struct hdcp2_ake_send_cert;
> -struct hdcp2_ake_no_stored_km;
> -struct hdcp2_ake_send_hprime;
> -struct hdcp2_ake_send_pairing_info;
> -struct hdcp2_lc_init;
> -struct hdcp2_lc_send_lprime;
> -struct hdcp2_ske_send_eks;
> -struct hdcp2_rep_send_receiverid_list;
> -struct hdcp2_rep_send_ack;
> -struct hdcp2_rep_stream_ready;
>  struct intel_display;
> 
> -int
> -intel_hdcp_gsc_initiate_session(struct device *dev, struct hdcp_port_data
> *data,
> -				struct hdcp2_ake_init *ake_data);
> -int
> -intel_hdcp_gsc_verify_receiver_cert_prepare_km(struct device *dev,
> -					       struct hdcp_port_data *data,
> -					       struct hdcp2_ake_send_cert
> *rx_cert,
> -					       bool *km_stored,
> -					       struct hdcp2_ake_no_stored_km
> -					       *ek_pub_km,
> -					       size_t *msg_sz);
> -int
> -intel_hdcp_gsc_verify_hprime(struct device *dev, struct hdcp_port_data
> *data,
> -			     struct hdcp2_ake_send_hprime *rx_hprime);
> -int
> -intel_hdcp_gsc_store_pairing_info(struct device *dev, struct hdcp_port_data
> *data,
> -				  struct hdcp2_ake_send_pairing_info
> *pairing_info);
> -int
> -intel_hdcp_gsc_initiate_locality_check(struct device *dev,
> -				       struct hdcp_port_data *data,
> -				       struct hdcp2_lc_init *lc_init_data);
> -int
> -intel_hdcp_gsc_verify_lprime(struct device *dev, struct hdcp_port_data
> *data,
> -			     struct hdcp2_lc_send_lprime *rx_lprime);
> -int intel_hdcp_gsc_get_session_key(struct device *dev,
> -				   struct hdcp_port_data *data,
> -				   struct hdcp2_ske_send_eks *ske_data);
> -int
> -intel_hdcp_gsc_repeater_check_flow_prepare_ack(struct device *dev,
> -					       struct hdcp_port_data *data,
> -					       struct
> hdcp2_rep_send_receiverid_list
> -					       *rep_topology,
> -					       struct hdcp2_rep_send_ack
> -					       *rep_send_ack);
> -int intel_hdcp_gsc_verify_mprime(struct device *dev,
> -				 struct hdcp_port_data *data,
> -				 struct hdcp2_rep_stream_ready
> *stream_ready);
> -int intel_hdcp_gsc_enable_authentication(struct device *dev,
> -					 struct hdcp_port_data *data);
> -int
> -intel_hdcp_gsc_close_session(struct device *dev, struct hdcp_port_data
> *data);
> +int intel_hdcp_gsc_init(struct intel_display *display); void
> +intel_hdcp_gsc_fini(struct intel_display *display);
> 
>  #endif /* __INTEL_HDCP_GSC_MESSAGE_H__ */ diff --git
> a/drivers/gpu/drm/xe/display/xe_hdcp_gsc.c
> b/drivers/gpu/drm/xe/display/xe_hdcp_gsc.c
> index 7c02323e9531..21cfecf077bf 100644
> --- a/drivers/gpu/drm/xe/display/xe_hdcp_gsc.c
> +++ b/drivers/gpu/drm/xe/display/xe_hdcp_gsc.c
> @@ -9,7 +9,6 @@
> 
>  #include "abi/gsc_command_header_abi.h"
>  #include "intel_hdcp_gsc.h"
> -#include "intel_hdcp_gsc_message.h"
>  #include "xe_bo.h"
>  #include "xe_device.h"
>  #include "xe_device_types.h"
> @@ -100,7 +99,7 @@ static int intel_hdcp_gsc_initialize_message(struct
> intel_display *display,
>  	return ret;
>  }
> 
> -static int intel_hdcp_gsc_hdcp2_init(struct intel_display *display)
> +int intel_hdcp_gsc_hdcp2_init(struct intel_display *display)
>  {
>  	struct intel_hdcp_gsc_message *hdcp_message;
>  	int ret;
> @@ -125,58 +124,15 @@ static int intel_hdcp_gsc_hdcp2_init(struct
> intel_display *display)
>  	return ret;
>  }
> 
> -static const struct i915_hdcp_ops gsc_hdcp_ops = {
> -	.initiate_hdcp2_session = intel_hdcp_gsc_initiate_session,
> -	.verify_receiver_cert_prepare_km =
> -
> 	intel_hdcp_gsc_verify_receiver_cert_prepare_km,
> -	.verify_hprime = intel_hdcp_gsc_verify_hprime,
> -	.store_pairing_info = intel_hdcp_gsc_store_pairing_info,
> -	.initiate_locality_check = intel_hdcp_gsc_initiate_locality_check,
> -	.verify_lprime = intel_hdcp_gsc_verify_lprime,
> -	.get_session_key = intel_hdcp_gsc_get_session_key,
> -	.repeater_check_flow_prepare_ack =
> -
> 	intel_hdcp_gsc_repeater_check_flow_prepare_ack,
> -	.verify_mprime = intel_hdcp_gsc_verify_mprime,
> -	.enable_hdcp_authentication =
> intel_hdcp_gsc_enable_authentication,
> -	.close_hdcp_session = intel_hdcp_gsc_close_session,
> -};
> -
> -int intel_hdcp_gsc_init(struct intel_display *display) -{
> -	struct i915_hdcp_arbiter *data;
> -	int ret;
> -
> -	data = kzalloc(sizeof(*data), GFP_KERNEL);
> -	if (!data)
> -		return -ENOMEM;
> -
> -	mutex_lock(&display->hdcp.hdcp_mutex);
> -	display->hdcp.arbiter = data;
> -	display->hdcp.arbiter->hdcp_dev = display->drm->dev;
> -	display->hdcp.arbiter->ops = &gsc_hdcp_ops;
> -	ret = intel_hdcp_gsc_hdcp2_init(display);
> -	if (ret)
> -		kfree(data);
> -
> -	mutex_unlock(&display->hdcp.hdcp_mutex);
> -
> -	return ret;
> -}
> -
> -void intel_hdcp_gsc_fini(struct intel_display *display)
> +void intel_hdcp_gsc_free_message(struct intel_display *display)
>  {
> -	struct intel_hdcp_gsc_message *hdcp_message =
> -					display->hdcp.hdcp_message;
> -	struct i915_hdcp_arbiter *arb = display->hdcp.arbiter;
> +	struct intel_hdcp_gsc_message *hdcp_message =
> +display->hdcp.hdcp_message;
> 
>  	if (hdcp_message) {
>  		xe_bo_unpin_map_no_vm(hdcp_message->hdcp_bo);
>  		kfree(hdcp_message);
>  		display->hdcp.hdcp_message = NULL;
>  	}
> -
> -	kfree(arb);
> -	display->hdcp.arbiter = NULL;
>  }
> 
>  static int xe_gsc_send_sync(struct xe_device *xe,
> --
> 2.39.5


^ permalink raw reply	[flat|nested] 29+ messages in thread

* RE: [PATCH 03/10] drm/i915/hdcp: split HDCP GSC message alloc/save responsibilities
  2025-04-24 20:01 ` [PATCH 03/10] drm/i915/hdcp: split HDCP GSC message alloc/save responsibilities Jani Nikula
@ 2025-05-02  3:36   ` Kandpal, Suraj
  0 siblings, 0 replies; 29+ messages in thread
From: Kandpal, Suraj @ 2025-05-02  3:36 UTC (permalink / raw)
  To: Nikula, Jani, intel-gfx@lists.freedesktop.org,
	intel-xe@lists.freedesktop.org



> -----Original Message-----
> From: Nikula, Jani <jani.nikula@intel.com>
> Sent: Friday, April 25, 2025 1:32 AM
> To: intel-gfx@lists.freedesktop.org; intel-xe@lists.freedesktop.org
> Cc: Nikula, Jani <jani.nikula@intel.com>; Kandpal, Suraj
> <suraj.kandpal@intel.com>
> Subject: [PATCH 03/10] drm/i915/hdcp: split HDCP GSC message alloc/save
> responsibilities
> 
> Allocate and initialize the HDCP GSC message in
> intel_hdcp_gsc_hdcp2_init() as before, but store the pointer to
> display->hdcp.hdcp_message in the caller. Similarly, pass in the pointer
> to intel_hdcp_gsc_free_message().
> 
> Cc: Suraj Kandpal <suraj.kandpal@intel.com>
> Signed-off-by: Jani Nikula <jani.nikula@intel.com>

LGTM,
Reviewed-by: Suraj Kandpal <suraj.kandpal@intel.com>

> ---
>  drivers/gpu/drm/i915/display/intel_hdcp_gsc.c | 22 +++++++++----------
> drivers/gpu/drm/i915/display/intel_hdcp_gsc.h |  4 ++--
> .../drm/i915/display/intel_hdcp_gsc_message.c | 12 ++++++----
>  drivers/gpu/drm/xe/display/xe_hdcp_gsc.c      | 22 ++++++++-----------
>  4 files changed, 29 insertions(+), 31 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/display/intel_hdcp_gsc.c
> b/drivers/gpu/drm/i915/display/intel_hdcp_gsc.c
> index 92a3ad2166f6..68d912dbd658 100644
> --- a/drivers/gpu/drm/i915/display/intel_hdcp_gsc.c
> +++ b/drivers/gpu/drm/i915/display/intel_hdcp_gsc.c
> @@ -90,37 +90,35 @@ static int intel_hdcp_gsc_initialize_message(struct
> drm_i915_private *i915,
>  	return err;
>  }
> 
> -int intel_hdcp_gsc_hdcp2_init(struct intel_display *display)
> +struct intel_hdcp_gsc_message *intel_hdcp_gsc_hdcp2_init(struct
> +intel_display *display)
>  {
>  	struct drm_i915_private *i915 = to_i915(display->drm);
>  	struct intel_hdcp_gsc_message *hdcp_message;
>  	int ret;
> 
>  	hdcp_message = kzalloc(sizeof(*hdcp_message), GFP_KERNEL);
> -
>  	if (!hdcp_message)
> -		return -ENOMEM;
> +		return ERR_PTR(-ENOMEM);
> 
>  	/*
>  	 * NOTE: No need to lock the comp mutex here as it is already
>  	 * going to be taken before this function called
>  	 */
> -	display->hdcp.hdcp_message = hdcp_message;
>  	ret = intel_hdcp_gsc_initialize_message(i915, hdcp_message);
> -
> -	if (ret)
> +	if (ret) {
>  		drm_err(display->drm, "Could not initialize hdcp_message\n");
> +		kfree(hdcp_message);
> +		hdcp_message = ERR_PTR(ret);
> +	}
> 
> -	return ret;
> +	return hdcp_message;
>  }
> 
> -void intel_hdcp_gsc_free_message(struct intel_display *display)
> +void intel_hdcp_gsc_free_message(struct intel_hdcp_gsc_message
> +*hdcp_message)
>  {
> -	struct intel_hdcp_gsc_message *hdcp_message =
> -					display->hdcp.hdcp_message;
> +	if (!hdcp_message)
> +		return;
> 
> -	hdcp_message->hdcp_cmd_in = NULL;
> -	hdcp_message->hdcp_cmd_out = NULL;
>  	i915_vma_unpin_and_release(&hdcp_message->vma,
> I915_VMA_RELEASE_MAP);
>  	kfree(hdcp_message);
>  }
> diff --git a/drivers/gpu/drm/i915/display/intel_hdcp_gsc.h
> b/drivers/gpu/drm/i915/display/intel_hdcp_gsc.h
> index ad41e7e80095..f3362720d742 100644
> --- a/drivers/gpu/drm/i915/display/intel_hdcp_gsc.h
> +++ b/drivers/gpu/drm/i915/display/intel_hdcp_gsc.h
> @@ -19,7 +19,7 @@ ssize_t intel_hdcp_gsc_msg_send(struct
> drm_i915_private *i915, u8 *msg_in,
>  				size_t msg_out_len);
>  bool intel_hdcp_gsc_check_status(struct intel_display *display);
> 
> -int intel_hdcp_gsc_hdcp2_init(struct intel_display *display); -void
> intel_hdcp_gsc_free_message(struct intel_display *display);
> +struct intel_hdcp_gsc_message *intel_hdcp_gsc_hdcp2_init(struct
> +intel_display *display); void intel_hdcp_gsc_free_message(struct
> +intel_hdcp_gsc_message *hdcp_message);
> 
>  #endif /* __INTEL_HDCP_GCS_H__ */
> diff --git a/drivers/gpu/drm/i915/display/intel_hdcp_gsc_message.c
> b/drivers/gpu/drm/i915/display/intel_hdcp_gsc_message.c
> index 8e2aafff71d5..11aa6772f272 100644
> --- a/drivers/gpu/drm/i915/display/intel_hdcp_gsc_message.c
> +++ b/drivers/gpu/drm/i915/display/intel_hdcp_gsc_message.c
> @@ -633,8 +633,9 @@ static const struct i915_hdcp_ops gsc_hdcp_ops = {
> 
>  int intel_hdcp_gsc_init(struct intel_display *display)  {
> +	struct intel_hdcp_gsc_message *hdcp_message;
>  	struct i915_hdcp_arbiter *arbiter;
> -	int ret;
> +	int ret = 0;
> 
>  	arbiter = kzalloc(sizeof(*arbiter), GFP_KERNEL);
>  	if (!arbiter)
> @@ -642,8 +643,9 @@ int intel_hdcp_gsc_init(struct intel_display *display)
> 
>  	mutex_lock(&display->hdcp.hdcp_mutex);
> 
> -	ret = intel_hdcp_gsc_hdcp2_init(display);
> -	if (ret) {
> +	hdcp_message = intel_hdcp_gsc_hdcp2_init(display);
> +	if (IS_ERR(hdcp_message)) {
> +		ret = PTR_ERR(hdcp_message);
>  		kfree(arbiter);
>  		goto out;
>  	}
> @@ -651,6 +653,7 @@ int intel_hdcp_gsc_init(struct intel_display *display)
>  	display->hdcp.arbiter = arbiter;
>  	display->hdcp.arbiter->hdcp_dev = display->drm->dev;
>  	display->hdcp.arbiter->ops = &gsc_hdcp_ops;
> +	display->hdcp.hdcp_message = hdcp_message;
> 
>  out:
>  	mutex_unlock(&display->hdcp.hdcp_mutex);
> @@ -660,7 +663,8 @@ int intel_hdcp_gsc_init(struct intel_display *display)
> 
>  void intel_hdcp_gsc_fini(struct intel_display *display)  {
> -	intel_hdcp_gsc_free_message(display);
> +	intel_hdcp_gsc_free_message(display->hdcp.hdcp_message);
> +	display->hdcp.hdcp_message = NULL;
>  	kfree(display->hdcp.arbiter);
>  	display->hdcp.arbiter = NULL;
>  }
> diff --git a/drivers/gpu/drm/xe/display/xe_hdcp_gsc.c
> b/drivers/gpu/drm/xe/display/xe_hdcp_gsc.c
> index 21cfecf077bf..d15565bf2f9f 100644
> --- a/drivers/gpu/drm/xe/display/xe_hdcp_gsc.c
> +++ b/drivers/gpu/drm/xe/display/xe_hdcp_gsc.c
> @@ -99,15 +99,14 @@ static int intel_hdcp_gsc_initialize_message(struct
> intel_display *display,
>  	return ret;
>  }
> 
> -int intel_hdcp_gsc_hdcp2_init(struct intel_display *display)
> +struct intel_hdcp_gsc_message *intel_hdcp_gsc_hdcp2_init(struct
> +intel_display *display)
>  {
>  	struct intel_hdcp_gsc_message *hdcp_message;
>  	int ret;
> 
>  	hdcp_message = kzalloc(sizeof(*hdcp_message), GFP_KERNEL);
> -
>  	if (!hdcp_message)
> -		return -ENOMEM;
> +		return ERR_PTR(-ENOMEM);
> 
>  	/*
>  	 * NOTE: No need to lock the comp mutex here as it is already @@ -
> 117,22 +116,19 @@ int intel_hdcp_gsc_hdcp2_init(struct intel_display *display)
>  	if (ret) {
>  		drm_err(display->drm, "Could not initialize hdcp_message\n");
>  		kfree(hdcp_message);
> -		return ret;
> +		hdcp_message = ERR_PTR(ret);
>  	}
> 
> -	display->hdcp.hdcp_message = hdcp_message;
> -	return ret;
> +	return hdcp_message;
>  }
> 
> -void intel_hdcp_gsc_free_message(struct intel_display *display)
> +void intel_hdcp_gsc_free_message(struct intel_hdcp_gsc_message
> +*hdcp_message)
>  {
> -	struct intel_hdcp_gsc_message *hdcp_message = display-
> >hdcp.hdcp_message;
> +	if (!hdcp_message)
> +		return;
> 
> -	if (hdcp_message) {
> -		xe_bo_unpin_map_no_vm(hdcp_message->hdcp_bo);
> -		kfree(hdcp_message);
> -		display->hdcp.hdcp_message = NULL;
> -	}
> +	xe_bo_unpin_map_no_vm(hdcp_message->hdcp_bo);
> +	kfree(hdcp_message);
>  }
> 
>  static int xe_gsc_send_sync(struct xe_device *xe,
> --
> 2.39.5


^ permalink raw reply	[flat|nested] 29+ messages in thread

* RE: [PATCH 04/10] drm/i915/hdcp: rename struct intel_hdcp_gsc_message to intel_hdcp_gsc_context
  2025-04-30  9:13     ` Jani Nikula
@ 2025-05-02  3:37       ` Kandpal, Suraj
  0 siblings, 0 replies; 29+ messages in thread
From: Kandpal, Suraj @ 2025-05-02  3:37 UTC (permalink / raw)
  To: Nikula, Jani, intel-gfx@lists.freedesktop.org,
	intel-xe@lists.freedesktop.org
  Cc: Nautiyal, Ankit K



> -----Original Message-----
> From: Nikula, Jani <jani.nikula@intel.com>
> Sent: Wednesday, April 30, 2025 2:43 PM
> To: Kandpal, Suraj <suraj.kandpal@intel.com>; intel-gfx@lists.freedesktop.org;
> intel-xe@lists.freedesktop.org
> Cc: Nautiyal, Ankit K <ankit.k.nautiyal@intel.com>
> Subject: RE: [PATCH 04/10] drm/i915/hdcp: rename struct
> intel_hdcp_gsc_message to intel_hdcp_gsc_context
> 
> On Wed, 30 Apr 2025, "Kandpal, Suraj" <suraj.kandpal@intel.com> wrote:
> >> -----Original Message-----
> >> From: Nikula, Jani <jani.nikula@intel.com>
> >> Sent: Friday, April 25, 2025 1:32 AM
> >> To: intel-gfx@lists.freedesktop.org; intel-xe@lists.freedesktop.org
> >> Cc: Nikula, Jani <jani.nikula@intel.com>; Kandpal, Suraj
> >> <suraj.kandpal@intel.com>
> >> Subject: [PATCH 04/10] drm/i915/hdcp: rename struct
> >> intel_hdcp_gsc_message to intel_hdcp_gsc_context
> >>
> >> It's really about the context more than about the message.
> >>
> >> Cc: Suraj Kandpal <suraj.kandpal@intel.com>
> >> Signed-off-by: Jani Nikula <jani.nikula@intel.com>
> >> ---
> >>  .../gpu/drm/i915/display/intel_display_core.h |  2 +-
> >> drivers/gpu/drm/i915/display/intel_hdcp_gsc.c | 52 ++++++++---------
> >> drivers/gpu/drm/i915/display/intel_hdcp_gsc.h |  6 +-
> >> .../drm/i915/display/intel_hdcp_gsc_message.c | 14 ++---
> >>  drivers/gpu/drm/xe/display/xe_hdcp_gsc.c      | 58 +++++++++----------
> >>  5 files changed, 66 insertions(+), 66 deletions(-)
> >>
> >> diff --git a/drivers/gpu/drm/i915/display/intel_display_core.h
> >> b/drivers/gpu/drm/i915/display/intel_display_core.h
> >> index 613af57abd1b..dc834cef75c7 100644
> >> --- a/drivers/gpu/drm/i915/display/intel_display_core.h
> >> +++ b/drivers/gpu/drm/i915/display/intel_display_core.h
> >> @@ -430,7 +430,7 @@ struct intel_display {
> >>  		 * reused when sending message to gsc cs.
> >>  		 * this is only populated post Meteorlake
> >>  		 */
> >> -		struct intel_hdcp_gsc_message *hdcp_message;
> >> +		struct intel_hdcp_gsc_context *gsc_context;
> >>  		/* Mutex to protect the above hdcp related values. */
> >>  		struct mutex hdcp_mutex;
> >>  	} hdcp;
> >> diff --git a/drivers/gpu/drm/i915/display/intel_hdcp_gsc.c
> >> b/drivers/gpu/drm/i915/display/intel_hdcp_gsc.c
> >> index 68d912dbd658..3e1dc2f7310c 100644
> >> --- a/drivers/gpu/drm/i915/display/intel_hdcp_gsc.c
> >> +++ b/drivers/gpu/drm/i915/display/intel_hdcp_gsc.c
> >> @@ -12,7 +12,7 @@
> >>  #include "i915_utils.h"
> >>  #include "intel_hdcp_gsc.h"
> >>
> >> -struct intel_hdcp_gsc_message {
> >> +struct intel_hdcp_gsc_context {
> >>  	struct i915_vma *vma;
> >>  	void *hdcp_cmd_in;
> >>  	void *hdcp_cmd_out;
> >
> > I feel this should be message_context if we are renaming it since the
> > data inside it will contain Hdcp message specific data once filled out
> > and the addresses where this message is store so If we really have to rename
> it then message_context over just context.
> > That way we also leave the hdcp_message variable name alone not having to
> rename it at every use.
> 
> My point is that it's not a *message*. It's a context that's shared and used for
> all messages. I think "hdcp_message" as a struct member and as a variable
> name is misleading, and I'd like to rename them anyway. It's not even passed
> on to any message sending functions (yet).
> 
> See struct i2c_msg for what an actual message struct looks like. You fill it in and
> and pass on to i2c_transfer() to send. struct intel_hdcp_gsc_message is nothing
> like that.
> 
> I just think intel_hdcp_gsc_message_context is unwieldy, so I opted for the
> shorter intel_hdcp_gsc_context. Moreover, in patch 6/10 I store more info to it
> too.
> 
> I can rename if you like, but to what? Thoughts?

None that come to my mind but this seems okay then

Reviewed-by: Suraj Kandpal <suraj.kandpal@intel.com>

> 
> 
> BR,
> Jani.
> 
> 
> 
> >
> > Regards,
> > Suraj Kandpal
> >
> >> @@ -40,7 +40,7 @@ bool intel_hdcp_gsc_check_status(struct
> >> intel_display
> >> *display)
> >>
> >>  /*This function helps allocate memory for the command that we will
> >> send to gsc cs */  static int
> >> intel_hdcp_gsc_initialize_message(struct drm_i915_private *i915,
> >> -					     struct intel_hdcp_gsc_message
> >> *hdcp_message)
> >> +					     struct intel_hdcp_gsc_context
> >> *gsc_context)
> >>  {
> >>  	struct intel_gt *gt = i915->media_gt;
> >>  	struct drm_i915_gem_object *obj = NULL; @@ -77,9 +77,9 @@ static
> >> int intel_hdcp_gsc_initialize_message(struct drm_i915_private *i915,
> >>
> >>  	memset(cmd_in, 0, obj->base.size);
> >>
> >> -	hdcp_message->hdcp_cmd_in = cmd_in;
> >> -	hdcp_message->hdcp_cmd_out = cmd_out;
> >> -	hdcp_message->vma = vma;
> >> +	gsc_context->hdcp_cmd_in = cmd_in;
> >> +	gsc_context->hdcp_cmd_out = cmd_out;
> >> +	gsc_context->vma = vma;
> >>
> >>  	return 0;
> >>
> >> @@ -90,37 +90,37 @@ static int
> >> intel_hdcp_gsc_initialize_message(struct
> >> drm_i915_private *i915,
> >>  	return err;
> >>  }
> >>
> >> -struct intel_hdcp_gsc_message *intel_hdcp_gsc_hdcp2_init(struct
> >> intel_display
> >> *display)
> >> +struct intel_hdcp_gsc_context *intel_hdcp_gsc_hdcp2_init(struct
> >> +intel_display *display)
> >>  {
> >>  	struct drm_i915_private *i915 = to_i915(display->drm);
> >> -	struct intel_hdcp_gsc_message *hdcp_message;
> >> +	struct intel_hdcp_gsc_context *gsc_context;
> >>  	int ret;
> >>
> >> -	hdcp_message = kzalloc(sizeof(*hdcp_message), GFP_KERNEL);
> >> -	if (!hdcp_message)
> >> +	gsc_context = kzalloc(sizeof(*gsc_context), GFP_KERNEL);
> >> +	if (!gsc_context)
> >>  		return ERR_PTR(-ENOMEM);
> >>
> >>  	/*
> >>  	 * NOTE: No need to lock the comp mutex here as it is already
> >>  	 * going to be taken before this function called
> >>  	 */
> >> -	ret = intel_hdcp_gsc_initialize_message(i915, hdcp_message);
> >> +	ret = intel_hdcp_gsc_initialize_message(i915, gsc_context);
> >>  	if (ret) {
> >> -		drm_err(display->drm, "Could not initialize hdcp_message\n");
> >> -		kfree(hdcp_message);
> >> -		hdcp_message = ERR_PTR(ret);
> >> +		drm_err(display->drm, "Could not initialize gsc_context\n");
> >> +		kfree(gsc_context);
> >> +		gsc_context = ERR_PTR(ret);
> >>  	}
> >>
> >> -	return hdcp_message;
> >> +	return gsc_context;
> >>  }
> >>
> >> -void intel_hdcp_gsc_free_message(struct intel_hdcp_gsc_message
> >> *hdcp_message)
> >> +void intel_hdcp_gsc_free_message(struct intel_hdcp_gsc_context
> >> +*gsc_context)
> >>  {
> >> -	if (!hdcp_message)
> >> +	if (!gsc_context)
> >>  		return;
> >>
> >> -	i915_vma_unpin_and_release(&hdcp_message->vma,
> >> I915_VMA_RELEASE_MAP);
> >> -	kfree(hdcp_message);
> >> +	i915_vma_unpin_and_release(&gsc_context->vma,
> >> I915_VMA_RELEASE_MAP);
> >> +	kfree(gsc_context);
> >>  }
> >>
> >>  static int intel_gsc_send_sync(struct drm_i915_private *i915, @@
> >> -167,7
> >> +167,7 @@ static int intel_gsc_send_sync(struct drm_i915_private
> >> +*i915,
> >>  /*
> >>   * This function can now be used for sending requests and will also handle
> >>   * receipt of reply messages hence no different function of message
> >> retrieval
> >> - * is required. We will initialize intel_hdcp_gsc_message structure
> >> then add
> >> + * is required. We will initialize intel_hdcp_gsc_context structure
> >> + then add
> >>   * gsc cs memory header as stated in specs after which the normal
> >> HDCP payload
> >>   * will follow
> >>   */
> >> @@ -178,7 +178,7 @@ ssize_t intel_hdcp_gsc_msg_send(struct
> >> drm_i915_private *i915, u8 *msg_in,
> >>  	struct intel_gt *gt = i915->media_gt;
> >>  	struct intel_gsc_mtl_header *header_in, *header_out;
> >>  	const size_t max_msg_size = PAGE_SIZE - sizeof(*header_in);
> >> -	struct intel_hdcp_gsc_message *hdcp_message;
> >> +	struct intel_hdcp_gsc_context *gsc_context;
> >>  	u64 addr_in, addr_out, host_session_id;
> >>  	u32 reply_size, msg_size_in, msg_size_out;
> >>  	int ret, tries = 0;
> >> @@ -191,10 +191,10 @@ ssize_t intel_hdcp_gsc_msg_send(struct
> >> drm_i915_private *i915, u8 *msg_in,
> >>
> >>  	msg_size_in = msg_in_len + sizeof(*header_in);
> >>  	msg_size_out = msg_out_len + sizeof(*header_out);
> >> -	hdcp_message = i915->display.hdcp.hdcp_message;
> >> -	header_in = hdcp_message->hdcp_cmd_in;
> >> -	header_out = hdcp_message->hdcp_cmd_out;
> >> -	addr_in = i915_ggtt_offset(hdcp_message->vma);
> >> +	gsc_context = i915->display.hdcp.gsc_context;
> >> +	header_in = gsc_context->hdcp_cmd_in;
> >> +	header_out = gsc_context->hdcp_cmd_out;
> >> +	addr_in = i915_ggtt_offset(gsc_context->vma);
> >>  	addr_out = addr_in + PAGE_SIZE;
> >>
> >>  	memset(header_in, 0, msg_size_in);
> >> @@ -202,7 +202,7 @@ ssize_t intel_hdcp_gsc_msg_send(struct
> >> drm_i915_private *i915, u8 *msg_in,
> >>  	get_random_bytes(&host_session_id, sizeof(u64));
> >>  	intel_gsc_uc_heci_cmd_emit_mtl_header(header_in,
> >> HECI_MEADDRESS_HDCP,
> >>  					      msg_size_in, host_session_id);
> >> -	memcpy(hdcp_message->hdcp_cmd_in + sizeof(*header_in), msg_in,
> >> msg_in_len);
> >> +	memcpy(gsc_context->hdcp_cmd_in + sizeof(*header_in), msg_in,
> >> +msg_in_len);
> >>
> >>  	/*
> >>  	 * Keep sending request in case the pending bit is set no need to
> >> add @@ -236,7 +236,7 @@ ssize_t intel_hdcp_gsc_msg_send(struct
> >> drm_i915_private *i915, u8 *msg_in,
> >>  			    reply_size, (u32)msg_out_len);
> >>  	}
> >>
> >> -	memcpy(msg_out, hdcp_message->hdcp_cmd_out +
> >> sizeof(*header_out), msg_out_len);
> >> +	memcpy(msg_out, gsc_context->hdcp_cmd_out + sizeof(*header_out),
> >> +msg_out_len);
> >>
> >>  err:
> >>  	return ret;
> >> diff --git a/drivers/gpu/drm/i915/display/intel_hdcp_gsc.h
> >> b/drivers/gpu/drm/i915/display/intel_hdcp_gsc.h
> >> index f3362720d742..31080df80097 100644
> >> --- a/drivers/gpu/drm/i915/display/intel_hdcp_gsc.h
> >> +++ b/drivers/gpu/drm/i915/display/intel_hdcp_gsc.h
> >> @@ -11,7 +11,7 @@
> >>
> >>  struct drm_i915_private;
> >>  struct intel_display;
> >> -struct intel_hdcp_gsc_message;
> >> +struct intel_hdcp_gsc_context;
> >>
> >>  bool intel_hdcp_gsc_cs_required(struct intel_display *display);
> >> ssize_t intel_hdcp_gsc_msg_send(struct drm_i915_private *i915, u8
> >> *msg_in, @@ -
> >> 19,7 +19,7 @@ ssize_t intel_hdcp_gsc_msg_send(struct drm_i915_private
> >> *i915, u8 *msg_in,
> >>  				size_t msg_out_len);
> >>  bool intel_hdcp_gsc_check_status(struct intel_display *display);
> >>
> >> -struct intel_hdcp_gsc_message *intel_hdcp_gsc_hdcp2_init(struct
> >> intel_display *display); -void intel_hdcp_gsc_free_message(struct
> >> intel_hdcp_gsc_message *hdcp_message);
> >> +struct intel_hdcp_gsc_context *intel_hdcp_gsc_hdcp2_init(struct
> >> +intel_display *display); void intel_hdcp_gsc_free_message(struct
> >> +intel_hdcp_gsc_context *gsc_context);
> >>
> >>  #endif /* __INTEL_HDCP_GCS_H__ */
> >> diff --git a/drivers/gpu/drm/i915/display/intel_hdcp_gsc_message.c
> >> b/drivers/gpu/drm/i915/display/intel_hdcp_gsc_message.c
> >> index 11aa6772f272..94ca571ab481 100644
> >> --- a/drivers/gpu/drm/i915/display/intel_hdcp_gsc_message.c
> >> +++ b/drivers/gpu/drm/i915/display/intel_hdcp_gsc_message.c
> >> @@ -633,7 +633,7 @@ static const struct i915_hdcp_ops gsc_hdcp_ops =
> >> {
> >>
> >>  int intel_hdcp_gsc_init(struct intel_display *display)  {
> >> -	struct intel_hdcp_gsc_message *hdcp_message;
> >> +	struct intel_hdcp_gsc_context *gsc_context;
> >>  	struct i915_hdcp_arbiter *arbiter;
> >>  	int ret = 0;
> >>
> >> @@ -643,9 +643,9 @@ int intel_hdcp_gsc_init(struct intel_display
> >> *display)
> >>
> >>  	mutex_lock(&display->hdcp.hdcp_mutex);
> >>
> >> -	hdcp_message = intel_hdcp_gsc_hdcp2_init(display);
> >> -	if (IS_ERR(hdcp_message)) {
> >> -		ret = PTR_ERR(hdcp_message);
> >> +	gsc_context = intel_hdcp_gsc_hdcp2_init(display);
> >> +	if (IS_ERR(gsc_context)) {
> >> +		ret = PTR_ERR(gsc_context);
> >>  		kfree(arbiter);
> >>  		goto out;
> >>  	}
> >> @@ -653,7 +653,7 @@ int intel_hdcp_gsc_init(struct intel_display *display)
> >>  	display->hdcp.arbiter = arbiter;
> >>  	display->hdcp.arbiter->hdcp_dev = display->drm->dev;
> >>  	display->hdcp.arbiter->ops = &gsc_hdcp_ops;
> >> -	display->hdcp.hdcp_message = hdcp_message;
> >> +	display->hdcp.gsc_context = gsc_context;
> >>
> >>  out:
> >>  	mutex_unlock(&display->hdcp.hdcp_mutex);
> >> @@ -663,8 +663,8 @@ int intel_hdcp_gsc_init(struct intel_display
> >> *display)
> >>
> >>  void intel_hdcp_gsc_fini(struct intel_display *display)  {
> >> -	intel_hdcp_gsc_free_message(display->hdcp.hdcp_message);
> >> -	display->hdcp.hdcp_message = NULL;
> >> +	intel_hdcp_gsc_free_message(display->hdcp.gsc_context);
> >> +	display->hdcp.gsc_context = NULL;
> >>  	kfree(display->hdcp.arbiter);
> >>  	display->hdcp.arbiter = NULL;
> >>  }
> >> diff --git a/drivers/gpu/drm/xe/display/xe_hdcp_gsc.c
> >> b/drivers/gpu/drm/xe/display/xe_hdcp_gsc.c
> >> index d15565bf2f9f..68fac12ac666 100644
> >> --- a/drivers/gpu/drm/xe/display/xe_hdcp_gsc.c
> >> +++ b/drivers/gpu/drm/xe/display/xe_hdcp_gsc.c
> >> @@ -21,7 +21,7 @@
> >>
> >>  #define HECI_MEADDRESS_HDCP 18
> >>
> >> -struct intel_hdcp_gsc_message {
> >> +struct intel_hdcp_gsc_context {
> >>  	struct xe_bo *hdcp_bo;
> >>  	u64 hdcp_cmd_in;
> >>  	u64 hdcp_cmd_out;
> >> @@ -69,7 +69,7 @@ bool intel_hdcp_gsc_check_status(struct
> >> intel_display
> >> *display)
> >>
> >>  /*This function helps allocate memory for the command that we will
> >> send to gsc cs */  static int
> >> intel_hdcp_gsc_initialize_message(struct intel_display *display,
> >> -					     struct intel_hdcp_gsc_message
> >> *hdcp_message)
> >> +					     struct intel_hdcp_gsc_context
> >> *gsc_context)
> >>  {
> >>  	struct xe_device *xe = to_xe_device(display->drm);
> >>  	struct xe_bo *bo = NULL;
> >> @@ -92,57 +92,57 @@ static int
> >> intel_hdcp_gsc_initialize_message(struct
> >> intel_display *display,
> >>  	cmd_out = cmd_in + PAGE_SIZE;
> >>  	xe_map_memset(xe, &bo->vmap, 0, 0, bo->size);
> >>
> >> -	hdcp_message->hdcp_bo = bo;
> >> -	hdcp_message->hdcp_cmd_in = cmd_in;
> >> -	hdcp_message->hdcp_cmd_out = cmd_out;
> >> +	gsc_context->hdcp_bo = bo;
> >> +	gsc_context->hdcp_cmd_in = cmd_in;
> >> +	gsc_context->hdcp_cmd_out = cmd_out;
> >>  out:
> >>  	return ret;
> >>  }
> >>
> >> -struct intel_hdcp_gsc_message *intel_hdcp_gsc_hdcp2_init(struct
> >> intel_display
> >> *display)
> >> +struct intel_hdcp_gsc_context *intel_hdcp_gsc_hdcp2_init(struct
> >> +intel_display *display)
> >>  {
> >> -	struct intel_hdcp_gsc_message *hdcp_message;
> >> +	struct intel_hdcp_gsc_context *gsc_context;
> >>  	int ret;
> >>
> >> -	hdcp_message = kzalloc(sizeof(*hdcp_message), GFP_KERNEL);
> >> -	if (!hdcp_message)
> >> +	gsc_context = kzalloc(sizeof(*gsc_context), GFP_KERNEL);
> >> +	if (!gsc_context)
> >>  		return ERR_PTR(-ENOMEM);
> >>
> >>  	/*
> >>  	 * NOTE: No need to lock the comp mutex here as it is already
> >>  	 * going to be taken before this function called
> >>  	 */
> >> -	ret = intel_hdcp_gsc_initialize_message(display, hdcp_message);
> >> +	ret = intel_hdcp_gsc_initialize_message(display, gsc_context);
> >>  	if (ret) {
> >> -		drm_err(display->drm, "Could not initialize hdcp_message\n");
> >> -		kfree(hdcp_message);
> >> -		hdcp_message = ERR_PTR(ret);
> >> +		drm_err(display->drm, "Could not initialize gsc_context\n");
> >> +		kfree(gsc_context);
> >> +		gsc_context = ERR_PTR(ret);
> >>  	}
> >>
> >> -	return hdcp_message;
> >> +	return gsc_context;
> >>  }
> >>
> >> -void intel_hdcp_gsc_free_message(struct intel_hdcp_gsc_message
> >> *hdcp_message)
> >> +void intel_hdcp_gsc_free_message(struct intel_hdcp_gsc_context
> >> +*gsc_context)
> >>  {
> >> -	if (!hdcp_message)
> >> +	if (!gsc_context)
> >>  		return;
> >>
> >> -	xe_bo_unpin_map_no_vm(hdcp_message->hdcp_bo);
> >> -	kfree(hdcp_message);
> >> +	xe_bo_unpin_map_no_vm(gsc_context->hdcp_bo);
> >> +	kfree(gsc_context);
> >>  }
> >>
> >>  static int xe_gsc_send_sync(struct xe_device *xe,
> >> -			    struct intel_hdcp_gsc_message *hdcp_message,
> >> +			    struct intel_hdcp_gsc_context *gsc_context,
> >>  			    u32 msg_size_in, u32 msg_size_out,
> >>  			    u32 addr_out_off)
> >>  {
> >> -	struct xe_gt *gt = hdcp_message->hdcp_bo->tile->media_gt;
> >> -	struct iosys_map *map = &hdcp_message->hdcp_bo->vmap;
> >> +	struct xe_gt *gt = gsc_context->hdcp_bo->tile->media_gt;
> >> +	struct iosys_map *map = &gsc_context->hdcp_bo->vmap;
> >>  	struct xe_gsc *gsc = &gt->uc.gsc;
> >>  	int ret;
> >>
> >> -	ret = xe_gsc_pkt_submit_kernel(gsc, hdcp_message->hdcp_cmd_in,
> >> msg_size_in,
> >> -				       hdcp_message->hdcp_cmd_out,
> >> msg_size_out);
> >> +	ret = xe_gsc_pkt_submit_kernel(gsc, gsc_context->hdcp_cmd_in,
> >> msg_size_in,
> >> +				       gsc_context->hdcp_cmd_out,
> >> msg_size_out);
> >>  	if (ret) {
> >>  		drm_err(&xe->drm, "failed to send gsc HDCP msg (%d)\n", ret);
> >>  		return ret;
> >> @@ -162,7 +162,7 @@ ssize_t intel_hdcp_gsc_msg_send(struct xe_device
> >> *xe,
> >> u8 *msg_in,
> >>  				size_t msg_out_len)
> >>  {
> >>  	const size_t max_msg_size = PAGE_SIZE - HDCP_GSC_HEADER_SIZE;
> >> -	struct intel_hdcp_gsc_message *hdcp_message;
> >> +	struct intel_hdcp_gsc_context *gsc_context;
> >>  	u64 host_session_id;
> >>  	u32 msg_size_in, msg_size_out;
> >>  	u32 addr_out_off, addr_in_wr_off = 0; @@ -175,15 +175,15 @@
> ssize_t
> >> intel_hdcp_gsc_msg_send(struct xe_device *xe, u8 *msg_in,
> >>
> >>  	msg_size_in = msg_in_len + HDCP_GSC_HEADER_SIZE;
> >>  	msg_size_out = msg_out_len + HDCP_GSC_HEADER_SIZE;
> >> -	hdcp_message = xe->display.hdcp.hdcp_message;
> >> +	gsc_context = xe->display.hdcp.gsc_context;
> >>  	addr_out_off = PAGE_SIZE;
> >>
> >>  	host_session_id = xe_gsc_create_host_session_id();
> >>  	xe_pm_runtime_get_noresume(xe);
> >> -	addr_in_wr_off = xe_gsc_emit_header(xe, &hdcp_message->hdcp_bo-
> >> >vmap,
> >> +	addr_in_wr_off = xe_gsc_emit_header(xe, &gsc_context->hdcp_bo-
> >> >vmap,
> >>  					    addr_in_wr_off,
> >> HECI_MEADDRESS_HDCP,
> >>  					    host_session_id, msg_in_len);
> >> -	xe_map_memcpy_to(xe, &hdcp_message->hdcp_bo->vmap,
> >> addr_in_wr_off,
> >> +	xe_map_memcpy_to(xe, &gsc_context->hdcp_bo->vmap,
> >> addr_in_wr_off,
> >>  			 msg_in, msg_in_len);
> >>  	/*
> >>  	 * Keep sending request in case the pending bit is set no need to
> >> add @@ -192,7 +192,7 @@ ssize_t intel_hdcp_gsc_msg_send(struct
> >> xe_device *xe,
> >> u8 *msg_in,
> >>  	 * 20 times each message 50 ms apart
> >>  	 */
> >>  	do {
> >> -		ret = xe_gsc_send_sync(xe, hdcp_message, msg_size_in,
> >> msg_size_out,
> >> +		ret = xe_gsc_send_sync(xe, gsc_context, msg_size_in,
> >> msg_size_out,
> >>  				       addr_out_off);
> >>
> >>  		/* Only try again if gsc says so */ @@ -206,7 +206,7 @@
> ssize_t
> >> intel_hdcp_gsc_msg_send(struct xe_device *xe,
> >> u8 *msg_in,
> >>  	if (ret)
> >>  		goto out;
> >>
> >> -	xe_map_memcpy_from(xe, msg_out, &hdcp_message->hdcp_bo-
> >> >vmap,
> >> +	xe_map_memcpy_from(xe, msg_out, &gsc_context->hdcp_bo->vmap,
> >>  			   addr_out_off + HDCP_GSC_HEADER_SIZE,
> >>  			   msg_out_len);
> >>
> >> --
> >> 2.39.5
> >
> 
> --
> Jani Nikula, Intel

^ permalink raw reply	[flat|nested] 29+ messages in thread

* RE: [PATCH 05/10] drm/i915/hdcp: rename HDCP GSC context alloc/free functions
  2025-04-24 20:01 ` [PATCH 05/10] drm/i915/hdcp: rename HDCP GSC context alloc/free functions Jani Nikula
@ 2025-05-02  3:43   ` Kandpal, Suraj
  0 siblings, 0 replies; 29+ messages in thread
From: Kandpal, Suraj @ 2025-05-02  3:43 UTC (permalink / raw)
  To: Nikula, Jani, intel-gfx@lists.freedesktop.org,
	intel-xe@lists.freedesktop.org



> -----Original Message-----
> From: Nikula, Jani <jani.nikula@intel.com>
> Sent: Friday, April 25, 2025 1:32 AM
> To: intel-gfx@lists.freedesktop.org; intel-xe@lists.freedesktop.org
> Cc: Nikula, Jani <jani.nikula@intel.com>; Kandpal, Suraj
> <suraj.kandpal@intel.com>
> Subject: [PATCH 05/10] drm/i915/hdcp: rename HDCP GSC context alloc/free
> functions
> 
> Name the functions intel_hdcp_gsc_context_alloc() and
> intel_hdcp_gsc_context_free() for consistency.
> 
> Cc: Suraj Kandpal <suraj.kandpal@intel.com>
> Signed-off-by: Jani Nikula <jani.nikula@intel.com>

LGTM,
Reviewed-by: Suraj Kandpal <suraj.kandpal@intel.com>

> ---
>  drivers/gpu/drm/i915/display/intel_hdcp_gsc.c         | 4 ++--
>  drivers/gpu/drm/i915/display/intel_hdcp_gsc.h         | 4 ++--
>  drivers/gpu/drm/i915/display/intel_hdcp_gsc_message.c | 4 ++--
>  drivers/gpu/drm/xe/display/xe_hdcp_gsc.c              | 4 ++--
>  4 files changed, 8 insertions(+), 8 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/display/intel_hdcp_gsc.c
> b/drivers/gpu/drm/i915/display/intel_hdcp_gsc.c
> index 3e1dc2f7310c..efcd3a4b41ed 100644
> --- a/drivers/gpu/drm/i915/display/intel_hdcp_gsc.c
> +++ b/drivers/gpu/drm/i915/display/intel_hdcp_gsc.c
> @@ -90,7 +90,7 @@ static int intel_hdcp_gsc_initialize_message(struct
> drm_i915_private *i915,
>  	return err;
>  }
> 
> -struct intel_hdcp_gsc_context *intel_hdcp_gsc_hdcp2_init(struct intel_display
> *display)
> +struct intel_hdcp_gsc_context *intel_hdcp_gsc_context_alloc(struct
> +intel_display *display)
>  {
>  	struct drm_i915_private *i915 = to_i915(display->drm);
>  	struct intel_hdcp_gsc_context *gsc_context; @@ -114,7 +114,7 @@
> struct intel_hdcp_gsc_context *intel_hdcp_gsc_hdcp2_init(struct intel_display
> *d
>  	return gsc_context;
>  }
> 
> -void intel_hdcp_gsc_free_message(struct intel_hdcp_gsc_context
> *gsc_context)
> +void intel_hdcp_gsc_context_free(struct intel_hdcp_gsc_context
> +*gsc_context)
>  {
>  	if (!gsc_context)
>  		return;
> diff --git a/drivers/gpu/drm/i915/display/intel_hdcp_gsc.h
> b/drivers/gpu/drm/i915/display/intel_hdcp_gsc.h
> index 31080df80097..227c00a837d8 100644
> --- a/drivers/gpu/drm/i915/display/intel_hdcp_gsc.h
> +++ b/drivers/gpu/drm/i915/display/intel_hdcp_gsc.h
> @@ -19,7 +19,7 @@ ssize_t intel_hdcp_gsc_msg_send(struct
> drm_i915_private *i915, u8 *msg_in,
>  				size_t msg_out_len);
>  bool intel_hdcp_gsc_check_status(struct intel_display *display);
> 
> -struct intel_hdcp_gsc_context *intel_hdcp_gsc_hdcp2_init(struct intel_display
> *display); -void intel_hdcp_gsc_free_message(struct intel_hdcp_gsc_context
> *gsc_context);
> +struct intel_hdcp_gsc_context *intel_hdcp_gsc_context_alloc(struct
> +intel_display *display); void intel_hdcp_gsc_context_free(struct
> +intel_hdcp_gsc_context *gsc_context);
> 
>  #endif /* __INTEL_HDCP_GCS_H__ */
> diff --git a/drivers/gpu/drm/i915/display/intel_hdcp_gsc_message.c
> b/drivers/gpu/drm/i915/display/intel_hdcp_gsc_message.c
> index 94ca571ab481..92143226858c 100644
> --- a/drivers/gpu/drm/i915/display/intel_hdcp_gsc_message.c
> +++ b/drivers/gpu/drm/i915/display/intel_hdcp_gsc_message.c
> @@ -643,7 +643,7 @@ int intel_hdcp_gsc_init(struct intel_display *display)
> 
>  	mutex_lock(&display->hdcp.hdcp_mutex);
> 
> -	gsc_context = intel_hdcp_gsc_hdcp2_init(display);
> +	gsc_context = intel_hdcp_gsc_context_alloc(display);
>  	if (IS_ERR(gsc_context)) {
>  		ret = PTR_ERR(gsc_context);
>  		kfree(arbiter);
> @@ -663,7 +663,7 @@ int intel_hdcp_gsc_init(struct intel_display *display)
> 
>  void intel_hdcp_gsc_fini(struct intel_display *display)  {
> -	intel_hdcp_gsc_free_message(display->hdcp.gsc_context);
> +	intel_hdcp_gsc_context_free(display->hdcp.gsc_context);
>  	display->hdcp.gsc_context = NULL;
>  	kfree(display->hdcp.arbiter);
>  	display->hdcp.arbiter = NULL;
> diff --git a/drivers/gpu/drm/xe/display/xe_hdcp_gsc.c
> b/drivers/gpu/drm/xe/display/xe_hdcp_gsc.c
> index 68fac12ac666..16458c1ddbe6 100644
> --- a/drivers/gpu/drm/xe/display/xe_hdcp_gsc.c
> +++ b/drivers/gpu/drm/xe/display/xe_hdcp_gsc.c
> @@ -99,7 +99,7 @@ static int intel_hdcp_gsc_initialize_message(struct
> intel_display *display,
>  	return ret;
>  }
> 
> -struct intel_hdcp_gsc_context *intel_hdcp_gsc_hdcp2_init(struct intel_display
> *display)
> +struct intel_hdcp_gsc_context *intel_hdcp_gsc_context_alloc(struct
> +intel_display *display)
>  {
>  	struct intel_hdcp_gsc_context *gsc_context;
>  	int ret;
> @@ -122,7 +122,7 @@ struct intel_hdcp_gsc_context
> *intel_hdcp_gsc_hdcp2_init(struct intel_display *d
>  	return gsc_context;
>  }
> 
> -void intel_hdcp_gsc_free_message(struct intel_hdcp_gsc_context
> *gsc_context)
> +void intel_hdcp_gsc_context_free(struct intel_hdcp_gsc_context
> +*gsc_context)
>  {
>  	if (!gsc_context)
>  		return;
> --
> 2.39.5


^ permalink raw reply	[flat|nested] 29+ messages in thread

* RE: [PATCH 06/10] drm/i915/hdcp: pass the context to the HDCP GSC message interface
  2025-04-24 20:01 ` [PATCH 06/10] drm/i915/hdcp: pass the context to the HDCP GSC message interface Jani Nikula
@ 2025-05-02  9:08   ` Kandpal, Suraj
  0 siblings, 0 replies; 29+ messages in thread
From: Kandpal, Suraj @ 2025-05-02  9:08 UTC (permalink / raw)
  To: Nikula, Jani, intel-gfx@lists.freedesktop.org,
	intel-xe@lists.freedesktop.org

> Subject: [PATCH 06/10] drm/i915/hdcp: pass the context to the HDCP GSC
> message interface
> 
> The opaque HDCP GSC context nicely abstracts the differences between drivers.
> Pass that instead of struct drm_i915_private or struct xe_device to
> intel_hdcp_gsc_msg_send(). We can store the driver specific data in the
> context.
> 
> This lets us drop the dependency on i915_drv.h from
> intel_hdcp_gsc_message.c.
> 
> Cc: Suraj Kandpal <suraj.kandpal@intel.com>
> Signed-off-by: Jani Nikula <jani.nikula@intel.com>

LGTM,
Reviewed-by: Suraj Kandpal <suraj.kandpal@intel.com>

> ---
>  drivers/gpu/drm/i915/display/intel_hdcp_gsc.c | 11 +--
> drivers/gpu/drm/i915/display/intel_hdcp_gsc.h |  7 +-
> .../drm/i915/display/intel_hdcp_gsc_message.c | 70 ++++++++++---------
>  drivers/gpu/drm/xe/display/xe_hdcp_gsc.c      | 12 ++--
>  4 files changed, 52 insertions(+), 48 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/display/intel_hdcp_gsc.c
> b/drivers/gpu/drm/i915/display/intel_hdcp_gsc.c
> index efcd3a4b41ed..77c4df6c6181 100644
> --- a/drivers/gpu/drm/i915/display/intel_hdcp_gsc.c
> +++ b/drivers/gpu/drm/i915/display/intel_hdcp_gsc.c
> @@ -13,6 +13,7 @@
>  #include "intel_hdcp_gsc.h"
> 
>  struct intel_hdcp_gsc_context {
> +	struct drm_i915_private *i915;
>  	struct i915_vma *vma;
>  	void *hdcp_cmd_in;
>  	void *hdcp_cmd_out;
> @@ -80,6 +81,7 @@ static int intel_hdcp_gsc_initialize_message(struct
> drm_i915_private *i915,
>  	gsc_context->hdcp_cmd_in = cmd_in;
>  	gsc_context->hdcp_cmd_out = cmd_out;
>  	gsc_context->vma = vma;
> +	gsc_context->i915 = i915;
> 
>  	return 0;
> 
> @@ -171,14 +173,14 @@ static int intel_gsc_send_sync(struct
> drm_i915_private *i915,
>   * gsc cs memory header as stated in specs after which the normal HDCP
> payload
>   * will follow
>   */
> -ssize_t intel_hdcp_gsc_msg_send(struct drm_i915_private *i915, u8 *msg_in,
> -				size_t msg_in_len, u8 *msg_out,
> -				size_t msg_out_len)
> +ssize_t intel_hdcp_gsc_msg_send(struct intel_hdcp_gsc_context
> *gsc_context,
> +				u8 *msg_in, size_t msg_in_len,
> +				u8 *msg_out, size_t msg_out_len)
>  {
> +	struct drm_i915_private *i915 = gsc_context->i915;
>  	struct intel_gt *gt = i915->media_gt;
>  	struct intel_gsc_mtl_header *header_in, *header_out;
>  	const size_t max_msg_size = PAGE_SIZE - sizeof(*header_in);
> -	struct intel_hdcp_gsc_context *gsc_context;
>  	u64 addr_in, addr_out, host_session_id;
>  	u32 reply_size, msg_size_in, msg_size_out;
>  	int ret, tries = 0;
> @@ -191,7 +193,6 @@ ssize_t intel_hdcp_gsc_msg_send(struct
> drm_i915_private *i915, u8 *msg_in,
> 
>  	msg_size_in = msg_in_len + sizeof(*header_in);
>  	msg_size_out = msg_out_len + sizeof(*header_out);
> -	gsc_context = i915->display.hdcp.gsc_context;
>  	header_in = gsc_context->hdcp_cmd_in;
>  	header_out = gsc_context->hdcp_cmd_out;
>  	addr_in = i915_ggtt_offset(gsc_context->vma);
> diff --git a/drivers/gpu/drm/i915/display/intel_hdcp_gsc.h
> b/drivers/gpu/drm/i915/display/intel_hdcp_gsc.h
> index 227c00a837d8..7133e631a938 100644
> --- a/drivers/gpu/drm/i915/display/intel_hdcp_gsc.h
> +++ b/drivers/gpu/drm/i915/display/intel_hdcp_gsc.h
> @@ -9,14 +9,13 @@
>  #include <linux/err.h>
>  #include <linux/types.h>
> 
> -struct drm_i915_private;
>  struct intel_display;
>  struct intel_hdcp_gsc_context;
> 
>  bool intel_hdcp_gsc_cs_required(struct intel_display *display); -ssize_t
> intel_hdcp_gsc_msg_send(struct drm_i915_private *i915, u8 *msg_in,
> -				size_t msg_in_len, u8 *msg_out,
> -				size_t msg_out_len);
> +ssize_t intel_hdcp_gsc_msg_send(struct intel_hdcp_gsc_context
> *gsc_context,
> +				u8 *msg_in, size_t msg_in_len,
> +				u8 *msg_out, size_t msg_out_len);
>  bool intel_hdcp_gsc_check_status(struct intel_display *display);
> 
>  struct intel_hdcp_gsc_context *intel_hdcp_gsc_context_alloc(struct
> intel_display *display); diff --git
> a/drivers/gpu/drm/i915/display/intel_hdcp_gsc_message.c
> b/drivers/gpu/drm/i915/display/intel_hdcp_gsc_message.c
> index 92143226858c..d87f61d773ca 100644
> --- a/drivers/gpu/drm/i915/display/intel_hdcp_gsc_message.c
> +++ b/drivers/gpu/drm/i915/display/intel_hdcp_gsc_message.c
> @@ -4,9 +4,11 @@
>   */
> 
>  #include <linux/err.h>
> +
> +#include <drm/drm_print.h>
>  #include <drm/intel/i915_hdcp_interface.h>
> 
> -#include "i915_drv.h"
> +#include "intel_display_core.h"
>  #include "intel_display_types.h"
>  #include "intel_hdcp_gsc.h"
>  #include "intel_hdcp_gsc_message.h"
> @@ -17,8 +19,8 @@ intel_hdcp_gsc_initiate_session(struct device *dev, struct
> hdcp_port_data *data,  {
>  	struct wired_cmd_initiate_hdcp2_session_in session_init_in = {};
>  	struct wired_cmd_initiate_hdcp2_session_out session_init_out = {};
> +	struct intel_hdcp_gsc_context *gsc_context;
>  	struct intel_display *display;
> -	struct drm_i915_private *i915;
>  	ssize_t byte;
> 
>  	if (!dev || !data || !ake_data)
> @@ -29,7 +31,7 @@ intel_hdcp_gsc_initiate_session(struct device *dev, struct
> hdcp_port_data *data,
>  		dev_err(dev, "DRM not initialized, aborting HDCP.\n");
>  		return -ENODEV;
>  	}
> -	i915 = to_i915(display->drm);
> +	gsc_context = display->hdcp.gsc_context;
> 
>  	session_init_in.header.api_version = HDCP_API_VERSION;
>  	session_init_in.header.command_id =
> WIRED_INITIATE_HDCP2_SESSION; @@ -42,7 +44,7 @@
> intel_hdcp_gsc_initiate_session(struct device *dev, struct hdcp_port_data
> *data,
>  	session_init_in.port.attached_transcoder = (u8)data-
> >hdcp_transcoder;
>  	session_init_in.protocol = data->protocol;
> 
> -	byte = intel_hdcp_gsc_msg_send(i915, (u8 *)&session_init_in,
> +	byte = intel_hdcp_gsc_msg_send(gsc_context, (u8 *)&session_init_in,
>  				       sizeof(session_init_in),
>  				       (u8 *)&session_init_out,
>  				       sizeof(session_init_out));
> @@ -76,8 +78,8 @@ intel_hdcp_gsc_verify_receiver_cert_prepare_km(struct
> device *dev,  {
>  	struct wired_cmd_verify_receiver_cert_in verify_rxcert_in = {};
>  	struct wired_cmd_verify_receiver_cert_out verify_rxcert_out = {};
> +	struct intel_hdcp_gsc_context *gsc_context;
>  	struct intel_display *display;
> -	struct drm_i915_private *i915;
>  	ssize_t byte;
> 
>  	if (!dev || !data || !rx_cert || !km_stored || !ek_pub_km || !msg_sz)
> @@ -88,7 +90,7 @@ intel_hdcp_gsc_verify_receiver_cert_prepare_km(struct
> device *dev,
>  		dev_err(dev, "DRM not initialized, aborting HDCP.\n");
>  		return -ENODEV;
>  	}
> -	i915 = to_i915(display->drm);
> +	gsc_context = display->hdcp.gsc_context;
> 
>  	verify_rxcert_in.header.api_version = HDCP_API_VERSION;
>  	verify_rxcert_in.header.command_id =
> WIRED_VERIFY_RECEIVER_CERT; @@ -104,7 +106,7 @@
> intel_hdcp_gsc_verify_receiver_cert_prepare_km(struct device *dev,
>  	memcpy(verify_rxcert_in.r_rx, &rx_cert->r_rx, HDCP_2_2_RRX_LEN);
>  	memcpy(verify_rxcert_in.rx_caps, rx_cert->rx_caps,
> HDCP_2_2_RXCAPS_LEN);
> 
> -	byte = intel_hdcp_gsc_msg_send(i915, (u8 *)&verify_rxcert_in,
> +	byte = intel_hdcp_gsc_msg_send(gsc_context, (u8 *)&verify_rxcert_in,
>  				       sizeof(verify_rxcert_in),
>  				       (u8 *)&verify_rxcert_out,
>  				       sizeof(verify_rxcert_out));
> @@ -141,8 +143,8 @@ intel_hdcp_gsc_verify_hprime(struct device *dev,
> struct hdcp_port_data *data,  {
>  	struct wired_cmd_ake_send_hprime_in send_hprime_in = {};
>  	struct wired_cmd_ake_send_hprime_out send_hprime_out = {};
> +	struct intel_hdcp_gsc_context *gsc_context;
>  	struct intel_display *display;
> -	struct drm_i915_private *i915;
>  	ssize_t byte;
> 
>  	if (!dev || !data || !rx_hprime)
> @@ -153,7 +155,7 @@ intel_hdcp_gsc_verify_hprime(struct device *dev,
> struct hdcp_port_data *data,
>  		dev_err(dev, "DRM not initialized, aborting HDCP.\n");
>  		return -ENODEV;
>  	}
> -	i915 = to_i915(display->drm);
> +	gsc_context = display->hdcp.gsc_context;
> 
>  	send_hprime_in.header.api_version = HDCP_API_VERSION;
>  	send_hprime_in.header.command_id = WIRED_AKE_SEND_HPRIME;
> @@ -167,7 +169,7 @@ intel_hdcp_gsc_verify_hprime(struct device *dev,
> struct hdcp_port_data *data,
>  	memcpy(send_hprime_in.h_prime, rx_hprime->h_prime,
>  	       HDCP_2_2_H_PRIME_LEN);
> 
> -	byte = intel_hdcp_gsc_msg_send(i915, (u8 *)&send_hprime_in,
> +	byte = intel_hdcp_gsc_msg_send(gsc_context, (u8 *)&send_hprime_in,
>  				       sizeof(send_hprime_in),
>  				       (u8 *)&send_hprime_out,
>  				       sizeof(send_hprime_out));
> @@ -191,8 +193,8 @@ intel_hdcp_gsc_store_pairing_info(struct device *dev,
> struct hdcp_port_data *dat  {
>  	struct wired_cmd_ake_send_pairing_info_in pairing_info_in = {};
>  	struct wired_cmd_ake_send_pairing_info_out pairing_info_out = {};
> +	struct intel_hdcp_gsc_context *gsc_context;
>  	struct intel_display *display;
> -	struct drm_i915_private *i915;
>  	ssize_t byte;
> 
>  	if (!dev || !data || !pairing_info)
> @@ -203,7 +205,7 @@ intel_hdcp_gsc_store_pairing_info(struct device *dev,
> struct hdcp_port_data *dat
>  		dev_err(dev, "DRM not initialized, aborting HDCP.\n");
>  		return -ENODEV;
>  	}
> -	i915 = to_i915(display->drm);
> +	gsc_context = display->hdcp.gsc_context;
> 
>  	pairing_info_in.header.api_version = HDCP_API_VERSION;
>  	pairing_info_in.header.command_id =
> WIRED_AKE_SEND_PAIRING_INFO; @@ -218,7 +220,7 @@
> intel_hdcp_gsc_store_pairing_info(struct device *dev, struct hdcp_port_data
> *dat
>  	memcpy(pairing_info_in.e_kh_km, pairing_info->e_kh_km,
>  	       HDCP_2_2_E_KH_KM_LEN);
> 
> -	byte = intel_hdcp_gsc_msg_send(i915, (u8 *)&pairing_info_in,
> +	byte = intel_hdcp_gsc_msg_send(gsc_context, (u8 *)&pairing_info_in,
>  				       sizeof(pairing_info_in),
>  				       (u8 *)&pairing_info_out,
>  				       sizeof(pairing_info_out));
> @@ -244,8 +246,8 @@ intel_hdcp_gsc_initiate_locality_check(struct device
> *dev,  {
>  	struct wired_cmd_init_locality_check_in lc_init_in = {};
>  	struct wired_cmd_init_locality_check_out lc_init_out = {};
> +	struct intel_hdcp_gsc_context *gsc_context;
>  	struct intel_display *display;
> -	struct drm_i915_private *i915;
>  	ssize_t byte;
> 
>  	if (!dev || !data || !lc_init_data)
> @@ -256,7 +258,7 @@ intel_hdcp_gsc_initiate_locality_check(struct device
> *dev,
>  		dev_err(dev, "DRM not initialized, aborting HDCP.\n");
>  		return -ENODEV;
>  	}
> -	i915 = to_i915(display->drm);
> +	gsc_context = display->hdcp.gsc_context;
> 
>  	lc_init_in.header.api_version = HDCP_API_VERSION;
>  	lc_init_in.header.command_id = WIRED_INIT_LOCALITY_CHECK; @@ -
> 267,7 +269,7 @@ intel_hdcp_gsc_initiate_locality_check(struct device *dev,
>  	lc_init_in.port.physical_port = (u8)data->hdcp_ddi;
>  	lc_init_in.port.attached_transcoder = (u8)data->hdcp_transcoder;
> 
> -	byte = intel_hdcp_gsc_msg_send(i915, (u8 *)&lc_init_in,
> sizeof(lc_init_in),
> +	byte = intel_hdcp_gsc_msg_send(gsc_context, (u8 *)&lc_init_in,
> +sizeof(lc_init_in),
>  				       (u8 *)&lc_init_out, sizeof(lc_init_out));
>  	if (byte < 0) {
>  		drm_dbg_kms(display->drm, "intel_hdcp_gsc_msg_send
> failed. %zd\n", byte); @@ -292,8 +294,8 @@
> intel_hdcp_gsc_verify_lprime(struct device *dev, struct hdcp_port_data *data,
> {
>  	struct wired_cmd_validate_locality_in verify_lprime_in = {};
>  	struct wired_cmd_validate_locality_out verify_lprime_out = {};
> +	struct intel_hdcp_gsc_context *gsc_context;
>  	struct intel_display *display;
> -	struct drm_i915_private *i915;
>  	ssize_t byte;
> 
>  	if (!dev || !data || !rx_lprime)
> @@ -304,7 +306,7 @@ intel_hdcp_gsc_verify_lprime(struct device *dev, struct
> hdcp_port_data *data,
>  		dev_err(dev, "DRM not initialized, aborting HDCP.\n");
>  		return -ENODEV;
>  	}
> -	i915 = to_i915(display->drm);
> +	gsc_context = display->hdcp.gsc_context;
> 
>  	verify_lprime_in.header.api_version = HDCP_API_VERSION;
>  	verify_lprime_in.header.command_id = WIRED_VALIDATE_LOCALITY;
> @@ -319,7 +321,7 @@ intel_hdcp_gsc_verify_lprime(struct device *dev, struct
> hdcp_port_data *data,
>  	memcpy(verify_lprime_in.l_prime, rx_lprime->l_prime,
>  	       HDCP_2_2_L_PRIME_LEN);
> 
> -	byte = intel_hdcp_gsc_msg_send(i915, (u8 *)&verify_lprime_in,
> +	byte = intel_hdcp_gsc_msg_send(gsc_context, (u8 *)&verify_lprime_in,
>  				       sizeof(verify_lprime_in),
>  				       (u8 *)&verify_lprime_out,
>  				       sizeof(verify_lprime_out));
> @@ -345,8 +347,8 @@ intel_hdcp_gsc_get_session_key(struct device *dev,  {
>  	struct wired_cmd_get_session_key_in get_skey_in = {};
>  	struct wired_cmd_get_session_key_out get_skey_out = {};
> +	struct intel_hdcp_gsc_context *gsc_context;
>  	struct intel_display *display;
> -	struct drm_i915_private *i915;
>  	ssize_t byte;
> 
>  	if (!dev || !data || !ske_data)
> @@ -357,7 +359,7 @@ intel_hdcp_gsc_get_session_key(struct device *dev,
>  		dev_err(dev, "DRM not initialized, aborting HDCP.\n");
>  		return -ENODEV;
>  	}
> -	i915 = to_i915(display->drm);
> +	gsc_context = display->hdcp.gsc_context;
> 
>  	get_skey_in.header.api_version = HDCP_API_VERSION;
>  	get_skey_in.header.command_id = WIRED_GET_SESSION_KEY; @@ -
> 368,7 +370,7 @@ intel_hdcp_gsc_get_session_key(struct device *dev,
>  	get_skey_in.port.physical_port = (u8)data->hdcp_ddi;
>  	get_skey_in.port.attached_transcoder = (u8)data->hdcp_transcoder;
> 
> -	byte = intel_hdcp_gsc_msg_send(i915, (u8 *)&get_skey_in,
> sizeof(get_skey_in),
> +	byte = intel_hdcp_gsc_msg_send(gsc_context, (u8 *)&get_skey_in,
> +sizeof(get_skey_in),
>  				       (u8 *)&get_skey_out,
> sizeof(get_skey_out));
>  	if (byte < 0) {
>  		drm_dbg_kms(display->drm, "intel_hdcp_gsc_msg_send
> failed. %zd\n", byte); @@ -399,8 +401,8 @@
> intel_hdcp_gsc_repeater_check_flow_prepare_ack(struct device *dev,  {
>  	struct wired_cmd_verify_repeater_in verify_repeater_in = {};
>  	struct wired_cmd_verify_repeater_out verify_repeater_out = {};
> +	struct intel_hdcp_gsc_context *gsc_context;
>  	struct intel_display *display;
> -	struct drm_i915_private *i915;
>  	ssize_t byte;
> 
>  	if (!dev || !rep_topology || !rep_send_ack || !data) @@ -411,7 +413,7
> @@ intel_hdcp_gsc_repeater_check_flow_prepare_ack(struct device *dev,
>  		dev_err(dev, "DRM not initialized, aborting HDCP.\n");
>  		return -ENODEV;
>  	}
> -	i915 = to_i915(display->drm);
> +	gsc_context = display->hdcp.gsc_context;
> 
>  	verify_repeater_in.header.api_version = HDCP_API_VERSION;
>  	verify_repeater_in.header.command_id = WIRED_VERIFY_REPEATER;
> @@ -432,7 +434,7 @@
> intel_hdcp_gsc_repeater_check_flow_prepare_ack(struct device *dev,
>  	memcpy(verify_repeater_in.receiver_ids, rep_topology->receiver_ids,
>  	       HDCP_2_2_RECEIVER_IDS_MAX_LEN);
> 
> -	byte = intel_hdcp_gsc_msg_send(i915, (u8 *)&verify_repeater_in,
> +	byte = intel_hdcp_gsc_msg_send(gsc_context, (u8
> *)&verify_repeater_in,
>  				       sizeof(verify_repeater_in),
>  				       (u8 *)&verify_repeater_out,
>  				       sizeof(verify_repeater_out)); @@ -462,8
> +464,8 @@ intel_hdcp_gsc_verify_mprime(struct device *dev,  {
>  	struct wired_cmd_repeater_auth_stream_req_in *verify_mprime_in;
>  	struct wired_cmd_repeater_auth_stream_req_out verify_mprime_out
> = {};
> +	struct intel_hdcp_gsc_context *gsc_context;
>  	struct intel_display *display;
> -	struct drm_i915_private *i915;
>  	ssize_t byte;
>  	size_t cmd_size;
> 
> @@ -475,7 +477,7 @@ intel_hdcp_gsc_verify_mprime(struct device *dev,
>  		dev_err(dev, "DRM not initialized, aborting HDCP.\n");
>  		return -ENODEV;
>  	}
> -	i915 = to_i915(display->drm);
> +	gsc_context = display->hdcp.gsc_context;
> 
>  	cmd_size = struct_size(verify_mprime_in, streams, data->k);
>  	if (cmd_size == SIZE_MAX)
> @@ -502,7 +504,7 @@ intel_hdcp_gsc_verify_mprime(struct device *dev,
> 
>  	verify_mprime_in->k = cpu_to_be16(data->k);
> 
> -	byte = intel_hdcp_gsc_msg_send(i915, (u8 *)verify_mprime_in,
> cmd_size,
> +	byte = intel_hdcp_gsc_msg_send(gsc_context, (u8 *)verify_mprime_in,
> +cmd_size,
>  				       (u8 *)&verify_mprime_out,
>  				       sizeof(verify_mprime_out));
>  	kfree(verify_mprime_in);
> @@ -526,8 +528,8 @@ static int intel_hdcp_gsc_enable_authentication(struct
> device *dev,  {
>  	struct wired_cmd_enable_auth_in enable_auth_in = {};
>  	struct wired_cmd_enable_auth_out enable_auth_out = {};
> +	struct intel_hdcp_gsc_context *gsc_context;
>  	struct intel_display *display;
> -	struct drm_i915_private *i915;
>  	ssize_t byte;
> 
>  	if (!dev || !data)
> @@ -538,7 +540,7 @@ static int intel_hdcp_gsc_enable_authentication(struct
> device *dev,
>  		dev_err(dev, "DRM not initialized, aborting HDCP.\n");
>  		return -ENODEV;
>  	}
> -	i915 = to_i915(display->drm);
> +	gsc_context = display->hdcp.gsc_context;
> 
>  	enable_auth_in.header.api_version = HDCP_API_VERSION;
>  	enable_auth_in.header.command_id = WIRED_ENABLE_AUTH; @@ -
> 550,7 +552,7 @@ static int intel_hdcp_gsc_enable_authentication(struct
> device *dev,
>  	enable_auth_in.port.attached_transcoder = (u8)data-
> >hdcp_transcoder;
>  	enable_auth_in.stream_type = data->streams[0].stream_type;
> 
> -	byte = intel_hdcp_gsc_msg_send(i915, (u8 *)&enable_auth_in,
> +	byte = intel_hdcp_gsc_msg_send(gsc_context, (u8 *)&enable_auth_in,
>  				       sizeof(enable_auth_in),
>  				       (u8 *)&enable_auth_out,
>  				       sizeof(enable_auth_out));
> @@ -573,8 +575,8 @@ intel_hdcp_gsc_close_session(struct device *dev, struct
> hdcp_port_data *data)  {
>  	struct wired_cmd_close_session_in session_close_in = {};
>  	struct wired_cmd_close_session_out session_close_out = {};
> +	struct intel_hdcp_gsc_context *gsc_context;
>  	struct intel_display *display;
> -	struct drm_i915_private *i915;
>  	ssize_t byte;
> 
>  	if (!dev || !data)
> @@ -585,7 +587,7 @@ intel_hdcp_gsc_close_session(struct device *dev, struct
> hdcp_port_data *data)
>  		dev_err(dev, "DRM not initialized, aborting HDCP.\n");
>  		return -ENODEV;
>  	}
> -	i915 = to_i915(display->drm);
> +	gsc_context = display->hdcp.gsc_context;
> 
>  	session_close_in.header.api_version = HDCP_API_VERSION;
>  	session_close_in.header.command_id = WIRED_CLOSE_SESSION; @@ -
> 597,7 +599,7 @@ intel_hdcp_gsc_close_session(struct device *dev, struct
> hdcp_port_data *data)
>  	session_close_in.port.physical_port = (u8)data->hdcp_ddi;
>  	session_close_in.port.attached_transcoder = (u8)data-
> >hdcp_transcoder;
> 
> -	byte = intel_hdcp_gsc_msg_send(i915, (u8 *)&session_close_in,
> +	byte = intel_hdcp_gsc_msg_send(gsc_context, (u8
> *)&session_close_in,
>  				       sizeof(session_close_in),
>  				       (u8 *)&session_close_out,
>  				       sizeof(session_close_out));
> diff --git a/drivers/gpu/drm/xe/display/xe_hdcp_gsc.c
> b/drivers/gpu/drm/xe/display/xe_hdcp_gsc.c
> index 16458c1ddbe6..7b8237a5aeee 100644
> --- a/drivers/gpu/drm/xe/display/xe_hdcp_gsc.c
> +++ b/drivers/gpu/drm/xe/display/xe_hdcp_gsc.c
> @@ -22,6 +22,7 @@
>  #define HECI_MEADDRESS_HDCP 18
> 
>  struct intel_hdcp_gsc_context {
> +	struct xe_device *xe;
>  	struct xe_bo *hdcp_bo;
>  	u64 hdcp_cmd_in;
>  	u64 hdcp_cmd_out;
> @@ -95,6 +96,8 @@ static int intel_hdcp_gsc_initialize_message(struct
> intel_display *display,
>  	gsc_context->hdcp_bo = bo;
>  	gsc_context->hdcp_cmd_in = cmd_in;
>  	gsc_context->hdcp_cmd_out = cmd_out;
> +	gsc_context->xe = xe;
> +
>  out:
>  	return ret;
>  }
> @@ -157,12 +160,12 @@ static int xe_gsc_send_sync(struct xe_device *xe,
>  	return ret;
>  }
> 
> -ssize_t intel_hdcp_gsc_msg_send(struct xe_device *xe, u8 *msg_in,
> -				size_t msg_in_len, u8 *msg_out,
> -				size_t msg_out_len)
> +ssize_t intel_hdcp_gsc_msg_send(struct intel_hdcp_gsc_context
> *gsc_context,
> +				u8 *msg_in, size_t msg_in_len,
> +				u8 *msg_out, size_t msg_out_len)
>  {
> +	struct xe_device *xe = gsc_context->xe;
>  	const size_t max_msg_size = PAGE_SIZE - HDCP_GSC_HEADER_SIZE;
> -	struct intel_hdcp_gsc_context *gsc_context;
>  	u64 host_session_id;
>  	u32 msg_size_in, msg_size_out;
>  	u32 addr_out_off, addr_in_wr_off = 0;
> @@ -175,7 +178,6 @@ ssize_t intel_hdcp_gsc_msg_send(struct xe_device *xe,
> u8 *msg_in,
> 
>  	msg_size_in = msg_in_len + HDCP_GSC_HEADER_SIZE;
>  	msg_size_out = msg_out_len + HDCP_GSC_HEADER_SIZE;
> -	gsc_context = xe->display.hdcp.gsc_context;
>  	addr_out_off = PAGE_SIZE;
> 
>  	host_session_id = xe_gsc_create_host_session_id();
> --
> 2.39.5


^ permalink raw reply	[flat|nested] 29+ messages in thread

* RE: [PATCH 09/10] drm/i915/hdcp: pass struct drm_device to driver specific HDCP GSC code
  2025-04-24 20:01 ` [PATCH 09/10] drm/i915/hdcp: pass struct drm_device to driver specific HDCP GSC code Jani Nikula
@ 2025-05-02  9:18   ` Kandpal, Suraj
  2025-05-02  9:22     ` Jani Nikula
  0 siblings, 1 reply; 29+ messages in thread
From: Kandpal, Suraj @ 2025-05-02  9:18 UTC (permalink / raw)
  To: Nikula, Jani, intel-gfx@lists.freedesktop.org,
	intel-xe@lists.freedesktop.org



> -----Original Message-----
> From: Nikula, Jani <jani.nikula@intel.com>
> Sent: Friday, April 25, 2025 1:32 AM
> To: intel-gfx@lists.freedesktop.org; intel-xe@lists.freedesktop.org
> Cc: Nikula, Jani <jani.nikula@intel.com>; Kandpal, Suraj
> <suraj.kandpal@intel.com>
> Subject: [PATCH 09/10] drm/i915/hdcp: pass struct drm_device to driver
> specific HDCP GSC code
> 
> The driver specific HDCP GSC code will eventually be part of the driver cores
> rather than display. Remove the struct intel_display references from them, and
> pass struct drm_device instead.
> 
> Cc: Suraj Kandpal <suraj.kandpal@intel.com>
> Signed-off-by: Jani Nikula <jani.nikula@intel.com>
> ---
>  drivers/gpu/drm/i915/display/intel_hdcp.c        |  2 +-
>  drivers/gpu/drm/i915/display/intel_hdcp_gsc.c    | 12 ++++++------
>  drivers/gpu/drm/i915/display/intel_hdcp_gsc.h    |  6 +++---
>  .../drm/i915/display/intel_hdcp_gsc_message.c    |  2 +-
>  drivers/gpu/drm/xe/display/xe_hdcp_gsc.c         | 16 ++++++++--------
>  5 files changed, 19 insertions(+), 19 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/display/intel_hdcp.c
> b/drivers/gpu/drm/i915/display/intel_hdcp.c
> index 39bcf8f3d810..3e3038f4ee1f 100644
> --- a/drivers/gpu/drm/i915/display/intel_hdcp.c
> +++ b/drivers/gpu/drm/i915/display/intel_hdcp.c
> @@ -254,7 +254,7 @@ static bool intel_hdcp2_prerequisite(struct
> intel_connector *connector)
> 
>  	/* If MTL+ make sure gsc is loaded and proxy is setup */
>  	if (USE_HDCP_GSC(display)) {
> -		if (!intel_hdcp_gsc_check_status(display))
> +		if (!intel_hdcp_gsc_check_status(display->drm))
>  			return false;
>  	}
> 
> diff --git a/drivers/gpu/drm/i915/display/intel_hdcp_gsc.c
> b/drivers/gpu/drm/i915/display/intel_hdcp_gsc.c
> index 4194ef77f7c3..6a22862d6be1 100644
> --- a/drivers/gpu/drm/i915/display/intel_hdcp_gsc.c
> +++ b/drivers/gpu/drm/i915/display/intel_hdcp_gsc.c
> @@ -19,14 +19,14 @@ struct intel_hdcp_gsc_context {
>  	void *hdcp_cmd_out;
>  };
> 
> -bool intel_hdcp_gsc_check_status(struct intel_display *display)
> +bool intel_hdcp_gsc_check_status(struct drm_device *drm)
>  {

So the thing is this particular function won't be a part of the drm core seeing this actually is a intel specific
Check to see if gsc cs is present or not.

> -	struct drm_i915_private *i915 = to_i915(display->drm);
> +	struct drm_i915_private *i915 = to_i915(drm);
>  	struct intel_gt *gt = i915->media_gt;
>  	struct intel_gsc_uc *gsc = gt ? &gt->uc.gsc : NULL;
> 
>  	if (!gsc || !intel_uc_fw_is_running(&gsc->fw)) {
> -		drm_dbg_kms(display->drm,
> +		drm_dbg_kms(&i915->drm,
>  			    "GSC components required for HDCP2.2 are not
> ready\n");
>  		return false;
>  	}
> @@ -87,9 +87,9 @@ static int intel_hdcp_gsc_initialize_message(struct
> drm_i915_private *i915,
>  	return err;
>  }
> 
> -struct intel_hdcp_gsc_context *intel_hdcp_gsc_context_alloc(struct
> intel_display *display)
> +struct intel_hdcp_gsc_context *intel_hdcp_gsc_context_alloc(struct
> +drm_device *drm)

Same thing here this gsc context is the message we get to send to gsc cs
Again intel specific this initialization will be specific to each driver based on
Whom it wants to send this data(mei or some other fw component)
 Too or do the calculations on driver level itself.

>  {
> -	struct drm_i915_private *i915 = to_i915(display->drm);
> +	struct drm_i915_private *i915 = to_i915(drm);
>  	struct intel_hdcp_gsc_context *gsc_context;
>  	int ret;
> 
> @@ -103,7 +103,7 @@ struct intel_hdcp_gsc_context
> *intel_hdcp_gsc_context_alloc(struct intel_display
>  	 */
>  	ret = intel_hdcp_gsc_initialize_message(i915, gsc_context);
>  	if (ret) {
> -		drm_err(display->drm, "Could not initialize gsc_context\n");
> +		drm_err(&i915->drm, "Could not initialize gsc_context\n");
>  		kfree(gsc_context);
>  		gsc_context = ERR_PTR(ret);
>  	}
> diff --git a/drivers/gpu/drm/i915/display/intel_hdcp_gsc.h
> b/drivers/gpu/drm/i915/display/intel_hdcp_gsc.h
> index e963c1fcc39e..e014336aa2e4 100644
> --- a/drivers/gpu/drm/i915/display/intel_hdcp_gsc.h
> +++ b/drivers/gpu/drm/i915/display/intel_hdcp_gsc.h
> @@ -9,15 +9,15 @@
>  #include <linux/err.h>
>  #include <linux/types.h>
> 
> -struct intel_display;
> +struct drm_device;
>  struct intel_hdcp_gsc_context;
> 
>  ssize_t intel_hdcp_gsc_msg_send(struct intel_hdcp_gsc_context *gsc_context,
>  				void *msg_in, size_t msg_in_len,
>  				void *msg_out, size_t msg_out_len); -bool
> intel_hdcp_gsc_check_status(struct intel_display *display);
> +bool intel_hdcp_gsc_check_status(struct drm_device *drm);
> 
> -struct intel_hdcp_gsc_context *intel_hdcp_gsc_context_alloc(struct
> intel_display *display);
> +struct intel_hdcp_gsc_context *intel_hdcp_gsc_context_alloc(struct
> +drm_device *drm);
>  void intel_hdcp_gsc_context_free(struct intel_hdcp_gsc_context
> *gsc_context);
> 
>  #endif /* __INTEL_HDCP_GCS_H__ */
> diff --git a/drivers/gpu/drm/i915/display/intel_hdcp_gsc_message.c
> b/drivers/gpu/drm/i915/display/intel_hdcp_gsc_message.c
> index 4226e8705d2b..98967bb148e3 100644
> --- a/drivers/gpu/drm/i915/display/intel_hdcp_gsc_message.c
> +++ b/drivers/gpu/drm/i915/display/intel_hdcp_gsc_message.c
> @@ -645,7 +645,7 @@ int intel_hdcp_gsc_init(struct intel_display *display)
> 
>  	mutex_lock(&display->hdcp.hdcp_mutex);
> 
> -	gsc_context = intel_hdcp_gsc_context_alloc(display);
> +	gsc_context = intel_hdcp_gsc_context_alloc(display->drm);
>  	if (IS_ERR(gsc_context)) {
>  		ret = PTR_ERR(gsc_context);
>  		kfree(arbiter);
> diff --git a/drivers/gpu/drm/xe/display/xe_hdcp_gsc.c
> b/drivers/gpu/drm/xe/display/xe_hdcp_gsc.c
> index 078916072c10..b35a6f201d4a 100644
> --- a/drivers/gpu/drm/xe/display/xe_hdcp_gsc.c
> +++ b/drivers/gpu/drm/xe/display/xe_hdcp_gsc.c
> @@ -30,9 +30,9 @@ struct intel_hdcp_gsc_context {
> 
>  #define HDCP_GSC_HEADER_SIZE sizeof(struct intel_gsc_mtl_header)
> 
> -bool intel_hdcp_gsc_check_status(struct intel_display *display)
> +bool intel_hdcp_gsc_check_status(struct drm_device *drm)
>  {
> -	struct xe_device *xe = to_xe_device(display->drm);
> +	struct xe_device *xe = to_xe_device(drm);
>  	struct xe_tile *tile = xe_device_get_root_tile(xe);
>  	struct xe_gt *gt = tile->media_gt;
>  	struct xe_gsc *gsc = &gt->uc.gsc;
> @@ -64,10 +64,9 @@ bool intel_hdcp_gsc_check_status(struct intel_display
> *display)  }
> 
>  /*This function helps allocate memory for the command that we will send to
> gsc cs */ -static int intel_hdcp_gsc_initialize_message(struct intel_display
> *display,
> +static int intel_hdcp_gsc_initialize_message(struct xe_device *xe,
>  					     struct intel_hdcp_gsc_context
> *gsc_context)  {

Ditto 

Regards,
Suraj Kandpal

> -	struct xe_device *xe = to_xe_device(display->drm);
>  	struct xe_bo *bo = NULL;
>  	u64 cmd_in, cmd_out;
>  	int ret = 0;
> @@ -79,7 +78,7 @@ static int intel_hdcp_gsc_initialize_message(struct
> intel_display *display,
>  				  XE_BO_FLAG_GGTT);
> 
>  	if (IS_ERR(bo)) {
> -		drm_err(display->drm, "Failed to allocate bo for HDCP
> streaming command!\n");
> +		drm_err(&xe->drm, "Failed to allocate bo for HDCP streaming
> +command!\n");
>  		ret = PTR_ERR(bo);
>  		goto out;
>  	}
> @@ -97,8 +96,9 @@ static int intel_hdcp_gsc_initialize_message(struct
> intel_display *display,
>  	return ret;
>  }
> 
> -struct intel_hdcp_gsc_context *intel_hdcp_gsc_context_alloc(struct
> intel_display *display)
> +struct intel_hdcp_gsc_context *intel_hdcp_gsc_context_alloc(struct
> +drm_device *drm)
>  {
> +	struct xe_device *xe = to_xe_device(drm);
>  	struct intel_hdcp_gsc_context *gsc_context;
>  	int ret;
> 
> @@ -110,9 +110,9 @@ struct intel_hdcp_gsc_context
> *intel_hdcp_gsc_context_alloc(struct intel_display
>  	 * NOTE: No need to lock the comp mutex here as it is already
>  	 * going to be taken before this function called
>  	 */
> -	ret = intel_hdcp_gsc_initialize_message(display, gsc_context);
> +	ret = intel_hdcp_gsc_initialize_message(xe, gsc_context);
>  	if (ret) {
> -		drm_err(display->drm, "Could not initialize gsc_context\n");
> +		drm_err(&xe->drm, "Could not initialize gsc_context\n");
>  		kfree(gsc_context);
>  		gsc_context = ERR_PTR(ret);
>  	}
> --
> 2.39.5


^ permalink raw reply	[flat|nested] 29+ messages in thread

* RE: [PATCH 10/10] drm/i915/hdcp: drop unnecessary include from intel_hdcp_gsc.h
  2025-04-24 20:01 ` [PATCH 10/10] drm/i915/hdcp: drop unnecessary include from intel_hdcp_gsc.h Jani Nikula
@ 2025-05-02  9:19   ` Kandpal, Suraj
  0 siblings, 0 replies; 29+ messages in thread
From: Kandpal, Suraj @ 2025-05-02  9:19 UTC (permalink / raw)
  To: Nikula, Jani, intel-gfx@lists.freedesktop.org,
	intel-xe@lists.freedesktop.org

> Subject: [PATCH 10/10] drm/i915/hdcp: drop unnecessary include from
> intel_hdcp_gsc.h
> 
> Nothing in intel_hdcp_gsc.c needs linux/err.h. Remove it.
> 
> Cc: Suraj Kandpal <suraj.kandpal@intel.com>
> Signed-off-by: Jani Nikula <jani.nikula@intel.com>

LGTM,
Reviewed-by: Suraj Kandpal <suraj.kandpal@intel.com>

> ---
>  drivers/gpu/drm/i915/display/intel_hdcp_gsc.h | 1 -
>  1 file changed, 1 deletion(-)
> 
> diff --git a/drivers/gpu/drm/i915/display/intel_hdcp_gsc.h
> b/drivers/gpu/drm/i915/display/intel_hdcp_gsc.h
> index e014336aa2e4..9305c14aaffe 100644
> --- a/drivers/gpu/drm/i915/display/intel_hdcp_gsc.h
> +++ b/drivers/gpu/drm/i915/display/intel_hdcp_gsc.h
> @@ -6,7 +6,6 @@
>  #ifndef __INTEL_HDCP_GSC_H__
>  #define __INTEL_HDCP_GSC_H__
> 
> -#include <linux/err.h>
>  #include <linux/types.h>
> 
>  struct drm_device;
> --
> 2.39.5


^ permalink raw reply	[flat|nested] 29+ messages in thread

* RE: [PATCH 09/10] drm/i915/hdcp: pass struct drm_device to driver specific HDCP GSC code
  2025-05-02  9:18   ` Kandpal, Suraj
@ 2025-05-02  9:22     ` Jani Nikula
  2025-05-02  9:45       ` Kandpal, Suraj
  0 siblings, 1 reply; 29+ messages in thread
From: Jani Nikula @ 2025-05-02  9:22 UTC (permalink / raw)
  To: Kandpal, Suraj, intel-gfx@lists.freedesktop.org,
	intel-xe@lists.freedesktop.org

On Fri, 02 May 2025, "Kandpal, Suraj" <suraj.kandpal@intel.com> wrote:
>> -----Original Message-----
>> From: Nikula, Jani <jani.nikula@intel.com>
>> Sent: Friday, April 25, 2025 1:32 AM
>> To: intel-gfx@lists.freedesktop.org; intel-xe@lists.freedesktop.org
>> Cc: Nikula, Jani <jani.nikula@intel.com>; Kandpal, Suraj
>> <suraj.kandpal@intel.com>
>> Subject: [PATCH 09/10] drm/i915/hdcp: pass struct drm_device to driver
>> specific HDCP GSC code
>> 
>> The driver specific HDCP GSC code will eventually be part of the driver cores
>> rather than display. Remove the struct intel_display references from them, and
>> pass struct drm_device instead.
>> 
>> Cc: Suraj Kandpal <suraj.kandpal@intel.com>
>> Signed-off-by: Jani Nikula <jani.nikula@intel.com>
>> ---
>>  drivers/gpu/drm/i915/display/intel_hdcp.c        |  2 +-
>>  drivers/gpu/drm/i915/display/intel_hdcp_gsc.c    | 12 ++++++------
>>  drivers/gpu/drm/i915/display/intel_hdcp_gsc.h    |  6 +++---
>>  .../drm/i915/display/intel_hdcp_gsc_message.c    |  2 +-
>>  drivers/gpu/drm/xe/display/xe_hdcp_gsc.c         | 16 ++++++++--------
>>  5 files changed, 19 insertions(+), 19 deletions(-)
>> 
>> diff --git a/drivers/gpu/drm/i915/display/intel_hdcp.c
>> b/drivers/gpu/drm/i915/display/intel_hdcp.c
>> index 39bcf8f3d810..3e3038f4ee1f 100644
>> --- a/drivers/gpu/drm/i915/display/intel_hdcp.c
>> +++ b/drivers/gpu/drm/i915/display/intel_hdcp.c
>> @@ -254,7 +254,7 @@ static bool intel_hdcp2_prerequisite(struct
>> intel_connector *connector)
>> 
>>  	/* If MTL+ make sure gsc is loaded and proxy is setup */
>>  	if (USE_HDCP_GSC(display)) {
>> -		if (!intel_hdcp_gsc_check_status(display))
>> +		if (!intel_hdcp_gsc_check_status(display->drm))
>>  			return false;
>>  	}
>> 
>> diff --git a/drivers/gpu/drm/i915/display/intel_hdcp_gsc.c
>> b/drivers/gpu/drm/i915/display/intel_hdcp_gsc.c
>> index 4194ef77f7c3..6a22862d6be1 100644
>> --- a/drivers/gpu/drm/i915/display/intel_hdcp_gsc.c
>> +++ b/drivers/gpu/drm/i915/display/intel_hdcp_gsc.c
>> @@ -19,14 +19,14 @@ struct intel_hdcp_gsc_context {
>>  	void *hdcp_cmd_out;
>>  };
>> 
>> -bool intel_hdcp_gsc_check_status(struct intel_display *display)
>> +bool intel_hdcp_gsc_check_status(struct drm_device *drm)
>>  {
>
> So the thing is this particular function won't be a part of the drm core seeing this actually is a intel specific
> Check to see if gsc cs is present or not.

Not *drm* core, but i915 or xe "driver core", after display has been
split out.

With that clarification, does the patch make more sense? :)

BR,
Jani.


>
>> -	struct drm_i915_private *i915 = to_i915(display->drm);
>> +	struct drm_i915_private *i915 = to_i915(drm);
>>  	struct intel_gt *gt = i915->media_gt;
>>  	struct intel_gsc_uc *gsc = gt ? &gt->uc.gsc : NULL;
>> 
>>  	if (!gsc || !intel_uc_fw_is_running(&gsc->fw)) {
>> -		drm_dbg_kms(display->drm,
>> +		drm_dbg_kms(&i915->drm,
>>  			    "GSC components required for HDCP2.2 are not
>> ready\n");
>>  		return false;
>>  	}
>> @@ -87,9 +87,9 @@ static int intel_hdcp_gsc_initialize_message(struct
>> drm_i915_private *i915,
>>  	return err;
>>  }
>> 
>> -struct intel_hdcp_gsc_context *intel_hdcp_gsc_context_alloc(struct
>> intel_display *display)
>> +struct intel_hdcp_gsc_context *intel_hdcp_gsc_context_alloc(struct
>> +drm_device *drm)
>
> Same thing here this gsc context is the message we get to send to gsc cs
> Again intel specific this initialization will be specific to each driver based on
> Whom it wants to send this data(mei or some other fw component)
>  Too or do the calculations on driver level itself.
>
>>  {
>> -	struct drm_i915_private *i915 = to_i915(display->drm);
>> +	struct drm_i915_private *i915 = to_i915(drm);
>>  	struct intel_hdcp_gsc_context *gsc_context;
>>  	int ret;
>> 
>> @@ -103,7 +103,7 @@ struct intel_hdcp_gsc_context
>> *intel_hdcp_gsc_context_alloc(struct intel_display
>>  	 */
>>  	ret = intel_hdcp_gsc_initialize_message(i915, gsc_context);
>>  	if (ret) {
>> -		drm_err(display->drm, "Could not initialize gsc_context\n");
>> +		drm_err(&i915->drm, "Could not initialize gsc_context\n");
>>  		kfree(gsc_context);
>>  		gsc_context = ERR_PTR(ret);
>>  	}
>> diff --git a/drivers/gpu/drm/i915/display/intel_hdcp_gsc.h
>> b/drivers/gpu/drm/i915/display/intel_hdcp_gsc.h
>> index e963c1fcc39e..e014336aa2e4 100644
>> --- a/drivers/gpu/drm/i915/display/intel_hdcp_gsc.h
>> +++ b/drivers/gpu/drm/i915/display/intel_hdcp_gsc.h
>> @@ -9,15 +9,15 @@
>>  #include <linux/err.h>
>>  #include <linux/types.h>
>> 
>> -struct intel_display;
>> +struct drm_device;
>>  struct intel_hdcp_gsc_context;
>> 
>>  ssize_t intel_hdcp_gsc_msg_send(struct intel_hdcp_gsc_context *gsc_context,
>>  				void *msg_in, size_t msg_in_len,
>>  				void *msg_out, size_t msg_out_len); -bool
>> intel_hdcp_gsc_check_status(struct intel_display *display);
>> +bool intel_hdcp_gsc_check_status(struct drm_device *drm);
>> 
>> -struct intel_hdcp_gsc_context *intel_hdcp_gsc_context_alloc(struct
>> intel_display *display);
>> +struct intel_hdcp_gsc_context *intel_hdcp_gsc_context_alloc(struct
>> +drm_device *drm);
>>  void intel_hdcp_gsc_context_free(struct intel_hdcp_gsc_context
>> *gsc_context);
>> 
>>  #endif /* __INTEL_HDCP_GCS_H__ */
>> diff --git a/drivers/gpu/drm/i915/display/intel_hdcp_gsc_message.c
>> b/drivers/gpu/drm/i915/display/intel_hdcp_gsc_message.c
>> index 4226e8705d2b..98967bb148e3 100644
>> --- a/drivers/gpu/drm/i915/display/intel_hdcp_gsc_message.c
>> +++ b/drivers/gpu/drm/i915/display/intel_hdcp_gsc_message.c
>> @@ -645,7 +645,7 @@ int intel_hdcp_gsc_init(struct intel_display *display)
>> 
>>  	mutex_lock(&display->hdcp.hdcp_mutex);
>> 
>> -	gsc_context = intel_hdcp_gsc_context_alloc(display);
>> +	gsc_context = intel_hdcp_gsc_context_alloc(display->drm);
>>  	if (IS_ERR(gsc_context)) {
>>  		ret = PTR_ERR(gsc_context);
>>  		kfree(arbiter);
>> diff --git a/drivers/gpu/drm/xe/display/xe_hdcp_gsc.c
>> b/drivers/gpu/drm/xe/display/xe_hdcp_gsc.c
>> index 078916072c10..b35a6f201d4a 100644
>> --- a/drivers/gpu/drm/xe/display/xe_hdcp_gsc.c
>> +++ b/drivers/gpu/drm/xe/display/xe_hdcp_gsc.c
>> @@ -30,9 +30,9 @@ struct intel_hdcp_gsc_context {
>> 
>>  #define HDCP_GSC_HEADER_SIZE sizeof(struct intel_gsc_mtl_header)
>> 
>> -bool intel_hdcp_gsc_check_status(struct intel_display *display)
>> +bool intel_hdcp_gsc_check_status(struct drm_device *drm)
>>  {
>> -	struct xe_device *xe = to_xe_device(display->drm);
>> +	struct xe_device *xe = to_xe_device(drm);
>>  	struct xe_tile *tile = xe_device_get_root_tile(xe);
>>  	struct xe_gt *gt = tile->media_gt;
>>  	struct xe_gsc *gsc = &gt->uc.gsc;
>> @@ -64,10 +64,9 @@ bool intel_hdcp_gsc_check_status(struct intel_display
>> *display)  }
>> 
>>  /*This function helps allocate memory for the command that we will send to
>> gsc cs */ -static int intel_hdcp_gsc_initialize_message(struct intel_display
>> *display,
>> +static int intel_hdcp_gsc_initialize_message(struct xe_device *xe,
>>  					     struct intel_hdcp_gsc_context
>> *gsc_context)  {
>
> Ditto 
>
> Regards,
> Suraj Kandpal
>
>> -	struct xe_device *xe = to_xe_device(display->drm);
>>  	struct xe_bo *bo = NULL;
>>  	u64 cmd_in, cmd_out;
>>  	int ret = 0;
>> @@ -79,7 +78,7 @@ static int intel_hdcp_gsc_initialize_message(struct
>> intel_display *display,
>>  				  XE_BO_FLAG_GGTT);
>> 
>>  	if (IS_ERR(bo)) {
>> -		drm_err(display->drm, "Failed to allocate bo for HDCP
>> streaming command!\n");
>> +		drm_err(&xe->drm, "Failed to allocate bo for HDCP streaming
>> +command!\n");
>>  		ret = PTR_ERR(bo);
>>  		goto out;
>>  	}
>> @@ -97,8 +96,9 @@ static int intel_hdcp_gsc_initialize_message(struct
>> intel_display *display,
>>  	return ret;
>>  }
>> 
>> -struct intel_hdcp_gsc_context *intel_hdcp_gsc_context_alloc(struct
>> intel_display *display)
>> +struct intel_hdcp_gsc_context *intel_hdcp_gsc_context_alloc(struct
>> +drm_device *drm)
>>  {
>> +	struct xe_device *xe = to_xe_device(drm);
>>  	struct intel_hdcp_gsc_context *gsc_context;
>>  	int ret;
>> 
>> @@ -110,9 +110,9 @@ struct intel_hdcp_gsc_context
>> *intel_hdcp_gsc_context_alloc(struct intel_display
>>  	 * NOTE: No need to lock the comp mutex here as it is already
>>  	 * going to be taken before this function called
>>  	 */
>> -	ret = intel_hdcp_gsc_initialize_message(display, gsc_context);
>> +	ret = intel_hdcp_gsc_initialize_message(xe, gsc_context);
>>  	if (ret) {
>> -		drm_err(display->drm, "Could not initialize gsc_context\n");
>> +		drm_err(&xe->drm, "Could not initialize gsc_context\n");
>>  		kfree(gsc_context);
>>  		gsc_context = ERR_PTR(ret);
>>  	}
>> --
>> 2.39.5
>

-- 
Jani Nikula, Intel

^ permalink raw reply	[flat|nested] 29+ messages in thread

* RE: [PATCH 09/10] drm/i915/hdcp: pass struct drm_device to driver specific HDCP GSC code
  2025-05-02  9:22     ` Jani Nikula
@ 2025-05-02  9:45       ` Kandpal, Suraj
  2025-05-02 10:29         ` Jani Nikula
  0 siblings, 1 reply; 29+ messages in thread
From: Kandpal, Suraj @ 2025-05-02  9:45 UTC (permalink / raw)
  To: Nikula, Jani, intel-gfx@lists.freedesktop.org,
	intel-xe@lists.freedesktop.org



> -----Original Message-----
> From: Nikula, Jani <jani.nikula@intel.com>
> Sent: Friday, May 2, 2025 2:53 PM
> To: Kandpal, Suraj <suraj.kandpal@intel.com>; intel-gfx@lists.freedesktop.org;
> intel-xe@lists.freedesktop.org
> Subject: RE: [PATCH 09/10] drm/i915/hdcp: pass struct drm_device to driver
> specific HDCP GSC code
> 
> On Fri, 02 May 2025, "Kandpal, Suraj" <suraj.kandpal@intel.com> wrote:
> >> -----Original Message-----
> >> From: Nikula, Jani <jani.nikula@intel.com>
> >> Sent: Friday, April 25, 2025 1:32 AM
> >> To: intel-gfx@lists.freedesktop.org; intel-xe@lists.freedesktop.org
> >> Cc: Nikula, Jani <jani.nikula@intel.com>; Kandpal, Suraj
> >> <suraj.kandpal@intel.com>
> >> Subject: [PATCH 09/10] drm/i915/hdcp: pass struct drm_device to
> >> driver specific HDCP GSC code
> >>
> >> The driver specific HDCP GSC code will eventually be part of the
> >> driver cores rather than display. Remove the struct intel_display
> >> references from them, and pass struct drm_device instead.
> >>
> >> Cc: Suraj Kandpal <suraj.kandpal@intel.com>
> >> Signed-off-by: Jani Nikula <jani.nikula@intel.com>
> >> ---
> >>  drivers/gpu/drm/i915/display/intel_hdcp.c        |  2 +-
> >>  drivers/gpu/drm/i915/display/intel_hdcp_gsc.c    | 12 ++++++------
> >>  drivers/gpu/drm/i915/display/intel_hdcp_gsc.h    |  6 +++---
> >>  .../drm/i915/display/intel_hdcp_gsc_message.c    |  2 +-
> >>  drivers/gpu/drm/xe/display/xe_hdcp_gsc.c         | 16 ++++++++--------
> >>  5 files changed, 19 insertions(+), 19 deletions(-)
> >>
> >> diff --git a/drivers/gpu/drm/i915/display/intel_hdcp.c
> >> b/drivers/gpu/drm/i915/display/intel_hdcp.c
> >> index 39bcf8f3d810..3e3038f4ee1f 100644
> >> --- a/drivers/gpu/drm/i915/display/intel_hdcp.c
> >> +++ b/drivers/gpu/drm/i915/display/intel_hdcp.c
> >> @@ -254,7 +254,7 @@ static bool intel_hdcp2_prerequisite(struct
> >> intel_connector *connector)
> >>
> >>  	/* If MTL+ make sure gsc is loaded and proxy is setup */
> >>  	if (USE_HDCP_GSC(display)) {
> >> -		if (!intel_hdcp_gsc_check_status(display))
> >> +		if (!intel_hdcp_gsc_check_status(display->drm))
> >>  			return false;
> >>  	}
> >>
> >> diff --git a/drivers/gpu/drm/i915/display/intel_hdcp_gsc.c
> >> b/drivers/gpu/drm/i915/display/intel_hdcp_gsc.c
> >> index 4194ef77f7c3..6a22862d6be1 100644
> >> --- a/drivers/gpu/drm/i915/display/intel_hdcp_gsc.c
> >> +++ b/drivers/gpu/drm/i915/display/intel_hdcp_gsc.c
> >> @@ -19,14 +19,14 @@ struct intel_hdcp_gsc_context {
> >>  	void *hdcp_cmd_out;
> >>  };
> >>
> >> -bool intel_hdcp_gsc_check_status(struct intel_display *display)
> >> +bool intel_hdcp_gsc_check_status(struct drm_device *drm)
> >>  {
> >
> > So the thing is this particular function won't be a part of the drm
> > core seeing this actually is a intel specific Check to see if gsc cs is present or
> not.
> 
> Not *drm* core, but i915 or xe "driver core", after display has been split out.
> 
> With that clarification, does the patch make more sense? :)

Ahh ohkay

In that case
Reviewed-by: Suraj Kandpal <suraj.kandpal@intel.com>

> 
> BR,
> Jani.
> 
> 
> >
> >> -	struct drm_i915_private *i915 = to_i915(display->drm);
> >> +	struct drm_i915_private *i915 = to_i915(drm);
> >>  	struct intel_gt *gt = i915->media_gt;
> >>  	struct intel_gsc_uc *gsc = gt ? &gt->uc.gsc : NULL;
> >>
> >>  	if (!gsc || !intel_uc_fw_is_running(&gsc->fw)) {
> >> -		drm_dbg_kms(display->drm,
> >> +		drm_dbg_kms(&i915->drm,
> >>  			    "GSC components required for HDCP2.2 are not
> ready\n");
> >>  		return false;
> >>  	}
> >> @@ -87,9 +87,9 @@ static int intel_hdcp_gsc_initialize_message(struct
> >> drm_i915_private *i915,
> >>  	return err;
> >>  }
> >>
> >> -struct intel_hdcp_gsc_context *intel_hdcp_gsc_context_alloc(struct
> >> intel_display *display)
> >> +struct intel_hdcp_gsc_context *intel_hdcp_gsc_context_alloc(struct
> >> +drm_device *drm)
> >
> > Same thing here this gsc context is the message we get to send to gsc
> > cs Again intel specific this initialization will be specific to each
> > driver based on Whom it wants to send this data(mei or some other fw
> > component)  Too or do the calculations on driver level itself.
> >
> >>  {
> >> -	struct drm_i915_private *i915 = to_i915(display->drm);
> >> +	struct drm_i915_private *i915 = to_i915(drm);
> >>  	struct intel_hdcp_gsc_context *gsc_context;
> >>  	int ret;
> >>
> >> @@ -103,7 +103,7 @@ struct intel_hdcp_gsc_context
> >> *intel_hdcp_gsc_context_alloc(struct intel_display
> >>  	 */
> >>  	ret = intel_hdcp_gsc_initialize_message(i915, gsc_context);
> >>  	if (ret) {
> >> -		drm_err(display->drm, "Could not initialize gsc_context\n");
> >> +		drm_err(&i915->drm, "Could not initialize gsc_context\n");
> >>  		kfree(gsc_context);
> >>  		gsc_context = ERR_PTR(ret);
> >>  	}
> >> diff --git a/drivers/gpu/drm/i915/display/intel_hdcp_gsc.h
> >> b/drivers/gpu/drm/i915/display/intel_hdcp_gsc.h
> >> index e963c1fcc39e..e014336aa2e4 100644
> >> --- a/drivers/gpu/drm/i915/display/intel_hdcp_gsc.h
> >> +++ b/drivers/gpu/drm/i915/display/intel_hdcp_gsc.h
> >> @@ -9,15 +9,15 @@
> >>  #include <linux/err.h>
> >>  #include <linux/types.h>
> >>
> >> -struct intel_display;
> >> +struct drm_device;
> >>  struct intel_hdcp_gsc_context;
> >>
> >>  ssize_t intel_hdcp_gsc_msg_send(struct intel_hdcp_gsc_context
> *gsc_context,
> >>  				void *msg_in, size_t msg_in_len,
> >>  				void *msg_out, size_t msg_out_len); -bool
> >> intel_hdcp_gsc_check_status(struct intel_display *display);
> >> +bool intel_hdcp_gsc_check_status(struct drm_device *drm);
> >>
> >> -struct intel_hdcp_gsc_context *intel_hdcp_gsc_context_alloc(struct
> >> intel_display *display);
> >> +struct intel_hdcp_gsc_context *intel_hdcp_gsc_context_alloc(struct
> >> +drm_device *drm);
> >>  void intel_hdcp_gsc_context_free(struct intel_hdcp_gsc_context
> >> *gsc_context);
> >>
> >>  #endif /* __INTEL_HDCP_GCS_H__ */
> >> diff --git a/drivers/gpu/drm/i915/display/intel_hdcp_gsc_message.c
> >> b/drivers/gpu/drm/i915/display/intel_hdcp_gsc_message.c
> >> index 4226e8705d2b..98967bb148e3 100644
> >> --- a/drivers/gpu/drm/i915/display/intel_hdcp_gsc_message.c
> >> +++ b/drivers/gpu/drm/i915/display/intel_hdcp_gsc_message.c
> >> @@ -645,7 +645,7 @@ int intel_hdcp_gsc_init(struct intel_display
> >> *display)
> >>
> >>  	mutex_lock(&display->hdcp.hdcp_mutex);
> >>
> >> -	gsc_context = intel_hdcp_gsc_context_alloc(display);
> >> +	gsc_context = intel_hdcp_gsc_context_alloc(display->drm);
> >>  	if (IS_ERR(gsc_context)) {
> >>  		ret = PTR_ERR(gsc_context);
> >>  		kfree(arbiter);
> >> diff --git a/drivers/gpu/drm/xe/display/xe_hdcp_gsc.c
> >> b/drivers/gpu/drm/xe/display/xe_hdcp_gsc.c
> >> index 078916072c10..b35a6f201d4a 100644
> >> --- a/drivers/gpu/drm/xe/display/xe_hdcp_gsc.c
> >> +++ b/drivers/gpu/drm/xe/display/xe_hdcp_gsc.c
> >> @@ -30,9 +30,9 @@ struct intel_hdcp_gsc_context {
> >>
> >>  #define HDCP_GSC_HEADER_SIZE sizeof(struct intel_gsc_mtl_header)
> >>
> >> -bool intel_hdcp_gsc_check_status(struct intel_display *display)
> >> +bool intel_hdcp_gsc_check_status(struct drm_device *drm)
> >>  {
> >> -	struct xe_device *xe = to_xe_device(display->drm);
> >> +	struct xe_device *xe = to_xe_device(drm);
> >>  	struct xe_tile *tile = xe_device_get_root_tile(xe);
> >>  	struct xe_gt *gt = tile->media_gt;
> >>  	struct xe_gsc *gsc = &gt->uc.gsc;
> >> @@ -64,10 +64,9 @@ bool intel_hdcp_gsc_check_status(struct
> >> intel_display
> >> *display)  }
> >>
> >>  /*This function helps allocate memory for the command that we will
> >> send to gsc cs */ -static int
> >> intel_hdcp_gsc_initialize_message(struct intel_display *display,
> >> +static int intel_hdcp_gsc_initialize_message(struct xe_device *xe,
> >>  					     struct intel_hdcp_gsc_context
> >> *gsc_context)  {
> >
> > Ditto
> >
> > Regards,
> > Suraj Kandpal
> >
> >> -	struct xe_device *xe = to_xe_device(display->drm);
> >>  	struct xe_bo *bo = NULL;
> >>  	u64 cmd_in, cmd_out;
> >>  	int ret = 0;
> >> @@ -79,7 +78,7 @@ static int intel_hdcp_gsc_initialize_message(struct
> >> intel_display *display,
> >>  				  XE_BO_FLAG_GGTT);
> >>
> >>  	if (IS_ERR(bo)) {
> >> -		drm_err(display->drm, "Failed to allocate bo for HDCP
> >> streaming command!\n");
> >> +		drm_err(&xe->drm, "Failed to allocate bo for HDCP streaming
> >> +command!\n");
> >>  		ret = PTR_ERR(bo);
> >>  		goto out;
> >>  	}
> >> @@ -97,8 +96,9 @@ static int intel_hdcp_gsc_initialize_message(struct
> >> intel_display *display,
> >>  	return ret;
> >>  }
> >>
> >> -struct intel_hdcp_gsc_context *intel_hdcp_gsc_context_alloc(struct
> >> intel_display *display)
> >> +struct intel_hdcp_gsc_context *intel_hdcp_gsc_context_alloc(struct
> >> +drm_device *drm)
> >>  {
> >> +	struct xe_device *xe = to_xe_device(drm);
> >>  	struct intel_hdcp_gsc_context *gsc_context;
> >>  	int ret;
> >>
> >> @@ -110,9 +110,9 @@ struct intel_hdcp_gsc_context
> >> *intel_hdcp_gsc_context_alloc(struct intel_display
> >>  	 * NOTE: No need to lock the comp mutex here as it is already
> >>  	 * going to be taken before this function called
> >>  	 */
> >> -	ret = intel_hdcp_gsc_initialize_message(display, gsc_context);
> >> +	ret = intel_hdcp_gsc_initialize_message(xe, gsc_context);
> >>  	if (ret) {
> >> -		drm_err(display->drm, "Could not initialize gsc_context\n");
> >> +		drm_err(&xe->drm, "Could not initialize gsc_context\n");
> >>  		kfree(gsc_context);
> >>  		gsc_context = ERR_PTR(ret);
> >>  	}
> >> --
> >> 2.39.5
> >
> 
> --
> Jani Nikula, Intel

^ permalink raw reply	[flat|nested] 29+ messages in thread

* RE: [PATCH 09/10] drm/i915/hdcp: pass struct drm_device to driver specific HDCP GSC code
  2025-05-02  9:45       ` Kandpal, Suraj
@ 2025-05-02 10:29         ` Jani Nikula
  0 siblings, 0 replies; 29+ messages in thread
From: Jani Nikula @ 2025-05-02 10:29 UTC (permalink / raw)
  To: Kandpal, Suraj, intel-gfx@lists.freedesktop.org,
	intel-xe@lists.freedesktop.org

On Fri, 02 May 2025, "Kandpal, Suraj" <suraj.kandpal@intel.com> wrote:
>> -----Original Message-----
>> From: Nikula, Jani <jani.nikula@intel.com>
>> Sent: Friday, May 2, 2025 2:53 PM
>> To: Kandpal, Suraj <suraj.kandpal@intel.com>; intel-gfx@lists.freedesktop.org;
>> intel-xe@lists.freedesktop.org
>> Subject: RE: [PATCH 09/10] drm/i915/hdcp: pass struct drm_device to driver
>> specific HDCP GSC code
>> 
>> On Fri, 02 May 2025, "Kandpal, Suraj" <suraj.kandpal@intel.com> wrote:
>> >> -----Original Message-----
>> >> From: Nikula, Jani <jani.nikula@intel.com>
>> >> Sent: Friday, April 25, 2025 1:32 AM
>> >> To: intel-gfx@lists.freedesktop.org; intel-xe@lists.freedesktop.org
>> >> Cc: Nikula, Jani <jani.nikula@intel.com>; Kandpal, Suraj
>> >> <suraj.kandpal@intel.com>
>> >> Subject: [PATCH 09/10] drm/i915/hdcp: pass struct drm_device to
>> >> driver specific HDCP GSC code
>> >>
>> >> The driver specific HDCP GSC code will eventually be part of the
>> >> driver cores rather than display. Remove the struct intel_display
>> >> references from them, and pass struct drm_device instead.
>> >>
>> >> Cc: Suraj Kandpal <suraj.kandpal@intel.com>
>> >> Signed-off-by: Jani Nikula <jani.nikula@intel.com>
>> >> ---
>> >>  drivers/gpu/drm/i915/display/intel_hdcp.c        |  2 +-
>> >>  drivers/gpu/drm/i915/display/intel_hdcp_gsc.c    | 12 ++++++------
>> >>  drivers/gpu/drm/i915/display/intel_hdcp_gsc.h    |  6 +++---
>> >>  .../drm/i915/display/intel_hdcp_gsc_message.c    |  2 +-
>> >>  drivers/gpu/drm/xe/display/xe_hdcp_gsc.c         | 16 ++++++++--------
>> >>  5 files changed, 19 insertions(+), 19 deletions(-)
>> >>
>> >> diff --git a/drivers/gpu/drm/i915/display/intel_hdcp.c
>> >> b/drivers/gpu/drm/i915/display/intel_hdcp.c
>> >> index 39bcf8f3d810..3e3038f4ee1f 100644
>> >> --- a/drivers/gpu/drm/i915/display/intel_hdcp.c
>> >> +++ b/drivers/gpu/drm/i915/display/intel_hdcp.c
>> >> @@ -254,7 +254,7 @@ static bool intel_hdcp2_prerequisite(struct
>> >> intel_connector *connector)
>> >>
>> >>  	/* If MTL+ make sure gsc is loaded and proxy is setup */
>> >>  	if (USE_HDCP_GSC(display)) {
>> >> -		if (!intel_hdcp_gsc_check_status(display))
>> >> +		if (!intel_hdcp_gsc_check_status(display->drm))
>> >>  			return false;
>> >>  	}
>> >>
>> >> diff --git a/drivers/gpu/drm/i915/display/intel_hdcp_gsc.c
>> >> b/drivers/gpu/drm/i915/display/intel_hdcp_gsc.c
>> >> index 4194ef77f7c3..6a22862d6be1 100644
>> >> --- a/drivers/gpu/drm/i915/display/intel_hdcp_gsc.c
>> >> +++ b/drivers/gpu/drm/i915/display/intel_hdcp_gsc.c
>> >> @@ -19,14 +19,14 @@ struct intel_hdcp_gsc_context {
>> >>  	void *hdcp_cmd_out;
>> >>  };
>> >>
>> >> -bool intel_hdcp_gsc_check_status(struct intel_display *display)
>> >> +bool intel_hdcp_gsc_check_status(struct drm_device *drm)
>> >>  {
>> >
>> > So the thing is this particular function won't be a part of the drm
>> > core seeing this actually is a intel specific Check to see if gsc cs is present or
>> not.
>> 
>> Not *drm* core, but i915 or xe "driver core", after display has been split out.
>> 
>> With that clarification, does the patch make more sense? :)
>
> Ahh ohkay
>
> In that case
> Reviewed-by: Suraj Kandpal <suraj.kandpal@intel.com>

Thanks for the reviews, much appreciated. Series pushed to din now.

BR,
Jani.


-- 
Jani Nikula, Intel

^ permalink raw reply	[flat|nested] 29+ messages in thread

end of thread, other threads:[~2025-05-02 10:29 UTC | newest]

Thread overview: 29+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-04-24 20:01 [PATCH 00/10] drm/i915/hdcp: refactor HDCP GSC Jani Nikula
2025-04-24 20:01 ` [PATCH 01/10] drm/i915/hdcp: remove duplicate declarations Jani Nikula
2025-04-30  4:10   ` Kandpal, Suraj
2025-04-24 20:01 ` [PATCH 02/10] drm/i915/hdcp: deduplicate and refactor HDCP GSC ops initialization Jani Nikula
2025-05-02  3:33   ` Kandpal, Suraj
2025-04-24 20:01 ` [PATCH 03/10] drm/i915/hdcp: split HDCP GSC message alloc/save responsibilities Jani Nikula
2025-05-02  3:36   ` Kandpal, Suraj
2025-04-24 20:01 ` [PATCH 04/10] drm/i915/hdcp: rename struct intel_hdcp_gsc_message to intel_hdcp_gsc_context Jani Nikula
2025-04-30  4:35   ` Kandpal, Suraj
2025-04-30  9:13     ` Jani Nikula
2025-05-02  3:37       ` Kandpal, Suraj
2025-04-24 20:01 ` [PATCH 05/10] drm/i915/hdcp: rename HDCP GSC context alloc/free functions Jani Nikula
2025-05-02  3:43   ` Kandpal, Suraj
2025-04-24 20:01 ` [PATCH 06/10] drm/i915/hdcp: pass the context to the HDCP GSC message interface Jani Nikula
2025-05-02  9:08   ` Kandpal, Suraj
2025-04-24 20:01 ` [PATCH 07/10] drm/i915/hdcp: switch the HDCP GSC message interface from u8* to void* Jani Nikula
2025-04-30  4:25   ` Kandpal, Suraj
2025-04-24 20:01 ` [PATCH 08/10] drm/i915/hdcp: simplify HDCP GSC firmware usage selection Jani Nikula
2025-04-30  4:30   ` Kandpal, Suraj
2025-04-24 20:01 ` [PATCH 09/10] drm/i915/hdcp: pass struct drm_device to driver specific HDCP GSC code Jani Nikula
2025-05-02  9:18   ` Kandpal, Suraj
2025-05-02  9:22     ` Jani Nikula
2025-05-02  9:45       ` Kandpal, Suraj
2025-05-02 10:29         ` Jani Nikula
2025-04-24 20:01 ` [PATCH 10/10] drm/i915/hdcp: drop unnecessary include from intel_hdcp_gsc.h Jani Nikula
2025-05-02  9:19   ` Kandpal, Suraj
2025-04-24 21:01 ` ✗ Fi.CI.SPARSE: warning for drm/i915/hdcp: refactor HDCP GSC Patchwork
2025-04-24 21:24 ` ✓ i915.CI.BAT: success " Patchwork
2025-04-25  5:46 ` ✗ i915.CI.Full: failure " Patchwork

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox