1
2 #ifndef _ASM_X86_CPUFEATURES_H
3 #define _ASM_X86_CPUFEATURES_H
4
5 #ifndef _ASM_X86_REQUIRED_FEATURES_H
6 #include <asm/required-features.h>
7 #endif
8
9 #ifndef _ASM_X86_DISABLED_FEATURES_H
10 #include <asm/disabled-features.h>
11 #endif
12
13
14
15
16 #define NCAPINTS 19
17 #define NBUGINTS 1
18
19
20
21
22
23
24
25
26
27
28
29 #define X86_FEATURE_FPU ( 0*32+ 0)
30 #define X86_FEATURE_VME ( 0*32+ 1)
31 #define X86_FEATURE_DE ( 0*32+ 2)
32 #define X86_FEATURE_PSE ( 0*32+ 3)
33 #define X86_FEATURE_TSC ( 0*32+ 4)
34 #define X86_FEATURE_MSR ( 0*32+ 5)
35 #define X86_FEATURE_PAE ( 0*32+ 6)
36 #define X86_FEATURE_MCE ( 0*32+ 7)
37 #define X86_FEATURE_CX8 ( 0*32+ 8)
38 #define X86_FEATURE_APIC ( 0*32+ 9)
39 #define X86_FEATURE_SEP ( 0*32+11)
40 #define X86_FEATURE_MTRR ( 0*32+12)
41 #define X86_FEATURE_PGE ( 0*32+13)
42 #define X86_FEATURE_MCA ( 0*32+14)
43 #define X86_FEATURE_CMOV ( 0*32+15)
44 #define X86_FEATURE_PAT ( 0*32+16)
45 #define X86_FEATURE_PSE36 ( 0*32+17)
46 #define X86_FEATURE_PN ( 0*32+18)
47 #define X86_FEATURE_CLFLUSH ( 0*32+19)
48 #define X86_FEATURE_DS ( 0*32+21)
49 #define X86_FEATURE_ACPI ( 0*32+22)
50 #define X86_FEATURE_MMX ( 0*32+23)
51 #define X86_FEATURE_FXSR ( 0*32+24)
52 #define X86_FEATURE_XMM ( 0*32+25)
53 #define X86_FEATURE_XMM2 ( 0*32+26)
54 #define X86_FEATURE_SELFSNOOP ( 0*32+27)
55 #define X86_FEATURE_HT ( 0*32+28)
56 #define X86_FEATURE_ACC ( 0*32+29)
57 #define X86_FEATURE_IA64 ( 0*32+30)
58 #define X86_FEATURE_PBE ( 0*32+31)
59
60
61
62 #define X86_FEATURE_SYSCALL ( 1*32+11)
63 #define X86_FEATURE_MP ( 1*32+19)
64 #define X86_FEATURE_NX ( 1*32+20)
65 #define X86_FEATURE_MMXEXT ( 1*32+22)
66 #define X86_FEATURE_FXSR_OPT ( 1*32+25)
67 #define X86_FEATURE_GBPAGES ( 1*32+26)
68 #define X86_FEATURE_RDTSCP ( 1*32+27)
69 #define X86_FEATURE_LM ( 1*32+29)
70 #define X86_FEATURE_3DNOWEXT ( 1*32+30)
71 #define X86_FEATURE_3DNOW ( 1*32+31)
72
73
74 #define X86_FEATURE_RECOVERY ( 2*32+ 0)
75 #define X86_FEATURE_LONGRUN ( 2*32+ 1)
76 #define X86_FEATURE_LRTI ( 2*32+ 3)
77
78
79
80 #define X86_FEATURE_CXMMX ( 3*32+ 0)
81 #define X86_FEATURE_K6_MTRR ( 3*32+ 1)
82 #define X86_FEATURE_CYRIX_ARR ( 3*32+ 2)
83 #define X86_FEATURE_CENTAUR_MCR ( 3*32+ 3)
84
85
86 #define X86_FEATURE_K8 ( 3*32+ 4)
87 #define X86_FEATURE_K7 ( 3*32+ 5)
88 #define X86_FEATURE_P3 ( 3*32+ 6)
89 #define X86_FEATURE_P4 ( 3*32+ 7)
90 #define X86_FEATURE_CONSTANT_TSC ( 3*32+ 8)
91 #define X86_FEATURE_UP ( 3*32+ 9)
92 #define X86_FEATURE_ART ( 3*32+10)
93 #define X86_FEATURE_ARCH_PERFMON ( 3*32+11)
94 #define X86_FEATURE_PEBS ( 3*32+12)
95 #define X86_FEATURE_BTS ( 3*32+13)
96 #define X86_FEATURE_SYSCALL32 ( 3*32+14)
97 #define X86_FEATURE_SYSENTER32 ( 3*32+15)
98 #define X86_FEATURE_REP_GOOD ( 3*32+16)
99 #define X86_FEATURE_LFENCE_RDTSC ( 3*32+18)
100 #define X86_FEATURE_ACC_POWER ( 3*32+19)
101 #define X86_FEATURE_NOPL ( 3*32+20)
102 #define X86_FEATURE_ALWAYS ( 3*32+21)
103 #define X86_FEATURE_XTOPOLOGY ( 3*32+22)
104 #define X86_FEATURE_TSC_RELIABLE ( 3*32+23)
105 #define X86_FEATURE_NONSTOP_TSC ( 3*32+24)
106 #define X86_FEATURE_CPUID ( 3*32+25)
107 #define X86_FEATURE_EXTD_APICID ( 3*32+26)
108 #define X86_FEATURE_AMD_DCM ( 3*32+27)
109 #define X86_FEATURE_APERFMPERF ( 3*32+28)
110 #define X86_FEATURE_NONSTOP_TSC_S3 ( 3*32+30)
111 #define X86_FEATURE_TSC_KNOWN_FREQ ( 3*32+31)
112
113
114 #define X86_FEATURE_XMM3 ( 4*32+ 0)
115 #define X86_FEATURE_PCLMULQDQ ( 4*32+ 1)
116 #define X86_FEATURE_DTES64 ( 4*32+ 2)
117 #define X86_FEATURE_MWAIT ( 4*32+ 3)
118 #define X86_FEATURE_DSCPL ( 4*32+ 4)
119 #define X86_FEATURE_VMX ( 4*32+ 5)
120 #define X86_FEATURE_SMX ( 4*32+ 6)
121 #define X86_FEATURE_EST ( 4*32+ 7)
122 #define X86_FEATURE_TM2 ( 4*32+ 8)
123 #define X86_FEATURE_SSSE3 ( 4*32+ 9)
124 #define X86_FEATURE_CID ( 4*32+10)
125 #define X86_FEATURE_SDBG ( 4*32+11)
126 #define X86_FEATURE_FMA ( 4*32+12)
127 #define X86_FEATURE_CX16 ( 4*32+13)
128 #define X86_FEATURE_XTPR ( 4*32+14)
129 #define X86_FEATURE_PDCM ( 4*32+15)
130 #define X86_FEATURE_PCID ( 4*32+17)
131 #define X86_FEATURE_DCA ( 4*32+18)
132 #define X86_FEATURE_XMM4_1 ( 4*32+19)
133 #define X86_FEATURE_XMM4_2 ( 4*32+20)
134 #define X86_FEATURE_X2APIC ( 4*32+21)
135 #define X86_FEATURE_MOVBE ( 4*32+22)
136 #define X86_FEATURE_POPCNT ( 4*32+23)
137 #define X86_FEATURE_TSC_DEADLINE_TIMER ( 4*32+24)
138 #define X86_FEATURE_AES ( 4*32+25)
139 #define X86_FEATURE_XSAVE ( 4*32+26)
140 #define X86_FEATURE_OSXSAVE ( 4*32+27)
141 #define X86_FEATURE_AVX ( 4*32+28)
142 #define X86_FEATURE_F16C ( 4*32+29)
143 #define X86_FEATURE_RDRAND ( 4*32+30)
144 #define X86_FEATURE_HYPERVISOR ( 4*32+31)
145
146
147 #define X86_FEATURE_XSTORE ( 5*32+ 2)
148 #define X86_FEATURE_XSTORE_EN ( 5*32+ 3)
149 #define X86_FEATURE_XCRYPT ( 5*32+ 6)
150 #define X86_FEATURE_XCRYPT_EN ( 5*32+ 7)
151 #define X86_FEATURE_ACE2 ( 5*32+ 8)
152 #define X86_FEATURE_ACE2_EN ( 5*32+ 9)
153 #define X86_FEATURE_PHE ( 5*32+10)
154 #define X86_FEATURE_PHE_EN ( 5*32+11)
155 #define X86_FEATURE_PMM ( 5*32+12)
156 #define X86_FEATURE_PMM_EN ( 5*32+13)
157
158
159 #define X86_FEATURE_LAHF_LM ( 6*32+ 0)
160 #define X86_FEATURE_CMP_LEGACY ( 6*32+ 1)
161 #define X86_FEATURE_SVM ( 6*32+ 2)
162 #define X86_FEATURE_EXTAPIC ( 6*32+ 3)
163 #define X86_FEATURE_CR8_LEGACY ( 6*32+ 4)
164 #define X86_FEATURE_ABM ( 6*32+ 5)
165 #define X86_FEATURE_SSE4A ( 6*32+ 6)
166 #define X86_FEATURE_MISALIGNSSE ( 6*32+ 7)
167 #define X86_FEATURE_3DNOWPREFETCH ( 6*32+ 8)
168 #define X86_FEATURE_OSVW ( 6*32+ 9)
169 #define X86_FEATURE_IBS ( 6*32+10)
170 #define X86_FEATURE_XOP ( 6*32+11)
171 #define X86_FEATURE_SKINIT ( 6*32+12)
172 #define X86_FEATURE_WDT ( 6*32+13)
173 #define X86_FEATURE_LWP ( 6*32+15)
174 #define X86_FEATURE_FMA4 ( 6*32+16)
175 #define X86_FEATURE_TCE ( 6*32+17)
176 #define X86_FEATURE_NODEID_MSR ( 6*32+19)
177 #define X86_FEATURE_TBM ( 6*32+21)
178 #define X86_FEATURE_TOPOEXT ( 6*32+22)
179 #define X86_FEATURE_PERFCTR_CORE ( 6*32+23)
180 #define X86_FEATURE_PERFCTR_NB ( 6*32+24)
181 #define X86_FEATURE_BPEXT ( 6*32+26)
182 #define X86_FEATURE_PTSC ( 6*32+27)
183 #define X86_FEATURE_PERFCTR_LLC ( 6*32+28)
184 #define X86_FEATURE_MWAITX ( 6*32+29)
185
186
187
188
189
190
191
192 #define X86_FEATURE_RING3MWAIT ( 7*32+ 0)
193 #define X86_FEATURE_CPUID_FAULT ( 7*32+ 1)
194 #define X86_FEATURE_CPB ( 7*32+ 2)
195 #define X86_FEATURE_EPB ( 7*32+ 3)
196 #define X86_FEATURE_CAT_L3 ( 7*32+ 4)
197 #define X86_FEATURE_CAT_L2 ( 7*32+ 5)
198 #define X86_FEATURE_CDP_L3 ( 7*32+ 6)
199 #define X86_FEATURE_INVPCID_SINGLE ( 7*32+ 7)
200 #define X86_FEATURE_HW_PSTATE ( 7*32+ 8)
201 #define X86_FEATURE_PROC_FEEDBACK ( 7*32+ 9)
202 #define X86_FEATURE_SME ( 7*32+10)
203 #define X86_FEATURE_PTI ( 7*32+11)
204 #define X86_FEATURE_RETPOLINE ( 7*32+12)
205 #define X86_FEATURE_RETPOLINE_AMD ( 7*32+13)
206 #define X86_FEATURE_INTEL_PPIN ( 7*32+14)
207 #define X86_FEATURE_CDP_L2 ( 7*32+15)
208 #define X86_FEATURE_MSR_SPEC_CTRL ( 7*32+16)
209 #define X86_FEATURE_SSBD ( 7*32+17)
210 #define X86_FEATURE_MBA ( 7*32+18)
211 #define X86_FEATURE_RSB_CTXSW ( 7*32+19)
212 #define X86_FEATURE_SEV ( 7*32+20)
213 #define X86_FEATURE_USE_IBPB ( 7*32+21)
214 #define X86_FEATURE_USE_IBRS_FW ( 7*32+22)
215 #define X86_FEATURE_SPEC_STORE_BYPASS_DISABLE ( 7*32+23)
216 #define X86_FEATURE_LS_CFG_SSBD ( 7*32+24)
217 #define X86_FEATURE_IBRS ( 7*32+25)
218 #define X86_FEATURE_IBPB ( 7*32+26)
219 #define X86_FEATURE_STIBP ( 7*32+27)
220 #define X86_FEATURE_ZEN ( 7*32+28)
221 #define X86_FEATURE_L1TF_PTEINV ( 7*32+29)
222 #define X86_FEATURE_IBRS_ENHANCED ( 7*32+30)
223
224
225 #define X86_FEATURE_TPR_SHADOW ( 8*32+ 0)
226 #define X86_FEATURE_VNMI ( 8*32+ 1)
227 #define X86_FEATURE_FLEXPRIORITY ( 8*32+ 2)
228 #define X86_FEATURE_EPT ( 8*32+ 3)
229 #define X86_FEATURE_VPID ( 8*32+ 4)
230
231 #define X86_FEATURE_VMMCALL ( 8*32+15)
232 #define X86_FEATURE_XENPV ( 8*32+16)
233 #define X86_FEATURE_EPT_AD ( 8*32+17)
234 #define X86_FEATURE_VMCALL ( 8*32+18)
235 #define X86_FEATURE_VMW_VMMCALL ( 8*32+19)
236
237
238 #define X86_FEATURE_FSGSBASE ( 9*32+ 0)
239 #define X86_FEATURE_TSC_ADJUST ( 9*32+ 1)
240 #define X86_FEATURE_BMI1 ( 9*32+ 3)
241 #define X86_FEATURE_HLE ( 9*32+ 4)
242 #define X86_FEATURE_AVX2 ( 9*32+ 5)
243 #define X86_FEATURE_FDP_EXCPTN_ONLY ( 9*32+ 6)
244 #define X86_FEATURE_SMEP ( 9*32+ 7)
245 #define X86_FEATURE_BMI2 ( 9*32+ 8)
246 #define X86_FEATURE_ERMS ( 9*32+ 9)
247 #define X86_FEATURE_INVPCID ( 9*32+10)
248 #define X86_FEATURE_RTM ( 9*32+11)
249 #define X86_FEATURE_CQM ( 9*32+12)
250 #define X86_FEATURE_ZERO_FCS_FDS ( 9*32+13)
251 #define X86_FEATURE_MPX ( 9*32+14)
252 #define X86_FEATURE_RDT_A ( 9*32+15)
253 #define X86_FEATURE_AVX512F ( 9*32+16)
254 #define X86_FEATURE_AVX512DQ ( 9*32+17)
255 #define X86_FEATURE_RDSEED ( 9*32+18)
256 #define X86_FEATURE_ADX ( 9*32+19)
257 #define X86_FEATURE_SMAP ( 9*32+20)
258 #define X86_FEATURE_AVX512IFMA ( 9*32+21)
259 #define X86_FEATURE_CLFLUSHOPT ( 9*32+23)
260 #define X86_FEATURE_CLWB ( 9*32+24)
261 #define X86_FEATURE_INTEL_PT ( 9*32+25)
262 #define X86_FEATURE_AVX512PF ( 9*32+26)
263 #define X86_FEATURE_AVX512ER ( 9*32+27)
264 #define X86_FEATURE_AVX512CD ( 9*32+28)
265 #define X86_FEATURE_SHA_NI ( 9*32+29)
266 #define X86_FEATURE_AVX512BW ( 9*32+30)
267 #define X86_FEATURE_AVX512VL ( 9*32+31)
268
269
270 #define X86_FEATURE_XSAVEOPT (10*32+ 0)
271 #define X86_FEATURE_XSAVEC (10*32+ 1)
272 #define X86_FEATURE_XGETBV1 (10*32+ 2)
273 #define X86_FEATURE_XSAVES (10*32+ 3)
274
275
276
277
278
279
280
281 #define X86_FEATURE_CQM_LLC (11*32+ 0)
282 #define X86_FEATURE_CQM_OCCUP_LLC (11*32+ 1)
283 #define X86_FEATURE_CQM_MBM_TOTAL (11*32+ 2)
284 #define X86_FEATURE_CQM_MBM_LOCAL (11*32+ 3)
285 #define X86_FEATURE_FENCE_SWAPGS_USER (11*32+ 4)
286 #define X86_FEATURE_FENCE_SWAPGS_KERNEL (11*32+ 5)
287
288
289 #define X86_FEATURE_AVX512_BF16 (12*32+ 5)
290
291
292 #define X86_FEATURE_CLZERO (13*32+ 0)
293 #define X86_FEATURE_IRPERF (13*32+ 1)
294 #define X86_FEATURE_XSAVEERPTR (13*32+ 2)
295 #define X86_FEATURE_WBNOINVD (13*32+ 9)
296 #define X86_FEATURE_AMD_IBPB (13*32+12)
297 #define X86_FEATURE_AMD_IBRS (13*32+14)
298 #define X86_FEATURE_AMD_STIBP (13*32+15)
299 #define X86_FEATURE_AMD_STIBP_ALWAYS_ON (13*32+17)
300 #define X86_FEATURE_AMD_SSBD (13*32+24)
301 #define X86_FEATURE_VIRT_SSBD (13*32+25)
302 #define X86_FEATURE_AMD_SSB_NO (13*32+26)
303
304
305 #define X86_FEATURE_DTHERM (14*32+ 0)
306 #define X86_FEATURE_IDA (14*32+ 1)
307 #define X86_FEATURE_ARAT (14*32+ 2)
308 #define X86_FEATURE_PLN (14*32+ 4)
309 #define X86_FEATURE_PTS (14*32+ 6)
310 #define X86_FEATURE_HWP (14*32+ 7)
311 #define X86_FEATURE_HWP_NOTIFY (14*32+ 8)
312 #define X86_FEATURE_HWP_ACT_WINDOW (14*32+ 9)
313 #define X86_FEATURE_HWP_EPP (14*32+10)
314 #define X86_FEATURE_HWP_PKG_REQ (14*32+11)
315
316
317 #define X86_FEATURE_NPT (15*32+ 0)
318 #define X86_FEATURE_LBRV (15*32+ 1)
319 #define X86_FEATURE_SVML (15*32+ 2)
320 #define X86_FEATURE_NRIPS (15*32+ 3)
321 #define X86_FEATURE_TSCRATEMSR (15*32+ 4)
322 #define X86_FEATURE_VMCBCLEAN (15*32+ 5)
323 #define X86_FEATURE_FLUSHBYASID (15*32+ 6)
324 #define X86_FEATURE_DECODEASSISTS (15*32+ 7)
325 #define X86_FEATURE_PAUSEFILTER (15*32+10)
326 #define X86_FEATURE_PFTHRESHOLD (15*32+12)
327 #define X86_FEATURE_AVIC (15*32+13)
328 #define X86_FEATURE_V_VMSAVE_VMLOAD (15*32+15)
329 #define X86_FEATURE_VGIF (15*32+16)
330
331
332 #define X86_FEATURE_AVX512VBMI (16*32+ 1)
333 #define X86_FEATURE_UMIP (16*32+ 2)
334 #define X86_FEATURE_PKU (16*32+ 3)
335 #define X86_FEATURE_OSPKE (16*32+ 4)
336 #define X86_FEATURE_WAITPKG (16*32+ 5)
337 #define X86_FEATURE_AVX512_VBMI2 (16*32+ 6)
338 #define X86_FEATURE_GFNI (16*32+ 8)
339 #define X86_FEATURE_VAES (16*32+ 9)
340 #define X86_FEATURE_VPCLMULQDQ (16*32+10)
341 #define X86_FEATURE_AVX512_VNNI (16*32+11)
342 #define X86_FEATURE_AVX512_BITALG (16*32+12)
343 #define X86_FEATURE_TME (16*32+13)
344 #define X86_FEATURE_AVX512_VPOPCNTDQ (16*32+14)
345 #define X86_FEATURE_LA57 (16*32+16)
346 #define X86_FEATURE_RDPID (16*32+22)
347 #define X86_FEATURE_CLDEMOTE (16*32+25)
348 #define X86_FEATURE_MOVDIRI (16*32+27)
349 #define X86_FEATURE_MOVDIR64B (16*32+28)
350
351
352 #define X86_FEATURE_OVERFLOW_RECOV (17*32+ 0)
353 #define X86_FEATURE_SUCCOR (17*32+ 1)
354 #define X86_FEATURE_SMCA (17*32+ 3)
355
356
357 #define X86_FEATURE_AVX512_4VNNIW (18*32+ 2)
358 #define X86_FEATURE_AVX512_4FMAPS (18*32+ 3)
359 #define X86_FEATURE_AVX512_VP2INTERSECT (18*32+ 8)
360 #define X86_FEATURE_MD_CLEAR (18*32+10)
361 #define X86_FEATURE_TSX_FORCE_ABORT (18*32+13)
362 #define X86_FEATURE_PCONFIG (18*32+18)
363 #define X86_FEATURE_SPEC_CTRL (18*32+26)
364 #define X86_FEATURE_INTEL_STIBP (18*32+27)
365 #define X86_FEATURE_FLUSH_L1D (18*32+28)
366 #define X86_FEATURE_ARCH_CAPABILITIES (18*32+29)
367 #define X86_FEATURE_SPEC_CTRL_SSBD (18*32+31)
368
369
370
371
372 #define X86_BUG(x) (NCAPINTS*32 + (x))
373
374 #define X86_BUG_F00F X86_BUG(0)
375 #define X86_BUG_FDIV X86_BUG(1)
376 #define X86_BUG_COMA X86_BUG(2)
377 #define X86_BUG_AMD_TLB_MMATCH X86_BUG(3)
378 #define X86_BUG_AMD_APIC_C1E X86_BUG(4)
379 #define X86_BUG_11AP X86_BUG(5)
380 #define X86_BUG_FXSAVE_LEAK X86_BUG(6)
381 #define X86_BUG_CLFLUSH_MONITOR X86_BUG(7)
382 #define X86_BUG_SYSRET_SS_ATTRS X86_BUG(8)
383 #ifdef CONFIG_X86_32
384
385
386
387
388 #define X86_BUG_ESPFIX X86_BUG(9)
389 #endif
390 #define X86_BUG_NULL_SEG X86_BUG(10)
391 #define X86_BUG_SWAPGS_FENCE X86_BUG(11)
392 #define X86_BUG_MONITOR X86_BUG(12)
393 #define X86_BUG_AMD_E400 X86_BUG(13)
394 #define X86_BUG_CPU_MELTDOWN X86_BUG(14)
395 #define X86_BUG_SPECTRE_V1 X86_BUG(15)
396 #define X86_BUG_SPECTRE_V2 X86_BUG(16)
397 #define X86_BUG_SPEC_STORE_BYPASS X86_BUG(17)
398 #define X86_BUG_L1TF X86_BUG(18)
399 #define X86_BUG_MDS X86_BUG(19)
400 #define X86_BUG_MSBDS_ONLY X86_BUG(20)
401 #define X86_BUG_SWAPGS X86_BUG(21)
402
403 #endif