drivers/gpu/drm/xe/xe_pxp_types.h
Source file repositories/reference/linux-study-clean/drivers/gpu/drm/xe/xe_pxp_types.h
File Facts
- System
- Linux kernel
- Corpus path
drivers/gpu/drm/xe/xe_pxp_types.h- Extension
.h- Size
- 4054 bytes
- Lines
- 136
- 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/iosys-map.hlinux/mutex.hlinux/spinlock.hlinux/types.hlinux/workqueue.h
Detected Declarations
struct xe_bostruct xe_exec_queuestruct xe_devicestruct xe_gtstruct xe_vmstruct xe_pxp_gsc_client_resourcesstruct xe_pxpenum xe_pxp_status
Annotated Snippet
struct xe_pxp_gsc_client_resources {
/**
* @host_session_handle: handle used to identify the client in messages
* sent to the GSC firmware.
*/
u64 host_session_handle;
/** @vm: VM used for PXP submissions to the GSCCS */
struct xe_vm *vm;
/** @q: GSCCS exec queue for PXP submissions */
struct xe_exec_queue *q;
/**
* @bo: BO used for submissions to the GSCCS and GSC FW. It includes
* space for the GSCCS batch and the input/output buffers read/written
* by the FW
*/
struct xe_bo *bo;
/** @inout_size: size of each of the msg_in/out sections individually */
u32 inout_size;
/** @batch: iosys_map to the batch memory within the BO */
struct iosys_map batch;
/** @msg_in: iosys_map to the input memory within the BO */
struct iosys_map msg_in;
/** @msg_out: iosys_map to the output memory within the BO */
struct iosys_map msg_out;
};
/**
* struct xe_pxp - pxp state
*/
struct xe_pxp {
/** @xe: Backpoiner to the xe_device struct */
struct xe_device *xe;
/**
* @gt: pointer to the gt that owns the submission-side of PXP
* (VDBOX, KCR and GSC)
*/
struct xe_gt *gt;
/** @vcs_exec: kernel-owned objects for PXP submissions to the VCS */
struct {
/** @vcs_exec.q: kernel-owned VCS exec queue used for PXP terminations */
struct xe_exec_queue *q;
/** @vcs_exec.bo: BO used for submissions to the VCS */
struct xe_bo *bo;
} vcs_exec;
/** @gsc_res: kernel-owned objects for PXP submissions to the GSCCS */
struct xe_pxp_gsc_client_resources gsc_res;
/** @irq: wrapper for the worker and queue used for PXP irq support */
struct {
/** @irq.work: worker that manages irq events. */
struct work_struct work;
/** @irq.wq: workqueue on which to queue the irq work. */
struct workqueue_struct *wq;
/** @irq.events: pending events, protected with xe->irq.lock. */
u32 events;
#define PXP_TERMINATION_REQUEST BIT(0)
#define PXP_TERMINATION_COMPLETE BIT(1)
} irq;
/** @mutex: protects the pxp status and the queue list */
struct mutex mutex;
/** @status: the current pxp status */
enum xe_pxp_status status;
/** @activation: completion struct that tracks pxp start */
struct completion activation;
/** @termination: completion struct that tracks terminations */
struct completion termination;
/** @queues: management of exec_queues that use PXP */
struct {
/** @queues.lock: spinlock protecting the queue management */
spinlock_t lock;
/** @queues.list: list of exec_queues that use PXP */
struct list_head list;
} queues;
/**
* @key_instance: keep track of the current iteration of the PXP key.
* Note that, due to the time needed for PXP termination and re-start
* to complete, the minimum time between 2 subsequent increases of this
* variable is 50ms, and even that only if there is a continuous attack;
* normal behavior is for this to increase much much slower than that.
* This means that we don't expect this to ever wrap and don't implement
* that case in the code.
*/
u32 key_instance;
Annotation
- Immediate include surface: `linux/completion.h`, `linux/iosys-map.h`, `linux/mutex.h`, `linux/spinlock.h`, `linux/types.h`, `linux/workqueue.h`.
- Detected declarations: `struct xe_bo`, `struct xe_exec_queue`, `struct xe_device`, `struct xe_gt`, `struct xe_vm`, `struct xe_pxp_gsc_client_resources`, `struct xe_pxp`, `enum xe_pxp_status`.
- 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.