brintos

brintos / linux-shallow public Read only

0
0
Text · 5.9 KiB · d574803 Raw
178 lines · c
1/*2 * Copyright 2018-2022 Advanced Micro Devices, Inc.3 *4 * Permission is hereby granted, free of charge, to any person obtaining a5 * copy of this software and associated documentation files (the "Software"),6 * to deal in the Software without restriction, including without limitation7 * the rights to use, copy, modify, merge, publish, distribute, sublicense,8 * and/or sell copies of the Software, and to permit persons to whom the9 * Software is furnished to do so, subject to the following conditions:10 *11 * The above copyright notice and this permission notice shall be included in12 * all copies or substantial portions of the Software.13 *14 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR15 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,16 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL17 * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR18 * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,19 * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR20 * OTHER DEALINGS IN THE SOFTWARE.21 *22 */23#ifndef _TA_XGMI_IF_H24#define _TA_XGMI_IF_H25 26/* Responses have bit 31 set */27#define RSP_ID_MASK (1U << 31)28#define RSP_ID(cmdId) (((uint32_t)(cmdId)) | RSP_ID_MASK)29 30#define EXTEND_PEER_LINK_INFO_CMD_FLAG 131 32enum ta_command_xgmi {33	/* Initialize the Context and Session Topology */34	TA_COMMAND_XGMI__INITIALIZE			= 0x00,35	/* Gets the current GPU's node ID */36	TA_COMMAND_XGMI__GET_NODE_ID			= 0x01,37	/* Gets the current GPU's hive ID */38	TA_COMMAND_XGMI__GET_HIVE_ID			= 0x02,39	/* Gets the Peer's topology Information */40	TA_COMMAND_XGMI__GET_TOPOLOGY_INFO		= 0x03,41	/* Sets the Peer's topology Information */42	TA_COMMAND_XGMI__SET_TOPOLOGY_INFO		= 0x04,43	/* Gets the total links between adjacent peer dies in hive */44	TA_COMMAND_XGMI__GET_PEER_LINKS			= 0x0B,45	/* Gets the total links and connected port numbers between adjacent peer dies in hive */46	TA_COMMAND_XGMI__GET_EXTEND_PEER_LINKS		= 0x0C47};48 49/* XGMI related enumerations */50/**********************************************************/;51enum { TA_XGMI__MAX_CONNECTED_NODES = 64 };52enum { TA_XGMI__MAX_INTERNAL_STATE = 32 };53enum { TA_XGMI__MAX_INTERNAL_STATE_BUFFER = 128 };54enum { TA_XGMI__MAX_PORT_NUM = 8 };55 56enum ta_xgmi_status {57	TA_XGMI_STATUS__SUCCESS				= 0x00,58	TA_XGMI_STATUS__GENERIC_FAILURE			= 0x01,59	TA_XGMI_STATUS__NULL_POINTER			= 0x02,60	TA_XGMI_STATUS__INVALID_PARAMETER		= 0x03,61	TA_XGMI_STATUS__NOT_INITIALIZED			= 0x04,62	TA_XGMI_STATUS__INVALID_NODE_NUM		= 0x05,63	TA_XGMI_STATUS__INVALID_NODE_ID			= 0x06,64	TA_XGMI_STATUS__INVALID_TOPOLOGY		= 0x07,65	TA_XGMI_STATUS__FAILED_ID_GEN			= 0x08,66	TA_XGMI_STATUS__FAILED_TOPOLOGY_INIT		= 0x09,67	TA_XGMI_STATUS__SET_SHARING_ERROR		= 0x0A68};69 70enum ta_xgmi_assigned_sdma_engine {71	TA_XGMI_ASSIGNED_SDMA_ENGINE__NOT_ASSIGNED	= -1,72	TA_XGMI_ASSIGNED_SDMA_ENGINE__SDMA0		= 0,73	TA_XGMI_ASSIGNED_SDMA_ENGINE__SDMA1		= 1,74	TA_XGMI_ASSIGNED_SDMA_ENGINE__SDMA2		= 2,75	TA_XGMI_ASSIGNED_SDMA_ENGINE__SDMA3		= 3,76	TA_XGMI_ASSIGNED_SDMA_ENGINE__SDMA4		= 4,77	TA_XGMI_ASSIGNED_SDMA_ENGINE__SDMA5		= 578};79 80/* input/output structures for XGMI commands */81/**********************************************************/82struct ta_xgmi_node_info {83	uint64_t				node_id;84	uint8_t					num_hops;85	uint8_t					is_sharing_enabled;86	enum ta_xgmi_assigned_sdma_engine	sdma_engine;87};88 89struct ta_xgmi_peer_link_info {90	uint64_t				node_id;91	uint8_t					num_links;92};93 94struct xgmi_connected_port_num {95	uint8_t		dst_xgmi_port_num;96	uint8_t		src_xgmi_port_num;97};98 99/* support both the port num and num_links */100struct ta_xgmi_extend_peer_link_info {101	uint64_t				node_id;102	uint8_t					num_links;103	struct xgmi_connected_port_num		port_num[TA_XGMI__MAX_PORT_NUM];104};105 106struct ta_xgmi_cmd_initialize_output {107	uint32_t	status;108};109 110struct ta_xgmi_cmd_get_node_id_output {111	uint64_t	node_id;112};113 114struct ta_xgmi_cmd_get_hive_id_output {115	uint64_t	hive_id;116};117 118struct ta_xgmi_cmd_get_topology_info_input {119	uint32_t			num_nodes;120	struct ta_xgmi_node_info	nodes[TA_XGMI__MAX_CONNECTED_NODES];121};122 123struct ta_xgmi_cmd_get_topology_info_output {124	uint32_t			num_nodes;125	struct ta_xgmi_node_info	nodes[TA_XGMI__MAX_CONNECTED_NODES];126};127 128struct ta_xgmi_cmd_set_topology_info_input {129	uint32_t			num_nodes;130	struct ta_xgmi_node_info	nodes[TA_XGMI__MAX_CONNECTED_NODES];131};132 133/* support XGMI TA w/ and w/o port_num both so two similar structs defined */134struct ta_xgmi_cmd_get_peer_link_info {135	uint32_t			num_nodes;136	struct ta_xgmi_peer_link_info	nodes[TA_XGMI__MAX_CONNECTED_NODES];137};138 139struct ta_xgmi_cmd_get_extend_peer_link_info {140	uint32_t				num_nodes;141	struct ta_xgmi_extend_peer_link_info nodes[TA_XGMI__MAX_CONNECTED_NODES];142};143/**********************************************************/144/* Common input structure for XGMI callbacks */145union ta_xgmi_cmd_input {146	struct ta_xgmi_cmd_get_topology_info_input	get_topology_info;147	struct ta_xgmi_cmd_set_topology_info_input	set_topology_info;148};149 150/* Common output structure for XGMI callbacks */151union ta_xgmi_cmd_output {152	struct ta_xgmi_cmd_initialize_output		initialize;153	struct ta_xgmi_cmd_get_node_id_output		get_node_id;154	struct ta_xgmi_cmd_get_hive_id_output		get_hive_id;155	struct ta_xgmi_cmd_get_topology_info_output	get_topology_info;156	struct ta_xgmi_cmd_get_peer_link_info		get_link_info;157	struct ta_xgmi_cmd_get_extend_peer_link_info	get_extend_link_info;158};159 160struct ta_xgmi_shared_memory {161	uint32_t			cmd_id;162	uint32_t			resp_id;163	enum ta_xgmi_status		xgmi_status;164 165	/* if the number of xgmi link record is more than 128, driver will set the166	 * flag 0 to get the first 128 of the link records and will set to 1, to get167	 * the second set168	 */169	uint8_t				flag_extend_link_record;170	/* bit0: port_num info support flag for GET_EXTEND_PEER_LINKS commmand */171	uint8_t				caps_flag;172	uint8_t				reserved[2];173	union ta_xgmi_cmd_input		xgmi_in_message;174	union ta_xgmi_cmd_output	xgmi_out_message;175};176 177#endif   //_TA_XGMI_IF_H178