drivers/gpu/drm/xe/xe_gpu_scheduler_types.h

Source file repositories/reference/linux-study-clean/drivers/gpu/drm/xe/xe_gpu_scheduler_types.h

File Facts

System
Linux kernel
Corpus path
drivers/gpu/drm/xe/xe_gpu_scheduler_types.h
Extension
.h
Size
1541 bytes
Lines
60
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.

Dependency Surface

Detected Declarations

Annotated Snippet

struct xe_sched_msg {
	/** @link: list link into the gpu scheduler list of messages */
	struct list_head		link;
	/**
	 * @private_data: opaque pointer to message private data (backend defined)
	 */
	void				*private_data;
	/** @opcode: opcode of message (backend defined) */
	unsigned int			opcode;
};

/**
 * struct xe_sched_backend_ops - Define the backend operations called by the
 * scheduler
 */
struct xe_sched_backend_ops {
	/**
	 * @process_msg: Process a message. Allowed to block, it is this
	 * function's responsibility to free message if dynamically allocated.
	 */
	void (*process_msg)(struct xe_sched_msg *msg);
};

/**
 * struct xe_gpu_scheduler - Xe GPU scheduler
 */
struct xe_gpu_scheduler {
	/** @base: DRM GPU scheduler */
	struct drm_gpu_scheduler		base;
	/** @ops: Xe scheduler ops */
	const struct xe_sched_backend_ops	*ops;
	/** @msgs: list of messages to be processed in @work_process_msg */
	struct list_head			msgs;
	/** @msg_lock: Message lock */
	spinlock_t				msg_lock;
	/** @work_process_msg: processes messages */
	struct work_struct		work_process_msg;
};

#define xe_sched_entity		drm_sched_entity
#define xe_sched_policy		drm_sched_policy

#endif

Annotation

Implementation Notes