1 /* SPDX-License-Identifier: MIT */ 2 /* 3 * Copyright © 2023 Intel Corporation 4 */ 5 6 #ifndef _ABI_GUC_ACTIONS_SRIOV_ABI_H 7 #define _ABI_GUC_ACTIONS_SRIOV_ABI_H 8 9 #include "guc_communication_ctb_abi.h" 10 11 /** 12 * DOC: GUC2PF_RELAY_FROM_VF 13 * 14 * This message is used by the GuC firmware to forward a VF2PF `Relay Message`_ 15 * received from the Virtual Function (VF) driver to this Physical Function (PF) 16 * driver. 17 * 18 * This message is always sent as `CTB HXG Message`_. 19 * 20 * +---+-------+--------------------------------------------------------------+ 21 * | | Bits | Description | 22 * +===+=======+==============================================================+ 23 * | 0 | 31 | ORIGIN = GUC_HXG_ORIGIN_GUC_ | 24 * | +-------+--------------------------------------------------------------+ 25 * | | 30:28 | TYPE = GUC_HXG_TYPE_EVENT_ | 26 * | +-------+--------------------------------------------------------------+ 27 * | | 27:16 | MBZ | 28 * | +-------+--------------------------------------------------------------+ 29 * | | 15:0 | ACTION = _`XE_GUC_ACTION_GUC2PF_RELAY_FROM_VF` = 0x5100 | 30 * +---+-------+--------------------------------------------------------------+ 31 * | 1 | 31:0 | **VFID** - source VF identifier | 32 * +---+-------+--------------------------------------------------------------+ 33 * | 2 | 31:0 | **RELAY_ID** - VF/PF message ID | 34 * +---+-------+-----------------+--------------------------------------------+ 35 * | 3 | 31:0 | **RELAY_DATA1** | | 36 * +---+-------+-----------------+ | 37 * |...| | | [Embedded `Relay Message`_] | 38 * +---+-------+-----------------+ | 39 * | n | 31:0 | **RELAY_DATAx** | | 40 * +---+-------+-----------------+--------------------------------------------+ 41 */ 42 #define XE_GUC_ACTION_GUC2PF_RELAY_FROM_VF 0x5100 43 44 #define GUC2PF_RELAY_FROM_VF_EVENT_MSG_MIN_LEN (GUC_HXG_EVENT_MSG_MIN_LEN + 2u) 45 #define GUC2PF_RELAY_FROM_VF_EVENT_MSG_MAX_LEN \ 46 (GUC2PF_RELAY_FROM_VF_EVENT_MSG_MIN_LEN + GUC_RELAY_MSG_MAX_LEN) 47 #define GUC2PF_RELAY_FROM_VF_EVENT_MSG_0_MBZ GUC_HXG_EVENT_MSG_0_DATA0 48 #define GUC2PF_RELAY_FROM_VF_EVENT_MSG_1_VFID GUC_HXG_EVENT_MSG_n_DATAn 49 #define GUC2PF_RELAY_FROM_VF_EVENT_MSG_2_RELAY_ID GUC_HXG_EVENT_MSG_n_DATAn 50 #define GUC2PF_RELAY_FROM_VF_EVENT_MSG_3_RELAY_DATA1 GUC_HXG_EVENT_MSG_n_DATAn 51 #define GUC2PF_RELAY_FROM_VF_EVENT_MSG_n_RELAY_DATAx GUC_HXG_EVENT_MSG_n_DATAn 52 #define GUC2PF_RELAY_FROM_VF_EVENT_MSG_NUM_RELAY_DATA GUC_RELAY_MSG_MAX_LEN 53 54 /** 55 * DOC: PF2GUC_RELAY_TO_VF 56 * 57 * This H2G message is used by the Physical Function (PF) driver to send embedded 58 * VF2PF `Relay Message`_ to the VF. 59 * 60 * This action message must be sent over CTB as `CTB HXG Message`_. 61 * 62 * +---+-------+--------------------------------------------------------------+ 63 * | | Bits | Description | 64 * +===+=======+==============================================================+ 65 * | 0 | 31 | ORIGIN = GUC_HXG_ORIGIN_HOST_ | 66 * | +-------+--------------------------------------------------------------+ 67 * | | 30:28 | TYPE = `GUC_HXG_TYPE_FAST_REQUEST`_ | 68 * | +-------+--------------------------------------------------------------+ 69 * | | 27:16 | MBZ | 70 * | +-------+--------------------------------------------------------------+ 71 * | | 15:0 | ACTION = _`XE_GUC_ACTION_PF2GUC_RELAY_TO_VF` = 0x5101 | 72 * +---+-------+--------------------------------------------------------------+ 73 * | 1 | 31:0 | **VFID** - target VF identifier | 74 * +---+-------+--------------------------------------------------------------+ 75 * | 2 | 31:0 | **RELAY_ID** - VF/PF message ID | 76 * +---+-------+-----------------+--------------------------------------------+ 77 * | 3 | 31:0 | **RELAY_DATA1** | | 78 * +---+-------+-----------------+ | 79 * |...| | | [Embedded `Relay Message`_] | 80 * +---+-------+-----------------+ | 81 * | n | 31:0 | **RELAY_DATAx** | | 82 * +---+-------+-----------------+--------------------------------------------+ 83 */ 84 #define XE_GUC_ACTION_PF2GUC_RELAY_TO_VF 0x5101 85 86 #define PF2GUC_RELAY_TO_VF_REQUEST_MSG_MIN_LEN (GUC_HXG_REQUEST_MSG_MIN_LEN + 2u) 87 #define PF2GUC_RELAY_TO_VF_REQUEST_MSG_MAX_LEN \ 88 (PF2GUC_RELAY_TO_VF_REQUEST_MSG_MIN_LEN + GUC_RELAY_MSG_MAX_LEN) 89 #define PF2GUC_RELAY_TO_VF_REQUEST_MSG_0_MBZ GUC_HXG_REQUEST_MSG_0_DATA0 90 #define PF2GUC_RELAY_TO_VF_REQUEST_MSG_1_VFID GUC_HXG_REQUEST_MSG_n_DATAn 91 #define PF2GUC_RELAY_TO_VF_REQUEST_MSG_2_RELAY_ID GUC_HXG_REQUEST_MSG_n_DATAn 92 #define PF2GUC_RELAY_TO_VF_REQUEST_MSG_3_RELAY_DATA1 GUC_HXG_REQUEST_MSG_n_DATAn 93 #define PF2GUC_RELAY_TO_VF_REQUEST_MSG_n_RELAY_DATAx GUC_HXG_REQUEST_MSG_n_DATAn 94 #define PF2GUC_RELAY_TO_VF_REQUEST_MSG_NUM_RELAY_DATA GUC_RELAY_MSG_MAX_LEN 95 96 /** 97 * DOC: GUC2VF_RELAY_FROM_PF 98 * 99 * This message is used by the GuC firmware to deliver `Relay Message`_ from the 100 * Physical Function (PF) driver to this Virtual Function (VF) driver. 101 * See `GuC Relay Communication`_ for details. 102 * 103 * This message is always sent over CTB. 104 * 105 * +---+-------+--------------------------------------------------------------+ 106 * | | Bits | Description | 107 * +===+=======+==============================================================+ 108 * | 0 | 31 | ORIGIN = GUC_HXG_ORIGIN_GUC_ | 109 * | +-------+--------------------------------------------------------------+ 110 * | | 30:28 | TYPE = GUC_HXG_TYPE_EVENT_ | 111 * | +-------+--------------------------------------------------------------+ 112 * | | 27:16 | MBZ | 113 * | +-------+--------------------------------------------------------------+ 114 * | | 15:0 | ACTION = _`XE_GUC_ACTION_GUC2VF_RELAY_FROM_PF` = 0x5102 | 115 * +---+-------+--------------------------------------------------------------+ 116 * | 1 | 31:0 | **RELAY_ID** - VF/PF message ID | 117 * +---+-------+-----------------+--------------------------------------------+ 118 * | 2 | 31:0 | **RELAY_DATA1** | | 119 * +---+-------+-----------------+ | 120 * |...| | | [Embedded `Relay Message`_] | 121 * +---+-------+-----------------+ | 122 * | n | 31:0 | **RELAY_DATAx** | | 123 * +---+-------+-----------------+--------------------------------------------+ 124 */ 125 #define XE_GUC_ACTION_GUC2VF_RELAY_FROM_PF 0x5102 126 127 #define GUC2VF_RELAY_FROM_PF_EVENT_MSG_MIN_LEN (GUC_HXG_EVENT_MSG_MIN_LEN + 1u) 128 #define GUC2VF_RELAY_FROM_PF_EVENT_MSG_MAX_LEN \ 129 (GUC2VF_RELAY_FROM_PF_EVENT_MSG_MIN_LEN + GUC_RELAY_MSG_MAX_LEN) 130 #define GUC2VF_RELAY_FROM_PF_EVENT_MSG_0_MBZ GUC_HXG_EVENT_MSG_0_DATA0 131 #define GUC2VF_RELAY_FROM_PF_EVENT_MSG_1_RELAY_ID GUC_HXG_EVENT_MSG_n_DATAn 132 #define GUC2VF_RELAY_FROM_PF_EVENT_MSG_n_RELAY_DATAx GUC_HXG_EVENT_MSG_n_DATAn 133 #define GUC2VF_RELAY_FROM_PF_EVENT_MSG_NUM_RELAY_DATA GUC_RELAY_MSG_MAX_LEN 134 135 /** 136 * DOC: VF2GUC_RELAY_TO_PF 137 * 138 * This message is used by the Virtual Function (VF) drivers to communicate with 139 * the Physical Function (PF) driver and send `Relay Message`_ to the PF driver. 140 * See `GuC Relay Communication`_ for details. 141 * 142 * This message must be sent over CTB. 143 * 144 * +---+-------+--------------------------------------------------------------+ 145 * | | Bits | Description | 146 * +===+=======+==============================================================+ 147 * | 0 | 31 | ORIGIN = GUC_HXG_ORIGIN_HOST_ | 148 * | +-------+--------------------------------------------------------------+ 149 * | | 30:28 | TYPE = GUC_HXG_TYPE_REQUEST_ or GUC_HXG_TYPE_FAST_REQUEST_ | 150 * | +-------+--------------------------------------------------------------+ 151 * | | 27:16 | MBZ | 152 * | +-------+--------------------------------------------------------------+ 153 * | | 15:0 | ACTION = _`XE_GUC_ACTION_VF2GUC_RELAY_TO_PF` = 0x5103 | 154 * +---+-------+--------------------------------------------------------------+ 155 * | 1 | 31:0 | **RELAY_ID** - VF/PF message ID | 156 * +---+-------+-----------------+--------------------------------------------+ 157 * | 2 | 31:0 | **RELAY_DATA1** | | 158 * +---+-------+-----------------+ | 159 * |...| | | [Embedded `Relay Message`_] | 160 * +---+-------+-----------------+ | 161 * | n | 31:0 | **RELAY_DATAx** | | 162 * +---+-------+-----------------+--------------------------------------------+ 163 */ 164 #define XE_GUC_ACTION_VF2GUC_RELAY_TO_PF 0x5103 165 166 #define VF2GUC_RELAY_TO_PF_REQUEST_MSG_MIN_LEN (GUC_HXG_REQUEST_MSG_MIN_LEN + 1u) 167 #define VF2GUC_RELAY_TO_PF_REQUEST_MSG_MAX_LEN \ 168 (VF2GUC_RELAY_TO_PF_REQUEST_MSG_MIN_LEN + GUC_RELAY_MSG_MAX_LEN) 169 #define VF2GUC_RELAY_TO_PF_REQUEST_MSG_0_MBZ GUC_HXG_REQUEST_MSG_0_DATA0 170 #define VF2GUC_RELAY_TO_PF_REQUEST_MSG_1_RELAY_ID GUC_HXG_REQUEST_MSG_n_DATAn 171 #define VF2GUC_RELAY_TO_PF_REQUEST_MSG_n_RELAY_DATAx GUC_HXG_REQUEST_MSG_n_DATAn 172 #define VF2GUC_RELAY_TO_PF_REQUEST_MSG_NUM_RELAY_DATA GUC_RELAY_MSG_MAX_LEN 173 174 /** 175 * DOC: GUC2PF_ADVERSE_EVENT 176 * 177 * This message is used by the GuC to notify PF about adverse events. 178 * 179 * This G2H message must be sent as `CTB HXG Message`_. 180 * 181 * +---+-------+--------------------------------------------------------------+ 182 * | | Bits | Description | 183 * +===+=======+==============================================================+ 184 * | 0 | 31 | ORIGIN = GUC_HXG_ORIGIN_GUC_ | 185 * | +-------+--------------------------------------------------------------+ 186 * | | 30:28 | TYPE = GUC_HXG_TYPE_EVENT_ | 187 * | +-------+--------------------------------------------------------------+ 188 * | | 27:16 | DATA0 = MBZ | 189 * | +-------+--------------------------------------------------------------+ 190 * | | 15:0 | ACTION = _`GUC_ACTION_GUC2PF_ADVERSE_EVENT` = 0x5104 | 191 * +---+-------+--------------------------------------------------------------+ 192 * | 1 | 31:0 | DATA1 = **VFID** - VF identifier | 193 * +---+-------+--------------------------------------------------------------+ 194 * | 2 | 31:0 | DATA2 = **THRESHOLD** - key of the exceeded threshold | 195 * +---+-------+--------------------------------------------------------------+ 196 */ 197 #define GUC_ACTION_GUC2PF_ADVERSE_EVENT 0x5104 198 199 #define GUC2PF_ADVERSE_EVENT_EVENT_MSG_LEN (GUC_HXG_EVENT_MSG_MIN_LEN + 2u) 200 #define GUC2PF_ADVERSE_EVENT_EVENT_MSG_0_MBZ GUC_HXG_EVENT_MSG_0_DATA0 201 #define GUC2PF_ADVERSE_EVENT_EVENT_MSG_1_VFID GUC_HXG_EVENT_MSG_n_DATAn 202 #define GUC2PF_ADVERSE_EVENT_EVENT_MSG_2_THRESHOLD GUC_HXG_EVENT_MSG_n_DATAn 203 204 /** 205 * DOC: GUC2PF_VF_STATE_NOTIFY 206 * 207 * The GUC2PF_VF_STATE_NOTIFY message is used by the GuC to notify PF about change 208 * of the VF state. 209 * 210 * This G2H message is sent as `CTB HXG Message`_. 211 * 212 * +---+-------+--------------------------------------------------------------+ 213 * | | Bits | Description | 214 * +===+=======+==============================================================+ 215 * | 0 | 31 | ORIGIN = GUC_HXG_ORIGIN_GUC_ | 216 * | +-------+--------------------------------------------------------------+ 217 * | | 30:28 | TYPE = GUC_HXG_TYPE_EVENT_ | 218 * | +-------+--------------------------------------------------------------+ 219 * | | 27:16 | DATA0 = MBZ | 220 * | +-------+--------------------------------------------------------------+ 221 * | | 15:0 | ACTION = _`GUC_ACTION_GUC2PF_VF_STATE_NOTIFY` = 0x5106 | 222 * +---+-------+--------------------------------------------------------------+ 223 * | 1 | 31:0 | DATA1 = **VFID** - VF identifier | 224 * +---+-------+--------------------------------------------------------------+ 225 * | 2 | 31:0 | DATA2 = **EVENT** - notification event: | 226 * | | | | 227 * | | | - _`GUC_PF_NOTIFY_VF_ENABLE` = 1 (only if VFID = 0) | 228 * | | | - _`GUC_PF_NOTIFY_VF_FLR` = 1 | 229 * | | | - _`GUC_PF_NOTIFY_VF_FLR_DONE` = 2 | 230 * | | | - _`GUC_PF_NOTIFY_VF_PAUSE_DONE` = 3 | 231 * | | | - _`GUC_PF_NOTIFY_VF_FIXUP_DONE` = 4 | 232 * +---+-------+--------------------------------------------------------------+ 233 */ 234 #define GUC_ACTION_GUC2PF_VF_STATE_NOTIFY 0x5106u 235 236 #define GUC2PF_VF_STATE_NOTIFY_EVENT_MSG_LEN (GUC_HXG_EVENT_MSG_MIN_LEN + 2u) 237 #define GUC2PF_VF_STATE_NOTIFY_EVENT_MSG_0_MBZ GUC_HXG_EVENT_MSG_0_DATA0 238 #define GUC2PF_VF_STATE_NOTIFY_EVENT_MSG_1_VFID GUC_HXG_EVENT_MSG_n_DATAn 239 #define GUC2PF_VF_STATE_NOTIFY_EVENT_MSG_2_EVENT GUC_HXG_EVENT_MSG_n_DATAn 240 #define GUC_PF_NOTIFY_VF_ENABLE 1u 241 #define GUC_PF_NOTIFY_VF_FLR 1u 242 #define GUC_PF_NOTIFY_VF_FLR_DONE 2u 243 #define GUC_PF_NOTIFY_VF_PAUSE_DONE 3u 244 #define GUC_PF_NOTIFY_VF_FIXUP_DONE 4u 245 246 /** 247 * DOC: VF2GUC_MATCH_VERSION 248 * 249 * This action is used to match VF interface version used by VF and GuC. 250 * 251 * This message must be sent as `MMIO HXG Message`_. 252 * 253 * +---+-------+--------------------------------------------------------------+ 254 * | | Bits | Description | 255 * +===+=======+==============================================================+ 256 * | 0 | 31 | ORIGIN = GUC_HXG_ORIGIN_HOST_ | 257 * | +-------+--------------------------------------------------------------+ 258 * | | 30:28 | TYPE = GUC_HXG_TYPE_REQUEST_ | 259 * | +-------+--------------------------------------------------------------+ 260 * | | 27:16 | DATA0 = MBZ | 261 * | +-------+--------------------------------------------------------------+ 262 * | | 15:0 | ACTION = _`GUC_ACTION_VF2GUC_MATCH_VERSION` = 0x5500 | 263 * +---+-------+--------------------------------------------------------------+ 264 * | 1 | 31:24 | **BRANCH** - branch ID of the VF interface | 265 * | | | (use BRANCH_ANY to request latest version supported by GuC) | 266 * | +-------+--------------------------------------------------------------+ 267 * | | 23:16 | **MAJOR** - major version of the VF interface | 268 * | | | (use MAJOR_ANY to request latest version supported by GuC) | 269 * | +-------+--------------------------------------------------------------+ 270 * | | 15:8 | **MINOR** - minor version of the VF interface | 271 * | | | (use MINOR_ANY to request latest version supported by GuC) | 272 * | +-------+--------------------------------------------------------------+ 273 * | | 7:0 | **MBZ** | 274 * +---+-------+--------------------------------------------------------------+ 275 * 276 * +---+-------+--------------------------------------------------------------+ 277 * | | Bits | Description | 278 * +===+=======+==============================================================+ 279 * | 0 | 31 | ORIGIN = GUC_HXG_ORIGIN_GUC_ | 280 * | +-------+--------------------------------------------------------------+ 281 * | | 30:28 | TYPE = GUC_HXG_TYPE_RESPONSE_SUCCESS_ | 282 * | +-------+--------------------------------------------------------------+ 283 * | | 27:0 | DATA0 = MBZ | 284 * +---+-------+--------------------------------------------------------------+ 285 * | 1 | 31:24 | **BRANCH** - branch ID of the VF interface | 286 * | +-------+--------------------------------------------------------------+ 287 * | | 23:16 | **MAJOR** - major version of the VF interface | 288 * | +-------+--------------------------------------------------------------+ 289 * | | 15:8 | **MINOR** - minor version of the VF interface | 290 * | +-------+--------------------------------------------------------------+ 291 * | | 7:0 | **PATCH** - patch version of the VF interface | 292 * +---+-------+--------------------------------------------------------------+ 293 */ 294 #define GUC_ACTION_VF2GUC_MATCH_VERSION 0x5500u 295 296 #define VF2GUC_MATCH_VERSION_REQUEST_MSG_LEN (GUC_HXG_REQUEST_MSG_MIN_LEN + 1u) 297 #define VF2GUC_MATCH_VERSION_REQUEST_MSG_0_MBZ GUC_HXG_REQUEST_MSG_0_DATA0 298 #define VF2GUC_MATCH_VERSION_REQUEST_MSG_1_BRANCH (0xffu << 24) 299 #define GUC_VERSION_BRANCH_ANY 0 300 #define VF2GUC_MATCH_VERSION_REQUEST_MSG_1_MAJOR (0xffu << 16) 301 #define GUC_VERSION_MAJOR_ANY 0 302 #define VF2GUC_MATCH_VERSION_REQUEST_MSG_1_MINOR (0xffu << 8) 303 #define GUC_VERSION_MINOR_ANY 0 304 #define VF2GUC_MATCH_VERSION_REQUEST_MSG_1_MBZ (0xffu << 0) 305 306 #define VF2GUC_MATCH_VERSION_RESPONSE_MSG_LEN (GUC_HXG_RESPONSE_MSG_MIN_LEN + 1u) 307 #define VF2GUC_MATCH_VERSION_RESPONSE_MSG_0_MBZ GUC_HXG_RESPONSE_MSG_0_DATA0 308 #define VF2GUC_MATCH_VERSION_RESPONSE_MSG_1_BRANCH (0xffu << 24) 309 #define VF2GUC_MATCH_VERSION_RESPONSE_MSG_1_MAJOR (0xffu << 16) 310 #define VF2GUC_MATCH_VERSION_RESPONSE_MSG_1_MINOR (0xffu << 8) 311 #define VF2GUC_MATCH_VERSION_RESPONSE_MSG_1_PATCH (0xffu << 0) 312 313 /** 314 * DOC: PF2GUC_UPDATE_VGT_POLICY 315 * 316 * This message is used by the PF to set `GuC VGT Policy KLVs`_. 317 * 318 * This message must be sent as `CTB HXG Message`_. 319 * 320 * +---+-------+--------------------------------------------------------------+ 321 * | | Bits | Description | 322 * +===+=======+==============================================================+ 323 * | 0 | 31 | ORIGIN = GUC_HXG_ORIGIN_HOST_ | 324 * | +-------+--------------------------------------------------------------+ 325 * | | 30:28 | TYPE = GUC_HXG_TYPE_REQUEST_ | 326 * | +-------+--------------------------------------------------------------+ 327 * | | 27:16 | MBZ | 328 * | +-------+--------------------------------------------------------------+ 329 * | | 15:0 | ACTION = _`GUC_ACTION_PF2GUC_UPDATE_VGT_POLICY` = 0x5502 | 330 * +---+-------+--------------------------------------------------------------+ 331 * | 1 | 31:0 | **CFG_ADDR_LO** - dword aligned GGTT offset that | 332 * | | | represents the start of `GuC VGT Policy KLVs`_ list. | 333 * +---+-------+--------------------------------------------------------------+ 334 * | 2 | 31:0 | **CFG_ADDR_HI** - upper 32 bits of above offset. | 335 * +---+-------+--------------------------------------------------------------+ 336 * | 3 | 31:0 | **CFG_SIZE** - size (in dwords) of the config buffer | 337 * +---+-------+--------------------------------------------------------------+ 338 * 339 * +---+-------+--------------------------------------------------------------+ 340 * | | Bits | Description | 341 * +===+=======+==============================================================+ 342 * | 0 | 31 | ORIGIN = GUC_HXG_ORIGIN_GUC_ | 343 * | +-------+--------------------------------------------------------------+ 344 * | | 30:28 | TYPE = GUC_HXG_TYPE_RESPONSE_SUCCESS_ | 345 * | +-------+--------------------------------------------------------------+ 346 * | | 27:0 | **COUNT** - number of KLVs successfully applied | 347 * +---+-------+--------------------------------------------------------------+ 348 */ 349 #define GUC_ACTION_PF2GUC_UPDATE_VGT_POLICY 0x5502u 350 351 #define PF2GUC_UPDATE_VGT_POLICY_REQUEST_MSG_LEN (GUC_HXG_REQUEST_MSG_MIN_LEN + 3u) 352 #define PF2GUC_UPDATE_VGT_POLICY_REQUEST_MSG_0_MBZ GUC_HXG_REQUEST_MSG_0_DATA0 353 #define PF2GUC_UPDATE_VGT_POLICY_REQUEST_MSG_1_CFG_ADDR_LO GUC_HXG_REQUEST_MSG_n_DATAn 354 #define PF2GUC_UPDATE_VGT_POLICY_REQUEST_MSG_2_CFG_ADDR_HI GUC_HXG_REQUEST_MSG_n_DATAn 355 #define PF2GUC_UPDATE_VGT_POLICY_REQUEST_MSG_3_CFG_SIZE GUC_HXG_REQUEST_MSG_n_DATAn 356 357 #define PF2GUC_UPDATE_VGT_POLICY_RESPONSE_MSG_LEN GUC_HXG_RESPONSE_MSG_MIN_LEN 358 #define PF2GUC_UPDATE_VGT_POLICY_RESPONSE_MSG_0_COUNT GUC_HXG_RESPONSE_MSG_0_DATA0 359 360 /** 361 * DOC: PF2GUC_UPDATE_VF_CFG 362 * 363 * The `PF2GUC_UPDATE_VF_CFG`_ message is used by PF to provision single VF in GuC. 364 * 365 * This message must be sent as `CTB HXG Message`_. 366 * 367 * +---+-------+--------------------------------------------------------------+ 368 * | | Bits | Description | 369 * +===+=======+==============================================================+ 370 * | 0 | 31 | ORIGIN = GUC_HXG_ORIGIN_HOST_ | 371 * | +-------+--------------------------------------------------------------+ 372 * | | 30:28 | TYPE = GUC_HXG_TYPE_REQUEST_ | 373 * | +-------+--------------------------------------------------------------+ 374 * | | 27:16 | MBZ | 375 * | +-------+--------------------------------------------------------------+ 376 * | | 15:0 | ACTION = _`GUC_ACTION_PF2GUC_UPDATE_VF_CFG` = 0x5503 | 377 * +---+-------+--------------------------------------------------------------+ 378 * | 1 | 31:0 | **VFID** - identifier of the VF that the KLV | 379 * | | | configurations are being applied to | 380 * +---+-------+--------------------------------------------------------------+ 381 * | 2 | 31:0 | **CFG_ADDR_LO** - dword aligned GGTT offset that represents | 382 * | | | the start of a list of virtualization related KLV configs | 383 * | | | that are to be applied to the VF. | 384 * | | | If this parameter is zero, the list is not parsed. | 385 * | | | If full configs address parameter is zero and configs_size is| 386 * | | | zero associated VF config shall be reset to its default state| 387 * +---+-------+--------------------------------------------------------------+ 388 * | 3 | 31:0 | **CFG_ADDR_HI** - upper 32 bits of configs address. | 389 * +---+-------+--------------------------------------------------------------+ 390 * | 4 | 31:0 | **CFG_SIZE** - size (in dwords) of the config buffer | 391 * +---+-------+--------------------------------------------------------------+ 392 * 393 * +---+-------+--------------------------------------------------------------+ 394 * | | Bits | Description | 395 * +===+=======+==============================================================+ 396 * | 0 | 31 | ORIGIN = GUC_HXG_ORIGIN_GUC_ | 397 * | +-------+--------------------------------------------------------------+ 398 * | | 30:28 | TYPE = GUC_HXG_TYPE_RESPONSE_SUCCESS_ | 399 * | +-------+--------------------------------------------------------------+ 400 * | | 27:0 | **COUNT** - number of KLVs successfully applied | 401 * +---+-------+--------------------------------------------------------------+ 402 */ 403 #define GUC_ACTION_PF2GUC_UPDATE_VF_CFG 0x5503u 404 405 #define PF2GUC_UPDATE_VF_CFG_REQUEST_MSG_LEN (GUC_HXG_REQUEST_MSG_MIN_LEN + 4u) 406 #define PF2GUC_UPDATE_VF_CFG_REQUEST_MSG_0_MBZ GUC_HXG_REQUEST_MSG_0_DATA0 407 #define PF2GUC_UPDATE_VF_CFG_REQUEST_MSG_1_VFID GUC_HXG_REQUEST_MSG_n_DATAn 408 #define PF2GUC_UPDATE_VF_CFG_REQUEST_MSG_2_CFG_ADDR_LO GUC_HXG_REQUEST_MSG_n_DATAn 409 #define PF2GUC_UPDATE_VF_CFG_REQUEST_MSG_3_CFG_ADDR_HI GUC_HXG_REQUEST_MSG_n_DATAn 410 #define PF2GUC_UPDATE_VF_CFG_REQUEST_MSG_4_CFG_SIZE GUC_HXG_REQUEST_MSG_n_DATAn 411 412 #define PF2GUC_UPDATE_VF_CFG_RESPONSE_MSG_LEN GUC_HXG_RESPONSE_MSG_MIN_LEN 413 #define PF2GUC_UPDATE_VF_CFG_RESPONSE_MSG_0_COUNT GUC_HXG_RESPONSE_MSG_0_DATA0 414 415 /** 416 * DOC: PF2GUC_VF_CONTROL 417 * 418 * The PF2GUC_VF_CONTROL message is used by the PF to trigger VF state change 419 * maintained by the GuC. 420 * 421 * This H2G message must be sent as `CTB HXG Message`_. 422 * 423 * +---+-------+--------------------------------------------------------------+ 424 * | | Bits | Description | 425 * +===+=======+==============================================================+ 426 * | 0 | 31 | ORIGIN = GUC_HXG_ORIGIN_HOST_ | 427 * | +-------+--------------------------------------------------------------+ 428 * | | 30:28 | TYPE = GUC_HXG_TYPE_REQUEST_ | 429 * | +-------+--------------------------------------------------------------+ 430 * | | 27:16 | DATA0 = MBZ | 431 * | +-------+--------------------------------------------------------------+ 432 * | | 15:0 | ACTION = _`GUC_ACTION_PF2GUC_VF_CONTROL_CMD` = 0x5506 | 433 * +---+-------+--------------------------------------------------------------+ 434 * | 1 | 31:0 | DATA1 = **VFID** - VF identifier | 435 * +---+-------+--------------------------------------------------------------+ 436 * | 2 | 31:0 | DATA2 = **COMMAND** - control command: | 437 * | | | | 438 * | | | - _`GUC_PF_TRIGGER_VF_PAUSE` = 1 | 439 * | | | - _`GUC_PF_TRIGGER_VF_RESUME` = 2 | 440 * | | | - _`GUC_PF_TRIGGER_VF_STOP` = 3 | 441 * | | | - _`GUC_PF_TRIGGER_VF_FLR_START` = 4 | 442 * | | | - _`GUC_PF_TRIGGER_VF_FLR_FINISH` = 5 | 443 * +---+-------+--------------------------------------------------------------+ 444 * 445 * +---+-------+--------------------------------------------------------------+ 446 * | | Bits | Description | 447 * +===+=======+==============================================================+ 448 * | 0 | 31 | ORIGIN = GUC_HXG_ORIGIN_GUC_ | 449 * | +-------+--------------------------------------------------------------+ 450 * | | 30:28 | TYPE = GUC_HXG_TYPE_RESPONSE_SUCCESS_ | 451 * | +-------+--------------------------------------------------------------+ 452 * | | 27:0 | DATA0 = MBZ | 453 * +---+-------+--------------------------------------------------------------+ 454 */ 455 #define GUC_ACTION_PF2GUC_VF_CONTROL 0x5506u 456 457 #define PF2GUC_VF_CONTROL_REQUEST_MSG_LEN (GUC_HXG_EVENT_MSG_MIN_LEN + 2u) 458 #define PF2GUC_VF_CONTROL_REQUEST_MSG_0_MBZ GUC_HXG_EVENT_MSG_0_DATA0 459 #define PF2GUC_VF_CONTROL_REQUEST_MSG_1_VFID GUC_HXG_EVENT_MSG_n_DATAn 460 #define PF2GUC_VF_CONTROL_REQUEST_MSG_2_COMMAND GUC_HXG_EVENT_MSG_n_DATAn 461 #define GUC_PF_TRIGGER_VF_PAUSE 1u 462 #define GUC_PF_TRIGGER_VF_RESUME 2u 463 #define GUC_PF_TRIGGER_VF_STOP 3u 464 #define GUC_PF_TRIGGER_VF_FLR_START 4u 465 #define GUC_PF_TRIGGER_VF_FLR_FINISH 5u 466 467 /** 468 * DOC: VF2GUC_VF_RESET 469 * 470 * This action is used by VF to reset GuC's VF state. 471 * 472 * This message must be sent as `MMIO HXG Message`_. 473 * 474 * +---+-------+--------------------------------------------------------------+ 475 * | | Bits | Description | 476 * +===+=======+==============================================================+ 477 * | 0 | 31 | ORIGIN = GUC_HXG_ORIGIN_HOST_ | 478 * | +-------+--------------------------------------------------------------+ 479 * | | 30:28 | TYPE = GUC_HXG_TYPE_REQUEST_ | 480 * | +-------+--------------------------------------------------------------+ 481 * | | 27:16 | DATA0 = MBZ | 482 * | +-------+--------------------------------------------------------------+ 483 * | | 15:0 | ACTION = _`GUC_ACTION_VF2GUC_VF_RESET` = 0x5507 | 484 * +---+-------+--------------------------------------------------------------+ 485 * 486 * +---+-------+--------------------------------------------------------------+ 487 * | | Bits | Description | 488 * +===+=======+==============================================================+ 489 * | 0 | 31 | ORIGIN = GUC_HXG_ORIGIN_GUC_ | 490 * | +-------+--------------------------------------------------------------+ 491 * | | 30:28 | TYPE = GUC_HXG_TYPE_RESPONSE_SUCCESS_ | 492 * | +-------+--------------------------------------------------------------+ 493 * | | 27:0 | DATA0 = MBZ | 494 * +---+-------+--------------------------------------------------------------+ 495 */ 496 #define GUC_ACTION_VF2GUC_VF_RESET 0x5507u 497 498 #define VF2GUC_VF_RESET_REQUEST_MSG_LEN GUC_HXG_REQUEST_MSG_MIN_LEN 499 #define VF2GUC_VF_RESET_REQUEST_MSG_0_MBZ GUC_HXG_REQUEST_MSG_0_DATA0 500 501 #define VF2GUC_VF_RESET_RESPONSE_MSG_LEN GUC_HXG_RESPONSE_MSG_MIN_LEN 502 #define VF2GUC_VF_RESET_RESPONSE_MSG_0_MBZ GUC_HXG_RESPONSE_MSG_0_DATA0 503 504 /** 505 * DOC: VF2GUC_QUERY_SINGLE_KLV 506 * 507 * This action is used by VF to query value of the single KLV data. 508 * 509 * This message must be sent as `MMIO HXG Message`_. 510 * 511 * +---+-------+--------------------------------------------------------------+ 512 * | | Bits | Description | 513 * +===+=======+==============================================================+ 514 * | 0 | 31 | ORIGIN = GUC_HXG_ORIGIN_HOST_ | 515 * | +-------+--------------------------------------------------------------+ 516 * | | 30:28 | TYPE = GUC_HXG_TYPE_REQUEST_ | 517 * | +-------+--------------------------------------------------------------+ 518 * | | 27:16 | MBZ | 519 * | +-------+--------------------------------------------------------------+ 520 * | | 15:0 | ACTION = _`GUC_ACTION_VF2GUC_QUERY_SINGLE_KLV` = 0x5509 | 521 * +---+-------+--------------------------------------------------------------+ 522 * | 1 | 31:16 | MBZ | 523 * | +-------+--------------------------------------------------------------+ 524 * | | 15:0 | **KEY** - key for which value is requested | 525 * +---+-------+--------------------------------------------------------------+ 526 * 527 * +---+-------+--------------------------------------------------------------+ 528 * | | Bits | Description | 529 * +===+=======+==============================================================+ 530 * | 0 | 31 | ORIGIN = GUC_HXG_ORIGIN_GUC_ | 531 * | +-------+--------------------------------------------------------------+ 532 * | | 30:28 | TYPE = GUC_HXG_TYPE_RESPONSE_SUCCESS_ | 533 * | +-------+--------------------------------------------------------------+ 534 * | | 27:16 | MBZ | 535 * | +-------+--------------------------------------------------------------+ 536 * | | 15:0 | **LENGTH** - length of data in dwords | 537 * +---+-------+--------------------------------------------------------------+ 538 * | 1 | 31:0 | **VALUE32** - bits 31:0 of value if **LENGTH** >= 1 | 539 * +---+-------+--------------------------------------------------------------+ 540 * | 2 | 31:0 | **VALUE64** - bits 63:32 of value if **LENGTH** >= 2 | 541 * +---+-------+--------------------------------------------------------------+ 542 * | 3 | 31:0 | **VALUE96** - bits 95:64 of value if **LENGTH** >= 3 | 543 * +---+-------+--------------------------------------------------------------+ 544 */ 545 #define GUC_ACTION_VF2GUC_QUERY_SINGLE_KLV 0x5509u 546 547 #define VF2GUC_QUERY_SINGLE_KLV_REQUEST_MSG_LEN (GUC_HXG_REQUEST_MSG_MIN_LEN + 1u) 548 #define VF2GUC_QUERY_SINGLE_KLV_REQUEST_MSG_0_MBZ GUC_HXG_REQUEST_MSG_0_DATA0 549 #define VF2GUC_QUERY_SINGLE_KLV_REQUEST_MSG_1_MBZ (0xffffu << 16) 550 #define VF2GUC_QUERY_SINGLE_KLV_REQUEST_MSG_1_KEY (0xffffu << 0) 551 552 #define VF2GUC_QUERY_SINGLE_KLV_RESPONSE_MSG_MIN_LEN GUC_HXG_RESPONSE_MSG_MIN_LEN 553 #define VF2GUC_QUERY_SINGLE_KLV_RESPONSE_MSG_MAX_LEN (GUC_HXG_RESPONSE_MSG_MIN_LEN + 3u) 554 #define VF2GUC_QUERY_SINGLE_KLV_RESPONSE_MSG_0_MBZ (0xfffu << 16) 555 #define VF2GUC_QUERY_SINGLE_KLV_RESPONSE_MSG_0_LENGTH (0xffffu << 0) 556 #define VF2GUC_QUERY_SINGLE_KLV_RESPONSE_MSG_1_VALUE32 GUC_HXG_REQUEST_MSG_n_DATAn 557 #define VF2GUC_QUERY_SINGLE_KLV_RESPONSE_MSG_2_VALUE64 GUC_HXG_REQUEST_MSG_n_DATAn 558 #define VF2GUC_QUERY_SINGLE_KLV_RESPONSE_MSG_3_VALUE96 GUC_HXG_REQUEST_MSG_n_DATAn 559 560 /** 561 * DOC: PF2GUC_SAVE_RESTORE_VF 562 * 563 * This message is used by the PF to migrate VF info state maintained by the GuC. 564 * 565 * This message must be sent as `CTB HXG Message`_. 566 * 567 * Available since GuC version 70.25.0 568 * 569 * +---+-------+--------------------------------------------------------------+ 570 * | | Bits | Description | 571 * +===+=======+==============================================================+ 572 * | 0 | 31 | ORIGIN = GUC_HXG_ORIGIN_HOST_ | 573 * | +-------+--------------------------------------------------------------+ 574 * | | 30:28 | TYPE = GUC_HXG_TYPE_REQUEST_ | 575 * | +-------+--------------------------------------------------------------+ 576 * | | 27:16 | DATA0 = **OPCODE** - operation to take: | 577 * | | | | 578 * | | | - _`GUC_PF_OPCODE_VF_SAVE` = 0 | 579 * | | | - _`GUC_PF_OPCODE_VF_RESTORE` = 1 | 580 * | +-------+--------------------------------------------------------------+ 581 * | | 15:0 | ACTION = _`GUC_ACTION_PF2GUC_SAVE_RESTORE_VF` = 0x550B | 582 * +---+-------+--------------------------------------------------------------+ 583 * | 1 | 31:0 | **VFID** - VF identifier | 584 * +---+-------+--------------------------------------------------------------+ 585 * | 2 | 31:0 | **ADDR_LO** - lower 32-bits of GGTT offset to the buffer | 586 * | | | where the VF info will be save to or restored from. | 587 * +---+-------+--------------------------------------------------------------+ 588 * | 3 | 31:0 | **ADDR_HI** - upper 32-bits of GGTT offset to the buffer | 589 * | | | where the VF info will be save to or restored from. | 590 * +---+-------+--------------------------------------------------------------+ 591 * | 4 | 27:0 | **SIZE** - size of the buffer (in dwords) | 592 * | +-------+--------------------------------------------------------------+ 593 * | | 31:28 | MBZ | 594 * +---+-------+--------------------------------------------------------------+ 595 * 596 * +---+-------+--------------------------------------------------------------+ 597 * | | Bits | Description | 598 * +===+=======+==============================================================+ 599 * | 0 | 31 | ORIGIN = GUC_HXG_ORIGIN_GUC_ | 600 * | +-------+--------------------------------------------------------------+ 601 * | | 30:28 | TYPE = GUC_HXG_TYPE_RESPONSE_SUCCESS_ | 602 * | +-------+--------------------------------------------------------------+ 603 * | | 27:0 | DATA0 = **USED** - size of used buffer space (in dwords) | 604 * +---+-------+--------------------------------------------------------------+ 605 */ 606 #define GUC_ACTION_PF2GUC_SAVE_RESTORE_VF 0x550Bu 607 608 #define PF2GUC_SAVE_RESTORE_VF_REQUEST_MSG_LEN (GUC_HXG_EVENT_MSG_MIN_LEN + 4u) 609 #define PF2GUC_SAVE_RESTORE_VF_REQUEST_MSG_0_OPCODE GUC_HXG_EVENT_MSG_0_DATA0 610 #define GUC_PF_OPCODE_VF_SAVE 0u 611 #define GUC_PF_OPCODE_VF_RESTORE 1u 612 #define PF2GUC_SAVE_RESTORE_VF_REQUEST_MSG_1_VFID GUC_HXG_EVENT_MSG_n_DATAn 613 #define PF2GUC_SAVE_RESTORE_VF_REQUEST_MSG_2_ADDR_LO GUC_HXG_EVENT_MSG_n_DATAn 614 #define PF2GUC_SAVE_RESTORE_VF_REQUEST_MSG_3_ADDR_HI GUC_HXG_EVENT_MSG_n_DATAn 615 #define PF2GUC_SAVE_RESTORE_VF_REQUEST_MSG_4_SIZE (0xfffffffu << 0) 616 #define PF2GUC_SAVE_RESTORE_VF_REQUEST_MSG_4_MBZ (0xfu << 28) 617 618 #define PF2GUC_SAVE_RESTORE_VF_RESPONSE_MSG_LEN GUC_HXG_RESPONSE_MSG_MIN_LEN 619 #define PF2GUC_SAVE_RESTORE_VF_RESPONSE_MSG_0_USED GUC_HXG_RESPONSE_MSG_0_DATA0 620 621 #endif 622