1*b87f920bSLizhi Hou /* SPDX-License-Identifier: GPL-2.0 */ 2*b87f920bSLizhi Hou /* 3*b87f920bSLizhi Hou * Copyright (C) 2022-2024, Advanced Micro Devices, Inc. 4*b87f920bSLizhi Hou */ 5*b87f920bSLizhi Hou 6*b87f920bSLizhi Hou #ifndef _AIE2_MSG_PRIV_H_ 7*b87f920bSLizhi Hou #define _AIE2_MSG_PRIV_H_ 8*b87f920bSLizhi Hou 9*b87f920bSLizhi Hou enum aie2_msg_opcode { 10*b87f920bSLizhi Hou MSG_OP_CREATE_CONTEXT = 0x2, 11*b87f920bSLizhi Hou MSG_OP_DESTROY_CONTEXT = 0x3, 12*b87f920bSLizhi Hou MSG_OP_SYNC_BO = 0x7, 13*b87f920bSLizhi Hou MSG_OP_EXECUTE_BUFFER_CF = 0xC, 14*b87f920bSLizhi Hou MSG_OP_QUERY_COL_STATUS = 0xD, 15*b87f920bSLizhi Hou MSG_OP_QUERY_AIE_TILE_INFO = 0xE, 16*b87f920bSLizhi Hou MSG_OP_QUERY_AIE_VERSION = 0xF, 17*b87f920bSLizhi Hou MSG_OP_EXEC_DPU = 0x10, 18*b87f920bSLizhi Hou MSG_OP_CONFIG_CU = 0x11, 19*b87f920bSLizhi Hou MSG_OP_CHAIN_EXEC_BUFFER_CF = 0x12, 20*b87f920bSLizhi Hou MSG_OP_CHAIN_EXEC_DPU = 0x13, 21*b87f920bSLizhi Hou MSG_OP_MAX_XRT_OPCODE, 22*b87f920bSLizhi Hou MSG_OP_SUSPEND = 0x101, 23*b87f920bSLizhi Hou MSG_OP_RESUME = 0x102, 24*b87f920bSLizhi Hou MSG_OP_ASSIGN_MGMT_PASID = 0x103, 25*b87f920bSLizhi Hou MSG_OP_INVOKE_SELF_TEST = 0x104, 26*b87f920bSLizhi Hou MSG_OP_MAP_HOST_BUFFER = 0x106, 27*b87f920bSLizhi Hou MSG_OP_GET_FIRMWARE_VERSION = 0x108, 28*b87f920bSLizhi Hou MSG_OP_SET_RUNTIME_CONFIG = 0x10A, 29*b87f920bSLizhi Hou MSG_OP_GET_RUNTIME_CONFIG = 0x10B, 30*b87f920bSLizhi Hou MSG_OP_REGISTER_ASYNC_EVENT_MSG = 0x10C, 31*b87f920bSLizhi Hou MSG_OP_MAX_DRV_OPCODE, 32*b87f920bSLizhi Hou MSG_OP_GET_PROTOCOL_VERSION = 0x301, 33*b87f920bSLizhi Hou MSG_OP_MAX_OPCODE 34*b87f920bSLizhi Hou }; 35*b87f920bSLizhi Hou 36*b87f920bSLizhi Hou enum aie2_msg_status { 37*b87f920bSLizhi Hou AIE2_STATUS_SUCCESS = 0x0, 38*b87f920bSLizhi Hou /* AIE Error codes */ 39*b87f920bSLizhi Hou AIE2_STATUS_AIE_SATURATION_ERROR = 0x1000001, 40*b87f920bSLizhi Hou AIE2_STATUS_AIE_FP_ERROR = 0x1000002, 41*b87f920bSLizhi Hou AIE2_STATUS_AIE_STREAM_ERROR = 0x1000003, 42*b87f920bSLizhi Hou AIE2_STATUS_AIE_ACCESS_ERROR = 0x1000004, 43*b87f920bSLizhi Hou AIE2_STATUS_AIE_BUS_ERROR = 0x1000005, 44*b87f920bSLizhi Hou AIE2_STATUS_AIE_INSTRUCTION_ERROR = 0x1000006, 45*b87f920bSLizhi Hou AIE2_STATUS_AIE_ECC_ERROR = 0x1000007, 46*b87f920bSLizhi Hou AIE2_STATUS_AIE_LOCK_ERROR = 0x1000008, 47*b87f920bSLizhi Hou AIE2_STATUS_AIE_DMA_ERROR = 0x1000009, 48*b87f920bSLizhi Hou AIE2_STATUS_AIE_MEM_PARITY_ERROR = 0x100000a, 49*b87f920bSLizhi Hou AIE2_STATUS_AIE_PWR_CFG_ERROR = 0x100000b, 50*b87f920bSLizhi Hou AIE2_STATUS_AIE_BACKTRACK_ERROR = 0x100000c, 51*b87f920bSLizhi Hou AIE2_STATUS_MAX_AIE_STATUS_CODE, 52*b87f920bSLizhi Hou /* MGMT ERT Error codes */ 53*b87f920bSLizhi Hou AIE2_STATUS_MGMT_ERT_SELF_TEST_FAILURE = 0x2000001, 54*b87f920bSLizhi Hou AIE2_STATUS_MGMT_ERT_HASH_MISMATCH, 55*b87f920bSLizhi Hou AIE2_STATUS_MGMT_ERT_NOAVAIL, 56*b87f920bSLizhi Hou AIE2_STATUS_MGMT_ERT_INVALID_PARAM, 57*b87f920bSLizhi Hou AIE2_STATUS_MGMT_ERT_ENTER_SUSPEND_FAILURE, 58*b87f920bSLizhi Hou AIE2_STATUS_MGMT_ERT_BUSY, 59*b87f920bSLizhi Hou AIE2_STATUS_MGMT_ERT_APPLICATION_ACTIVE, 60*b87f920bSLizhi Hou MAX_MGMT_ERT_STATUS_CODE, 61*b87f920bSLizhi Hou /* APP ERT Error codes */ 62*b87f920bSLizhi Hou AIE2_STATUS_APP_ERT_FIRST_ERROR = 0x3000001, 63*b87f920bSLizhi Hou AIE2_STATUS_APP_INVALID_INSTR, 64*b87f920bSLizhi Hou AIE2_STATUS_APP_LOAD_PDI_FAIL, 65*b87f920bSLizhi Hou MAX_APP_ERT_STATUS_CODE, 66*b87f920bSLizhi Hou /* NPU RTOS Error Codes */ 67*b87f920bSLizhi Hou AIE2_STATUS_INVALID_INPUT_BUFFER = 0x4000001, 68*b87f920bSLizhi Hou AIE2_STATUS_INVALID_COMMAND, 69*b87f920bSLizhi Hou AIE2_STATUS_INVALID_PARAM, 70*b87f920bSLizhi Hou AIE2_STATUS_INVALID_OPERATION = 0x4000006, 71*b87f920bSLizhi Hou AIE2_STATUS_ASYNC_EVENT_MSGS_FULL, 72*b87f920bSLizhi Hou AIE2_STATUS_MAX_RTOS_STATUS_CODE, 73*b87f920bSLizhi Hou MAX_AIE2_STATUS_CODE 74*b87f920bSLizhi Hou }; 75*b87f920bSLizhi Hou 76*b87f920bSLizhi Hou struct assign_mgmt_pasid_req { 77*b87f920bSLizhi Hou __u16 pasid; 78*b87f920bSLizhi Hou __u16 reserved; 79*b87f920bSLizhi Hou } __packed; 80*b87f920bSLizhi Hou 81*b87f920bSLizhi Hou struct assign_mgmt_pasid_resp { 82*b87f920bSLizhi Hou enum aie2_msg_status status; 83*b87f920bSLizhi Hou } __packed; 84*b87f920bSLizhi Hou 85*b87f920bSLizhi Hou struct map_host_buffer_req { 86*b87f920bSLizhi Hou __u32 context_id; 87*b87f920bSLizhi Hou __u64 buf_addr; 88*b87f920bSLizhi Hou __u64 buf_size; 89*b87f920bSLizhi Hou } __packed; 90*b87f920bSLizhi Hou 91*b87f920bSLizhi Hou struct map_host_buffer_resp { 92*b87f920bSLizhi Hou enum aie2_msg_status status; 93*b87f920bSLizhi Hou } __packed; 94*b87f920bSLizhi Hou 95*b87f920bSLizhi Hou #define MAX_CQ_PAIRS 2 96*b87f920bSLizhi Hou struct cq_info { 97*b87f920bSLizhi Hou __u32 head_addr; 98*b87f920bSLizhi Hou __u32 tail_addr; 99*b87f920bSLizhi Hou __u32 buf_addr; 100*b87f920bSLizhi Hou __u32 buf_size; 101*b87f920bSLizhi Hou }; 102*b87f920bSLizhi Hou 103*b87f920bSLizhi Hou struct cq_pair { 104*b87f920bSLizhi Hou struct cq_info x2i_q; 105*b87f920bSLizhi Hou struct cq_info i2x_q; 106*b87f920bSLizhi Hou }; 107*b87f920bSLizhi Hou 108*b87f920bSLizhi Hou struct create_ctx_req { 109*b87f920bSLizhi Hou __u32 aie_type; 110*b87f920bSLizhi Hou __u8 start_col; 111*b87f920bSLizhi Hou __u8 num_col; 112*b87f920bSLizhi Hou __u16 reserved; 113*b87f920bSLizhi Hou __u8 num_cq_pairs_requested; 114*b87f920bSLizhi Hou __u8 reserved1; 115*b87f920bSLizhi Hou __u16 pasid; 116*b87f920bSLizhi Hou __u32 pad[2]; 117*b87f920bSLizhi Hou __u32 sec_comm_target_type; 118*b87f920bSLizhi Hou __u32 context_priority; 119*b87f920bSLizhi Hou } __packed; 120*b87f920bSLizhi Hou 121*b87f920bSLizhi Hou struct create_ctx_resp { 122*b87f920bSLizhi Hou enum aie2_msg_status status; 123*b87f920bSLizhi Hou __u32 context_id; 124*b87f920bSLizhi Hou __u16 msix_id; 125*b87f920bSLizhi Hou __u8 num_cq_pairs_allocated; 126*b87f920bSLizhi Hou __u8 reserved; 127*b87f920bSLizhi Hou struct cq_pair cq_pair[MAX_CQ_PAIRS]; 128*b87f920bSLizhi Hou } __packed; 129*b87f920bSLizhi Hou 130*b87f920bSLizhi Hou struct destroy_ctx_req { 131*b87f920bSLizhi Hou __u32 context_id; 132*b87f920bSLizhi Hou } __packed; 133*b87f920bSLizhi Hou 134*b87f920bSLizhi Hou struct destroy_ctx_resp { 135*b87f920bSLizhi Hou enum aie2_msg_status status; 136*b87f920bSLizhi Hou } __packed; 137*b87f920bSLizhi Hou 138*b87f920bSLizhi Hou struct execute_buffer_req { 139*b87f920bSLizhi Hou __u32 cu_idx; 140*b87f920bSLizhi Hou __u32 payload[19]; 141*b87f920bSLizhi Hou } __packed; 142*b87f920bSLizhi Hou 143*b87f920bSLizhi Hou struct exec_dpu_req { 144*b87f920bSLizhi Hou __u64 inst_buf_addr; 145*b87f920bSLizhi Hou __u32 inst_size; 146*b87f920bSLizhi Hou __u32 inst_prop_cnt; 147*b87f920bSLizhi Hou __u32 cu_idx; 148*b87f920bSLizhi Hou __u32 payload[35]; 149*b87f920bSLizhi Hou } __packed; 150*b87f920bSLizhi Hou 151*b87f920bSLizhi Hou struct execute_buffer_resp { 152*b87f920bSLizhi Hou enum aie2_msg_status status; 153*b87f920bSLizhi Hou } __packed; 154*b87f920bSLizhi Hou 155*b87f920bSLizhi Hou struct aie_tile_info { 156*b87f920bSLizhi Hou __u32 size; 157*b87f920bSLizhi Hou __u16 major; 158*b87f920bSLizhi Hou __u16 minor; 159*b87f920bSLizhi Hou __u16 cols; 160*b87f920bSLizhi Hou __u16 rows; 161*b87f920bSLizhi Hou __u16 core_rows; 162*b87f920bSLizhi Hou __u16 mem_rows; 163*b87f920bSLizhi Hou __u16 shim_rows; 164*b87f920bSLizhi Hou __u16 core_row_start; 165*b87f920bSLizhi Hou __u16 mem_row_start; 166*b87f920bSLizhi Hou __u16 shim_row_start; 167*b87f920bSLizhi Hou __u16 core_dma_channels; 168*b87f920bSLizhi Hou __u16 mem_dma_channels; 169*b87f920bSLizhi Hou __u16 shim_dma_channels; 170*b87f920bSLizhi Hou __u16 core_locks; 171*b87f920bSLizhi Hou __u16 mem_locks; 172*b87f920bSLizhi Hou __u16 shim_locks; 173*b87f920bSLizhi Hou __u16 core_events; 174*b87f920bSLizhi Hou __u16 mem_events; 175*b87f920bSLizhi Hou __u16 shim_events; 176*b87f920bSLizhi Hou __u16 reserved; 177*b87f920bSLizhi Hou }; 178*b87f920bSLizhi Hou 179*b87f920bSLizhi Hou struct aie_tile_info_req { 180*b87f920bSLizhi Hou __u32 reserved; 181*b87f920bSLizhi Hou } __packed; 182*b87f920bSLizhi Hou 183*b87f920bSLizhi Hou struct aie_tile_info_resp { 184*b87f920bSLizhi Hou enum aie2_msg_status status; 185*b87f920bSLizhi Hou struct aie_tile_info info; 186*b87f920bSLizhi Hou } __packed; 187*b87f920bSLizhi Hou 188*b87f920bSLizhi Hou struct aie_version_info_req { 189*b87f920bSLizhi Hou __u32 reserved; 190*b87f920bSLizhi Hou } __packed; 191*b87f920bSLizhi Hou 192*b87f920bSLizhi Hou struct aie_version_info_resp { 193*b87f920bSLizhi Hou enum aie2_msg_status status; 194*b87f920bSLizhi Hou __u16 major; 195*b87f920bSLizhi Hou __u16 minor; 196*b87f920bSLizhi Hou } __packed; 197*b87f920bSLizhi Hou 198*b87f920bSLizhi Hou struct aie_column_info_req { 199*b87f920bSLizhi Hou __u64 dump_buff_addr; 200*b87f920bSLizhi Hou __u32 dump_buff_size; 201*b87f920bSLizhi Hou __u32 num_cols; 202*b87f920bSLizhi Hou __u32 aie_bitmap; 203*b87f920bSLizhi Hou } __packed; 204*b87f920bSLizhi Hou 205*b87f920bSLizhi Hou struct aie_column_info_resp { 206*b87f920bSLizhi Hou enum aie2_msg_status status; 207*b87f920bSLizhi Hou __u32 size; 208*b87f920bSLizhi Hou } __packed; 209*b87f920bSLizhi Hou 210*b87f920bSLizhi Hou struct suspend_req { 211*b87f920bSLizhi Hou __u32 place_holder; 212*b87f920bSLizhi Hou } __packed; 213*b87f920bSLizhi Hou 214*b87f920bSLizhi Hou struct suspend_resp { 215*b87f920bSLizhi Hou enum aie2_msg_status status; 216*b87f920bSLizhi Hou } __packed; 217*b87f920bSLizhi Hou 218*b87f920bSLizhi Hou struct resume_req { 219*b87f920bSLizhi Hou __u32 place_holder; 220*b87f920bSLizhi Hou } __packed; 221*b87f920bSLizhi Hou 222*b87f920bSLizhi Hou struct resume_resp { 223*b87f920bSLizhi Hou enum aie2_msg_status status; 224*b87f920bSLizhi Hou } __packed; 225*b87f920bSLizhi Hou 226*b87f920bSLizhi Hou struct check_header_hash_req { 227*b87f920bSLizhi Hou __u64 hash_high; 228*b87f920bSLizhi Hou __u64 hash_low; 229*b87f920bSLizhi Hou } __packed; 230*b87f920bSLizhi Hou 231*b87f920bSLizhi Hou struct check_header_hash_resp { 232*b87f920bSLizhi Hou enum aie2_msg_status status; 233*b87f920bSLizhi Hou } __packed; 234*b87f920bSLizhi Hou 235*b87f920bSLizhi Hou struct query_error_req { 236*b87f920bSLizhi Hou __u64 buf_addr; 237*b87f920bSLizhi Hou __u32 buf_size; 238*b87f920bSLizhi Hou __u32 next_row; 239*b87f920bSLizhi Hou __u32 next_column; 240*b87f920bSLizhi Hou __u32 next_module; 241*b87f920bSLizhi Hou } __packed; 242*b87f920bSLizhi Hou 243*b87f920bSLizhi Hou struct query_error_resp { 244*b87f920bSLizhi Hou enum aie2_msg_status status; 245*b87f920bSLizhi Hou __u32 num_err; 246*b87f920bSLizhi Hou __u32 has_next_err; 247*b87f920bSLizhi Hou __u32 next_row; 248*b87f920bSLizhi Hou __u32 next_column; 249*b87f920bSLizhi Hou __u32 next_module; 250*b87f920bSLizhi Hou } __packed; 251*b87f920bSLizhi Hou 252*b87f920bSLizhi Hou struct protocol_version_req { 253*b87f920bSLizhi Hou __u32 reserved; 254*b87f920bSLizhi Hou } __packed; 255*b87f920bSLizhi Hou 256*b87f920bSLizhi Hou struct protocol_version_resp { 257*b87f920bSLizhi Hou enum aie2_msg_status status; 258*b87f920bSLizhi Hou __u32 major; 259*b87f920bSLizhi Hou __u32 minor; 260*b87f920bSLizhi Hou } __packed; 261*b87f920bSLizhi Hou 262*b87f920bSLizhi Hou struct firmware_version_req { 263*b87f920bSLizhi Hou __u32 reserved; 264*b87f920bSLizhi Hou } __packed; 265*b87f920bSLizhi Hou 266*b87f920bSLizhi Hou struct firmware_version_resp { 267*b87f920bSLizhi Hou enum aie2_msg_status status; 268*b87f920bSLizhi Hou __u32 major; 269*b87f920bSLizhi Hou __u32 minor; 270*b87f920bSLizhi Hou __u32 sub; 271*b87f920bSLizhi Hou __u32 build; 272*b87f920bSLizhi Hou } __packed; 273*b87f920bSLizhi Hou 274*b87f920bSLizhi Hou #define MAX_NUM_CUS 32 275*b87f920bSLizhi Hou #define AIE2_MSG_CFG_CU_PDI_ADDR GENMASK(16, 0) 276*b87f920bSLizhi Hou #define AIE2_MSG_CFG_CU_FUNC GENMASK(24, 17) 277*b87f920bSLizhi Hou struct config_cu_req { 278*b87f920bSLizhi Hou __u32 num_cus; 279*b87f920bSLizhi Hou __u32 cfgs[MAX_NUM_CUS]; 280*b87f920bSLizhi Hou } __packed; 281*b87f920bSLizhi Hou 282*b87f920bSLizhi Hou struct config_cu_resp { 283*b87f920bSLizhi Hou enum aie2_msg_status status; 284*b87f920bSLizhi Hou } __packed; 285*b87f920bSLizhi Hou 286*b87f920bSLizhi Hou struct set_runtime_cfg_req { 287*b87f920bSLizhi Hou __u32 type; 288*b87f920bSLizhi Hou __u64 value; 289*b87f920bSLizhi Hou } __packed; 290*b87f920bSLizhi Hou 291*b87f920bSLizhi Hou struct set_runtime_cfg_resp { 292*b87f920bSLizhi Hou enum aie2_msg_status status; 293*b87f920bSLizhi Hou } __packed; 294*b87f920bSLizhi Hou 295*b87f920bSLizhi Hou struct get_runtime_cfg_req { 296*b87f920bSLizhi Hou __u32 type; 297*b87f920bSLizhi Hou } __packed; 298*b87f920bSLizhi Hou 299*b87f920bSLizhi Hou struct get_runtime_cfg_resp { 300*b87f920bSLizhi Hou enum aie2_msg_status status; 301*b87f920bSLizhi Hou __u64 value; 302*b87f920bSLizhi Hou } __packed; 303*b87f920bSLizhi Hou 304*b87f920bSLizhi Hou enum async_event_type { 305*b87f920bSLizhi Hou ASYNC_EVENT_TYPE_AIE_ERROR, 306*b87f920bSLizhi Hou ASYNC_EVENT_TYPE_EXCEPTION, 307*b87f920bSLizhi Hou MAX_ASYNC_EVENT_TYPE 308*b87f920bSLizhi Hou }; 309*b87f920bSLizhi Hou 310*b87f920bSLizhi Hou #define ASYNC_BUF_SIZE SZ_8K 311*b87f920bSLizhi Hou struct async_event_msg_req { 312*b87f920bSLizhi Hou __u64 buf_addr; 313*b87f920bSLizhi Hou __u32 buf_size; 314*b87f920bSLizhi Hou } __packed; 315*b87f920bSLizhi Hou 316*b87f920bSLizhi Hou struct async_event_msg_resp { 317*b87f920bSLizhi Hou enum aie2_msg_status status; 318*b87f920bSLizhi Hou enum async_event_type type; 319*b87f920bSLizhi Hou } __packed; 320*b87f920bSLizhi Hou 321*b87f920bSLizhi Hou #define MAX_CHAIN_CMDBUF_SIZE SZ_4K 322*b87f920bSLizhi Hou #define slot_cf_has_space(offset, payload_size) \ 323*b87f920bSLizhi Hou (MAX_CHAIN_CMDBUF_SIZE - ((offset) + (payload_size)) > \ 324*b87f920bSLizhi Hou offsetof(struct cmd_chain_slot_execbuf_cf, args[0])) 325*b87f920bSLizhi Hou struct cmd_chain_slot_execbuf_cf { 326*b87f920bSLizhi Hou __u32 cu_idx; 327*b87f920bSLizhi Hou __u32 arg_cnt; 328*b87f920bSLizhi Hou __u32 args[] __counted_by(arg_cnt); 329*b87f920bSLizhi Hou }; 330*b87f920bSLizhi Hou 331*b87f920bSLizhi Hou #define slot_dpu_has_space(offset, payload_size) \ 332*b87f920bSLizhi Hou (MAX_CHAIN_CMDBUF_SIZE - ((offset) + (payload_size)) > \ 333*b87f920bSLizhi Hou offsetof(struct cmd_chain_slot_dpu, args[0])) 334*b87f920bSLizhi Hou struct cmd_chain_slot_dpu { 335*b87f920bSLizhi Hou __u64 inst_buf_addr; 336*b87f920bSLizhi Hou __u32 inst_size; 337*b87f920bSLizhi Hou __u32 inst_prop_cnt; 338*b87f920bSLizhi Hou __u32 cu_idx; 339*b87f920bSLizhi Hou __u32 arg_cnt; 340*b87f920bSLizhi Hou #define MAX_DPU_ARGS_SIZE (34 * sizeof(__u32)) 341*b87f920bSLizhi Hou __u32 args[] __counted_by(arg_cnt); 342*b87f920bSLizhi Hou }; 343*b87f920bSLizhi Hou 344*b87f920bSLizhi Hou struct cmd_chain_req { 345*b87f920bSLizhi Hou __u64 buf_addr; 346*b87f920bSLizhi Hou __u32 buf_size; 347*b87f920bSLizhi Hou __u32 count; 348*b87f920bSLizhi Hou } __packed; 349*b87f920bSLizhi Hou 350*b87f920bSLizhi Hou struct cmd_chain_resp { 351*b87f920bSLizhi Hou enum aie2_msg_status status; 352*b87f920bSLizhi Hou __u32 fail_cmd_idx; 353*b87f920bSLizhi Hou enum aie2_msg_status fail_cmd_status; 354*b87f920bSLizhi Hou } __packed; 355*b87f920bSLizhi Hou 356*b87f920bSLizhi Hou #define AIE2_MSG_SYNC_BO_SRC_TYPE GENMASK(3, 0) 357*b87f920bSLizhi Hou #define AIE2_MSG_SYNC_BO_DST_TYPE GENMASK(7, 4) 358*b87f920bSLizhi Hou struct sync_bo_req { 359*b87f920bSLizhi Hou __u64 src_addr; 360*b87f920bSLizhi Hou __u64 dst_addr; 361*b87f920bSLizhi Hou __u32 size; 362*b87f920bSLizhi Hou #define SYNC_BO_DEV_MEM 0 363*b87f920bSLizhi Hou #define SYNC_BO_HOST_MEM 2 364*b87f920bSLizhi Hou __u32 type; 365*b87f920bSLizhi Hou } __packed; 366*b87f920bSLizhi Hou 367*b87f920bSLizhi Hou struct sync_bo_resp { 368*b87f920bSLizhi Hou enum aie2_msg_status status; 369*b87f920bSLizhi Hou } __packed; 370*b87f920bSLizhi Hou #endif /* _AIE2_MSG_PRIV_H_ */ 371