All of lore.kernel.org
 help / color / mirror / Atom feed
* [Intel-gfx] [PATCH 01/27] drm/i915/pxp: Introduce Intel PXP component
@ 2020-11-14  1:45 Sean Z Huang
  2020-11-14  1:45 ` [Intel-gfx] [PATCH 02/27] drm/i915/pxp: Enable PXP irq worker and callback stub Sean Z Huang
                   ` (26 more replies)
  0 siblings, 27 replies; 51+ messages in thread
From: Sean Z Huang @ 2020-11-14  1:45 UTC (permalink / raw)
  To: Intel-gfx; +Cc: Huang, Sean Z

From: "Huang, Sean Z" <sean.z.huang@intel.com>

PXP (Protected Xe Path) is an i915 componment, that
helps ring3 to establish the hardware protected session and
manage the status of each alive software session, as well as
the life cycle of each session.

By design PXP will expose ioctl so allow ring3 to create, set,
and destroy each session. It will also provide the communication
chanel to TEE (Trusted Execution Environment) for the protected
hardware session creation.

Signed-off-by: Huang, Sean Z <sean.z.huang@intel.com>
---
 drivers/gpu/drm/i915/Makefile        |  4 ++++
 drivers/gpu/drm/i915/i915_drv.c      |  4 ++++
 drivers/gpu/drm/i915/i915_drv.h      |  4 ++++
 drivers/gpu/drm/i915/pxp/intel_pxp.c | 20 ++++++++++++++++++++
 drivers/gpu/drm/i915/pxp/intel_pxp.h | 22 ++++++++++++++++++++++
 include/uapi/drm/i915_drm.h          |  5 +++++
 6 files changed, 59 insertions(+)
 create mode 100644 drivers/gpu/drm/i915/pxp/intel_pxp.c
 create mode 100644 drivers/gpu/drm/i915/pxp/intel_pxp.h

diff --git a/drivers/gpu/drm/i915/Makefile b/drivers/gpu/drm/i915/Makefile
index e5574e506a5c..8274fea96009 100644
--- a/drivers/gpu/drm/i915/Makefile
+++ b/drivers/gpu/drm/i915/Makefile
@@ -254,6 +254,10 @@ i915-y += \
 
 i915-y += i915_perf.o
 
+# Protected execution platform (PXP) support
+i915-y += \
+	pxp/intel_pxp.o
+
 # Post-mortem debug and GPU hang state capture
 i915-$(CONFIG_DRM_I915_CAPTURE_ERROR) += i915_gpu_error.o
 i915-$(CONFIG_DRM_I915_SELFTEST) += \
diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c
index f2389ba49c69..c8b9c42fcbd6 100644
--- a/drivers/gpu/drm/i915/i915_drv.c
+++ b/drivers/gpu/drm/i915/i915_drv.c
@@ -889,6 +889,8 @@ int i915_driver_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
 	if (ret)
 		goto out_cleanup_gem;
 
+	intel_pxp_init(i915);
+
 	i915_driver_register(i915);
 
 	enable_rpm_wakeref_asserts(&i915->runtime_pm);
@@ -938,6 +940,8 @@ void i915_driver_remove(struct drm_i915_private *i915)
 	/* Flush any external code that still may be under the RCU lock */
 	synchronize_rcu();
 
+	intel_pxp_uninit(i915);
+
 	i915_gem_suspend(i915);
 
 	drm_atomic_helper_shutdown(&i915->drm);
diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
index 15be8debae54..f34ed07a68ee 100644
--- a/drivers/gpu/drm/i915/i915_drv.h
+++ b/drivers/gpu/drm/i915/i915_drv.h
@@ -105,6 +105,8 @@
 
 #include "intel_region_lmem.h"
 
+#include "pxp/intel_pxp.h"
+
 /* General customization:
  */
 
