From: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com> To: intel-gfx@lists.freedesktop.org Cc: Sean Z <sean.z.huang@intel.com>, Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>, Huang@freedesktop.org, dri-devel@lists.freedesktop.org, Rodrigo Vivi <rodrigo.vivi@intel.com> Subject: [PATCH v4 07/17] drm/i915/pxp: set KCR reg init Date: Mon, 24 May 2021 22:47:53 -0700 [thread overview] Message-ID: <20210525054803.7387-8-daniele.ceraolospurio@intel.com> (raw) In-Reply-To: <20210525054803.7387-1-daniele.ceraolospurio@intel.com> The setting is required by hardware to allow us doing further protection operation such as sending commands to GPU or TEE. The register needs to be re-programmed on resume, so for simplicitly we bundle the programming with the component binding, which is automatically called on resume. Further HW set-up operations will be added in the same location in follow-up patches, so get ready for them by using a couple of init/fini_hw wrappers instead of calling the KCR funcs directly. v3: move programming to component binding function, rework commit msg Signed-off-by: Huang, Sean Z <sean.z.huang@intel.com> Signed-off-by: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com> Reviewed-by: Rodrigo Vivi <rodrigo.vivi@intel.com> --- drivers/gpu/drm/i915/pxp/intel_pxp.c | 27 ++++++++++++++++++++++++ drivers/gpu/drm/i915/pxp/intel_pxp.h | 3 +++ drivers/gpu/drm/i915/pxp/intel_pxp_tee.c | 5 +++++ 3 files changed, 35 insertions(+) diff --git a/drivers/gpu/drm/i915/pxp/intel_pxp.c b/drivers/gpu/drm/i915/pxp/intel_pxp.c index 5df2a09c9e4b..ab19d2a23ec2 100644 --- a/drivers/gpu/drm/i915/pxp/intel_pxp.c +++ b/drivers/gpu/drm/i915/pxp/intel_pxp.c @@ -7,6 +7,24 @@ #include "gt/intel_context.h" #include "i915_drv.h" +/* KCR register definitions */ +#define KCR_INIT _MMIO(0x320f0) + +/* Setting KCR Init bit is required after system boot */ +#define KCR_INIT_ALLOW_DISPLAY_ME_WRITES REG_BIT(14) + +static void kcr_pxp_enable(struct intel_gt *gt) +{ + intel_uncore_write(gt->uncore, KCR_INIT, + _MASKED_BIT_ENABLE(KCR_INIT_ALLOW_DISPLAY_ME_WRITES)); +} + +static void kcr_pxp_disable(struct intel_gt *gt) +{ + intel_uncore_write(gt->uncore, KCR_INIT, + _MASKED_BIT_DISABLE(KCR_INIT_ALLOW_DISPLAY_ME_WRITES)); +} + static int create_vcs_context(struct intel_pxp *pxp) { static struct lock_class_key pxp_lock; @@ -71,5 +89,14 @@ void intel_pxp_fini(struct intel_pxp *pxp) intel_pxp_tee_component_fini(pxp); destroy_vcs_context(pxp); +} + +void intel_pxp_init_hw(struct intel_pxp *pxp) +{ + kcr_pxp_enable(pxp_to_gt(pxp)); +} +void intel_pxp_fini_hw(struct intel_pxp *pxp) +{ + kcr_pxp_disable(pxp_to_gt(pxp)); } diff --git a/drivers/gpu/drm/i915/pxp/intel_pxp.h b/drivers/gpu/drm/i915/pxp/intel_pxp.h index e87550fb9821..5427c3b28aa9 100644 --- a/drivers/gpu/drm/i915/pxp/intel_pxp.h +++ b/drivers/gpu/drm/i915/pxp/intel_pxp.h @@ -22,6 +22,9 @@ static inline bool intel_pxp_is_enabled(const struct intel_pxp *pxp) #ifdef CONFIG_DRM_I915_PXP void intel_pxp_init(struct intel_pxp *pxp); void intel_pxp_fini(struct intel_pxp *pxp); + +void intel_pxp_init_hw(struct intel_pxp *pxp); +void intel_pxp_fini_hw(struct intel_pxp *pxp); #else static inline void intel_pxp_init(struct intel_pxp *pxp) { diff --git a/drivers/gpu/drm/i915/pxp/intel_pxp_tee.c b/drivers/gpu/drm/i915/pxp/intel_pxp_tee.c index 4ed234d8584f..dc0dcd040bf8 100644 --- a/drivers/gpu/drm/i915/pxp/intel_pxp_tee.c +++ b/drivers/gpu/drm/i915/pxp/intel_pxp_tee.c @@ -33,6 +33,9 @@ static int i915_pxp_tee_component_bind(struct device *i915_kdev, pxp->pxp_component = data; pxp->pxp_component->tee_dev = tee_kdev; + /* the component is required to fully start the PXP HW */ + intel_pxp_init_hw(pxp); + return 0; } @@ -41,6 +44,8 @@ static void i915_pxp_tee_component_unbind(struct device *i915_kdev, { struct intel_pxp *pxp = i915_dev_to_pxp(i915_kdev); + intel_pxp_fini_hw(pxp); + pxp->pxp_component = NULL; } -- 2.29.2
WARNING: multiple messages have this Message-ID (diff)
From: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com> To: intel-gfx@lists.freedesktop.org Cc: Sean Z <sean.z.huang@intel.com>, Huang@freedesktop.org, dri-devel@lists.freedesktop.org Subject: [Intel-gfx] [PATCH v4 07/17] drm/i915/pxp: set KCR reg init Date: Mon, 24 May 2021 22:47:53 -0700 [thread overview] Message-ID: <20210525054803.7387-8-daniele.ceraolospurio@intel.com> (raw) In-Reply-To: <20210525054803.7387-1-daniele.ceraolospurio@intel.com> The setting is required by hardware to allow us doing further protection operation such as sending commands to GPU or TEE. The register needs to be re-programmed on resume, so for simplicitly we bundle the programming with the component binding, which is automatically called on resume. Further HW set-up operations will be added in the same location in follow-up patches, so get ready for them by using a couple of init/fini_hw wrappers instead of calling the KCR funcs directly. v3: move programming to component binding function, rework commit msg Signed-off-by: Huang, Sean Z <sean.z.huang@intel.com> Signed-off-by: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com> Reviewed-by: Rodrigo Vivi <rodrigo.vivi@intel.com> --- drivers/gpu/drm/i915/pxp/intel_pxp.c | 27 ++++++++++++++++++++++++ drivers/gpu/drm/i915/pxp/intel_pxp.h | 3 +++ drivers/gpu/drm/i915/pxp/intel_pxp_tee.c | 5 +++++ 3 files changed, 35 insertions(+) diff --git a/drivers/gpu/drm/i915/pxp/intel_pxp.c b/drivers/gpu/drm/i915/pxp/intel_pxp.c index 5df2a09c9e4b..ab19d2a23ec2 100644 --- a/drivers/gpu/drm/i915/pxp/intel_pxp.c +++ b/drivers/gpu/drm/i915/pxp/intel_pxp.c @@ -7,6 +7,24 @@ #include "gt/intel_context.h" #include "i915_drv.h" +/* KCR register definitions */ +#define KCR_INIT _MMIO(0x320f0) + +/* Setting KCR Init bit is required after system boot */ +#define KCR_INIT_ALLOW_DISPLAY_ME_WRITES REG_BIT(14) + +static void kcr_pxp_enable(struct intel_gt *gt) +{ + intel_uncore_write(gt->uncore, KCR_INIT, + _MASKED_BIT_ENABLE(KCR_INIT_ALLOW_DISPLAY_ME_WRITES)); +} + +static void kcr_pxp_disable(struct intel_gt *gt) +{ + intel_uncore_write(gt->uncore, KCR_INIT, + _MASKED_BIT_DISABLE(KCR_INIT_ALLOW_DISPLAY_ME_WRITES)); +} + static int create_vcs_context(struct intel_pxp *pxp) { static struct lock_class_key pxp_lock; @@ -71,5 +89,14 @@ void intel_pxp_fini(struct intel_pxp *pxp) intel_pxp_tee_component_fini(pxp); destroy_vcs_context(pxp); +} + +void intel_pxp_init_hw(struct intel_pxp *pxp) +{ + kcr_pxp_enable(pxp_to_gt(pxp)); +} +void intel_pxp_fini_hw(struct intel_pxp *pxp) +{ + kcr_pxp_disable(pxp_to_gt(pxp)); } diff --git a/drivers/gpu/drm/i915/pxp/intel_pxp.h b/drivers/gpu/drm/i915/pxp/intel_pxp.h index e87550fb9821..5427c3b28aa9 100644 --- a/drivers/gpu/drm/i915/pxp/intel_pxp.h +++ b/drivers/gpu/drm/i915/pxp/intel_pxp.h @@ -22,6 +22,9 @@ static inline bool intel_pxp_is_enabled(const struct intel_pxp *pxp) #ifdef CONFIG_DRM_I915_PXP void intel_pxp_init(struct intel_pxp *pxp); void intel_pxp_fini(struct intel_pxp *pxp); + +void intel_pxp_init_hw(struct intel_pxp *pxp); +void intel_pxp_fini_hw(struct intel_pxp *pxp); #else static inline void intel_pxp_init(struct intel_pxp *pxp) { diff --git a/drivers/gpu/drm/i915/pxp/intel_pxp_tee.c b/drivers/gpu/drm/i915/pxp/intel_pxp_tee.c index 4ed234d8584f..dc0dcd040bf8 100644 --- a/drivers/gpu/drm/i915/pxp/intel_pxp_tee.c +++ b/drivers/gpu/drm/i915/pxp/intel_pxp_tee.c @@ -33,6 +33,9 @@ static int i915_pxp_tee_component_bind(struct device *i915_kdev, pxp->pxp_component = data; pxp->pxp_component->tee_dev = tee_kdev; + /* the component is required to fully start the PXP HW */ + intel_pxp_init_hw(pxp); + return 0; } @@ -41,6 +44,8 @@ static void i915_pxp_tee_component_unbind(struct device *i915_kdev, { struct intel_pxp *pxp = i915_dev_to_pxp(i915_kdev); + intel_pxp_fini_hw(pxp); + pxp->pxp_component = NULL; } -- 2.29.2 _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx
next prev parent reply other threads:[~2021-05-25 5:48 UTC|newest] Thread overview: 90+ messages / expand[flat|nested] mbox.gz Atom feed top 2021-05-25 5:47 [PATCH v4 00/17] drm/i915: Introduce Intel PXP Daniele Ceraolo Spurio 2021-05-25 5:47 ` [Intel-gfx] " Daniele Ceraolo Spurio 2021-05-25 5:47 ` [PATCH v4 01/17] drm/i915/pxp: Define PXP component interface Daniele Ceraolo Spurio 2021-05-25 5:47 ` [Intel-gfx] " Daniele Ceraolo Spurio 2021-05-25 5:47 ` [PATCH v4 02/17] mei: pxp: export pavp client to me client bus Daniele Ceraolo Spurio 2021-05-25 5:47 ` [Intel-gfx] " Daniele Ceraolo Spurio 2021-06-02 19:10 ` Rodrigo Vivi 2021-06-02 19:10 ` [Intel-gfx] " Rodrigo Vivi 2021-05-25 5:47 ` [PATCH v4 03/17] drm/i915/pxp: define PXP device flag and kconfig Daniele Ceraolo Spurio 2021-05-25 5:47 ` [Intel-gfx] " Daniele Ceraolo Spurio 2021-05-25 5:47 ` [PATCH v4 04/17] drm/i915/gt: Export the pinned context constructor and destructor Daniele Ceraolo Spurio 2021-05-25 5:47 ` [Intel-gfx] " Daniele Ceraolo Spurio 2021-06-01 20:20 ` Rodrigo Vivi 2021-06-01 20:20 ` [Intel-gfx] " Rodrigo Vivi 2021-06-01 21:23 ` Daniele Ceraolo Spurio 2021-06-01 21:23 ` [Intel-gfx] " Daniele Ceraolo Spurio 2021-06-02 18:18 ` Rodrigo Vivi 2021-06-02 18:18 ` [Intel-gfx] " Rodrigo Vivi 2021-05-25 5:47 ` [PATCH v4 05/17] drm/i915/pxp: allocate a vcs context for pxp usage Daniele Ceraolo Spurio 2021-05-25 5:47 ` [Intel-gfx] " Daniele Ceraolo Spurio 2021-06-01 20:24 ` Rodrigo Vivi 2021-06-01 20:24 ` Rodrigo Vivi 2021-05-25 5:47 ` [PATCH v4 06/17] drm/i915/pxp: Implement funcs to create the TEE channel Daniele Ceraolo Spurio 2021-05-25 5:47 ` [Intel-gfx] " Daniele Ceraolo Spurio 2021-06-01 20:26 ` Rodrigo Vivi 2021-06-01 20:26 ` [Intel-gfx] " Rodrigo Vivi 2021-06-03 0:07 ` Teres Alexis, Alan Previn 2021-06-03 0:07 ` Teres Alexis, Alan Previn 2021-05-25 5:47 ` Daniele Ceraolo Spurio [this message] 2021-05-25 5:47 ` [Intel-gfx] [PATCH v4 07/17] drm/i915/pxp: set KCR reg init Daniele Ceraolo Spurio 2021-05-25 5:47 ` [PATCH v4 08/17] drm/i915/pxp: Create the arbitrary session after boot Daniele Ceraolo Spurio 2021-05-25 5:47 ` [Intel-gfx] " Daniele Ceraolo Spurio 2021-06-01 20:32 ` Rodrigo Vivi 2021-06-01 20:32 ` [Intel-gfx] " Rodrigo Vivi 2021-05-25 5:47 ` [PATCH v4 09/17] drm/i915/pxp: Implement arb session teardown Daniele Ceraolo Spurio 2021-05-25 5:47 ` [Intel-gfx] " Daniele Ceraolo Spurio 2021-05-25 20:24 ` kernel test robot 2021-05-25 20:24 ` kernel test robot 2021-05-25 20:24 ` [Intel-gfx] " kernel test robot 2021-05-25 5:47 ` [PATCH v4 10/17] drm/i915/pxp: Implement PXP irq handler Daniele Ceraolo Spurio 2021-05-25 5:47 ` [Intel-gfx] " Daniele Ceraolo Spurio 2021-06-02 16:06 ` Rodrigo Vivi 2021-06-02 16:06 ` Rodrigo Vivi 2021-06-02 16:08 ` Rodrigo Vivi 2021-06-02 16:08 ` Rodrigo Vivi 2021-05-25 5:47 ` [PATCH v4 11/17] drm/i915/pxp: interface for marking contexts as using protected content Daniele Ceraolo Spurio 2021-05-25 5:47 ` [Intel-gfx] " Daniele Ceraolo Spurio 2021-05-27 10:10 ` Daniel Vetter 2021-05-27 10:10 ` Daniel Vetter 2021-05-25 5:47 ` [PATCH v4 12/17] drm/i915/pxp: start the arb session on demand Daniele Ceraolo Spurio 2021-05-25 5:47 ` [Intel-gfx] " Daniele Ceraolo Spurio 2021-06-02 18:14 ` Rodrigo Vivi 2021-06-02 18:14 ` Rodrigo Vivi 2021-06-10 22:44 ` Daniele Ceraolo Spurio 2021-06-10 22:44 ` Daniele Ceraolo Spurio 2021-06-11 8:38 ` Rodrigo Vivi 2021-06-11 8:38 ` Rodrigo Vivi 2021-05-25 5:47 ` [PATCH v4 13/17] drm/i915/pxp: Enable PXP power management Daniele Ceraolo Spurio 2021-05-25 5:47 ` [Intel-gfx] " Daniele Ceraolo Spurio 2021-06-02 16:20 ` Rodrigo Vivi 2021-06-02 16:20 ` [Intel-gfx] " Rodrigo Vivi 2021-06-10 22:58 ` Daniele Ceraolo Spurio 2021-06-10 22:58 ` [Intel-gfx] " Daniele Ceraolo Spurio 2021-06-11 8:44 ` Rodrigo Vivi 2021-06-11 8:44 ` [Intel-gfx] " Rodrigo Vivi 2021-05-25 5:48 ` [PATCH v4 14/17] drm/i915/pxp: User interface for Protected buffer Daniele Ceraolo Spurio 2021-05-25 5:48 ` [Intel-gfx] " Daniele Ceraolo Spurio 2021-05-25 13:32 ` Daniel Vetter 2021-05-25 13:32 ` [Intel-gfx] " Daniel Vetter 2021-05-27 2:03 ` Daniele Ceraolo Spurio 2021-05-27 2:03 ` [Intel-gfx] " Daniele Ceraolo Spurio 2021-05-25 18:36 ` Tang, CQ 2021-05-25 18:36 ` Tang, CQ 2021-05-27 2:13 ` Daniele Ceraolo Spurio 2021-05-27 2:13 ` Daniele Ceraolo Spurio 2021-05-25 5:48 ` [PATCH v4 15/17] drm/i915/pxp: Add plane decryption support Daniele Ceraolo Spurio 2021-05-25 5:48 ` [Intel-gfx] " Daniele Ceraolo Spurio 2021-06-02 18:23 ` Rodrigo Vivi 2021-06-02 18:23 ` [Intel-gfx] " Rodrigo Vivi 2021-05-25 5:48 ` [PATCH v4 16/17] drm/i915/pxp: black pixels on pxp disabled Daniele Ceraolo Spurio 2021-05-25 5:48 ` [Intel-gfx] " Daniele Ceraolo Spurio 2021-06-02 19:00 ` Rodrigo Vivi 2021-06-02 19:00 ` [Intel-gfx] " Rodrigo Vivi 2021-05-25 5:48 ` [PATCH v4 17/17] drm/i915/pxp: enable PXP for integrated Gen12 Daniele Ceraolo Spurio 2021-05-25 5:48 ` [Intel-gfx] " Daniele Ceraolo Spurio 2021-05-25 6:18 ` [Intel-gfx] ✗ Fi.CI.CHECKPATCH: warning for drm/i915: Introduce Intel PXP Patchwork 2021-05-25 6:20 ` [Intel-gfx] ✗ Fi.CI.SPARSE: " Patchwork 2021-05-25 6:23 ` [Intel-gfx] ✗ Fi.CI.DOCS: " Patchwork 2021-05-25 6:42 ` [Intel-gfx] ✓ Fi.CI.BAT: success " Patchwork 2021-05-25 8:34 ` [Intel-gfx] ✓ Fi.CI.IGT: " Patchwork
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20210525054803.7387-8-daniele.ceraolospurio@intel.com \ --to=daniele.ceraolospurio@intel.com \ --cc=Huang@freedesktop.org \ --cc=dri-devel@lists.freedesktop.org \ --cc=intel-gfx@lists.freedesktop.org \ --cc=rodrigo.vivi@intel.com \ --cc=sean.z.huang@intel.com \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.