Commit 2e664aa2bad56b0bb52cf9cb9d14c9b575b437bb
Committed by
Linus Torvalds
1 parent
77a75333a3
Exists in
master
and in
4 other branches
[PATCH] i386: Move phys_proc_id/early intel workaround to correct function.
early_cpu_detect only runs on the BP, but this code needs to run on all CPUs. Looks like a mismerge somewhere. Also add a warning comment. Signed-off-by: Andi Kleen <ak@suse.de> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Showing 1 changed file with 10 additions and 7 deletions Side-by-side Diff
arch/i386/kernel/cpu/common.c
| ... | ... | @@ -204,7 +204,10 @@ |
| 204 | 204 | |
| 205 | 205 | /* Do minimum CPU detection early. |
| 206 | 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 | 211 | static void __init early_cpu_detect(void) |
| 209 | 212 | { |
| 210 | 213 | struct cpuinfo_x86 *c = &boot_cpu_data; |
| ... | ... | @@ -236,12 +239,6 @@ |
| 236 | 239 | if (cap0 & (1<<19)) |
| 237 | 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 | 244 | void __devinit generic_identify(struct cpuinfo_x86 * c) |
| ... | ... | @@ -289,6 +286,12 @@ |
| 289 | 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 | 297 | static void __devinit squash_the_stupid_serial_number(struct cpuinfo_x86 *c) |