hc
2024-03-25 edb30157bad0c0001c32b854271ace01d3b9a16a
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
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
/** @file
  Defines for CPU and Revision library.
 
  @copyright
  Copyright 2019 - 2021 Intel Corporation. <BR>
 
  SPDX-License-Identifier: BSD-2-Clause-Patent
**/
 
#ifndef _CPU_AND_REVISION_DEFINES_H_// #ifndef _CPU_AND_REVISION_LIB_H_
#define _CPU_AND_REVISION_DEFINES_H_
 
// CPU types
#define CPU_SKX        0     // Skylake:           Mainstream Xeon – 14nm
#define CPU_CLX        1     // CascadeLake:       Mainstream Xeon – 14nm
#define CPU_CPX        2     // CooperLake:        Mainstream Xeon – 14nm
#define CPU_ICXSP      4     // Icelake-SP:        Mainstream Xeon – 10nm Wave 1
#define CPU_MAX        0xFF  // MAX CPU limit
 
 
// CPU Physical chop types
#define CPU_CHOP_TYPE_LCC       0
#define CPU_CHOP_TYPE_MCC       1
#define CPU_CHOP_TYPE_HCC       2
#define CPU_CHOP_TYPE_XCC       3
 
#define MINOR_REV_MASK       0x000F
#define MINOR_REV_BIT_WIDTH  4
#define MAJOR_REV_MASK       0xFFF0
 
#define MAJOR_REV_A   (0x01 << (MINOR_REV_BIT_WIDTH))
#define MAJOR_REV_B   (0x02 << (MINOR_REV_BIT_WIDTH))
#define MAJOR_REV_C   (0x03 << (MINOR_REV_BIT_WIDTH))
#define MAJOR_REV_D   (0x04 << (MINOR_REV_BIT_WIDTH))
#define MAJOR_REV_E   (0x05 << (MINOR_REV_BIT_WIDTH))
#define MAJOR_REV_F   (0x06 << (MINOR_REV_BIT_WIDTH))
#define MAJOR_REV_G   (0x07 << (MINOR_REV_BIT_WIDTH))
#define MAJOR_REV_H   (0x08 << (MINOR_REV_BIT_WIDTH))
#define MAJOR_REV_I   (0x09 << (MINOR_REV_BIT_WIDTH))
#define MAJOR_REV_J   (0x0A << (MINOR_REV_BIT_WIDTH))
#define MAJOR_REV_K   (0x0B << (MINOR_REV_BIT_WIDTH))
#define MAJOR_REV_L   (0x0C << (MINOR_REV_BIT_WIDTH))
#define MAJOR_REV_M   (0x0D << (MINOR_REV_BIT_WIDTH))
#define MAJOR_REV_N   (0x0E << (MINOR_REV_BIT_WIDTH))
#define MAJOR_REV_O   (0x0F << (MINOR_REV_BIT_WIDTH))
#define MAJOR_REV_P   (0x10 << (MINOR_REV_BIT_WIDTH))
#define MAJOR_REV_Q   (0x11 << (MINOR_REV_BIT_WIDTH))
#define MAJOR_REV_R   (0x12 << (MINOR_REV_BIT_WIDTH))
#define MAJOR_REV_S   (0x13 << (MINOR_REV_BIT_WIDTH))
#define MAJOR_REV_T   (0x14 << (MINOR_REV_BIT_WIDTH))
#define MAJOR_REV_U   (0x15 << (MINOR_REV_BIT_WIDTH))
#define MAJOR_REV_V   (0x16 << (MINOR_REV_BIT_WIDTH))
#define MAJOR_REV_W   (0x17 << (MINOR_REV_BIT_WIDTH))
#define MAJOR_REV_X   (0x18 << (MINOR_REV_BIT_WIDTH))
#define MAJOR_REV_Y   (0x19 << (MINOR_REV_BIT_WIDTH))
#define MAJOR_REV_Z   (0x1A << (MINOR_REV_BIT_WIDTH))
#define MAJOR_REV_ALL (0x1F << (MINOR_REV_BIT_WIDTH))
 
