[Intel-gfx] [RFC-v1 01/16] drm/i915/pxp: Introduce Intel PXP component

Joonas Lahtinen joonas.lahtinen at linux.intel.com
Thu Dec 10 09:02:08 UTC 2020


Quoting Huang, Sean Z (2020-12-07 20:48:55)
> 
> >Repeating the same comment as on previous review, avoid including anything in i915_drv.h and only include in the relevant files that require to touch the internals of the structs.
> 
> I would still need to include i915_drv.h for macro INTEL_GEN(), hopefully it's acceptable.

That is fine. I was referring to the opposite, do not include
"intel_pxp.h" from i915_drv.h.

It's instead better to add "intel_pxp_types.h" etc. (look for *_types.h
files from i915 source) and minimize what is included by each file.

Regards, Joonas

> 
> -----Original Message-----
> From: Huang, Sean Z 
> Sent: Monday, December 7, 2020 10:26 AM
> To: Joonas Lahtinen <joonas.lahtinen at linux.intel.com>; Intel-gfx at lists.freedesktop.org
> Subject: RE: [Intel-gfx] [RFC-v1 01/16] drm/i915/pxp: Introduce Intel PXP component
> 
> Hi Joonas,
> 
> Thanks for the details review. I have apply the modification according to the review, and will update as rev2.
> > Description is no more true for single-session only
> DONE
> 
> > Same here, needs updating.
> DONE
> 
> >Repeating the same comment as on previous review, avoid including anything in i915_drv.h and only include in the relevant files that require to touch the internals of the structs.
> DONE
> 
> > I think this should instead go as part of intel_gt, not here.
> DONE
> 
> > We should aim to only take struct intel_pxp as parameter for intel_pxp_* functions.
> DONE, I think the suggestion is reasonable. I expect that will modify the code significantly in the future commits, but let me try intel_pxp_* instead of i915
> 
> > This would be either a major kernel programmer error or the memory would be seriously corrupt. No point leaving such checks to production code, so GEM_BUG_ON(!i915) would be enough to run the checks in CI and debug builds.
> DONE, I just remove the error check
> 
> > Also, we have not really initialized anything so it's really premature to print anything in this patch.
> DONE, remove the print
> 
> > Same here, we really want to tighten the scope to intel_pxp and call 
> > this from intel_gt_fini(), so signature should look like: void 
> > intel_pxp_fini(struct intel_pxp *pxp)
> DONE
> 
> Best regards,
> Sean
> 
> -----Original Message-----
> From: Joonas Lahtinen <joonas.lahtinen at linux.intel.com>
> Sent: Monday, December 7, 2020 2:01 AM
> To: Huang, Sean Z <sean.z.huang at intel.com>; Intel-gfx at lists.freedesktop.org
> Subject: Re: [Intel-gfx] [RFC-v1 01/16] drm/i915/pxp: Introduce Intel PXP component
> 
> Quoting Huang, Sean Z (2020-12-07 02:21:19)
> > PXP (Protected Xe Path) is an i915 componment, available on GEN12+, 
> > that helps user space 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 user space 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.
> 
> Description is no more true for single-session only.
> 
> <SNIP>
> 
> > +++ b/drivers/gpu/drm/i915/Kconfig
> > @@ -130,6 +130,25 @@ config DRM_I915_GVT_KVMGT
> >           Choose this option if you want to enable KVMGT support for
> >           Intel GVT-g.
> >  
> > +config DRM_I915_PXP
> > +       bool "Enable Intel PXP support for Intel Gen12+ platform"
> > +       depends on DRM_I915
> > +       select INTEL_MEI_PXP
> > +       default n
> > +       help
> > +         This option selects INTEL_MEI_ME if it isn't already selected to
> > +         enabled full PXP Services on Intel platforms.
> > +
> > +         PXP is an i915 componment, available on Gen12+, that helps user
> > +         space to establish the hardware protected session and manage the
> > +         status of each alive software session, as well as the life cycle
> > +         of each session.
> > +
> > +         PXP expose ioctl so allow user space 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.
> 
> Same here, needs updating.
> 
> > +++ b/drivers/gpu/drm/i915/i915_drv.h
> > @@ -105,6 +105,8 @@
> >  
> >  #include "intel_region_lmem.h"
> >  
> > +#include "pxp/intel_pxp.h"
> 
> Repeating the same comment as on previous review, avoid including anything in i915_drv.h and only include in the relevant files that require to touch the internals of the structs.
> 
> > +
> >  /* 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;
> 
> I think this should instead go as part of intel_gt, not here.
> 
> > +++ b/drivers/gpu/drm/i915/pxp/intel_pxp.c
> > @@ -0,0 +1,25 @@
> > +// 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)
> 
> We should aim to only take struct intel_pxp as parameter for intel_pxp_* functions.
> 
> > +{
> > +       if (!i915)
> > +               return -EINVAL;
> 
> This would be either a major kernel programmer error or the memory would be seriously corrupt. No point leaving such checks to production code, so GEM_BUG_ON(!i915) would be enough to run the checks in CI and debug builds.
> 
> > +       /* PXP only available for GEN12+ */
> > +       if (INTEL_GEN(i915) < 12)
> > +               return 0;
> 
> I think -ENODEV would be more appropriate return value. Also, we should look into returning this error value from inside the actual init code.
> We want the user to be able to differentiate between kernel does not support and hardware does not support status.
> 
> > +       drm_info(&i915->drm, "i915 PXP is inited with i915=[%p]\n", 
> > + i915);
> 
> We shouldn't be printing the pointer values, especially not in INFO level messages. INFO level messages should be useful for the end-user to read. This is not very useful, we should instead consider something along the lines of:
> 
> "Protected Xe Path (PXP) protected content support initialized"
> 
> Also, we have not really initialized anything so it's really premature to print anything in this patch.
> 
> > +
> > +       return 0;
> > +}
> > +
> > +void intel_pxp_uninit(struct drm_i915_private *i915)
> 
> Same here, we really want to tighten the scope to intel_pxp and call this from intel_gt_fini(), so signature should look like:
> 
> void intel_pxp_fini(struct intel_pxp *pxp)
> 
> Regards, Joonas


More information about the Intel-gfx mailing list