Add support to enable/disable PLANE_SURF Decryption Request bit. It requires only to enable plane decryption support when following condition met. 1. PXP session is enabled. 2. Buffer object is protected. v2: - Used gen fb obj user_flags instead gem_object_metadata. [Krishna] v3: - intel_pxp_gem_object_status() API changes. v4: use intel_pxp_is_active (Daniele) v5: rebase and use the new protected object status checker (Daniele) v6: used plane state for plane_decryption to handle async flip as suggested by Ville. v7: check pxp session while plane decrypt state computation. [Ville] removed pointless code. [Ville] v8 (Daniele): update PXP check v9: move decrypt check after icl_check_nv12_planes() when overlays have fb set (Juston) v10 (Daniele): update PXP check again to match rework in earlier patches and don't consider protection valid if the object has not been used in an execbuf beforehand. Cc: Bommu Krishnaiah <krishnaiah.bommu@intel.com> Cc: Huang Sean Z <sean.z.huang@intel.com> Cc: Gaurav Kumar <kumar.gaurav@intel.com> Cc: Ville Syrjälä <ville.syrjala@linux.intel.com> Signed-off-by: Anshuman Gupta <anshuman.gupta@intel.com> Signed-off-by: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com> Signed-off-by: Juston Li <juston.li@intel.com> Reviewed-by: Rodrigo Vivi <rodrigo.vivi@intel.com> Reviewed-by: Uma Shankar <uma.shankar@intel.com> #v9 Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com> Link: https://patchwork.freedesktop.org/patch/msgid/20210924191452.1539378-14-alan.previn.teres.alexis@intel.com
64 lines
1.3 KiB
C
64 lines
1.3 KiB
C
/* SPDX-License-Identifier: MIT */
|
|
/*
|
|
* Copyright(c) 2020, Intel Corporation. All rights reserved.
|
|
*/
|
|
|
|
#ifndef __INTEL_PXP_H__
|
|
#define __INTEL_PXP_H__
|
|
|
|
#include "intel_pxp_types.h"
|
|
|
|
struct drm_i915_gem_object;
|
|
|
|
static inline bool intel_pxp_is_enabled(const struct intel_pxp *pxp)
|
|
{
|
|
return pxp->ce;
|
|
}
|
|
|
|
#ifdef CONFIG_DRM_I915_PXP
|
|
struct intel_gt *pxp_to_gt(const struct intel_pxp *pxp);
|
|
bool intel_pxp_is_active(const struct intel_pxp *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);
|
|
|
|
void intel_pxp_mark_termination_in_progress(struct intel_pxp *pxp);
|
|
|
|
int intel_pxp_start(struct intel_pxp *pxp);
|
|
|
|
int intel_pxp_key_check(struct intel_pxp *pxp,
|
|
struct drm_i915_gem_object *obj,
|
|
bool assign);
|
|
|
|
void intel_pxp_invalidate(struct intel_pxp *pxp);
|
|
#else
|
|
static inline void intel_pxp_init(struct intel_pxp *pxp)
|
|
{
|
|
}
|
|
|
|
static inline void intel_pxp_fini(struct intel_pxp *pxp)
|
|
{
|
|
}
|
|
|
|
static inline int intel_pxp_start(struct intel_pxp *pxp)
|
|
{
|
|
return -ENODEV;
|
|
}
|
|
|
|
static inline bool intel_pxp_is_active(const struct intel_pxp *pxp)
|
|
{
|
|
return false;
|
|
}
|
|
|
|
static inline int intel_pxp_key_check(struct intel_pxp *pxp,
|
|
struct drm_i915_gem_object *obj,
|
|
bool assign)
|
|
{
|
|
return -ENODEV;
|
|
}
|
|
#endif
|
|
|
|
#endif /* __INTEL_PXP_H__ */
|