#define MINOR_REV_0   0
#define MINOR_REV_1   1
#define MINOR_REV_2   2
#define MINOR_REV_3   3
#define MINOR_REV_4   4
#define MINOR_REV_5   5
#define MINOR_REV_6   6
#define MINOR_REV_7   7
#define MINOR_REV_8   8
#define MINOR_REV_ALL 0xF
 
//
// Revision defines - Generic for all Cpu Types
// If new revisions are needed, follow same pattern
//
#define   REV_A0    (MAJOR_REV_A | MINOR_REV_0)
#define   REV_A1    (MAJOR_REV_A | MINOR_REV_1)
#define   REV_A2    (MAJOR_REV_A | MINOR_REV_2)
#define   REV_A3    (MAJOR_REV_A | MINOR_REV_3)
#define   REV_A4    (MAJOR_REV_A | MINOR_REV_4)
#define   REV_A5    (MAJOR_REV_A | MINOR_REV_5)
#define   REV_AX    (MAJOR_REV_A | MINOR_REV_ALL)
 
#define   REV_B0    (MAJOR_REV_B | MINOR_REV_0)
#define   REV_B1    (MAJOR_REV_B | MINOR_REV_1)
#define   REV_B2    (MAJOR_REV_B | MINOR_REV_2)
#define   REV_B3    (MAJOR_REV_B | MINOR_REV_3)
#define   REV_B4    (MAJOR_REV_B | MINOR_REV_4)
#define   REV_B5    (MAJOR_REV_B | MINOR_REV_5)
#define   REV_BX    (MAJOR_REV_B | MINOR_REV_ALL)
 
#define   REV_C0    (MAJOR_REV_C | MINOR_REV_0)
#define   REV_C1    (MAJOR_REV_C | MINOR_REV_1)
#define   REV_C2    (MAJOR_REV_C | MINOR_REV_2)
#define   REV_C3    (MAJOR_REV_C | MINOR_REV_3)
#define   REV_C4    (MAJOR_REV_C | MINOR_REV_4)
#define   REV_C5    (MAJOR_REV_C | MINOR_REV_5)
#define   REV_CX    (MAJOR_REV_C | MINOR_REV_ALL)
 
#define   REV_D0    (MAJOR_REV_D | MINOR_REV_0)
#define   REV_D1    (MAJOR_REV_D | MINOR_REV_1)
#define   REV_D2    (MAJOR_REV_D | MINOR_REV_2)
#define   REV_D3    (MAJOR_REV_D | MINOR_REV_3)
#define   REV_D4    (MAJOR_REV_D | MINOR_REV_4)
#define   REV_D5    (MAJOR_REV_D | MINOR_REV_5)
#define   REV_DX    (MAJOR_REV_D | MINOR_REV_ALL)
 
#define   REV_E0    (MAJOR_REV_E | MINOR_REV_0)
#define   REV_E1    (MAJOR_REV_E | MINOR_REV_1)
#define   REV_E2    (MAJOR_REV_E | MINOR_REV_2)
#define   REV_E3    (MAJOR_REV_E | MINOR_REV_3)
#define   REV_E4    (MAJOR_REV_E | MINOR_REV_4)
#define   REV_E5    (MAJOR_REV_E | MINOR_REV_5)
#define   REV_EX    (MAJOR_REV_E | MINOR_REV_ALL)
 
#define   REV_F0    (MAJOR_REV_F | MINOR_REV_0)
#define   REV_F1    (MAJOR_REV_F | MINOR_REV_1)
#define   REV_F2    (MAJOR_REV_F | MINOR_REV_2)
#define   REV_F3    (MAJOR_REV_F | MINOR_REV_3)
#define   REV_F4    (MAJOR_REV_F | MINOR_REV_4)
#define   REV_F5    (MAJOR_REV_F | MINOR_REV_5)
#define   REV_FX    (MAJOR_REV_F | MINOR_REV_ALL)
 
