1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149
|
/*========================== begin_copyright_notice ============================
Copyright (C) 2019-2024 Intel Corporation
SPDX-License-Identifier: MIT
============================= end_copyright_notice ===========================*/
#pragma once
namespace SIP {
struct alignas(4) version {
uint8_t major;
uint8_t minor;
uint16_t patch;
};
struct alignas(8) StateSaveArea {
char magic[8] = "tssarea";
uint64_t reserved1;
struct version version;
uint8_t size;
uint8_t reserved2[3];
};
// Debug SIP will dump this data in debug surface.
struct sr_ident {
char magic[8] = "srmagic";
struct version version;
uint8_t count;
uint8_t reserved[7];
};
struct alignas(8) regset_desc {
uint32_t offset;
uint16_t num;
uint16_t bits;
uint16_t bytes;
};
#define EXCHANGE_BUFFER_SIZE 112
struct sip_command {
uint32_t command;
uint32_t size;
uint64_t offset;
uint8_t buffer[EXCHANGE_BUFFER_SIZE];
};
struct alignas(8) intelgt_state_save_area {
uint32_t num_slices;
uint32_t num_subslices_per_slice;
uint32_t num_eus_per_subslice;
uint32_t num_threads_per_eu;
uint32_t state_area_offset;
uint32_t state_save_size;
uint32_t slm_area_offset;
uint32_t slm_bank_size;
uint32_t slm_bank_valid;
uint32_t sr_magic_offset;
struct regset_desc grf;
struct regset_desc addr;
struct regset_desc flag;
struct regset_desc emask;
struct regset_desc sr;
struct regset_desc cr;
struct regset_desc notification;
struct regset_desc tdr;
struct regset_desc acc;
struct regset_desc mme;
struct regset_desc ce;
struct regset_desc sp;
struct regset_desc cmd;
struct regset_desc tm;
struct regset_desc fc;
struct regset_desc dbg;
struct regset_desc ctx;
struct regset_desc dbg_reg;
};
struct StateSaveAreaHeader {
struct StateSaveArea versionHeader;
struct intelgt_state_save_area regHeader;
};
struct fifo_node {
uint8_t valid;
uint8_t thread_id;
uint8_t eu_id;
uint8_t subslice_id;
uint8_t slice_id;
uint8_t reserved[3];
};
enum SIP_FLAGS { SIP_FLAG_HEAPLESS = 1 };
struct alignas(8) intelgt_state_save_area_V3 {
uint32_t num_slices;
uint32_t num_subslices_per_slice;
uint32_t num_eus_per_subslice;
uint32_t num_threads_per_eu;
uint32_t state_area_offset;
uint32_t state_save_size;
uint32_t slm_area_offset;
uint32_t slm_bank_size;
uint32_t reserved0;
uint32_t sr_magic_offset;
uint32_t fifo_offset;
uint32_t fifo_size;
uint32_t fifo_head;
uint32_t fifo_tail;
uint32_t fifo_version;
uint32_t reserved1[10];
uint32_t sip_flags;
struct regset_desc grf;
struct regset_desc addr;
struct regset_desc flag;
struct regset_desc emask;
struct regset_desc sr;
struct regset_desc cr;
struct regset_desc notification;
struct regset_desc tdr;
struct regset_desc acc;
struct regset_desc mme;
struct regset_desc ce;
struct regset_desc sp;
struct regset_desc cmd;
struct regset_desc tm;
struct regset_desc fc;
struct regset_desc dbg;
struct regset_desc ctx;
struct regset_desc dbg_reg;
struct regset_desc scalar;
struct regset_desc msg;
};
// versionHeader.version.major = 3
struct StateSaveAreaHeaderV3 {
struct StateSaveArea versionHeader;
struct intelgt_state_save_area_V3 regHeader;
};
// versionHeader.version.major = 4
struct StateSaveAreaHeaderV4 {
struct StateSaveArea versionHeader;
uint64_t total_wmtp_data_size;
};
} // namespace SIP
|