aboutsummaryrefslogtreecommitdiffstats
path: root/arch/x86/include
diff options
context:
space:
mode:
authorDave Hansen <dave.hansen@linux.intel.com>2014-09-11 17:15:24 -0400
committerH. Peter Anvin <hpa@linux.intel.com>2014-09-11 17:30:17 -0400
commit9298b815efe500b272e4084ed05eeae7a92b5340 (patch)
tree7ea33c7d7576125749453b793ccb2143140d14a8 /arch/x86/include
parent381aa07a9b4e1f82969203e9e4863da2a157781d (diff)
x86: Add more disabled features
The original motivation for these patches was for an Intel CPU feature called MPX. The patch to add a disabled feature for it will go in with the other parts of the support. But, in the meantime, there are a few other features than MPX that we can make assumptions about at compile-time based on compile options. Add them to disabled-features.h and check them with cpu_feature_enabled(). Note that this gets rid of the last things that needed an #ifdef CONFIG_X86_64 in cpufeature.h. Yay! Signed-off-by: Dave Hansen <dave.hansen@linux.intel.com> Link: http://lkml.kernel.org/r/20140911211524.C0EC332A@viggo.jf.intel.com Acked-by: Borislav Petkov <bp@suse.de> Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
Diffstat (limited to 'arch/x86/include')
-rw-r--r--arch/x86/include/asm/cpufeature.h20
-rw-r--r--arch/x86/include/asm/disabled-features.h16
2 files changed, 14 insertions, 22 deletions
diff --git a/arch/x86/include/asm/cpufeature.h b/arch/x86/include/asm/cpufeature.h
index 1492041b8a68..42db503b61fb 100644
--- a/arch/x86/include/asm/cpufeature.h
+++ b/arch/x86/include/asm/cpufeature.h
@@ -324,7 +324,6 @@ extern const char * const x86_bug_flags[NBUGINTS*32];
324} while (0) 324} while (0)
325 325
326#define cpu_has_fpu boot_cpu_has(X86_FEATURE_FPU) 326#define cpu_has_fpu boot_cpu_has(X86_FEATURE_FPU)
327#define cpu_has_vme boot_cpu_has(X86_FEATURE_VME)
328#define cpu_has_de boot_cpu_has(X86_FEATURE_DE) 327#define cpu_has_de boot_cpu_has(X86_FEATURE_DE)
329#define cpu_has_pse boot_cpu_has(X86_FEATURE_PSE) 328#define cpu_has_pse boot_cpu_has(X86_FEATURE_PSE)
330#define cpu_has_tsc boot_cpu_has(X86_FEATURE_TSC) 329#define cpu_has_tsc boot_cpu_has(X86_FEATURE_TSC)
@@ -343,9 +342,6 @@ extern const char * const x86_bug_flags[NBUGINTS*32];
343#define cpu_has_avx2 boot_cpu_has(X86_FEATURE_AVX2) 342#define cpu_has_avx2 boot_cpu_has(X86_FEATURE_AVX2)
344#define cpu_has_ht boot_cpu_has(X86_FEATURE_HT) 343#define cpu_has_ht boot_cpu_has(X86_FEATURE_HT)
345#define cpu_has_nx boot_cpu_has(X86_FEATURE_NX) 344#define cpu_has_nx boot_cpu_has(X86_FEATURE_NX)
346#define cpu_has_k6_mtrr boot_cpu_has(X86_FEATURE_K6_MTRR)
347#define cpu_has_cyrix_arr boot_cpu_has(X86_FEATURE_CYRIX_ARR)
348#define cpu_has_centaur_mcr boot_cpu_has(X86_FEATURE_CENTAUR_MCR)
349#define cpu_has_xstore boot_cpu_has(X86_FEATURE_XSTORE) 345#define cpu_has_xstore boot_cpu_has(X86_FEATURE_XSTORE)
350#define cpu_has_xstore_enabled boot_cpu_has(X86_FEATURE_XSTORE_EN) 346#define cpu_has_xstore_enabled boot_cpu_has(X86_FEATURE_XSTORE_EN)
351#define cpu_has_xcrypt boot_cpu_has(X86_FEATURE_XCRYPT) 347#define cpu_has_xcrypt boot_cpu_has(X86_FEATURE_XCRYPT)
@@ -380,22 +376,6 @@ extern const char * const x86_bug_flags[NBUGINTS*32];
380#define cpu_has_eager_fpu boot_cpu_has(X86_FEATURE_EAGER_FPU) 376#define cpu_has_eager_fpu boot_cpu_has(X86_FEATURE_EAGER_FPU)
381#define cpu_has_topoext boot_cpu_has(X86_FEATURE_TOPOEXT) 377#define cpu_has_topoext boot_cpu_has(X86_FEATURE_TOPOEXT)
382 378
383#ifdef CONFIG_X86_64
384
385#undef cpu_has_vme
386#define cpu_has_vme 0
387
388#undef cpu_has_k6_mtrr
389#define cpu_has_k6_mtrr 0
390
391#undef cpu_has_cyrix_arr
392#define cpu_has_cyrix_arr 0
393
394#undef cpu_has_centaur_mcr
395#define cpu_has_centaur_mcr 0
396
397#endif /* CONFIG_X86_64 */
398
399#if __GNUC__ >= 4 379#if __GNUC__ >= 4
400extern void warn_pre_alternatives(void); 380extern void warn_pre_alternatives(void);
401extern bool __static_cpu_has_safe(u16 bit); 381extern bool __static_cpu_has_safe(u16 bit);
diff --git a/arch/x86/include/asm/disabled-features.h b/arch/x86/include/asm/disabled-features.h
index 1a9955dbf0a0..97534a7d38e3 100644
--- a/arch/x86/include/asm/disabled-features.h
+++ b/arch/x86/include/asm/disabled-features.h
@@ -10,13 +10,25 @@
10 * cpu_feature_enabled(). 10 * cpu_feature_enabled().
11 */ 11 */
12 12
13#ifdef CONFIG_X86_64
14# define DISABLE_VME (1<<(X86_FEATURE_VME & 31))
15# define DISABLE_K6_MTRR (1<<(X86_FEATURE_K6_MTRR & 31))
16# define DISABLE_CYRIX_ARR (1<<(X86_FEATURE_CYRIX_ARR & 31))
17# define DISABLE_CENTAUR_MCR (1<<(X86_FEATURE_CENTAUR_MCR & 31))
18#else
19# define DISABLE_VME 0
20# define DISABLE_K6_MTRR 0
21# define DISABLE_CYRIX_ARR 0
22# define DISABLE_CENTAUR_MCR 0
23#endif /* CONFIG_X86_64 */
24
13/* 25/*
14 * Make sure to add features to the correct mask 26 * Make sure to add features to the correct mask
15 */ 27 */
16#define DISABLED_MASK0 0 28#define DISABLED_MASK0 (DISABLE_VME)
17#define DISABLED_MASK1 0 29#define DISABLED_MASK1 0
18#define DISABLED_MASK2 0 30#define DISABLED_MASK2 0
19#define DISABLED_MASK3 0 31#define DISABLED_MASK3 (DISABLE_CYRIX_ARR|DISABLE_CENTAUR_MCR|DISABLE_K6_MTRR)
20#define DISABLED_MASK4 0 32#define DISABLED_MASK4 0
21#define DISABLED_MASK5 0 33#define DISABLED_MASK5 0
22#define DISABLED_MASK6 0 34#define DISABLED_MASK6 0