#define   REV_G0    (MAJOR_REV_G | MINOR_REV_0)
#define   REV_G1    (MAJOR_REV_G | MINOR_REV_1)
#define   REV_G2    (MAJOR_REV_G | MINOR_REV_2)
#define   REV_G3    (MAJOR_REV_G | MINOR_REV_3)
#define   REV_G4    (MAJOR_REV_G | MINOR_REV_4)
#define   REV_G5    (MAJOR_REV_G | MINOR_REV_5)
#define   REV_GX    (MAJOR_REV_G | MINOR_REV_ALL)
 
#define   REV_H0    (MAJOR_REV_H | MINOR_REV_0)
#define   REV_H1    (MAJOR_REV_H | MINOR_REV_1)
#define   REV_H2    (MAJOR_REV_H | MINOR_REV_2)
#define   REV_H3    (MAJOR_REV_H | MINOR_REV_3)
#define   REV_H4    (MAJOR_REV_H | MINOR_REV_4)
#define   REV_H5    (MAJOR_REV_H | MINOR_REV_5)
#define   REV_HX    (MAJOR_REV_H | MINOR_REV_ALL)
 
#define   REV_I0    (MAJOR_REV_I | MINOR_REV_0)
#define   REV_I1    (MAJOR_REV_I | MINOR_REV_1)
#define   REV_I2    (MAJOR_REV_I | MINOR_REV_2)
#define   REV_I3    (MAJOR_REV_I | MINOR_REV_3)
#define   REV_I4    (MAJOR_REV_I | MINOR_REV_4)
#define   REV_I5    (MAJOR_REV_I | MINOR_REV_5)
#define   REV_IX    (MAJOR_REV_I | MINOR_REV_ALL)
 
#define   REV_J0    (MAJOR_REV_J | MINOR_REV_0)
#define   REV_J1    (MAJOR_REV_J | MINOR_REV_1)
#define   REV_J2    (MAJOR_REV_J | MINOR_REV_2)
#define   REV_J3    (MAJOR_REV_J | MINOR_REV_3)
#define   REV_J4    (MAJOR_REV_J | MINOR_REV_4)
#define   REV_J5    (MAJOR_REV_J | MINOR_REV_5)
#define   REV_JX    (MAJOR_REV_J | MINOR_REV_ALL)
 
#define   REV_K0    (MAJOR_REV_K | MINOR_REV_0)
#define   REV_K1    (MAJOR_REV_K | MINOR_REV_1)
#define   REV_K2    (MAJOR_REV_K | MINOR_REV_2)
#define   REV_K3    (MAJOR_REV_K | MINOR_REV_3)
#define   REV_K4    (MAJOR_REV_K | MINOR_REV_4)
#define   REV_K5    (MAJOR_REV_K | MINOR_REV_5)
#define   REV_KX    (MAJOR_REV_K | MINOR_REV_ALL)
 
#define   REV_L0    (MAJOR_REV_L | MINOR_REV_0)
#define   REV_L1    (MAJOR_REV_L | MINOR_REV_1)
#define   REV_L2    (MAJOR_REV_L | MINOR_REV_2)
#define   REV_L3    (MAJOR_REV_L | MINOR_REV_3)
#define   REV_L4    (MAJOR_REV_L | MINOR_REV_4)
#define   REV_L5    (MAJOR_REV_L | MINOR_REV_5)
#define   REV_LX    (MAJOR_REV_L | MINOR_REV_ALL)
 
#define   REV_M0    (MAJOR_REV_M | MINOR_REV_0)
#define   REV_M1    (MAJOR_REV_M | MINOR_REV_1)
#define   REV_M2    (MAJOR_REV_M | MINOR_REV_2)
#define   REV_M3    (MAJOR_REV_M | MINOR_REV_3)
#define   REV_M4    (MAJOR_REV_M | MINOR_REV_4)
#define   REV_M5    (MAJOR_REV_M | MINOR_REV_5)
#define   REV_MX    (MAJOR_REV_M | MINOR_REV_ALL)
 
