[Intel-gfx] [RFC 6/7] drm/i915/pxp: Add PXP gsccs tee-link backend stubs

Alan Previn alan.previn.teres.alexis at intel.com
Wed Nov 23 22:34:09 UTC 2022


Add PXP gsccs tee-link backend using empty stubs for now.

Signed-off-by: Alan Previn <alan.previn.teres.alexis at intel.com>
---
 drivers/gpu/drm/i915/Makefile              |  3 +-
 drivers/gpu/drm/i915/pxp/intel_pxp_gsccs.c | 46 ++++++++++++++++++++++
 drivers/gpu/drm/i915/pxp/intel_pxp_gsccs.h | 13 ++++++
 drivers/gpu/drm/i915/pxp/intel_pxp_tee.c   | 14 +++++--
 4 files changed, 72 insertions(+), 4 deletions(-)
 create mode 100644 drivers/gpu/drm/i915/pxp/intel_pxp_gsccs.c
 create mode 100644 drivers/gpu/drm/i915/pxp/intel_pxp_gsccs.h

diff --git a/drivers/gpu/drm/i915/Makefile b/drivers/gpu/drm/i915/Makefile
index 6ed45d9145e8..05072d7a4ba4 100644
--- a/drivers/gpu/drm/i915/Makefile
+++ b/drivers/gpu/drm/i915/Makefile
@@ -320,7 +320,8 @@ i915-y += \
 	pxp/intel_pxp.o \
 	pxp/intel_pxp_tee.o \
 	pxp/intel_pxp_tee_mei.o \
-	pxp/intel_pxp_huc.o
+	pxp/intel_pxp_huc.o \
+	pxp/intel_pxp_gsccs.o
 
 i915-$(CONFIG_DRM_I915_PXP) += \
 	pxp/intel_pxp_cmd.o \
diff --git a/drivers/gpu/drm/i915/pxp/intel_pxp_gsccs.c b/drivers/gpu/drm/i915/pxp/intel_pxp_gsccs.c
new file mode 100644
index 000000000000..a4243272ca73
--- /dev/null
+++ b/drivers/gpu/drm/i915/pxp/intel_pxp_gsccs.c
@@ -0,0 +1,46 @@
+// SPDX-License-Identifier: MIT
+/*
+ * Copyright(c) 2022 Intel Corporation.
+ */
+
+#include "i915_drv.h"
+#include "intel_pxp.h"
+#include "intel_pxp_gsccs.h"
+
+static int gsccs_tee_send_message(struct intel_pxp *pxp,
+				  void *msg_in, size_t msg_in_size,
+				  void *msg_out, size_t msg_out_size_max,
+				  size_t *msg_out_len)
+{
+	return -ENODEV;
+}
+
+static int
+gsccs_tee_create_session(struct intel_pxp *pxp,
+			 int session_id)
+{
+	return -ENODEV;
+}
+
+static bool gsccs_tee_is_ready(struct intel_pxp *pxp)
+{
+	return false;
+}
+
+static void gsccs_tee_fini(struct intel_pxp *pxp)
+{
+}
+
+static int gsccs_tee_init(struct intel_pxp *pxp)
+{
+	return -ENODEV;
+}
+
+void intel_pxp_init_gsccs_tee_hooks(struct intel_pxp *pxp)
+{
+	pxp->tee_link.init = gsccs_tee_init;
+	pxp->tee_link.fini = gsccs_tee_fini;
+	pxp->tee_link.is_ready = gsccs_tee_is_ready;
+	pxp->tee_link.create_session = gsccs_tee_create_session;
+	pxp->tee_link.send_message = gsccs_tee_send_message;
+}
diff --git a/drivers/gpu/drm/i915/pxp/intel_pxp_gsccs.h b/drivers/gpu/drm/i915/pxp/intel_pxp_gsccs.h
new file mode 100644
index 000000000000..5fb9f2c042ff
--- /dev/null
+++ b/drivers/gpu/drm/i915/pxp/intel_pxp_gsccs.h
@@ -0,0 +1,13 @@
+/* SPDX-License-Identifier: MIT */
+/*
+ * Copyright(c) 2022, Intel Corporation. All rights reserved.
+ */
+
+#ifndef __INTEL_PXP_TEE_GSCCS_H__
+#define __INTEL_PXP_TEE_GSCCS_H__
+
+struct intel_pxp;
+
+void intel_pxp_init_gsccs_tee_hooks(struct intel_pxp *pxp);
+
+#endif /* __INTEL_PXP_TEE_GSCCS_H__ */
diff --git a/drivers/gpu/drm/i915/pxp/intel_pxp_tee.c b/drivers/gpu/drm/i915/pxp/intel_pxp_tee.c
index 1171f339643c..a4b7f6c7bc54 100644
--- a/drivers/gpu/drm/i915/pxp/intel_pxp_tee.c
+++ b/drivers/gpu/drm/i915/pxp/intel_pxp_tee.c
@@ -5,6 +5,7 @@
 
 #include "i915_drv.h"
 #include "intel_pxp.h"
+#include "intel_pxp_gsccs.h"
 #include "intel_pxp_tee.h"
 #include "intel_pxp_tee_mei.h"
 
@@ -51,6 +52,11 @@ bool intel_pxp_teelink_is_ready(struct intel_pxp *pxp)
 	return false;
 }
 
+static bool gt_supports_teelink_via_gsccs(struct intel_gt *gt)
+{
+	return (HAS_ENGINE(gt, GSC0));
+}
+
 static bool gt_supports_teelink_via_mei(struct intel_gt *gt)
 {
 	return (IS_ENABLED(CONFIG_INTEL_MEI_PXP) && !HAS_ENGINE(gt, GSC0));
@@ -61,11 +67,13 @@ int intel_pxp_teelink_init(struct intel_pxp *pxp)
 	struct intel_gt *gt = pxp_to_gt(pxp);
 	int ret = -ENOLINK;
 
-	if (!gt_supports_teelink_via_mei(gt))
+	if (gt_supports_teelink_via_mei(gt))
+		intel_pxp_init_mei_tee_hooks(pxp);
+	else if (gt_supports_teelink_via_gsccs(gt))
+		intel_pxp_init_gsccs_tee_hooks(pxp);
+	else
 		return -ENODEV;
 
-	intel_pxp_init_mei_tee_hooks(pxp);
-
 	if (pxp->tee_link.init)
 		ret = pxp->tee_link.init(pxp);
 	if (ret)
-- 
2.34.1



More information about the Intel-gfx mailing list