aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJan Beulich <jbeulich@novell.com>2006-08-30 13:37:10 -0400
committerLinus Torvalds <torvalds@g5.osdl.org>2006-08-30 19:05:15 -0400
commit61171b8dbd36b0cc34d3813a59a8e4dc2984414d (patch)
tree5c4dede0bddc19c1e564ebcd95976afcebe63a4f
parent29fe5f3bafb644c33269fb0f2a719d4809a07332 (diff)
[PATCH] x86: fix x86 cpuid keys used in alternative_smp()
By hard-coding the cpuid keys for alternative_smp() rather than using the symbolic constant it turned out that incorrect values were used on both i386 (0x68 instead of 0x69) and x86-64 (0x66 instead of 0x68). Signed-off-by: Jan Beulich <jbeulich@novell.com> Signed-off-by: Andi Kleen <ak@suse.de> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-rw-r--r--include/asm-i386/alternative.h2
-rw-r--r--include/asm-x86_64/alternative.h3
2 files changed, 3 insertions, 2 deletions
diff --git a/include/asm-i386/alternative.h b/include/asm-i386/alternative.h
index 96adbabec740..bb3b6317c810 100644
--- a/include/asm-i386/alternative.h
+++ b/include/asm-i386/alternative.h
@@ -116,7 +116,7 @@ static inline void alternatives_smp_switch(int smp) {}
116 " .align 4\n" \ 116 " .align 4\n" \
117 " .long 661b\n" /* label */ \ 117 " .long 661b\n" /* label */ \
118 " .long 663f\n" /* new instruction */ \ 118 " .long 663f\n" /* new instruction */ \
119 " .byte 0x68\n" /* X86_FEATURE_UP */ \ 119 " .byte " __stringify(X86_FEATURE_UP) "\n" \
120 " .byte 662b-661b\n" /* sourcelen */ \ 120 " .byte 662b-661b\n" /* sourcelen */ \
121 " .byte 664f-663f\n" /* replacementlen */ \ 121 " .byte 664f-663f\n" /* replacementlen */ \
122 ".previous\n" \ 122 ".previous\n" \
diff --git a/include/asm-x86_64/alternative.h b/include/asm-x86_64/alternative.h
index aa67bfd1b3ce..709ad3f0d354 100644
--- a/include/asm-x86_64/alternative.h
+++ b/include/asm-x86_64/alternative.h
@@ -4,6 +4,7 @@
4#ifdef __KERNEL__ 4#ifdef __KERNEL__
5 5
6#include <linux/types.h> 6#include <linux/types.h>
7#include <asm/cpufeature.h>
7 8
8struct alt_instr { 9struct alt_instr {
9 u8 *instr; /* original instruction */ 10 u8 *instr; /* original instruction */
@@ -130,7 +131,7 @@ static inline void alternatives_smp_switch(int smp) {}
130 " .align 8\n" \ 131 " .align 8\n" \
131 " .quad 661b\n" /* label */ \ 132 " .quad 661b\n" /* label */ \
132 " .quad 663f\n" /* new instruction */ \ 133 " .quad 663f\n" /* new instruction */ \
133 " .byte 0x66\n" /* X86_FEATURE_UP */ \ 134 " .byte " __stringify(X86_FEATURE_UP) "\n" \
134 " .byte 662b-661b\n" /* sourcelen */ \ 135 " .byte 662b-661b\n" /* sourcelen */ \
135 " .byte 664f-663f\n" /* replacementlen */ \ 136 " .byte 664f-663f\n" /* replacementlen */ \
136 ".previous\n" \ 137 ".previous\n" \