#define   REV_N0    (MAJOR_REV_N | MINOR_REV_0)
#define   REV_N1    (MAJOR_REV_N | MINOR_REV_1)
#define   REV_N2    (MAJOR_REV_N | MINOR_REV_2)
#define   REV_N3    (MAJOR_REV_N | MINOR_REV_3)
#define   REV_N4    (MAJOR_REV_N | MINOR_REV_4)
#define   REV_N5    (MAJOR_REV_N | MINOR_REV_5)
#define   REV_NX    (MAJOR_REV_N | MINOR_REV_ALL)
 
#define   REV_O0    (MAJOR_REV_O | MINOR_REV_0)
#define   REV_O1    (MAJOR_REV_O | MINOR_REV_1)
#define   REV_O2    (MAJOR_REV_O | MINOR_REV_2)
#define   REV_O3    (MAJOR_REV_O | MINOR_REV_3)
#define   REV_O4    (MAJOR_REV_O | MINOR_REV_4)
#define   REV_O5    (MAJOR_REV_O | MINOR_REV_5)
#define   REV_OX    (MAJOR_REV_O | MINOR_REV_ALL)
 
#define   REV_P0    (MAJOR_REV_P | MINOR_REV_0)
#define   REV_P1    (MAJOR_REV_P | MINOR_REV_1)
#define   REV_P2    (MAJOR_REV_P | MINOR_REV_2)
#define   REV_P3    (MAJOR_REV_P | MINOR_REV_3)
#define   REV_P4    (MAJOR_REV_P | MINOR_REV_4)
#define   REV_P5    (MAJOR_REV_P | MINOR_REV_5)
#define   REV_PX    (MAJOR_REV_P | MINOR_REV_ALL)
 
#define   REV_Q0    (MAJOR_REV_Q | MINOR_REV_0)
#define   REV_Q1    (MAJOR_REV_Q | MINOR_REV_1)
#define   REV_Q2    (MAJOR_REV_Q | MINOR_REV_2)
#define   REV_Q3    (MAJOR_REV_Q | MINOR_REV_3)
#define   REV_Q4    (MAJOR_REV_Q | MINOR_REV_4)
#define   REV_Q5    (MAJOR_REV_Q | MINOR_REV_5)
#define   REV_QX    (MAJOR_REV_Q | MINOR_REV_ALL)
 
#define   REV_R0    (MAJOR_REV_R | MINOR_REV_0)
#define   REV_R1    (MAJOR_REV_R | MINOR_REV_1)
#define   REV_R2    (MAJOR_REV_R | MINOR_REV_2)
#define   REV_R3    (MAJOR_REV_R | MINOR_REV_3)
#define   REV_R4    (MAJOR_REV_R | MINOR_REV_4)
#define   REV_R5    (MAJOR_REV_R | MINOR_REV_5)
#define   REV_RX    (MAJOR_REV_R | MINOR_REV_ALL)
 
#define   REV_S0    (MAJOR_REV_S | MINOR_REV_0)
#define   REV_S1    (MAJOR_REV_S | MINOR_REV_1)
#define   REV_S2    (MAJOR_REV_S | MINOR_REV_2)
#define   REV_S3    (MAJOR_REV_S | MINOR_REV_3)
#define   REV_S4    (MAJOR_REV_S | MINOR_REV_4)
#define   REV_S5    (MAJOR_REV_S | MINOR_REV_5)
#define   REV_SX    (MAJOR_REV_S | MINOR_REV_ALL)
 
