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>
                      "  .align 4\n"                                    \
                      "  .long 661b\n"            /* label */           \
                      "  .long 663f\n"            /* new instruction */ \
-                     "  .byte 0x68\n"            /* X86_FEATURE_UP */  \
+                     "  .byte " __stringify(X86_FEATURE_UP) "\n"       \
                      "  .byte 662b-661b\n"       /* sourcelen */       \
                      "  .byte 664f-663f\n"       /* replacementlen */  \
                      ".previous\n"                                     \
 
 #ifdef __KERNEL__
 
 #include <linux/types.h>
+#include <asm/cpufeature.h>
 
 struct alt_instr {
        u8 *instr;              /* original instruction */
                      "  .align 8\n"                                    \
                      "  .quad 661b\n"            /* label */           \
                      "  .quad 663f\n"            /* new instruction */ \
-                     "  .byte 0x66\n"            /* X86_FEATURE_UP */  \
+                     "  .byte " __stringify(X86_FEATURE_UP) "\n"       \
                      "  .byte 662b-661b\n"       /* sourcelen */       \
                      "  .byte 664f-663f\n"       /* replacementlen */  \
                      ".previous\n"                                     \