drivers/gpu/drm/xe/xe_guc_klv_thresholds_set_types.h

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

File Facts

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

#ifndef _XE_GUC_KLV_THRESHOLDS_SET_TYPES_H_
#define _XE_GUC_KLV_THRESHOLDS_SET_TYPES_H_

#include "xe_args.h"

/**
 * MAKE_XE_GUC_KLV_THRESHOLDS_SET - Generate various GuC thresholds definitions.
 * @define: name of the inner macro to expand.
 *
 * The GuC firmware is able to monitor VF's adverse activity and will notify the
 * PF driver once any threshold is exceeded.
 *
 * This super macro allows various conversions between the GuC adverse event
 * threshold KLV definitions and the driver code without repeating similar code
 * or risking missing some cases.
 *
 * For each GuC threshold definition, the inner macro &define will be provided
 * with the &TAG, that corresponds to the GuC threshold KLV key name defined by
 * ABI and the associated &NAME, that may be used in code or debugfs/sysfs::
 *
 *	define(TAG, NAME)
 *
 * If required, KLVs can be labeled with GuC firmware version that added them::
 *
 *	define(TAG, NAME, MAJOR, MINOR)
 *	define(TAG, NAME, MAJOR, MINOR, PATCH)
 */
#define MAKE_XE_GUC_KLV_THRESHOLDS_SET(define)		\
	define(CAT_ERR, cat_error_count)		\
	define(ENGINE_RESET, engine_reset_count)	\
	define(PAGE_FAULT, page_fault_count)		\
	define(H2G_STORM, guc_time_us)			\
	define(IRQ_STORM, irq_time_us)			\
	define(DOORBELL_STORM, doorbell_time_us)	\
	define(MULTI_LRC_COUNT, multi_lrc_count, 70, 53)\
	/* end */

/**
 * XE_GUC_KLV_NUM_THRESHOLDS - Number of GuC thresholds KLVs.
 *
 * Calculated automatically using &MAKE_XE_GUC_KLV_THRESHOLDS_SET.
 */
#define XE_GUC_KLV_NUM_THRESHOLDS \
	(CALL_ARGS(COUNT_ARGS, MAKE_XE_GUC_KLV_THRESHOLDS_SET(ARGS_SEP_COMMA)) - 1)

/**
 * MAKE_XE_GUC_KLV_THRESHOLD_INDEX - Create enumerator name.
 * @TAG: unique TAG of the enum xe_guc_klv_threshold_index.
 */
#define MAKE_XE_GUC_KLV_THRESHOLD_INDEX(TAG) \
	CONCATENATE(XE_GUC_KLV_THRESHOLD_INDEX_, TAG)

/**
 * enum xe_guc_klv_threshold_index - Index of the tracked GuC threshold.
 *
 * This enum is automatically generated using &MAKE_XE_GUC_KLV_THRESHOLDS_SET.
 * All these generated enumerators will only be used by the also generated code.
 */
enum xe_guc_klv_threshold_index {
#define define_xe_guc_klv_threshold_index_enum(TAG, ...)	\
								\
	MAKE_XE_GUC_KLV_THRESHOLD_INDEX(TAG),

	/* private: auto-generated enum definitions */
	MAKE_XE_GUC_KLV_THRESHOLDS_SET(define_xe_guc_klv_threshold_index_enum)
#undef define_xe_guc_klv_threshold_index_enum
};

#endif

Annotation

Implementation Notes