#define   REV_T0    (MAJOR_REV_T | MINOR_REV_0)
#define   REV_T1    (MAJOR_REV_T | MINOR_REV_1)
#define   REV_T2    (MAJOR_REV_T | MINOR_REV_2)
#define   REV_T3    (MAJOR_REV_T | MINOR_REV_3)
#define   REV_T4    (MAJOR_REV_T | MINOR_REV_4)
#define   REV_T5    (MAJOR_REV_T | MINOR_REV_5)
#define   REV_TX    (MAJOR_REV_T | MINOR_REV_ALL)
 
#define   REV_U0    (MAJOR_REV_U | MINOR_REV_0)
#define   REV_U1    (MAJOR_REV_U | MINOR_REV_1)
#define   REV_U2    (MAJOR_REV_U | MINOR_REV_2)
#define   REV_U3    (MAJOR_REV_U | MINOR_REV_3)
#define   REV_U4    (MAJOR_REV_U | MINOR_REV_4)
#define   REV_U5    (MAJOR_REV_U | MINOR_REV_5)
#define   REV_UX    (MAJOR_REV_U | MINOR_REV_ALL)
 
#define   REV_V0    (MAJOR_REV_V | MINOR_REV_0)
#define   REV_V1    (MAJOR_REV_V | MINOR_REV_1)
#define   REV_V2    (MAJOR_REV_V | MINOR_REV_2)
#define   REV_V3    (MAJOR_REV_V | MINOR_REV_3)
#define   REV_V4    (MAJOR_REV_V | MINOR_REV_4)
#define   REV_V5    (MAJOR_REV_V | MINOR_REV_5)
#define   REV_VX    (MAJOR_REV_V | MINOR_REV_ALL)
 
#define   REV_W0    (MAJOR_REV_W | MINOR_REV_0)
#define   REV_W1    (MAJOR_REV_W | MINOR_REV_1)
#define   REV_W2    (MAJOR_REV_W | MINOR_REV_2)
#define   REV_W3    (MAJOR_REV_W | MINOR_REV_3)
#define   REV_W4    (MAJOR_REV_W | MINOR_REV_4)
#define   REV_W5    (MAJOR_REV_W | MINOR_REV_5)
#define   REV_WX    (MAJOR_REV_W | MINOR_REV_ALL)
 
#define   REV_X0    (MAJOR_REV_X | MINOR_REV_0)
#define   REV_X1    (MAJOR_REV_X | MINOR_REV_1)
#define   REV_X2    (MAJOR_REV_X | MINOR_REV_2)
#define   REV_X3    (MAJOR_REV_X | MINOR_REV_3)
#define   REV_X4    (MAJOR_REV_X | MINOR_REV_4)
#define   REV_X5    (MAJOR_REV_X | MINOR_REV_5)
#define   REV_XX    (MAJOR_REV_X | MINOR_REV_ALL)
 
#define   REV_Y0    (MAJOR_REV_Y | MINOR_REV_0)
#define   REV_Y1    (MAJOR_REV_Y | MINOR_REV_1)
#define   REV_Y2    (MAJOR_REV_Y | MINOR_REV_2)
#define   REV_Y3    (MAJOR_REV_Y | MINOR_REV_3)
#define   REV_Y4    (MAJOR_REV_Y | MINOR_REV_4)
#define   REV_Y5    (MAJOR_REV_Y | MINOR_REV_5)
#define   REV_YX    (MAJOR_REV_Y | MINOR_REV_ALL)
 
#define   REV_Z0    (MAJOR_REV_Z | MINOR_REV_0)
#define   REV_Z1    (MAJOR_REV_Z | MINOR_REV_1)
#define   REV_Z2    (MAJOR_REV_Z | MINOR_REV_2)
#define   REV_Z3    (MAJOR_REV_Z | MINOR_REV_3)
#define   REV_Z4    (MAJOR_REV_Z | MINOR_REV_4)
#define   REV_Z5    (MAJOR_REV_Z | MINOR_REV_5)
#define   REV_ZX    (MAJOR_REV_Z | MINOR_REV_ALL)
 
#define   REV_ALL   (MAJOR_REV_ALL | MINOR_REV_ALL)
#endif