Hi Linus,
Please pull:
git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip.git x86-fixes-for-linus-2
H. Peter Anvin (4):
x86: boot: stub out unimplemented CPU feature words
x86: add NOPL as a synthetic CPU feature bit
x86: use X86_FEATURE_NOPL in alternatives
Merge branch 'x86/urgent' into x86-fixes-for-linus-2
This fixes the NOPL issue by detecting it explicitly. I don't have
access to Virtual PC, but this works on Virtual Server 2005 R2 which
has the same issue. These changes have been in -tip since August 18,
so they have had some reasonable degree of exposure already.
arch/x86/boot/cpucheck.c | 8 +++---
arch/x86/kernel/alternative.c | 36 ++++++++++++----------------------
arch/x86/kernel/cpu/common.c | 32 ++++++++++++++++++++++++++++++-
arch/x86/kernel/cpu/common_64.c | 36 +++++++++++++++++++++++++++++++++++
arch/x86/kernel/cpu/feature_names.c | 3 +-
include/asm-x86/cpufeature.h | 11 +++++----
include/asm-x86/required-features.h | 8 ++++++-
7 files changed, 99 insertions(+), 35 deletions(-)
diff --git a/arch/x86/boot/cpucheck.c b/arch/x86/boot/cpucheck.c
index 4b9ae7c..4d3ff03 100644
--- a/arch/x86/boot/cpucheck.c
+++ b/arch/x86/boot/cpucheck.c
@@ -38,12 +38,12 @@ static const u32 req_flags[NCAPINTS] =
{
REQUIRED_MASK0,
REQUIRED_MASK1,
- REQUIRED_MASK2,
- REQUIRED_MASK3,
+ 0, /* REQUIRED_MASK2 not implemented in this file */
+ 0, /* REQUIRED_MASK3 not implemented in this file */
REQUIRED_MASK4,
- REQUIRED_MASK5,
+ 0, /* REQUIRED_MASK5 not implemented in this file */
REQUIRED_MASK6,
- REQUIRED_MASK7,
+ 0, /* REQUIRED_MASK7 not implemented in this file */
};
#define A32(a, b, c, d) (((d) << 24)+((c) << 16)+((b) << 8)+(a))
diff --git a/arch/x86/kernel/alternative.c b/arch/x86/kernel/alternative.c
index 2763cb3..65a0c1b 100644
--- a/arch/x86/kernel/alternative.c
+++ b/arch/x86/kernel/alternative.c
@@ -145,35 +145,25 @@ static const unsigned ...