diff options
author | Dave Hansen <dave.hansen@linux.intel.com> | 2014-09-11 17:15:24 -0400 |
---|---|---|
committer | H. Peter Anvin <hpa@linux.intel.com> | 2014-09-11 17:30:17 -0400 |
commit | 9298b815efe500b272e4084ed05eeae7a92b5340 (patch) | |
tree | 7ea33c7d7576125749453b793ccb2143140d14a8 /arch/x86/include | |
parent | 381aa07a9b4e1f82969203e9e4863da2a157781d (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.h | 20 | ||||
-rw-r--r-- | arch/x86/include/asm/disabled-features.h | 16 |
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 |
400 | extern void warn_pre_alternatives(void); | 380 | extern void warn_pre_alternatives(void); |
401 | extern bool __static_cpu_has_safe(u16 bit); | 381 | extern 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 |