From: Rodrigo Vivi <rodrigo.vivi@intel.com>
To: Alan Previn <alan.previn.teres.alexis@intel.com>
Cc: intel-gfx@lists.freedesktop.org
Subject: Re: [Intel-gfx] [PATCH v4 2/6] drm/i915/pxp: Make intel_pxp_is_enabled implicitly sort PXP-owning-GT
Date: Thu, 17 Nov 2022 11:04:06 -0500 [thread overview]
Message-ID: <Y3Zbdo5M/ghLb+7n@intel.com> (raw)
In-Reply-To: <20221117003018.1433115-3-alan.previn.teres.alexis@intel.com>
On Wed, Nov 16, 2022 at 04:30:14PM -0800, Alan Previn wrote:
> Make intel_pxp_is_enabled a global check and implicitly find the
> PXP-owning-GT.
>
> PXP feature support is a device-config flag. In preparation for MTL
> PXP control-context shall reside on of the two GT's. That said,
> update intel_pxp_is_enabled to take in i915 as its input and internally
> find the right gt to check if PXP is enabled so its transparent to
> callers of this functions.
>
> However we also need to expose the per-gt variation of this internal
> pxp files to use (like what intel_pxp_enabled was prior) so also expose
> a new intel_gtpxp_is_enabled function for replacement.
>
> Signed-off-by: Alan Previn <alan.previn.teres.alexis@intel.com>
> ---
> drivers/gpu/drm/i915/gem/i915_gem_context.c | 2 +-
> drivers/gpu/drm/i915/gem/i915_gem_create.c | 2 +-
> drivers/gpu/drm/i915/pxp/intel_pxp.c | 28 ++++++++++++++++++--
> drivers/gpu/drm/i915/pxp/intel_pxp.h | 4 ++-
> drivers/gpu/drm/i915/pxp/intel_pxp_cmd.c | 2 +-
> drivers/gpu/drm/i915/pxp/intel_pxp_debugfs.c | 2 +-
> drivers/gpu/drm/i915/pxp/intel_pxp_irq.c | 2 +-
> drivers/gpu/drm/i915/pxp/intel_pxp_pm.c | 8 +++---
> drivers/gpu/drm/i915/pxp/intel_pxp_tee.c | 4 +--
> 9 files changed, 40 insertions(+), 14 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/gem/i915_gem_context.c b/drivers/gpu/drm/i915/gem/i915_gem_context.c
> index 7f2831efc798..c123f4847b19 100644
> --- a/drivers/gpu/drm/i915/gem/i915_gem_context.c
> +++ b/drivers/gpu/drm/i915/gem/i915_gem_context.c
> @@ -257,7 +257,7 @@ static int proto_context_set_protected(struct drm_i915_private *i915,
>
> if (!protected) {
> pc->uses_protected_content = false;
> - } else if (!intel_pxp_is_enabled(&to_gt(i915)->pxp)) {
> + } else if (!intel_pxp_is_enabled(i915)) {
if we are asking about pxp we should pass pxp, not i915...
> ret = -ENODEV;
> } else if ((pc->user_flags & BIT(UCONTEXT_RECOVERABLE)) ||
> !(pc->user_flags & BIT(UCONTEXT_BANNABLE))) {
> diff --git a/drivers/gpu/drm/i915/gem/i915_gem_create.c b/drivers/gpu/drm/i915/gem/i915_gem_create.c
> index 33673fe7ee0a..e44803f9bec4 100644
> --- a/drivers/gpu/drm/i915/gem/i915_gem_create.c
> +++ b/drivers/gpu/drm/i915/gem/i915_gem_create.c
> @@ -384,7 +384,7 @@ static int ext_set_protected(struct i915_user_extension __user *base, void *data
> if (ext.flags)
> return -EINVAL;
>
> - if (!intel_pxp_is_enabled(&to_gt(ext_data->i915)->pxp))
> + if (!intel_pxp_is_enabled(ext_data->i915))
> return -ENODEV;
>
> ext_data->flags |= I915_BO_PROTECTED;
> diff --git a/drivers/gpu/drm/i915/pxp/intel_pxp.c b/drivers/gpu/drm/i915/pxp/intel_pxp.c
> index d993e752bd36..88105101af79 100644
> --- a/drivers/gpu/drm/i915/pxp/intel_pxp.c
> +++ b/drivers/gpu/drm/i915/pxp/intel_pxp.c
> @@ -9,6 +9,7 @@
> #include "intel_pxp_tee.h"
> #include "gem/i915_gem_context.h"
> #include "gt/intel_context.h"
> +#include "gt/intel_gt.h"
> #include "i915_drv.h"
>
> /**
> @@ -58,11 +59,34 @@ bool intel_pxp_supported_on_gt(const struct intel_pxp *pxp)
> INTEL_INFO((pxp_to_gt(pxp))->i915)->has_pxp && VDBOX_MASK(pxp_to_gt(pxp)));
> }
>
> -bool intel_pxp_is_enabled(const struct intel_pxp *pxp)
> +bool intel_pxp_is_enabled_on_gt(const struct intel_pxp *pxp)
> {
> return pxp->ce;
> }
>
> +static struct intel_gt *i915_to_pxp_gt(struct drm_i915_private *i915)
> +{
> + struct intel_gt *gt = NULL;
> + int i = 0;
> +
> + for_each_gt(gt, i915, i) {
> + /* There can be only one GT that supports PXP */
> + if (intel_pxp_supported_on_gt(>->pxp))
> + return gt;
> + }
> + return NULL;
> +}
> +
> +bool intel_pxp_is_enabled(struct drm_i915_private *i915)
> +{
> + struct intel_gt *gt = i915_to_pxp_gt(i915);
> +
> + if (!gt)
> + return false;
> +
> + return intel_pxp_is_enabled_on_gt(>->pxp);
> +}
> +
> bool intel_pxp_is_active(const struct intel_pxp *pxp)
> {
> return pxp->arb_is_valid;
> @@ -216,7 +240,7 @@ int intel_pxp_start(struct intel_pxp *pxp)
> {
> int ret = 0;
>
> - if (!intel_pxp_is_enabled(pxp))
> + if (!intel_pxp_is_enabled_on_gt(pxp))
> return -ENODEV;
>
> if (wait_for(pxp_component_bound(pxp), 250))
> diff --git a/drivers/gpu/drm/i915/pxp/intel_pxp.h b/drivers/gpu/drm/i915/pxp/intel_pxp.h
> index efa83f9d5e24..3f71b1653f74 100644
> --- a/drivers/gpu/drm/i915/pxp/intel_pxp.h
> +++ b/drivers/gpu/drm/i915/pxp/intel_pxp.h
> @@ -11,12 +11,14 @@
>
> struct intel_pxp;
> struct drm_i915_gem_object;
> +struct drm_i915_private;
>
> struct intel_gt *pxp_to_gt(const struct intel_pxp *pxp);
>
> bool intel_pxp_supported_on_gt(const struct intel_pxp *pxp);
>
> -bool intel_pxp_is_enabled(const struct intel_pxp *pxp);
> +bool intel_pxp_is_enabled_on_gt(const struct intel_pxp *pxp);
> +bool intel_pxp_is_enabled(struct drm_i915_private *i915);
> bool intel_pxp_is_active(const struct intel_pxp *pxp);
>
> void intel_pxp_init(struct intel_pxp *pxp);
> diff --git a/drivers/gpu/drm/i915/pxp/intel_pxp_cmd.c b/drivers/gpu/drm/i915/pxp/intel_pxp_cmd.c
> index f41e45763d0d..f322a49ebadc 100644
> --- a/drivers/gpu/drm/i915/pxp/intel_pxp_cmd.c
> +++ b/drivers/gpu/drm/i915/pxp/intel_pxp_cmd.c
> @@ -99,7 +99,7 @@ int intel_pxp_terminate_session(struct intel_pxp *pxp, u32 id)
> u32 *cs;
> int err = 0;
>
> - if (!intel_pxp_is_enabled(pxp))
> + if (!intel_pxp_is_enabled_on_gt(pxp))
> return 0;
>
> rq = i915_request_create(ce);
> diff --git a/drivers/gpu/drm/i915/pxp/intel_pxp_debugfs.c b/drivers/gpu/drm/i915/pxp/intel_pxp_debugfs.c
> index f0ad6f34624a..4d257055434b 100644
> --- a/drivers/gpu/drm/i915/pxp/intel_pxp_debugfs.c
> +++ b/drivers/gpu/drm/i915/pxp/intel_pxp_debugfs.c
> @@ -18,7 +18,7 @@ static int pxp_info_show(struct seq_file *m, void *data)
> {
> struct intel_pxp *pxp = m->private;
> struct drm_printer p = drm_seq_file_printer(m);
> - bool enabled = intel_pxp_is_enabled(pxp);
> + bool enabled = intel_pxp_is_enabled_on_gt(pxp);
>
> if (!enabled) {
> drm_printf(&p, "pxp disabled\n");
> diff --git a/drivers/gpu/drm/i915/pxp/intel_pxp_irq.c b/drivers/gpu/drm/i915/pxp/intel_pxp_irq.c
> index c28be430718a..d3c697bf9aab 100644
> --- a/drivers/gpu/drm/i915/pxp/intel_pxp_irq.c
> +++ b/drivers/gpu/drm/i915/pxp/intel_pxp_irq.c
> @@ -22,7 +22,7 @@ void intel_pxp_irq_handler(struct intel_pxp *pxp, u16 iir)
> {
> struct intel_gt *gt = pxp_to_gt(pxp);
>
> - if (GEM_WARN_ON(!intel_pxp_is_enabled(pxp)))
> + if (GEM_WARN_ON(!intel_pxp_is_enabled_on_gt(pxp)))
> return;
>
> lockdep_assert_held(gt->irq_lock);
> diff --git a/drivers/gpu/drm/i915/pxp/intel_pxp_pm.c b/drivers/gpu/drm/i915/pxp/intel_pxp_pm.c
> index 6a7d4e2ee138..19ac8828cbde 100644
> --- a/drivers/gpu/drm/i915/pxp/intel_pxp_pm.c
> +++ b/drivers/gpu/drm/i915/pxp/intel_pxp_pm.c
> @@ -11,7 +11,7 @@
>
> void intel_pxp_suspend_prepare(struct intel_pxp *pxp)
> {
> - if (!intel_pxp_is_enabled(pxp))
> + if (!intel_pxp_is_enabled_on_gt(pxp))
> return;
>
> pxp->arb_is_valid = false;
> @@ -23,7 +23,7 @@ void intel_pxp_suspend(struct intel_pxp *pxp)
> {
> intel_wakeref_t wakeref;
>
> - if (!intel_pxp_is_enabled(pxp))
> + if (!intel_pxp_is_enabled_on_gt(pxp))
> return;
>
> with_intel_runtime_pm(&pxp_to_gt(pxp)->i915->runtime_pm, wakeref) {
> @@ -34,7 +34,7 @@ void intel_pxp_suspend(struct intel_pxp *pxp)
>
> void intel_pxp_resume(struct intel_pxp *pxp)
> {
> - if (!intel_pxp_is_enabled(pxp))
> + if (!intel_pxp_is_enabled_on_gt(pxp))
> return;
>
> /*
> @@ -50,7 +50,7 @@ void intel_pxp_resume(struct intel_pxp *pxp)
>
> void intel_pxp_runtime_suspend(struct intel_pxp *pxp)
> {
> - if (!intel_pxp_is_enabled(pxp))
> + if (!intel_pxp_is_enabled_on_gt(pxp))
> return;
>
> pxp->arb_is_valid = false;
> diff --git a/drivers/gpu/drm/i915/pxp/intel_pxp_tee.c b/drivers/gpu/drm/i915/pxp/intel_pxp_tee.c
> index b0c9170b1395..a5c9c692c20d 100644
> --- a/drivers/gpu/drm/i915/pxp/intel_pxp_tee.c
> +++ b/drivers/gpu/drm/i915/pxp/intel_pxp_tee.c
> @@ -152,7 +152,7 @@ static int i915_pxp_tee_component_bind(struct device *i915_kdev,
> return 0;
>
> /* the component is required to fully start the PXP HW */
> - if (intel_pxp_is_enabled(pxp))
> + if (intel_pxp_is_enabled_on_gt(pxp))
> intel_pxp_init_hw(pxp);
>
> intel_runtime_pm_put(&i915->runtime_pm, wakeref);
> @@ -167,7 +167,7 @@ static void i915_pxp_tee_component_unbind(struct device *i915_kdev,
> struct intel_pxp *pxp = i915_dev_to_pxp(i915_kdev);
> intel_wakeref_t wakeref;
>
> - if (intel_pxp_is_enabled(pxp))
> + if (intel_pxp_is_enabled_on_gt(pxp))
> with_intel_runtime_pm_if_in_use(&i915->runtime_pm, wakeref)
> intel_pxp_fini_hw(pxp);
>
> --
> 2.34.1
>
next prev parent reply other threads:[~2022-11-17 16:06 UTC|newest]
Thread overview: 29+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-11-17 0:30 [Intel-gfx] [PATCH v4 0/6] drm/i915/pxp: Prepare intel_pxp entry points for MTL Alan Previn
2022-11-17 0:30 ` [Intel-gfx] [PATCH v4 1/6] drm/i915/pxp: Make gt and pxp init/fini aware of PXP-owning-GT Alan Previn
2022-11-17 16:02 ` Rodrigo Vivi
2022-11-17 22:34 ` Teres Alexis, Alan Previn
2022-11-21 11:39 ` Tvrtko Ursulin
2022-11-21 12:12 ` Jani Nikula
2022-11-21 17:02 ` Teres Alexis, Alan Previn
2022-11-21 14:06 ` Vivi, Rodrigo
2022-11-21 17:51 ` Teres Alexis, Alan Previn
2022-11-22 17:57 ` Rodrigo Vivi
2022-11-22 18:50 ` Teres Alexis, Alan Previn
2022-11-22 20:11 ` Teres Alexis, Alan Previn
2022-11-23 23:22 ` Teres Alexis, Alan Previn
2022-11-22 21:12 ` Rodrigo Vivi
2022-11-21 17:06 ` Teres Alexis, Alan Previn
2022-11-17 0:30 ` [Intel-gfx] [PATCH v4 2/6] drm/i915/pxp: Make intel_pxp_is_enabled implicitly sort PXP-owning-GT Alan Previn
2022-11-17 16:04 ` Rodrigo Vivi [this message]
2022-11-17 23:04 ` Teres Alexis, Alan Previn
2022-11-22 11:17 ` Jani Nikula
2022-11-22 20:11 ` Teres Alexis, Alan Previn
2022-11-17 0:30 ` [Intel-gfx] [PATCH v4 3/6] drm/i915/pxp: Make intel_pxp_is_active " Alan Previn
2022-11-17 16:05 ` Rodrigo Vivi
2022-11-17 0:30 ` [Intel-gfx] [PATCH v4 4/6] drm/i915/pxp: Make PXP tee component bind/unbind aware of PXP-owning-GT Alan Previn
2022-11-17 16:07 ` Rodrigo Vivi
2022-11-17 0:30 ` [Intel-gfx] [PATCH v4 5/6] drm/i915/pxp: Make intel_pxp_start implicitly sort PXP-owning-GT Alan Previn
2022-11-17 0:30 ` [Intel-gfx] [PATCH v4 6/6] drm/i915/pxp: Make intel_pxp_key_check " Alan Previn
2022-11-17 0:51 ` [Intel-gfx] ✗ Fi.CI.SPARSE: warning for drm/i915/pxp: Prepare intel_pxp entry points for MTL (rev4) Patchwork
2022-11-17 1:15 ` [Intel-gfx] ✓ Fi.CI.BAT: success " Patchwork
2022-11-17 12:48 ` [Intel-gfx] ✗ Fi.CI.IGT: failure " 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=Y3Zbdo5M/ghLb+7n@intel.com \
--to=rodrigo.vivi@intel.com \
--cc=alan.previn.teres.alexis@intel.com \
--cc=intel-gfx@lists.freedesktop.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox