drivers/gpu/drm/xe/abi/guc_actions_slpc_abi.h

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

File Facts

System
Linux kernel
Corpus path
drivers/gpu/drm/xe/abi/guc_actions_slpc_abi.h
Extension
.h
Size
11461 bytes
Lines
280
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 slpc_task_state_data {
	union {
		u32 task_status_padding;
		struct {
			u32 status;
#define SLPC_GTPERF_TASK_ENABLED	REG_BIT(0)
#define SLPC_DCC_TASK_ENABLED		REG_BIT(11)
#define SLPC_IN_DCC			REG_BIT(12)
#define SLPC_BALANCER_ENABLED		REG_BIT(15)
#define SLPC_IBC_TASK_ENABLED		REG_BIT(16)
#define SLPC_BALANCER_IA_LMT_ENABLED	REG_BIT(17)
#define SLPC_BALANCER_IA_LMT_ACTIVE	REG_BIT(18)
		};
	};
	union {
		u32 freq_padding;
		struct {
#define SLPC_MAX_UNSLICE_FREQ_MASK	REG_GENMASK(7, 0)
#define SLPC_MIN_UNSLICE_FREQ_MASK	REG_GENMASK(15, 8)
#define SLPC_MAX_SLICE_FREQ_MASK	REG_GENMASK(23, 16)
#define SLPC_MIN_SLICE_FREQ_MASK	REG_GENMASK(31, 24)
			u32 freq;
		};
	};
} __packed;

#define SLPC_CTX_FREQ_REQ_IS_COMPUTE		REG_BIT(28)
#define SLPC_OPTIMIZED_STRATEGY_COMPUTE		REG_BIT(0)

struct slpc_shared_data_header {
	/* Total size in bytes of this shared buffer. */
	u32 size;
	u32 global_state;
	u32 display_data_addr;
} __packed;

struct slpc_override_params {
	u32 bits[SLPC_OVERRIDE_BITFIELD_SIZE];
	u32 values[SLPC_MAX_OVERRIDE_PARAMETERS];
} __packed;

struct slpc_shared_data {
	struct slpc_shared_data_header header;
	u8 shared_data_header_pad[SLPC_SHARED_DATA_SIZE_BYTE_HEADER -
				sizeof(struct slpc_shared_data_header)];

	u8 platform_info_pad[SLPC_SHARED_DATA_SIZE_BYTE_PLATFORM_INFO];

	struct slpc_task_state_data task_state_data;
	u8 task_state_data_pad[SLPC_SHARED_DATA_SIZE_BYTE_TASK_STATE -
				sizeof(struct slpc_task_state_data)];

	struct slpc_override_params override_params;
	u8 override_params_pad[SLPC_OVERRIDE_PARAMS_TOTAL_BYTES -
				sizeof(struct slpc_override_params)];

	u8 shared_data_pad[SLPC_SHARED_DATA_SIZE_BYTE_OTHER];

	/* PAGE 2 (4096 bytes), mode based parameter will be removed soon */
	u8 reserved_mode_definition[4096];
} __packed;

enum slpc_power_profile {
	SLPC_POWER_PROFILE_BASE = 0x0,
	SLPC_POWER_PROFILE_POWER_SAVING = 0x1
};

/**
 * DOC: SLPC H2G MESSAGE FORMAT
 *
 *  +---+-------+--------------------------------------------------------------+
 *  |   | Bits  | Description                                                  |
 *  +===+=======+==============================================================+
 *  | 0 |    31 | ORIGIN = GUC_HXG_ORIGIN_HOST_                                |
 *  |   +-------+--------------------------------------------------------------+
 *  |   | 30:28 | TYPE = GUC_HXG_TYPE_REQUEST_                                 |
 *  |   +-------+--------------------------------------------------------------+
 *  |   | 27:16 | DATA0 = MBZ                                                  |
 *  |   +-------+--------------------------------------------------------------+
 *  |   |  15:0 | ACTION = _`GUC_ACTION_HOST2GUC_PC_SLPM_REQUEST` = 0x3003     |
 *  +---+-------+--------------------------------------------------------------+
 *  | 1 |  31:8 | **EVENT_ID**                                                 |
 *  +   +-------+--------------------------------------------------------------+
 *  |   |   7:0 | **EVENT_ARGC** - number of data arguments                    |
 *  +---+-------+--------------------------------------------------------------+
 *  | 2 |  31:0 | **EVENT_DATA1**                                              |
 *  +---+-------+--------------------------------------------------------------+
 *  |...|  31:0 | ...                                                          |
 *  +---+-------+--------------------------------------------------------------+
 *  |2+n|  31:0 | **EVENT_DATAn**                                              |

Annotation

Implementation Notes