@@ -1215,6 +1217,8 @@ struct drm_i915_private {
 	/* Mutex to protect the above hdcp component related values. */
 	struct mutex hdcp_comp_mutex;
 
+	struct intel_pxp pxp;
+
 	I915_SELFTEST_DECLARE(struct i915_selftest_stash selftest;)
 
 	/*
diff --git a/drivers/gpu/drm/i915/pxp/intel_pxp.c b/drivers/gpu/drm/i915/pxp/intel_pxp.c
new file mode 100644
index 000000000000..a469c55e3e54
--- /dev/null
+++ b/drivers/gpu/drm/i915/pxp/intel_pxp.c
@@ -0,0 +1,20 @@
+/* SPDX-License-Identifier: MIT */
+/*
+ * Copyright(c) 2020 Intel Corporation.
+ */
+
+#include "i915_drv.h"
+#include "intel_pxp.h"
+
+int intel_pxp_init(struct drm_i915_private *i915)
+{
+	int ret;
+
+	drm_info(&i915->drm, "i915_pxp_init\n");
+
+	return ret;
+}
+
+void intel_pxp_uninit(struct drm_i915_private *i915)
+{
+}
diff --git a/drivers/gpu/drm/i915/pxp/intel_pxp.h b/drivers/gpu/drm/i915/pxp/intel_pxp.h
new file mode 100644
index 000000000000..578f1126bada
--- /dev/null
+++ b/drivers/gpu/drm/i915/pxp/intel_pxp.h
@@ -0,0 +1,22 @@
+/* SPDX-License-Identifier: MIT */
+/*
+ * Copyright(c) 2020, Intel Corporation. All rights reserved.
+ */
+
+#ifndef __INTEL_PXP_H__
+#define __INTEL_PXP_H__
+
+#include <drm/drm_file.h>
+
+struct pxp_context;
+
+struct intel_pxp {
+	struct pxp_context *r0ctx;
+};
+
+struct drm_i915_private;
+
+int intel_pxp_init(struct drm_i915_private *i915);
+void intel_pxp_uninit(struct drm_i915_private *i915);
+
+#endif
diff --git a/include/uapi/drm/i915_drm.h b/include/uapi/drm/i915_drm.h
index fa1f3d62f9a6..dc101264176b 100644
--- a/include/uapi/drm/i915_drm.h
+++ b/include/uapi/drm/i915_drm.h
@@ -1898,6 +1898,11 @@ struct drm_i915_gem_vm_control {
 	__u32 vm_id;
 };
 
+struct drm_i915_pxp_ops {
+	__u64 pxp_info_ptr;
+	__u32 pxp_info_size;
+};
+
 struct drm_i915_reg_read {
 	/*
 	 * Register offset.
-- 
2.17.1

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply related	[flat|nested] 51+ messages in thread
* Re: [Intel-gfx] [PATCH 05/27] drm/i915/pxp: Enable ioctl action to set the ring3 context
@ 2020-11-14 11:03 kernel test robot
  0 siblings, 0 replies; 51+ messages in thread
From: kernel test robot @ 2020-11-14 11:03 UTC (permalink / raw)
  To: kbuild

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

CC: kbuild-all(a)lists.01.org
In-Reply-To: <20201114014537.25495-5-sean.z.huang@intel.com>
References: <20201114014537.25495-5-sean.z.huang@intel.com>
TO: Sean Z Huang <sean.z.huang@intel.com>
TO: Intel-gfx(a)lists.freedesktop.org
CC: "Huang, Sean Z" <sean.z.huang@intel.com>

Hi Sean,

Thank you for the patch! Perhaps something to improve:

[auto build test WARNING on next-20201113]
[also build test WARNING on v5.10-rc3]
[cannot apply to drm-intel/for-linux-next char-misc/char-misc-testing v5.10-rc3 v5.10-rc2 v5.10-rc1]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]

url:    https://github.com/0day-ci/linux/commits/Sean-Z-Huang/drm-i915-pxp-Introduce-Intel-PXP-component/20201114-094926
base:    92edc4aef86780a8ad01b092c6d6630bb3cb423d
:::::: branch date: 9 hours ago
:::::: commit date: 9 hours ago
config: i386-randconfig-c001-20201113 (attached as .config)
compiler: gcc-9 (Debian 9.3.0-15) 9.3.0

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
Reported-by: Julia Lawall <julia.lawall@lip6.fr>


"coccinelle warnings: (new ones prefixed by >>)"
>> drivers/gpu/drm/i915/pxp/intel_pxp.c:21:17-20: ERROR: i915 is NULL but dereferenced.

vim +21 drivers/gpu/drm/i915/pxp/intel_pxp.c

a9c9ffc6ce4f8b0 Huang, Sean Z 2020-11-13  10  
1d109ada10e82c3 Huang, Sean Z 2020-11-13  11  int i915_pxp_ops_ioctl(struct drm_device *dev, void *data, struct drm_file *drmfile)
1d109ada10e82c3 Huang, Sean Z 2020-11-13  12  {
1d109ada10e82c3 Huang, Sean Z 2020-11-13  13  	int ret;
1d109ada10e82c3 Huang, Sean Z 2020-11-13  14  	struct pxp_info pxp_info = {0};
1d109ada10e82c3 Huang, Sean Z 2020-11-13  15  	struct drm_i915_pxp_ops *pxp_ops = data;
1d109ada10e82c3 Huang, Sean Z 2020-11-13  16  	struct drm_i915_private *i915 = to_i915(dev);
1d109ada10e82c3 Huang, Sean Z 2020-11-13  17  
1d109ada10e82c3 Huang, Sean Z 2020-11-13  18  	drm_dbg(&i915->drm, ">>> %s\n", __func__);
1d109ada10e82c3 Huang, Sean Z 2020-11-13  19  
1d109ada10e82c3 Huang, Sean Z 2020-11-13  20  	if (!i915 || !drmfile || !pxp_ops || pxp_ops->pxp_info_size != sizeof(pxp_info)) {
1d109ada10e82c3 Huang, Sean Z 2020-11-13 @21  		drm_dbg(&i915->drm, "Failed to %s, invalid params\n", __func__);
1d109ada10e82c3 Huang, Sean Z 2020-11-13  22  		ret = -EINVAL;
1d109ada10e82c3 Huang, Sean Z 2020-11-13  23  		goto end;
1d109ada10e82c3 Huang, Sean Z 2020-11-13  24  	}
1d109ada10e82c3 Huang, Sean Z 2020-11-13  25  
1d109ada10e82c3 Huang, Sean Z 2020-11-13  26  	if (copy_from_user(&pxp_info, (void __user *)pxp_ops->pxp_info_ptr, sizeof(pxp_info)) != 0) {
1d109ada10e82c3 Huang, Sean Z 2020-11-13  27  		ret = -EFAULT;
1d109ada10e82c3 Huang, Sean Z 2020-11-13  28  		goto end;
1d109ada10e82c3 Huang, Sean Z 2020-11-13  29  	}
1d109ada10e82c3 Huang, Sean Z 2020-11-13  30  
1d109ada10e82c3 Huang, Sean Z 2020-11-13  31  	drm_dbg(&i915->drm, "i915 pxp ioctl call with action=[%d]\n", pxp_info.action);
1d109ada10e82c3 Huang, Sean Z 2020-11-13  32  
1d109ada10e82c3 Huang, Sean Z 2020-11-13  33  	mutex_lock(&i915->pxp.r0ctx->ctx_mutex);
1d109ada10e82c3 Huang, Sean Z 2020-11-13  34  
1d109ada10e82c3 Huang, Sean Z 2020-11-13  35  	if (i915->pxp.r0ctx->global_state_in_suspend) {
1d109ada10e82c3 Huang, Sean Z 2020-11-13  36  		drm_dbg(&i915->drm, "Return failure due to state in suspend\n");
1d109ada10e82c3 Huang, Sean Z 2020-11-13  37  		pxp_info.sm_status = PXP_SM_STATUS_SESSION_NOT_AVAILABLE;
1d109ada10e82c3 Huang, Sean Z 2020-11-13  38  		ret = 0;
1d109ada10e82c3 Huang, Sean Z 2020-11-13  39  		goto end;
1d109ada10e82c3 Huang, Sean Z 2020-11-13  40  	}
1d109ada10e82c3 Huang, Sean Z 2020-11-13  41  
1d109ada10e82c3 Huang, Sean Z 2020-11-13  42  	if (i915->pxp.r0ctx->global_state_attacked) {
1d109ada10e82c3 Huang, Sean Z 2020-11-13  43  		drm_dbg(&i915->drm, "Retry required due to state attacked\n");
1d109ada10e82c3 Huang, Sean Z 2020-11-13  44  		pxp_info.sm_status = PXP_SM_STATUS_RETRY_REQUIRED;
1d109ada10e82c3 Huang, Sean Z 2020-11-13  45  		ret = 0;
1d109ada10e82c3 Huang, Sean Z 2020-11-13  46  		goto end;
1d109ada10e82c3 Huang, Sean Z 2020-11-13  47  	}
1d109ada10e82c3 Huang, Sean Z 2020-11-13  48  
1d109ada10e82c3 Huang, Sean Z 2020-11-13  49  	switch (pxp_info.action) {
1d109ada10e82c3 Huang, Sean Z 2020-11-13  50  	case PXP_ACTION_SET_R3_CONTEXT:
1d109ada10e82c3 Huang, Sean Z 2020-11-13  51  	{
1d109ada10e82c3 Huang, Sean Z 2020-11-13  52  		ret = intel_pxp_set_r3ctx(i915, pxp_info.set_r3ctx);
1d109ada10e82c3 Huang, Sean Z 2020-11-13  53  		break;
1d109ada10e82c3 Huang, Sean Z 2020-11-13  54  	}
1d109ada10e82c3 Huang, Sean Z 2020-11-13  55  	default:
1d109ada10e82c3 Huang, Sean Z 2020-11-13  56  		drm_dbg(&i915->drm, "Failed to %s due to bad params\n", __func__);
1d109ada10e82c3 Huang, Sean Z 2020-11-13  57  		ret = -EINVAL;
1d109ada10e82c3 Huang, Sean Z 2020-11-13  58  		goto end;
1d109ada10e82c3 Huang, Sean Z 2020-11-13  59  	}
1d109ada10e82c3 Huang, Sean Z 2020-11-13  60  
1d109ada10e82c3 Huang, Sean Z 2020-11-13  61  end:
1d109ada10e82c3 Huang, Sean Z 2020-11-13  62  	mutex_unlock(&i915->pxp.r0ctx->ctx_mutex);
1d109ada10e82c3 Huang, Sean Z 2020-11-13  63  
1d109ada10e82c3 Huang, Sean Z 2020-11-13  64  	if (ret == 0)
1d109ada10e82c3 Huang, Sean Z 2020-11-13  65  		if (copy_to_user((void __user *)pxp_ops->pxp_info_ptr, &pxp_info, sizeof(pxp_info)) != 0)
1d109ada10e82c3 Huang, Sean Z 2020-11-13  66  			ret = -EFAULT;
1d109ada10e82c3 Huang, Sean Z 2020-11-13  67  
1d109ada10e82c3 Huang, Sean Z 2020-11-13  68  	if (ret)
1d109ada10e82c3 Huang, Sean Z 2020-11-13  69  		dev_err(&dev->pdev->dev, "pid=%d, ret = %d\n", task_pid_nr(current), ret);
1d109ada10e82c3 Huang, Sean Z 2020-11-13  70  
1d109ada10e82c3 Huang, Sean Z 2020-11-13  71  	drm_dbg(&i915->drm, "<<< %s\n", __func__);
1d109ada10e82c3 Huang, Sean Z 2020-11-13  72  	return ret;
1d109ada10e82c3 Huang, Sean Z 2020-11-13  73  }
1d109ada10e82c3 Huang, Sean Z 2020-11-13  74  

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org

[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 36612 bytes --]

^ permalink raw reply	[flat|nested] 51+ messages in thread
* Re: [Intel-gfx] [PATCH 05/27] drm/i915/pxp: Enable ioctl action to set the ring3 context
@ 2020-11-15  7:34 kernel test robot
  0 siblings, 0 replies; 51+ messages in thread
From: kernel test robot @ 2020-11-15  7:34 UTC (permalink / raw)
  To: kbuild

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

CC: kbuild-all(a)lists.01.org
In-Reply-To: <20201114014537.25495-5-sean.z.huang@intel.com>
References: <20201114014537.25495-5-sean.z.huang@intel.com>
TO: Sean Z Huang <sean.z.huang@intel.com>
TO: Intel-gfx(a)lists.freedesktop.org
CC: "Huang, Sean Z" <sean.z.huang@intel.com>

Hi Sean,

Thank you for the patch! Perhaps something to improve:

[auto build test WARNING on next-20201113]
[also build test WARNING on v5.10-rc3]
[cannot apply to drm-intel/for-linux-next char-misc/char-misc-testing v5.10-rc3 v5.10-rc2 v5.10-rc1]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]

url:    https://github.com/0day-ci/linux/commits/Sean-Z-Huang/drm-i915-pxp-Introduce-Intel-PXP-component/20201114-094926
base:    92edc4aef86780a8ad01b092c6d6630bb3cb423d
:::::: branch date: 30 hours ago
:::::: commit date: 30 hours ago
config: i386-randconfig-m021-20201115 (attached as .config)
compiler: gcc-9 (Debian 9.3.0-15) 9.3.0

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
Reported-by: Dan Carpenter <dan.carpenter@oracle.com>

smatch warnings:
drivers/gpu/drm/i915/pxp/intel_pxp.c:62 i915_pxp_ops_ioctl() error: we previously assumed 'i915' could be null (see line 20)

vim +/i915 +62 drivers/gpu/drm/i915/pxp/intel_pxp.c

a9c9ffc6ce4f8b0 Huang, Sean Z 2020-11-13  10  
1d109ada10e82c3 Huang, Sean Z 2020-11-13  11  int i915_pxp_ops_ioctl(struct drm_device *dev, void *data, struct drm_file *drmfile)
1d109ada10e82c3 Huang, Sean Z 2020-11-13  12  {
1d109ada10e82c3 Huang, Sean Z 2020-11-13  13  	int ret;
1d109ada10e82c3 Huang, Sean Z 2020-11-13  14  	struct pxp_info pxp_info = {0};
1d109ada10e82c3 Huang, Sean Z 2020-11-13  15  	struct drm_i915_pxp_ops *pxp_ops = data;
1d109ada10e82c3 Huang, Sean Z 2020-11-13  16  	struct drm_i915_private *i915 = to_i915(dev);
1d109ada10e82c3 Huang, Sean Z 2020-11-13  17  
1d109ada10e82c3 Huang, Sean Z 2020-11-13  18  	drm_dbg(&i915->drm, ">>> %s\n", __func__);
1d109ada10e82c3 Huang, Sean Z 2020-11-13  19  
1d109ada10e82c3 Huang, Sean Z 2020-11-13 @20  	if (!i915 || !drmfile || !pxp_ops || pxp_ops->pxp_info_size != sizeof(pxp_info)) {
1d109ada10e82c3 Huang, Sean Z 2020-11-13  21  		drm_dbg(&i915->drm, "Failed to %s, invalid params\n", __func__);
1d109ada10e82c3 Huang, Sean Z 2020-11-13  22  		ret = -EINVAL;
1d109ada10e82c3 Huang, Sean Z 2020-11-13  23  		goto end;
1d109ada10e82c3 Huang, Sean Z 2020-11-13  24  	}
1d109ada10e82c3 Huang, Sean Z 2020-11-13  25  
1d109ada10e82c3 Huang, Sean Z 2020-11-13  26  	if (copy_from_user(&pxp_info, (void __user *)pxp_ops->pxp_info_ptr, sizeof(pxp_info)) != 0) {
1d109ada10e82c3 Huang, Sean Z 2020-11-13  27  		ret = -EFAULT;
1d109ada10e82c3 Huang, Sean Z 2020-11-13  28  		goto end;
1d109ada10e82c3 Huang, Sean Z 2020-11-13  29  	}
1d109ada10e82c3 Huang, Sean Z 2020-11-13  30  
1d109ada10e82c3 Huang, Sean Z 2020-11-13  31  	drm_dbg(&i915->drm, "i915 pxp ioctl call with action=[%d]\n", pxp_info.action);
1d109ada10e82c3 Huang, Sean Z 2020-11-13  32  
1d109ada10e82c3 Huang, Sean Z 2020-11-13  33  	mutex_lock(&i915->pxp.r0ctx->ctx_mutex);
1d109ada10e82c3 Huang, Sean Z 2020-11-13  34  
1d109ada10e82c3 Huang, Sean Z 2020-11-13  35  	if (i915->pxp.r0ctx->global_state_in_suspend) {
1d109ada10e82c3 Huang, Sean Z 2020-11-13  36  		drm_dbg(&i915->drm, "Return failure due to state in suspend\n");
1d109ada10e82c3 Huang, Sean Z 2020-11-13  37  		pxp_info.sm_status = PXP_SM_STATUS_SESSION_NOT_AVAILABLE;
1d109ada10e82c3 Huang, Sean Z 2020-11-13  38  		ret = 0;
1d109ada10e82c3 Huang, Sean Z 2020-11-13  39  		goto end;
1d109ada10e82c3 Huang, Sean Z 2020-11-13  40  	}
1d109ada10e82c3 Huang, Sean Z 2020-11-13  41  
1d109ada10e82c3 Huang, Sean Z 2020-11-13  42  	if (i915->pxp.r0ctx->global_state_attacked) {
1d109ada10e82c3 Huang, Sean Z 2020-11-13  43  		drm_dbg(&i915->drm, "Retry required due to state attacked\n");
1d109ada10e82c3 Huang, Sean Z 2020-11-13  44  		pxp_info.sm_status = PXP_SM_STATUS_RETRY_REQUIRED;
1d109ada10e82c3 Huang, Sean Z 2020-11-13  45  		ret = 0;
1d109ada10e82c3 Huang, Sean Z 2020-11-13  46  		goto end;
1d109ada10e82c3 Huang, Sean Z 2020-11-13  47  	}
1d109ada10e82c3 Huang, Sean Z 2020-11-13  48  
1d109ada10e82c3 Huang, Sean Z 2020-11-13  49  	switch (pxp_info.action) {
1d109ada10e82c3 Huang, Sean Z 2020-11-13  50  	case PXP_ACTION_SET_R3_CONTEXT:
1d109ada10e82c3 Huang, Sean Z 2020-11-13  51  	{
1d109ada10e82c3 Huang, Sean Z 2020-11-13  52  		ret = intel_pxp_set_r3ctx(i915, pxp_info.set_r3ctx);
1d109ada10e82c3 Huang, Sean Z 2020-11-13  53  		break;
1d109ada10e82c3 Huang, Sean Z 2020-11-13  54  	}
1d109ada10e82c3 Huang, Sean Z 2020-11-13  55  	default:
1d109ada10e82c3 Huang, Sean Z 2020-11-13  56  		drm_dbg(&i915->drm, "Failed to %s due to bad params\n", __func__);
1d109ada10e82c3 Huang, Sean Z 2020-11-13  57  		ret = -EINVAL;
1d109ada10e82c3 Huang, Sean Z 2020-11-13  58  		goto end;
1d109ada10e82c3 Huang, Sean Z 2020-11-13  59  	}
1d109ada10e82c3 Huang, Sean Z 2020-11-13  60  
1d109ada10e82c3 Huang, Sean Z 2020-11-13  61  end:
1d109ada10e82c3 Huang, Sean Z 2020-11-13 @62  	mutex_unlock(&i915->pxp.r0ctx->ctx_mutex);
1d109ada10e82c3 Huang, Sean Z 2020-11-13  63  
1d109ada10e82c3 Huang, Sean Z 2020-11-13  64  	if (ret == 0)
1d109ada10e82c3 Huang, Sean Z 2020-11-13  65  		if (copy_to_user((void __user *)pxp_ops->pxp_info_ptr, &pxp_info, sizeof(pxp_info)) != 0)
1d109ada10e82c3 Huang, Sean Z 2020-11-13  66  			ret = -EFAULT;
1d109ada10e82c3 Huang, Sean Z 2020-11-13  67  
1d109ada10e82c3 Huang, Sean Z 2020-11-13  68  	if (ret)
1d109ada10e82c3 Huang, Sean Z 2020-11-13  69  		dev_err(&dev->pdev->dev, "pid=%d, ret = %d\n", task_pid_nr(current), ret);
1d109ada10e82c3 Huang, Sean Z 2020-11-13  70  
1d109ada10e82c3 Huang, Sean Z 2020-11-13  71  	drm_dbg(&i915->drm, "<<< %s\n", __func__);
1d109ada10e82c3 Huang, Sean Z 2020-11-13  72  	return ret;
1d109ada10e82c3 Huang, Sean Z 2020-11-13  73  }
1d109ada10e82c3 Huang, Sean Z 2020-11-13  74  

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org

[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 46446 bytes --]

^ permalink raw reply	[flat|nested] 51+ messages in thread
* [Intel-gfx] [PATCH 01/27] drm/i915/pxp: Introduce Intel PXP component
@ 2020-11-15 20:23 Huang, Sean Z
  2020-11-15 20:23 ` [Intel-gfx] [PATCH 05/27] drm/i915/pxp: Enable ioctl action to set the ring3 context Huang, Sean Z
  0 siblings, 1 reply; 51+ messages in thread
From: Huang, Sean Z @ 2020-11-15 20:23 UTC (permalink / raw)
  To: Intel-gfx

PXP (Protected Xe Path) is an i915 componment, that
helps ring3 to establish the hardware protected session and
manage the status of each alive software session, as well as
the life cycle of each session.

By design PXP will expose ioctl so allow ring3 to create, set,
and destroy each session. It will also provide the communication
chanel to TEE (Trusted Execution Environment) for the protected
hardware session creation.

Signed-off-by: Huang, Sean Z <sean.z.huang@intel.com>
---
 drivers/gpu/drm/i915/Makefile        |  4 ++++
 drivers/gpu/drm/i915/i915_drv.c      |  4 ++++
 drivers/gpu/drm/i915/i915_drv.h      |  4 ++++
 drivers/gpu/drm/i915/pxp/intel_pxp.c | 20 ++++++++++++++++++++
 drivers/gpu/drm/i915/pxp/intel_pxp.h | 22 ++++++++++++++++++++++
 include/uapi/drm/i915_drm.h          |  5 +++++
 6 files changed, 59 insertions(+)
 create mode 100644 drivers/gpu/drm/i915/pxp/intel_pxp.c
 create mode 100644 drivers/gpu/drm/i915/pxp/intel_pxp.h

diff --git a/drivers/gpu/drm/i915/Makefile b/drivers/gpu/drm/i915/Makefile
index e5574e506a5c..8274fea96009 100644
--- a/drivers/gpu/drm/i915/Makefile
+++ b/drivers/gpu/drm/i915/Makefile
@@ -254,6 +254,10 @@ i915-y += \
 
 i915-y += i915_perf.o
 
+# Protected execution platform (PXP) support
+i915-y += \
+	pxp/intel_pxp.o
+
 # Post-mortem debug and GPU hang state capture
 i915-$(CONFIG_DRM_I915_CAPTURE_ERROR) += i915_gpu_error.o
 i915-$(CONFIG_DRM_I915_SELFTEST) += \
diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c
index f2389ba49c69..c8b9c42fcbd6 100644
--- a/drivers/gpu/drm/i915/i915_drv.c
+++ b/drivers/gpu/drm/i915/i915_drv.c
@@ -889,6 +889,8 @@ int i915_driver_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
 	if (ret)
 		goto out_cleanup_gem;
 
+	intel_pxp_init(i915);
+
 	i915_driver_register(i915);
 
 	enable_rpm_wakeref_asserts(&i915->runtime_pm);
@@ -938,6 +940,8 @@ void i915_driver_remove(struct drm_i915_private *i915)
 	/* Flush any external code that still may be under the RCU lock */
 	synchronize_rcu();
 
+	intel_pxp_uninit(i915);
+
 	i915_gem_suspend(i915);
 
 	drm_atomic_helper_shutdown(&i915->drm);
diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
index 15be8debae54..f34ed07a68ee 100644
--- a/drivers/gpu/drm/i915/i915_drv.h
+++ b/drivers/gpu/drm/i915/i915_drv.h
@@ -105,6 +105,8 @@
 
 #include "intel_region_lmem.h"
 
+#include "pxp/intel_pxp.h"
+
 /* General customization:
  */
 
@@ -1215,6 +1217,8 @@ struct drm_i915_private {
 	/* Mutex to protect the above hdcp component related values. */
 	struct mutex hdcp_comp_mutex;
 
+	struct intel_pxp pxp;
+
 	I915_SELFTEST_DECLARE(struct i915_selftest_stash selftest;)
 
 	/*
diff --git a/drivers/gpu/drm/i915/pxp/intel_pxp.c b/drivers/gpu/drm/i915/pxp/intel_pxp.c
new file mode 100644
index 000000000000..a469c55e3e54
--- /dev/null
+++ b/drivers/gpu/drm/i915/pxp/intel_pxp.c
@@ -0,0 +1,20 @@
+/* SPDX-License-Identifier: MIT */
+/*
+ * Copyright(c) 2020 Intel Corporation.
+ */
+
+#include "i915_drv.h"
+#include "intel_pxp.h"
+
+int intel_pxp_init(struct drm_i915_private *i915)
+{
+	int ret;
+
+	drm_info(&i915->drm, "i915_pxp_init\n");
+
+	return ret;
+}
+
+void intel_pxp_uninit(struct drm_i915_private *i915)
+{
+}
diff --git a/drivers/gpu/drm/i915/pxp/intel_pxp.h b/drivers/gpu/drm/i915/pxp/intel_pxp.h
new file mode 100644
index 000000000000..578f1126bada
--- /dev/null
+++ b/drivers/gpu/drm/i915/pxp/intel_pxp.h
@@ -0,0 +1,22 @@
+/* SPDX-License-Identifier: MIT */
+/*
+ * Copyright(c) 2020, Intel Corporation. All rights reserved.
+ */
+
+#ifndef __INTEL_PXP_H__
+#define __INTEL_PXP_H__
+
+#include <drm/drm_file.h>
+
+struct pxp_context;
+
+struct intel_pxp {
+	struct pxp_context *r0ctx;
+};
+
+struct drm_i915_private;
+
+int intel_pxp_init(struct drm_i915_private *i915);
+void intel_pxp_uninit(struct drm_i915_private *i915);
+
+#endif
diff --git a/include/uapi/drm/i915_drm.h b/include/uapi/drm/i915_drm.h
index fa1f3d62f9a6..dc101264176b 100644
--- a/include/uapi/drm/i915_drm.h
+++ b/include/uapi/drm/i915_drm.h
@@ -1898,6 +1898,11 @@ struct drm_i915_gem_vm_control {
 	__u32 vm_id;
 };
 
+struct drm_i915_pxp_ops {
+	__u64 pxp_info_ptr;
+	__u32 pxp_info_size;
+};
+
 struct drm_i915_reg_read {
 	/*
 	 * Register offset.
-- 
2.17.1

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply related	[flat|nested] 51+ messages in thread
* [Intel-gfx] [PATCH 01/27] drm/i915/pxp: Introduce Intel PXP component
@ 2020-11-15 21:07 Huang, Sean Z
  2020-11-15 21:07 ` [Intel-gfx] [PATCH 05/27] drm/i915/pxp: Enable ioctl action to set the ring3 context Huang, Sean Z
  0 siblings, 1 reply; 51+ messages in thread
From: Huang, Sean Z @ 2020-11-15 21:07 UTC (permalink / raw)
  To: Intel-gfx

PXP (Protected Xe Path) is an i915 componment, that
helps ring3 to establish the hardware protected session and
manage the status of each alive software session, as well as
the life cycle of each session.

By design PXP will expose ioctl so allow ring3 to create, set,
and destroy each session. It will also provide the communication
chanel to TEE (Trusted Execution Environment) for the protected
hardware session creation.

Signed-off-by: Huang, Sean Z <sean.z.huang@intel.com>
---
 drivers/gpu/drm/i915/Makefile        |  4 ++++
 drivers/gpu/drm/i915/i915_drv.c      |  4 ++++
 drivers/gpu/drm/i915/i915_drv.h      |  4 ++++
 drivers/gpu/drm/i915/pxp/intel_pxp.c | 20 ++++++++++++++++++++
 drivers/gpu/drm/i915/pxp/intel_pxp.h | 22 ++++++++++++++++++++++
 include/uapi/drm/i915_drm.h          |  5 +++++
 6 files changed, 59 insertions(+)
 create mode 100644 drivers/gpu/drm/i915/pxp/intel_pxp.c
 create mode 100644 drivers/gpu/drm/i915/pxp/intel_pxp.h

diff --git a/drivers/gpu/drm/i915/Makefile b/drivers/gpu/drm/i915/Makefile
index e5574e506a5c..8274fea96009 100644
--- a/drivers/gpu/drm/i915/Makefile
+++ b/drivers/gpu/drm/i915/Makefile
@@ -254,6 +254,10 @@ i915-y += \
 
 i915-y += i915_perf.o
 
+# Protected execution platform (PXP) support
+i915-y += \
+	pxp/intel_pxp.o
+
 # Post-mortem debug and GPU hang state capture
 i915-$(CONFIG_DRM_I915_CAPTURE_ERROR) += i915_gpu_error.o
 i915-$(CONFIG_DRM_I915_SELFTEST) += \
diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c
index f2389ba49c69..c8b9c42fcbd6 100644
--- a/drivers/gpu/drm/i915/i915_drv.c
+++ b/drivers/gpu/drm/i915/i915_drv.c
@@ -889,6 +889,8 @@ int i915_driver_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
 	if (ret)
 		goto out_cleanup_gem;
 
+	intel_pxp_init(i915);
+
 	i915_driver_register(i915);
 
 	enable_rpm_wakeref_asserts(&i915->runtime_pm);
@@ -938,6 +940,8 @@ void i915_driver_remove(struct drm_i915_private *i915)
 	/* Flush any external code that still may be under the RCU lock */
 	synchronize_rcu();
 
+	intel_pxp_uninit(i915);
+
 	i915_gem_suspend(i915);
 
 	drm_atomic_helper_shutdown(&i915->drm);
diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
index 15be8debae54..f34ed07a68ee 100644
--- a/drivers/gpu/drm/i915/i915_drv.h
+++ b/drivers/gpu/drm/i915/i915_drv.h
@@ -105,6 +105,8 @@
 
 #include "intel_region_lmem.h"
 
+#include "pxp/intel_pxp.h"
+
 /* General customization:
  */
 
@@ -1215,6 +1217,8 @@ struct drm_i915_private {
 	/* Mutex to protect the above hdcp component related values. */
 	struct mutex hdcp_comp_mutex;
 
+	struct intel_pxp pxp;
+
 	I915_SELFTEST_DECLARE(struct i915_selftest_stash selftest;)
 
 	/*
diff --git a/drivers/gpu/drm/i915/pxp/intel_pxp.c b/drivers/gpu/drm/i915/pxp/intel_pxp.c
new file mode 100644
index 000000000000..a469c55e3e54
--- /dev/null
+++ b/drivers/gpu/drm/i915/pxp/intel_pxp.c
@@ -0,0 +1,20 @@
+/* SPDX-License-Identifier: MIT */
+/*
+ * Copyright(c) 2020 Intel Corporation.
+ */
+
+#include "i915_drv.h"
+#include "intel_pxp.h"
+
+int intel_pxp_init(struct drm_i915_private *i915)
+{
+	int ret;
+
+	drm_info(&i915->drm, "i915_pxp_init\n");
+
+	return ret;
+}
+
+void intel_pxp_uninit(struct drm_i915_private *i915)
+{
+}
diff --git a/drivers/gpu/drm/i915/pxp/intel_pxp.h b/drivers/gpu/drm/i915/pxp/intel_pxp.h
new file mode 100644
index 000000000000..578f1126bada
--- /dev/null
+++ b/drivers/gpu/drm/i915/pxp/intel_pxp.h
@@ -0,0 +1,22 @@
+/* SPDX-License-Identifier: MIT */
+/*
+ * Copyright(c) 2020, Intel Corporation. All rights reserved.
+ */
+
+#ifndef __INTEL_PXP_H__
+#define __INTEL_PXP_H__
+
+#include <drm/drm_file.h>
+
+struct pxp_context;
+
+struct intel_pxp {
+	struct pxp_context *r0ctx;
+};
+
+struct drm_i915_private;
+
+int intel_pxp_init(struct drm_i915_private *i915);
+void intel_pxp_uninit(struct drm_i915_private *i915);
+
+#endif
diff --git a/include/uapi/drm/i915_drm.h b/include/uapi/drm/i915_drm.h
index fa1f3d62f9a6..dc101264176b 100644
--- a/include/uapi/drm/i915_drm.h
+++ b/include/uapi/drm/i915_drm.h
@@ -1898,6 +1898,11 @@ struct drm_i915_gem_vm_control {
 	__u32 vm_id;
 };
 
+struct drm_i915_pxp_ops {
+	__u64 pxp_info_ptr;
+	__u32 pxp_info_size;
+};
+
 struct drm_i915_reg_read {
 	/*
 	 * Register offset.
-- 
2.17.1

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

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

end of thread, other threads:[~2020-11-16 10:53 UTC | newest]

Thread overview: 51+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-11-14  1:45 [Intel-gfx] [PATCH 01/27] drm/i915/pxp: Introduce Intel PXP component Sean Z Huang
2020-11-14  1:45 ` [Intel-gfx] [PATCH 02/27] drm/i915/pxp: Enable PXP irq worker and callback stub Sean Z Huang
2020-11-14  1:45 ` [Intel-gfx] [PATCH 03/27] drm/i915/pxp: Add PXP context for logical hardware states Sean Z Huang
2020-11-14  1:45 ` [Intel-gfx] [PATCH 04/27] drm/i915/pxp: set KCR reg init during the boot time Sean Z Huang
2020-11-14  1:45 ` [Intel-gfx] [PATCH 05/27] drm/i915/pxp: Enable ioctl action to set the ring3 context Sean Z Huang
2020-11-14  4:23   ` kernel test robot
2020-11-14  4:23     ` kernel test robot
2020-11-16  9:46   ` Dan Carpenter
2020-11-16  9:46     ` Dan Carpenter
2020-11-16  9:46     ` Dan Carpenter
2020-11-14  1:45 ` [Intel-gfx] [PATCH 06/27] drm/i915: Rename the whitelist to allowlist Sean Z Huang
2020-11-14  1:45 ` [Intel-gfx] [PATCH 07/27] drm/i915/pxp: Add PXP-related registers into allowlist Sean Z Huang
2020-11-14  1:45 ` [Intel-gfx] [PATCH 08/27] drm/i915/pxp: Read register to check hardware session state Sean Z Huang
2020-11-14  5:04   ` kernel test robot
2020-11-14  5:04     ` kernel test robot
2020-11-14  5:04   ` [Intel-gfx] [RFC PATCH] drm/i915/pxp: pxp_sm_reg_read() can be static kernel test robot
2020-11-14  5:04     ` kernel test robot
2020-11-14  5:14   ` [Intel-gfx] [PATCH 08/27] drm/i915/pxp: Read register to check hardware session state kernel test robot
2020-11-14  5:14     ` kernel test robot
2020-11-14  1:45 ` [Intel-gfx] [PATCH 09/27] drm/i915/pxp: Implement funcs to get/set PXP tag Sean Z Huang
2020-11-14  1:45 ` [Intel-gfx] [PATCH 10/27] drm/i915/pxp: Enable ioctl action to reserve session slot Sean Z Huang
2020-11-14  1:45 ` [Intel-gfx] [PATCH 11/27] drm/i915/pxp: Enable ioctl action to set session in play Sean Z Huang
2020-11-14  1:45 ` [Intel-gfx] [PATCH 12/27] drm/i915/pxp: Func to send hardware session termination Sean Z Huang
2020-11-14  1:45 ` [Intel-gfx] [PATCH 13/27] drm/i915/pxp: Enable ioctl action to terminate the session Sean Z Huang
2020-11-14  1:45 ` [Intel-gfx] [PATCH 14/27] drm/i915/pxp: Enable ioctl action to query PXP tag Sean Z Huang
2020-11-14  1:45 ` [Intel-gfx] [PATCH 15/27] drm/i915/pxp: Destroy all type0 sessions upon teardown Sean Z Huang
2020-11-14  5:51   ` kernel test robot
2020-11-14  5:51     ` kernel test robot
2020-11-14  5:51   ` [Intel-gfx] [RFC PATCH] drm/i915/pxp: intel_pxp_sm_destroy_all_sw_sessions() can be static kernel test robot
2020-11-14  5:51     ` kernel test robot
2020-11-14  6:28   ` [Intel-gfx] [PATCH 15/27] drm/i915/pxp: Destroy all type0 sessions upon teardown kernel test robot
2020-11-14  6:28     ` kernel test robot
2020-11-14  1:45 ` [Intel-gfx] [PATCH 16/27] drm/i915/pxp: Termiante the session upon app crash Sean Z Huang
2020-11-14  1:45 ` [Intel-gfx] [PATCH 17/27] drm/i915/pxp: Enable PXP power management Sean Z Huang
2020-11-14  1:45 ` [Intel-gfx] [PATCH 18/27] drm/i915/pxp: Implement funcs to create the TEE channel Sean Z Huang
2020-11-14  1:45 ` [Intel-gfx] [PATCH 19/27] drm/i915/pxp: Enable ioctl action to send TEE commands Sean Z Huang
2020-11-14  1:45 ` [Intel-gfx] [PATCH 20/27] drm/i915/pxp: Create the arbitrary session after boot Sean Z Huang
2020-11-14  1:45 ` [Intel-gfx] [PATCH 21/27] drm/i915/pxp: Add i915 trace logs for PXP operations Sean Z Huang
2020-11-14  1:45 ` [Intel-gfx] [PATCH 22/27] drm/i915/pxp: Expose session state for display protection flip Sean Z Huang
2020-11-14  1:45 ` [Intel-gfx] [PATCH 23/27] mei: bus: enable pavp device Sean Z Huang
2020-11-14  1:45 ` [Intel-gfx] [PATCH 24/27] mei: pxp: export pavp client to me client bus Sean Z Huang
2020-11-14  1:45 ` [Intel-gfx] [PATCH 25/27] drm/i915/uapi: introduce drm_i915_gem_create_ext for TGL Sean Z Huang
2020-11-14  1:45 ` [Intel-gfx] [PATCH 26/27] drm/i915/pavp: User interface for Protected buffer Sean Z Huang
2020-11-14  1:45 ` [Intel-gfx] [PATCH 27/27] drm/i915/pxp: Add plane decryption support Sean Z Huang
2020-11-14  1:59 ` [Intel-gfx] ✗ Fi.CI.BUILD: failure for series starting with [01/27] drm/i915/pxp: Introduce Intel PXP component Patchwork
2020-11-14 11:03 [Intel-gfx] [PATCH 05/27] drm/i915/pxp: Enable ioctl action to set the ring3 context kernel test robot
2020-11-15  7:34 kernel test robot
2020-11-15 20:23 [Intel-gfx] [PATCH 01/27] drm/i915/pxp: Introduce Intel PXP component Huang, Sean Z
2020-11-15 20:23 ` [Intel-gfx] [PATCH 05/27] drm/i915/pxp: Enable ioctl action to set the ring3 context Huang, Sean Z
2020-11-15 21:07 [Intel-gfx] [PATCH 01/27] drm/i915/pxp: Introduce Intel PXP component Huang, Sean Z
2020-11-15 21:07 ` [Intel-gfx] [PATCH 05/27] drm/i915/pxp: Enable ioctl action to set the ring3 context Huang, Sean Z
2020-11-16 10:22   ` Joonas Lahtinen
2020-11-16 10:53     ` Chris Wilson

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.