xref: /linux/tools/arch/x86/include/asm/disabled-features.h (revision f098addbdb44c8a565367f5162f3ab170ed9404a)
17d7d1bf1SArnaldo Carvalho de Melo #ifndef _ASM_X86_DISABLED_FEATURES_H
27d7d1bf1SArnaldo Carvalho de Melo #define _ASM_X86_DISABLED_FEATURES_H
37d7d1bf1SArnaldo Carvalho de Melo 
47d7d1bf1SArnaldo Carvalho de Melo /* These features, although they might be available in a CPU
57d7d1bf1SArnaldo Carvalho de Melo  * will not be used because the compile options to support
67d7d1bf1SArnaldo Carvalho de Melo  * them are not present.
77d7d1bf1SArnaldo Carvalho de Melo  *
87d7d1bf1SArnaldo Carvalho de Melo  * This code allows them to be checked and disabled at
97d7d1bf1SArnaldo Carvalho de Melo  * compile time without an explicit #ifdef.  Use
107d7d1bf1SArnaldo Carvalho de Melo  * cpu_feature_enabled().
117d7d1bf1SArnaldo Carvalho de Melo  */
127d7d1bf1SArnaldo Carvalho de Melo 
13b971880fSBabu Moger #ifdef CONFIG_X86_UMIP
140b44cfb8SIngo Molnar # define DISABLE_UMIP	0
150b44cfb8SIngo Molnar #else
160b44cfb8SIngo Molnar # define DISABLE_UMIP	(1<<(X86_FEATURE_UMIP & 31))
170b44cfb8SIngo Molnar #endif
180b44cfb8SIngo Molnar 
197d7d1bf1SArnaldo Carvalho de Melo #ifdef CONFIG_X86_64
207d7d1bf1SArnaldo Carvalho de Melo # define DISABLE_VME		(1<<(X86_FEATURE_VME & 31))
217d7d1bf1SArnaldo Carvalho de Melo # define DISABLE_K6_MTRR	(1<<(X86_FEATURE_K6_MTRR & 31))
227d7d1bf1SArnaldo Carvalho de Melo # define DISABLE_CYRIX_ARR	(1<<(X86_FEATURE_CYRIX_ARR & 31))
237d7d1bf1SArnaldo Carvalho de Melo # define DISABLE_CENTAUR_MCR	(1<<(X86_FEATURE_CENTAUR_MCR & 31))
24549a3976SIngo Molnar # define DISABLE_PCID		0
257d7d1bf1SArnaldo Carvalho de Melo #else
267d7d1bf1SArnaldo Carvalho de Melo # define DISABLE_VME		0
277d7d1bf1SArnaldo Carvalho de Melo # define DISABLE_K6_MTRR	0
287d7d1bf1SArnaldo Carvalho de Melo # define DISABLE_CYRIX_ARR	0
297d7d1bf1SArnaldo Carvalho de Melo # define DISABLE_CENTAUR_MCR	0
30549a3976SIngo Molnar # define DISABLE_PCID		(1<<(X86_FEATURE_PCID & 31))
317d7d1bf1SArnaldo Carvalho de Melo #endif /* CONFIG_X86_64 */
327d7d1bf1SArnaldo Carvalho de Melo 
337d7d1bf1SArnaldo Carvalho de Melo #ifdef CONFIG_X86_INTEL_MEMORY_PROTECTION_KEYS
347d7d1bf1SArnaldo Carvalho de Melo # define DISABLE_PKU		0
357d7d1bf1SArnaldo Carvalho de Melo # define DISABLE_OSPKE		0
367d7d1bf1SArnaldo Carvalho de Melo #else
377d7d1bf1SArnaldo Carvalho de Melo # define DISABLE_PKU		(1<<(X86_FEATURE_PKU & 31))
387d7d1bf1SArnaldo Carvalho de Melo # define DISABLE_OSPKE		(1<<(X86_FEATURE_OSPKE & 31))
397d7d1bf1SArnaldo Carvalho de Melo #endif /* CONFIG_X86_INTEL_MEMORY_PROTECTION_KEYS */
407d7d1bf1SArnaldo Carvalho de Melo 
416e30437bSIngo Molnar #ifdef CONFIG_X86_5LEVEL
426e30437bSIngo Molnar # define DISABLE_LA57	0
436e30437bSIngo Molnar #else
446e30437bSIngo Molnar # define DISABLE_LA57	(1<<(X86_FEATURE_LA57 & 31))
456e30437bSIngo Molnar #endif
466e30437bSIngo Molnar 
475d64db29SArnaldo Carvalho de Melo #ifdef CONFIG_PAGE_TABLE_ISOLATION
485d64db29SArnaldo Carvalho de Melo # define DISABLE_PTI		0
495d64db29SArnaldo Carvalho de Melo #else
505d64db29SArnaldo Carvalho de Melo # define DISABLE_PTI		(1 << (X86_FEATURE_PTI & 31))
515d64db29SArnaldo Carvalho de Melo #endif
525d64db29SArnaldo Carvalho de Melo 
53*f098addbSArnaldo Carvalho de Melo #ifdef CONFIG_RETPOLINE
54*f098addbSArnaldo Carvalho de Melo # define DISABLE_RETPOLINE	0
55*f098addbSArnaldo Carvalho de Melo #else
56*f098addbSArnaldo Carvalho de Melo # define DISABLE_RETPOLINE	((1 << (X86_FEATURE_RETPOLINE & 31)) | \
57*f098addbSArnaldo Carvalho de Melo 				 (1 << (X86_FEATURE_RETPOLINE_LFENCE & 31)))
58*f098addbSArnaldo Carvalho de Melo #endif
59*f098addbSArnaldo Carvalho de Melo 
60*f098addbSArnaldo Carvalho de Melo #ifdef CONFIG_RETHUNK
61*f098addbSArnaldo Carvalho de Melo # define DISABLE_RETHUNK	0
62*f098addbSArnaldo Carvalho de Melo #else
63*f098addbSArnaldo Carvalho de Melo # define DISABLE_RETHUNK	(1 << (X86_FEATURE_RETHUNK & 31))
64*f098addbSArnaldo Carvalho de Melo #endif
65*f098addbSArnaldo Carvalho de Melo 
66*f098addbSArnaldo Carvalho de Melo #ifdef CONFIG_CPU_UNRET_ENTRY
67*f098addbSArnaldo Carvalho de Melo # define DISABLE_UNRET		0
68*f098addbSArnaldo Carvalho de Melo #else
69*f098addbSArnaldo Carvalho de Melo # define DISABLE_UNRET		(1 << (X86_FEATURE_UNRET & 31))
70*f098addbSArnaldo Carvalho de Melo #endif
71*f098addbSArnaldo Carvalho de Melo 
721efe4cbdSArnaldo Carvalho de Melo #ifdef CONFIG_INTEL_IOMMU_SVM
731efe4cbdSArnaldo Carvalho de Melo # define DISABLE_ENQCMD		0
741efe4cbdSArnaldo Carvalho de Melo #else
7540a6bbf5SArnaldo Carvalho de Melo # define DISABLE_ENQCMD		(1 << (X86_FEATURE_ENQCMD & 31))
761efe4cbdSArnaldo Carvalho de Melo #endif
7740a6bbf5SArnaldo Carvalho de Melo 
78f93c789aSArnaldo Carvalho de Melo #ifdef CONFIG_X86_SGX
79f93c789aSArnaldo Carvalho de Melo # define DISABLE_SGX	0
80f93c789aSArnaldo Carvalho de Melo #else
81f93c789aSArnaldo Carvalho de Melo # define DISABLE_SGX	(1 << (X86_FEATURE_SGX & 31))
82f93c789aSArnaldo Carvalho de Melo #endif
83f93c789aSArnaldo Carvalho de Melo 
844b3f7644SArnaldo Carvalho de Melo #ifdef CONFIG_INTEL_TDX_GUEST
854b3f7644SArnaldo Carvalho de Melo # define DISABLE_TDX_GUEST	0
864b3f7644SArnaldo Carvalho de Melo #else
874b3f7644SArnaldo Carvalho de Melo # define DISABLE_TDX_GUEST	(1 << (X86_FEATURE_TDX_GUEST & 31))
884b3f7644SArnaldo Carvalho de Melo #endif
894b3f7644SArnaldo Carvalho de Melo 
907d7d1bf1SArnaldo Carvalho de Melo /*
917d7d1bf1SArnaldo Carvalho de Melo  * Make sure to add features to the correct mask
927d7d1bf1SArnaldo Carvalho de Melo  */
937d7d1bf1SArnaldo Carvalho de Melo #define DISABLED_MASK0	(DISABLE_VME)
947d7d1bf1SArnaldo Carvalho de Melo #define DISABLED_MASK1	0
957d7d1bf1SArnaldo Carvalho de Melo #define DISABLED_MASK2	0
967d7d1bf1SArnaldo Carvalho de Melo #define DISABLED_MASK3	(DISABLE_CYRIX_ARR|DISABLE_CENTAUR_MCR|DISABLE_K6_MTRR)
97549a3976SIngo Molnar #define DISABLED_MASK4	(DISABLE_PCID)
987d7d1bf1SArnaldo Carvalho de Melo #define DISABLED_MASK5	0
997d7d1bf1SArnaldo Carvalho de Melo #define DISABLED_MASK6	0
1005d64db29SArnaldo Carvalho de Melo #define DISABLED_MASK7	(DISABLE_PTI)
1014b3f7644SArnaldo Carvalho de Melo #define DISABLED_MASK8	(DISABLE_TDX_GUEST)
102dbae0a93SBorislav Petkov #define DISABLED_MASK9	(DISABLE_SGX)
1037d7d1bf1SArnaldo Carvalho de Melo #define DISABLED_MASK10	0
104*f098addbSArnaldo Carvalho de Melo #define DISABLED_MASK11	(DISABLE_RETPOLINE|DISABLE_RETHUNK|DISABLE_UNRET)
1057d7d1bf1SArnaldo Carvalho de Melo #define DISABLED_MASK12	0
1067d7d1bf1SArnaldo Carvalho de Melo #define DISABLED_MASK13	0
1077d7d1bf1SArnaldo Carvalho de Melo #define DISABLED_MASK14	0
1087d7d1bf1SArnaldo Carvalho de Melo #define DISABLED_MASK15	0
10940a6bbf5SArnaldo Carvalho de Melo #define DISABLED_MASK16	(DISABLE_PKU|DISABLE_OSPKE|DISABLE_LA57|DISABLE_UMIP| \
11040a6bbf5SArnaldo Carvalho de Melo 			 DISABLE_ENQCMD)
111840b49baSArnaldo Carvalho de Melo #define DISABLED_MASK17	0
1124053717aSArnaldo Carvalho de Melo #define DISABLED_MASK18	0
113fb35d30fSSean Christopherson #define DISABLED_MASK19	0
114fb35d30fSSean Christopherson #define DISABLED_MASK_CHECK BUILD_BUG_ON_ZERO(NCAPINTS != 20)
1157d7d1bf1SArnaldo Carvalho de Melo 
1167d7d1bf1SArnaldo Carvalho de Melo #endif /* _ASM_X86_DISABLED_FEATURES_H */
117