drivers/gpu/drm/xe/xe_guc_types.h

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

File Facts

System
Linux kernel
Corpus path
drivers/gpu/drm/xe/xe_guc_types.h
Extension
.h
Size
3603 bytes
Lines
130
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_guc_db_mgr {
	/** @count: number of doorbells to manage */
	unsigned int count;
	/** @bitmap: bitmap to track allocated doorbells */
	unsigned long *bitmap;
};

/**
 * struct xe_guc_id_mgr - GuC context ID Manager.
 *
 * Note: GuC context ID Manager is relying on &xe_guc::submission_state.lock
 * to protect its members.
 */
struct xe_guc_id_mgr {
	/** @bitmap: bitmap to track allocated IDs */
	unsigned long *bitmap;
	/** @total: total number of IDs being managed */
	unsigned int total;
	/** @used: number of IDs currently in use */
	unsigned int used;
};

/**
 * struct xe_guc - Graphic micro controller
 */
struct xe_guc {
	/** @fw: Generic uC firmware management */
	struct xe_uc_fw fw;
	/** @log: GuC log */
	struct xe_guc_log log;
	/** @ads: GuC ads */
	struct xe_guc_ads ads;
	/** @ct: GuC ct */
	struct xe_guc_ct ct;
	/** @buf: GuC Buffer Cache manager */
	struct xe_guc_buf_cache buf;
	/** @capture: the error-state-capture module's data and objects */
	struct xe_guc_state_capture *capture;
	/** @pc: GuC Power Conservation */
	struct xe_guc_pc pc;
	/** @dbm: GuC Doorbell Manager */
	struct xe_guc_db_mgr dbm;

	/** @g2g: GuC to GuC communication state */
	struct {
		/** @g2g.bo: Storage for GuC to GuC communication channels */
		struct xe_bo *bo;
		/** @g2g.owned: Is the BO owned by this GT or just mapped in */
		bool owned;
	} g2g;

	/** @submission_state: GuC submission state */
	struct {
		/** @submission_state.idm: GuC context ID Manager */
		struct xe_guc_id_mgr idm;
		/** @submission_state.exec_queue_lookup: Lookup an xe_engine from guc_id */
		struct xarray exec_queue_lookup;
		/** @submission_state.stopped: submissions are stopped */
		atomic_t stopped;
		/**
		 * @submission_state.reset_blocked: reset attempts are blocked;
		 * blocking reset in order to delay it may be required if running
		 * an operation which is sensitive to resets.
		 */
		atomic_t reset_blocked;
		/** @submission_state.lock: protects submission state */
		struct mutex lock;
		/** @submission_state.enabled: submission is enabled */
		bool enabled;
		/**
		 * @submission_state.initialized: mark when submission state is
		 * even initialized - before that not even the lock is valid
		 */
		bool initialized;
		/** @submission_state.fini_wq: submit fini wait queue */
		wait_queue_head_t fini_wq;
	} submission_state;

	/** @hwconfig: Hardware config state */
	struct {
		/** @hwconfig.bo: buffer object of the hardware config */
		struct xe_bo *bo;
		/** @hwconfig.size: size of the hardware config */
		u32 size;
	} hwconfig;

	/** @relay: GuC Relay Communication used in SR-IOV */
	struct xe_guc_relay relay;

	/** @engine_activity: Device specific engine activity */

Annotation

Implementation Notes