diff options
| -rw-r--r-- | arch/i386/kernel/cpu/common.c | 17 |
1 files changed, 10 insertions, 7 deletions
diff --git a/arch/i386/kernel/cpu/common.c b/arch/i386/kernel/cpu/common.c index 170400879f44..15aee26ec2b6 100644 --- a/arch/i386/kernel/cpu/common.c +++ b/arch/i386/kernel/cpu/common.c | |||
| @@ -204,7 +204,10 @@ static int __devinit have_cpuid_p(void) | |||
| 204 | 204 | ||
| 205 | /* Do minimum CPU detection early. | 205 | /* Do minimum CPU detection early. |
| 206 | Fields really needed: vendor, cpuid_level, family, model, mask, cache alignment. | 206 | Fields really needed: vendor, cpuid_level, family, model, mask, cache alignment. |
| 207 | The others are not touched to avoid unwanted side effects. */ | 207 | The others are not touched to avoid unwanted side effects. |
| 208 | |||
| 209 | WARNING: this function is only called on the BP. Don't add code here | ||
| 210 | that is supposed to run on all CPUs. */ | ||
| 208 | static void __init early_cpu_detect(void) | 211 | static void __init early_cpu_detect(void) |
| 209 | { | 212 | { |
| 210 | struct cpuinfo_x86 *c = &boot_cpu_data; | 213 | struct cpuinfo_x86 *c = &boot_cpu_data; |
| @@ -236,12 +239,6 @@ static void __init early_cpu_detect(void) | |||
| 236 | if (cap0 & (1<<19)) | 239 | if (cap0 & (1<<19)) |
| 237 | c->x86_cache_alignment = ((misc >> 8) & 0xff) * 8; | 240 | c->x86_cache_alignment = ((misc >> 8) & 0xff) * 8; |
| 238 | } | 241 | } |
| 239 | |||
| 240 | early_intel_workaround(c); | ||
| 241 | |||
| 242 | #ifdef CONFIG_X86_HT | ||
| 243 | phys_proc_id[smp_processor_id()] = (cpuid_ebx(1) >> 24) & 0xff; | ||
| 244 | #endif | ||
| 245 | } | 242 | } |
| 246 | 243 | ||
| 247 | void __devinit generic_identify(struct cpuinfo_x86 * c) | 244 | void __devinit generic_identify(struct cpuinfo_x86 * c) |
| @@ -289,6 +286,12 @@ void __devinit generic_identify(struct cpuinfo_x86 * c) | |||
| 289 | get_model_name(c); /* Default name */ | 286 | get_model_name(c); /* Default name */ |
| 290 | } | 287 | } |
| 291 | } | 288 | } |
| 289 | |||
| 290 | early_intel_workaround(c); | ||
| 291 | |||
| 292 | #ifdef CONFIG_X86_HT | ||
| 293 | phys_proc_id[smp_processor_id()] = (cpuid_ebx(1) >> 24) & 0xff; | ||
| 294 | #endif | ||
| 292 | } | 295 | } |
| 293 | 296 | ||
| 294 | static void __devinit squash_the_stupid_serial_number(struct cpuinfo_x86 *c) | 297 | static void __devinit squash_the_stupid_serial_number(struct cpuinfo_x86 *c) |
