drivers/gpu/drm/amd/amdgpu/amdgv_sriovmsg.h

Source file repositories/reference/linux-study-clean/drivers/gpu/drm/amd/amdgpu/amdgv_sriovmsg.h

File Facts

System
Linux kernel
Corpus path
drivers/gpu/drm/amd/amdgpu/amdgv_sriovmsg.h
Extension
.h
Size
16826 bytes
Lines
541
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 amd_sriov_msg_init_data_header {
	char     signature[4];  /* "INDA"  */
	uint32_t version;
	uint32_t checksum;
	uint32_t initdata_offset; /* 0 */
	uint32_t initdata_size_in_kb; /* 5MB */
	uint32_t valid_tables;
	uint32_t vbios_img_offset;
	uint32_t vbios_img_size_in_kb;
	uint32_t dataexchange_offset;
	uint32_t dataexchange_size_in_kb;
	uint32_t ras_tele_info_offset;
	uint32_t ras_tele_info_size_in_kb;
	uint32_t ip_discovery_offset;
	uint32_t ip_discovery_size_in_kb;
	uint32_t bad_page_info_offset;
	uint32_t bad_page_size_in_kb;
	uint32_t reserved[8];
};

/*
 * PF2VF history log:
 * v1 defined in amdgim
 * v2 current
 *
 * VF2PF history log:
 * v1 defined in amdgim
 * v2 defined in amdgim
 * v3 current
 */
#define AMD_SRIOV_MSG_FW_VRAM_PF2VF_VER 2
#define AMD_SRIOV_MSG_FW_VRAM_VF2PF_VER 3

#define AMD_SRIOV_MSG_RESERVE_UCODE 24

#define AMD_SRIOV_MSG_RESERVE_VCN_INST 4

enum amd_sriov_ucode_engine_id {
	AMD_SRIOV_UCODE_ID_VCE = 0,
	AMD_SRIOV_UCODE_ID_UVD,
	AMD_SRIOV_UCODE_ID_MC,
	AMD_SRIOV_UCODE_ID_ME,
	AMD_SRIOV_UCODE_ID_PFP,
	AMD_SRIOV_UCODE_ID_CE,
	AMD_SRIOV_UCODE_ID_RLC,
	AMD_SRIOV_UCODE_ID_RLC_SRLC,
	AMD_SRIOV_UCODE_ID_RLC_SRLG,
	AMD_SRIOV_UCODE_ID_RLC_SRLS,
	AMD_SRIOV_UCODE_ID_MEC,
	AMD_SRIOV_UCODE_ID_MEC2,
	AMD_SRIOV_UCODE_ID_SOS,
	AMD_SRIOV_UCODE_ID_ASD,
	AMD_SRIOV_UCODE_ID_TA_RAS,
	AMD_SRIOV_UCODE_ID_TA_XGMI,
	AMD_SRIOV_UCODE_ID_SMC,
	AMD_SRIOV_UCODE_ID_SDMA,
	AMD_SRIOV_UCODE_ID_SDMA2,
	AMD_SRIOV_UCODE_ID_VCN,
	AMD_SRIOV_UCODE_ID_DMCU,
	AMD_SRIOV_UCODE_ID__MAX
};

#pragma pack(push, 1) // PF2VF / VF2PF data areas are byte packed

union amd_sriov_msg_feature_flags {
	struct {
		uint32_t error_log_collect	: 1;
		uint32_t host_load_ucodes	: 1;
		uint32_t host_flr_vramlost	: 1;
		uint32_t mm_bw_management	: 1;
		uint32_t pp_one_vf_mode		: 1;
		uint32_t reg_indirect_acc	: 1;
		uint32_t av1_support		: 1;
		uint32_t vcn_rb_decouple	: 1;
		uint32_t mes_info_dump_enable	: 1;
		uint32_t ras_caps		: 1;
		uint32_t ras_telemetry		: 1;
		uint32_t ras_cper		: 1;
		uint32_t xgmi_ta_ext_peer_link	: 1;
		uint32_t xgmi_connected_to_cpu  : 1;
		uint32_t ptl_support		: 1;
		uint32_t unitid_support		: 1;
		uint32_t reserved		: 16;
	} flags;
	uint32_t all;
};

union amd_sriov_reg_access_flags {
	struct {
		uint32_t vf_reg_access_ih		: 1;

Annotation

Implementation Notes