^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1) #ifndef _ASM_X86_DISABLED_FEATURES_H
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2) #define _ASM_X86_DISABLED_FEATURES_H
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4) /* These features, although they might be available in a CPU
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5) * will not be used because the compile options to support
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 6) * them are not present.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 7) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 8) * This code allows them to be checked and disabled at
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 9) * compile time without an explicit #ifdef. Use
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10) * cpu_feature_enabled().
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13) #ifdef CONFIG_X86_SMAP
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14) # define DISABLE_SMAP 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15) #else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16) # define DISABLE_SMAP (1<<(X86_FEATURE_SMAP & 31))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19) #ifdef CONFIG_X86_UMIP
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20) # define DISABLE_UMIP 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21) #else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22) # define DISABLE_UMIP (1<<(X86_FEATURE_UMIP & 31))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) #ifdef CONFIG_X86_64
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26) # define DISABLE_VME (1<<(X86_FEATURE_VME & 31))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27) # define DISABLE_K6_MTRR (1<<(X86_FEATURE_K6_MTRR & 31))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28) # define DISABLE_CYRIX_ARR (1<<(X86_FEATURE_CYRIX_ARR & 31))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29) # define DISABLE_CENTAUR_MCR (1<<(X86_FEATURE_CENTAUR_MCR & 31))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30) # define DISABLE_PCID 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31) #else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32) # define DISABLE_VME 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33) # define DISABLE_K6_MTRR 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34) # define DISABLE_CYRIX_ARR 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35) # define DISABLE_CENTAUR_MCR 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36) # define DISABLE_PCID (1<<(X86_FEATURE_PCID & 31))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37) #endif /* CONFIG_X86_64 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 38)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 39) #ifdef CONFIG_X86_INTEL_MEMORY_PROTECTION_KEYS
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 40) # define DISABLE_PKU 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 41) # define DISABLE_OSPKE 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 42) #else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 43) # define DISABLE_PKU (1<<(X86_FEATURE_PKU & 31))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 44) # define DISABLE_OSPKE (1<<(X86_FEATURE_OSPKE & 31))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 45) #endif /* CONFIG_X86_INTEL_MEMORY_PROTECTION_KEYS */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 46)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 47) #ifdef CONFIG_X86_5LEVEL
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 48) # define DISABLE_LA57 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 49) #else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 50) # define DISABLE_LA57 (1<<(X86_FEATURE_LA57 & 31))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 51) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 52)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 53) #ifdef CONFIG_PAGE_TABLE_ISOLATION
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 54) # define DISABLE_PTI 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 55) #else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 56) # define DISABLE_PTI (1 << (X86_FEATURE_PTI & 31))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 57) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 58)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 59) /* Force disable because it's broken beyond repair */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 60) #define DISABLE_ENQCMD (1 << (X86_FEATURE_ENQCMD & 31))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 61)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 62) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 63) * Make sure to add features to the correct mask
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 64) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 65) #define DISABLED_MASK0 (DISABLE_VME)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 66) #define DISABLED_MASK1 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 67) #define DISABLED_MASK2 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 68) #define DISABLED_MASK3 (DISABLE_CYRIX_ARR|DISABLE_CENTAUR_MCR|DISABLE_K6_MTRR)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 69) #define DISABLED_MASK4 (DISABLE_PCID)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 70) #define DISABLED_MASK5 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 71) #define DISABLED_MASK6 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 72) #define DISABLED_MASK7 (DISABLE_PTI)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 73) #define DISABLED_MASK8 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 74) #define DISABLED_MASK9 (DISABLE_SMAP)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 75) #define DISABLED_MASK10 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 76) #define DISABLED_MASK11 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 77) #define DISABLED_MASK12 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 78) #define DISABLED_MASK13 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 79) #define DISABLED_MASK14 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 80) #define DISABLED_MASK15 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 81) #define DISABLED_MASK16 (DISABLE_PKU|DISABLE_OSPKE|DISABLE_LA57|DISABLE_UMIP| \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 82) DISABLE_ENQCMD)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 83) #define DISABLED_MASK17 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 84) #define DISABLED_MASK18 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 85) #define DISABLED_MASK_CHECK BUILD_BUG_ON_ZERO(NCAPINTS != 19)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 86)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 87) #endif /* _ASM_X86_DISABLED_FEATURES_H */