18c2ecf20Sopenharmony_ci#ifndef _ASM_X86_DISABLED_FEATURES_H 28c2ecf20Sopenharmony_ci#define _ASM_X86_DISABLED_FEATURES_H 38c2ecf20Sopenharmony_ci 48c2ecf20Sopenharmony_ci/* These features, although they might be available in a CPU 58c2ecf20Sopenharmony_ci * will not be used because the compile options to support 68c2ecf20Sopenharmony_ci * them are not present. 78c2ecf20Sopenharmony_ci * 88c2ecf20Sopenharmony_ci * This code allows them to be checked and disabled at 98c2ecf20Sopenharmony_ci * compile time without an explicit #ifdef. Use 108c2ecf20Sopenharmony_ci * cpu_feature_enabled(). 118c2ecf20Sopenharmony_ci */ 128c2ecf20Sopenharmony_ci 138c2ecf20Sopenharmony_ci#ifdef CONFIG_X86_SMAP 148c2ecf20Sopenharmony_ci# define DISABLE_SMAP 0 158c2ecf20Sopenharmony_ci#else 168c2ecf20Sopenharmony_ci# define DISABLE_SMAP (1<<(X86_FEATURE_SMAP & 31)) 178c2ecf20Sopenharmony_ci#endif 188c2ecf20Sopenharmony_ci 198c2ecf20Sopenharmony_ci#ifdef CONFIG_X86_UMIP 208c2ecf20Sopenharmony_ci# define DISABLE_UMIP 0 218c2ecf20Sopenharmony_ci#else 228c2ecf20Sopenharmony_ci# define DISABLE_UMIP (1<<(X86_FEATURE_UMIP & 31)) 238c2ecf20Sopenharmony_ci#endif 248c2ecf20Sopenharmony_ci 258c2ecf20Sopenharmony_ci#ifdef CONFIG_X86_64 268c2ecf20Sopenharmony_ci# define DISABLE_VME (1<<(X86_FEATURE_VME & 31)) 278c2ecf20Sopenharmony_ci# define DISABLE_K6_MTRR (1<<(X86_FEATURE_K6_MTRR & 31)) 288c2ecf20Sopenharmony_ci# define DISABLE_CYRIX_ARR (1<<(X86_FEATURE_CYRIX_ARR & 31)) 298c2ecf20Sopenharmony_ci# define DISABLE_CENTAUR_MCR (1<<(X86_FEATURE_CENTAUR_MCR & 31)) 308c2ecf20Sopenharmony_ci# define DISABLE_PCID 0 318c2ecf20Sopenharmony_ci#else 328c2ecf20Sopenharmony_ci# define DISABLE_VME 0 338c2ecf20Sopenharmony_ci# define DISABLE_K6_MTRR 0 348c2ecf20Sopenharmony_ci# define DISABLE_CYRIX_ARR 0 358c2ecf20Sopenharmony_ci# define DISABLE_CENTAUR_MCR 0 368c2ecf20Sopenharmony_ci# define DISABLE_PCID (1<<(X86_FEATURE_PCID & 31)) 378c2ecf20Sopenharmony_ci#endif /* CONFIG_X86_64 */ 388c2ecf20Sopenharmony_ci 398c2ecf20Sopenharmony_ci#ifdef CONFIG_X86_INTEL_MEMORY_PROTECTION_KEYS 408c2ecf20Sopenharmony_ci# define DISABLE_PKU 0 418c2ecf20Sopenharmony_ci# define DISABLE_OSPKE 0 428c2ecf20Sopenharmony_ci#else 438c2ecf20Sopenharmony_ci# define DISABLE_PKU (1<<(X86_FEATURE_PKU & 31)) 448c2ecf20Sopenharmony_ci# define DISABLE_OSPKE (1<<(X86_FEATURE_OSPKE & 31)) 458c2ecf20Sopenharmony_ci#endif /* CONFIG_X86_INTEL_MEMORY_PROTECTION_KEYS */ 468c2ecf20Sopenharmony_ci 478c2ecf20Sopenharmony_ci#ifdef CONFIG_X86_5LEVEL 488c2ecf20Sopenharmony_ci# define DISABLE_LA57 0 498c2ecf20Sopenharmony_ci#else 508c2ecf20Sopenharmony_ci# define DISABLE_LA57 (1<<(X86_FEATURE_LA57 & 31)) 518c2ecf20Sopenharmony_ci#endif 528c2ecf20Sopenharmony_ci 538c2ecf20Sopenharmony_ci#ifdef CONFIG_PAGE_TABLE_ISOLATION 548c2ecf20Sopenharmony_ci# define DISABLE_PTI 0 558c2ecf20Sopenharmony_ci#else 568c2ecf20Sopenharmony_ci# define DISABLE_PTI (1 << (X86_FEATURE_PTI & 31)) 578c2ecf20Sopenharmony_ci#endif 588c2ecf20Sopenharmony_ci 598c2ecf20Sopenharmony_ci#ifdef CONFIG_RETPOLINE 608c2ecf20Sopenharmony_ci# define DISABLE_RETPOLINE 0 618c2ecf20Sopenharmony_ci#else 628c2ecf20Sopenharmony_ci# define DISABLE_RETPOLINE ((1 << (X86_FEATURE_RETPOLINE & 31)) | \ 638c2ecf20Sopenharmony_ci (1 << (X86_FEATURE_RETPOLINE_LFENCE & 31))) 648c2ecf20Sopenharmony_ci#endif 658c2ecf20Sopenharmony_ci 668c2ecf20Sopenharmony_ci#ifdef CONFIG_RETHUNK 678c2ecf20Sopenharmony_ci# define DISABLE_RETHUNK 0 688c2ecf20Sopenharmony_ci#else 698c2ecf20Sopenharmony_ci# define DISABLE_RETHUNK (1 << (X86_FEATURE_RETHUNK & 31)) 708c2ecf20Sopenharmony_ci#endif 718c2ecf20Sopenharmony_ci 728c2ecf20Sopenharmony_ci#ifdef CONFIG_CPU_UNRET_ENTRY 738c2ecf20Sopenharmony_ci# define DISABLE_UNRET 0 748c2ecf20Sopenharmony_ci#else 758c2ecf20Sopenharmony_ci# define DISABLE_UNRET (1 << (X86_FEATURE_UNRET & 31)) 768c2ecf20Sopenharmony_ci#endif 778c2ecf20Sopenharmony_ci 788c2ecf20Sopenharmony_ci#ifdef CONFIG_IOMMU_SUPPORT 798c2ecf20Sopenharmony_ci# define DISABLE_ENQCMD 0 808c2ecf20Sopenharmony_ci#else 818c2ecf20Sopenharmony_ci# define DISABLE_ENQCMD (1 << (X86_FEATURE_ENQCMD & 31)) 828c2ecf20Sopenharmony_ci#endif 838c2ecf20Sopenharmony_ci 848c2ecf20Sopenharmony_ci/* 858c2ecf20Sopenharmony_ci * Make sure to add features to the correct mask 868c2ecf20Sopenharmony_ci */ 878c2ecf20Sopenharmony_ci#define DISABLED_MASK0 (DISABLE_VME) 888c2ecf20Sopenharmony_ci#define DISABLED_MASK1 0 898c2ecf20Sopenharmony_ci#define DISABLED_MASK2 0 908c2ecf20Sopenharmony_ci#define DISABLED_MASK3 (DISABLE_CYRIX_ARR|DISABLE_CENTAUR_MCR|DISABLE_K6_MTRR) 918c2ecf20Sopenharmony_ci#define DISABLED_MASK4 (DISABLE_PCID) 928c2ecf20Sopenharmony_ci#define DISABLED_MASK5 0 938c2ecf20Sopenharmony_ci#define DISABLED_MASK6 0 948c2ecf20Sopenharmony_ci#define DISABLED_MASK7 (DISABLE_PTI) 958c2ecf20Sopenharmony_ci#define DISABLED_MASK8 0 968c2ecf20Sopenharmony_ci#define DISABLED_MASK9 (DISABLE_SMAP) 978c2ecf20Sopenharmony_ci#define DISABLED_MASK10 0 988c2ecf20Sopenharmony_ci#define DISABLED_MASK11 (DISABLE_RETPOLINE|DISABLE_RETHUNK|DISABLE_UNRET) 998c2ecf20Sopenharmony_ci#define DISABLED_MASK12 0 1008c2ecf20Sopenharmony_ci#define DISABLED_MASK13 0 1018c2ecf20Sopenharmony_ci#define DISABLED_MASK14 0 1028c2ecf20Sopenharmony_ci#define DISABLED_MASK15 0 1038c2ecf20Sopenharmony_ci#define DISABLED_MASK16 (DISABLE_PKU|DISABLE_OSPKE|DISABLE_LA57|DISABLE_UMIP| \ 1048c2ecf20Sopenharmony_ci DISABLE_ENQCMD) 1058c2ecf20Sopenharmony_ci#define DISABLED_MASK17 0 1068c2ecf20Sopenharmony_ci#define DISABLED_MASK18 0 1078c2ecf20Sopenharmony_ci#define DISABLED_MASK19 0 1088c2ecf20Sopenharmony_ci#define DISABLED_MASK_CHECK BUILD_BUG_ON_ZERO(NCAPINTS != 20) 1098c2ecf20Sopenharmony_ci 1108c2ecf20Sopenharmony_ci#endif /* _ASM_X86_DISABLED_FEATURES_H */ 111