diff options
Diffstat (limited to 'arch')
-rw-r--r-- | arch/x86/kernel/cpu/common.c | 6 | ||||
-rw-r--r-- | arch/x86/kernel/setup_64.c | 6 |
2 files changed, 12 insertions, 0 deletions
diff --git a/arch/x86/kernel/cpu/common.c b/arch/x86/kernel/cpu/common.c index 4bd326d0322c..f0f29ddf33a2 100644 --- a/arch/x86/kernel/cpu/common.c +++ b/arch/x86/kernel/cpu/common.c | |||
@@ -57,6 +57,8 @@ DEFINE_PER_CPU(struct gdt_page, gdt_page) = { .gdt = { | |||
57 | } }; | 57 | } }; |
58 | EXPORT_PER_CPU_SYMBOL_GPL(gdt_page); | 58 | EXPORT_PER_CPU_SYMBOL_GPL(gdt_page); |
59 | 59 | ||
60 | __u32 cleared_cpu_caps[NCAPINTS] __cpuinitdata; | ||
61 | |||
60 | static int cachesize_override __cpuinitdata = -1; | 62 | static int cachesize_override __cpuinitdata = -1; |
61 | static int disable_x86_fxsr __cpuinitdata; | 63 | static int disable_x86_fxsr __cpuinitdata; |
62 | static int disable_x86_serial_nr __cpuinitdata = 1; | 64 | static int disable_x86_serial_nr __cpuinitdata = 1; |
@@ -497,6 +499,10 @@ void __cpuinit identify_cpu(struct cpuinfo_x86 *c) | |||
497 | boot_cpu_data.x86_capability[i] &= c->x86_capability[i]; | 499 | boot_cpu_data.x86_capability[i] &= c->x86_capability[i]; |
498 | } | 500 | } |
499 | 501 | ||
502 | /* Clear all flags overriden by options */ | ||
503 | for (i = 0; i < NCAPINTS; i++) | ||
504 | c->x86_capability[i] ^= cleared_cpu_caps[i]; | ||
505 | |||
500 | /* Init Machine Check Exception if available. */ | 506 | /* Init Machine Check Exception if available. */ |
501 | mcheck_init(c); | 507 | mcheck_init(c); |
502 | 508 | ||
diff --git a/arch/x86/kernel/setup_64.c b/arch/x86/kernel/setup_64.c index 7edb43f0b279..df159520bbd2 100644 --- a/arch/x86/kernel/setup_64.c +++ b/arch/x86/kernel/setup_64.c | |||
@@ -80,6 +80,8 @@ | |||
80 | struct cpuinfo_x86 boot_cpu_data __read_mostly; | 80 | struct cpuinfo_x86 boot_cpu_data __read_mostly; |
81 | EXPORT_SYMBOL(boot_cpu_data); | 81 | EXPORT_SYMBOL(boot_cpu_data); |
82 | 82 | ||
83 | __u32 cleared_cpu_caps[NCAPINTS] __cpuinitdata; | ||
84 | |||
83 | unsigned long mmu_cr4_features; | 85 | unsigned long mmu_cr4_features; |
84 | 86 | ||
85 | /* Boot loader ID as an integer, for the benefit of proc_dointvec */ | 87 | /* Boot loader ID as an integer, for the benefit of proc_dointvec */ |
@@ -1013,6 +1015,10 @@ void __cpuinit identify_cpu(struct cpuinfo_x86 *c) | |||
1013 | boot_cpu_data.x86_capability[i] &= c->x86_capability[i]; | 1015 | boot_cpu_data.x86_capability[i] &= c->x86_capability[i]; |
1014 | } | 1016 | } |
1015 | 1017 | ||
1018 | /* Clear all flags overriden by options */ | ||
1019 | for (i = 0; i < NCAPINTS; i++) | ||
1020 | c->x86_capability[i] ^= cleared_cpu_caps[i]; | ||
1021 | |||
1016 | #ifdef CONFIG_X86_MCE | 1022 | #ifdef CONFIG_X86_MCE |
1017 | mcheck_init(c); | 1023 | mcheck_init(c); |
1018 | #endif | 1024 | #endif |