aboutsummaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
authorAndi Kleen <ak@suse.de>2006-01-11 16:45:27 -0500
committerLinus Torvalds <torvalds@g5.osdl.org>2006-01-11 22:04:58 -0500
commit487472bc01fab0625996aad37836aad931e4eda9 (patch)
treeede143ee4c756413b396911b3702068283b052f2 /arch
parentc818a18146997d1356a4840b0c01f1168c16c8a4 (diff)
[PATCH] i386: Replace broken serialize_cpu in microcode driver with correct sync_core
Passing random input values in eax to cpuid is not a good idea because the CPU will GPF for unknown ones. Use the correct x86-64 version that exists for a longer time too. This also adds a memory barrier to prevent the optimizer from reordering. Cc: tigran@veritas.com Signed-off-by: Andi Kleen <ak@suse.de> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'arch')
-rw-r--r--arch/i386/kernel/microcode.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/arch/i386/kernel/microcode.c b/arch/i386/kernel/microcode.c
index fad3037ebaef..d3fdf0057d82 100644
--- a/arch/i386/kernel/microcode.c
+++ b/arch/i386/kernel/microcode.c
@@ -166,7 +166,7 @@ static void collect_cpu_info (void *unused)
166 166
167 wrmsr(MSR_IA32_UCODE_REV, 0, 0); 167 wrmsr(MSR_IA32_UCODE_REV, 0, 0);
168 /* see notes above for revision 1.07. Apparent chip bug */ 168 /* see notes above for revision 1.07. Apparent chip bug */
169 serialize_cpu(); 169 sync_core();
170 /* get the current revision from MSR 0x8B */ 170 /* get the current revision from MSR 0x8B */
171 rdmsr(MSR_IA32_UCODE_REV, val[0], uci->rev); 171 rdmsr(MSR_IA32_UCODE_REV, val[0], uci->rev);
172 pr_debug("microcode: collect_cpu_info : sig=0x%x, pf=0x%x, rev=0x%x\n", 172 pr_debug("microcode: collect_cpu_info : sig=0x%x, pf=0x%x, rev=0x%x\n",
@@ -380,7 +380,7 @@ static void do_update_one (void * unused)
380 wrmsr(MSR_IA32_UCODE_REV, 0, 0); 380 wrmsr(MSR_IA32_UCODE_REV, 0, 0);
381 381
382 /* see notes above for revision 1.07. Apparent chip bug */ 382 /* see notes above for revision 1.07. Apparent chip bug */
383 serialize_cpu(); 383 sync_core();
384 384
385 /* get the current revision from MSR 0x8B */ 385 /* get the current revision from MSR 0x8B */
386 rdmsr(MSR_IA32_UCODE_REV, val[0], val[1]); 386 rdmsr(MSR_IA32_UCODE_REV, val[0], val[1]);