diff options
author | Ingo Molnar <mingo@elte.hu> | 2009-06-01 16:29:35 -0400 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2009-06-01 16:30:01 -0400 |
commit | ee4c24a5c9b530481394132c8dbc10572d57c075 (patch) | |
tree | 91c580724b9de9f2ae09bb375fc33f4df24b55c0 /arch/x86/kernel/cpu/common.c | |
parent | 3d58f48ba05caed9118bce62b3047f8683438835 (diff) | |
parent | 3e0c373749d7eb5b354ac0b043f2b2cdf84eefef (diff) |
Merge branch 'x86/cpufeature' into irq/numa
Merge reason: irq/numa didnt build because this commit:
2759c32: x86: don't call read_apic_id if !cpu_has_apic
Had a dependency on x86/cpufeature changes. Pull in that
(small) branch to fix the dependency.
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'arch/x86/kernel/cpu/common.c')
-rw-r--r-- | arch/x86/kernel/cpu/common.c | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/arch/x86/kernel/cpu/common.c b/arch/x86/kernel/cpu/common.c index c2fa56a3ae13..b0517aa2bd3b 100644 --- a/arch/x86/kernel/cpu/common.c +++ b/arch/x86/kernel/cpu/common.c | |||
@@ -299,7 +299,8 @@ static const char *__cpuinit table_lookup_model(struct cpuinfo_x86 *c) | |||
299 | return NULL; /* Not found */ | 299 | return NULL; /* Not found */ |
300 | } | 300 | } |
301 | 301 | ||
302 | __u32 cleared_cpu_caps[NCAPINTS] __cpuinitdata; | 302 | __u32 cpu_caps_cleared[NCAPINTS] __cpuinitdata; |
303 | __u32 cpu_caps_set[NCAPINTS] __cpuinitdata; | ||
303 | 304 | ||
304 | void load_percpu_segment(int cpu) | 305 | void load_percpu_segment(int cpu) |
305 | { | 306 | { |
@@ -819,6 +820,16 @@ static void __cpuinit identify_cpu(struct cpuinfo_x86 *c) | |||
819 | #endif | 820 | #endif |
820 | 821 | ||
821 | init_hypervisor(c); | 822 | init_hypervisor(c); |
823 | |||
824 | /* | ||
825 | * Clear/Set all flags overriden by options, need do it | ||
826 | * before following smp all cpus cap AND. | ||
827 | */ | ||
828 | for (i = 0; i < NCAPINTS; i++) { | ||
829 | c->x86_capability[i] &= ~cpu_caps_cleared[i]; | ||
830 | c->x86_capability[i] |= cpu_caps_set[i]; | ||
831 | } | ||
832 | |||
822 | /* | 833 | /* |
823 | * On SMP, boot_cpu_data holds the common feature set between | 834 | * On SMP, boot_cpu_data holds the common feature set between |
824 | * all CPUs; so make sure that we indicate which features are | 835 | * all CPUs; so make sure that we indicate which features are |
@@ -831,10 +842,6 @@ static void __cpuinit identify_cpu(struct cpuinfo_x86 *c) | |||
831 | boot_cpu_data.x86_capability[i] &= c->x86_capability[i]; | 842 | boot_cpu_data.x86_capability[i] &= c->x86_capability[i]; |
832 | } | 843 | } |
833 | 844 | ||
834 | /* Clear all flags overriden by options */ | ||
835 | for (i = 0; i < NCAPINTS; i++) | ||
836 | c->x86_capability[i] &= ~cleared_cpu_caps[i]; | ||
837 | |||
838 | #ifdef CONFIG_X86_MCE | 845 | #ifdef CONFIG_X86_MCE |
839 | /* Init Machine Check Exception if available. */ | 846 | /* Init Machine Check Exception if available. */ |
840 | mcheck_init(c); | 847 | mcheck_init(c); |