drivers/gpu/drm/i915/pxp/intel_pxp_types.h
Source file repositories/reference/linux-study-clean/drivers/gpu/drm/i915/pxp/intel_pxp_types.h
File Facts
- System
- Linux kernel
- Corpus path
drivers/gpu/drm/i915/pxp/intel_pxp_types.h- Extension
.h- Size
- 4160 bytes
- Lines
- 131
- Domain
- Driver Families
- Bucket
- drivers/gpu
- Inferred role
- Driver Families: implementation source
- Status
- source implementation candidate
Why This File Exists
Repeatable hardware-adapter layer. Deep compatibility for every driver is out of scope; this atlas records patterns, probe lifecycles, bus glue, IRQ/DMA usage, and links back to core abstractions.
- Repeatable hardware-adapter layer. Deep compatibility for every driver is out of scope; this atlas records patterns, probe lifecycles, bus glue, IRQ/DMA usage, and links back to core abstractions.
- Defines or uses C structs; map object ownership, embedded links, reference counts, and lock ownership.
Dependency Surface
linux/completion.hlinux/mutex.hlinux/types.hlinux/workqueue.h
Detected Declarations
struct intel_contextstruct intel_gtstruct i915_pxp_componentstruct drm_i915_privatestruct intel_pxpstruct gsccs_session_resources
Annotated Snippet
struct intel_pxp {
/**
* @ctrl_gt: pointer to the tile that owns the controls for PXP subsystem assets that
* the VDBOX, the KCR engine (and GSC CS depending on the platform)
*/
struct intel_gt *ctrl_gt;
/**
* @platform_cfg_is_bad: used to track if any prior arb session creation resulted
* in a failure that was caused by a platform configuration issue, meaning that
* failure will not get resolved without a change to the platform (not kernel)
* such as BIOS configuration, firwmware update, etc. This bool gets reflected when
* GET_PARAM:I915_PARAM_PXP_STATUS is called.
*/
bool platform_cfg_is_bad;
/**
* @kcr_base: base mmio offset for the KCR engine which is different on legacy platforms
* vs newer platforms where the KCR is inside the media-tile.
*/
u32 kcr_base;
/**
* @gsccs_res: resources for request submission for platforms that have a GSC engine.
*/
struct gsccs_session_resources {
u64 host_session_handle; /* used by firmware to link commands to sessions */
struct intel_context *ce; /* context for gsc command submission */
struct i915_vma *pkt_vma; /* GSC FW cmd packet vma */
void *pkt_vaddr; /* GSC FW cmd packet virt pointer */
struct i915_vma *bb_vma; /* HECI_PKT batch buffer vma */
void *bb_vaddr; /* HECI_PKT batch buffer virt pointer */
} gsccs_res;
/**
* @pxp_component: i915_pxp_component struct of the bound mei_pxp
* module. Only set and cleared inside component bind/unbind functions,
* which are protected by &tee_mutex.
*/
struct i915_pxp_component *pxp_component;
/**
* @dev_link: Enforce module relationship for power management ordering.
*/
struct device_link *dev_link;
/**
* @pxp_component_added: track if the pxp component has been added.
* Set and cleared in tee init and fini functions respectively.
*/
bool pxp_component_added;
/** @ce: kernel-owned context used for PXP operations */
struct intel_context *ce;
/** @arb_mutex: protects arb session start */
struct mutex arb_mutex;
/**
* @arb_is_valid: tracks arb session status.
* After a teardown, the arb session can still be in play on the HW
* even if the keys are gone, so we can't rely on the HW state of the
* session to know if it's valid and need to track the status in SW.
*/
bool arb_is_valid;
/**
* @key_instance: tracks which key instance we're on, so we can use it
* to determine if an object was created using the current key or a
* previous one.
*/
u32 key_instance;
/** @tee_mutex: protects the tee channel binding and messaging. */
struct mutex tee_mutex;
/** @stream_cmd: LMEM obj used to send stream PXP commands to the GSC */
struct {
struct drm_i915_gem_object *obj; /* contains PXP command memory */
void *vaddr; /* virtual memory for PXP command */
} stream_cmd;
/**
* @hw_state_invalidated: if the HW perceives an attack on the integrity
* of the encryption it will invalidate the keys and expect SW to
* re-initialize the session. We keep track of this state to make sure
* we only re-start the arb session when required.
*/
bool hw_state_invalidated;
Annotation
- Immediate include surface: `linux/completion.h`, `linux/mutex.h`, `linux/types.h`, `linux/workqueue.h`.
- Detected declarations: `struct intel_context`, `struct intel_gt`, `struct i915_pxp_component`, `struct drm_i915_private`, `struct intel_pxp`, `struct gsccs_session_resources`.
- Atlas domain: Driver Families / drivers/gpu.
- Implementation status: source implementation candidate.
Implementation Notes
- This generated page is the file-by-file coverage layer; curated subsystem chapters should link here when they synthesize a multi-file control flow.
- Core OS pages should be promoted from atlas-only to deep-reviewed when they explain data structures, invariants, locking, lifecycle, and C implementation snippets.
- Driver-family pages are intentionally pattern-oriented unless they are part of the selected PCIe/NVMe representative device path.