diff options
author | 2009-07-17 21:47:44 -0600 | |
---|---|---|
committer | 2009-07-17 21:47:45 +0930 | |
commit | 7a5049205f7265620c48781814155f2763e70abb (patch) | |
tree | 7b3cf5ec83687e74028bbfa100dac4e6d449155a /arch/x86/lguest | |
parent | lguest: remove unnecessary forward struct declaration (diff) | |
download | linux-7a5049205f7265620c48781814155f2763e70abb.tar.gz linux-7a5049205f7265620c48781814155f2763e70abb.tar.bz2 linux-7a5049205f7265620c48781814155f2763e70abb.zip |
lguest: restrict CPUID to avoid perf counter wrmsr
Avoid the following:
[ 0.012093] WARNING: at arch/x86/kernel/apic/apic.c:249 native_apic_write_dummy+0x2f/0x40()
Rather than chase each new cpuid-detected feature, just lie about the highest
valid CPUID so this code is never run.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
Diffstat (limited to 'arch/x86/lguest')
-rw-r--r-- | arch/x86/lguest/boot.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/arch/x86/lguest/boot.c b/arch/x86/lguest/boot.c index 0188fd37b6c0..f2bf1f73d468 100644 --- a/arch/x86/lguest/boot.c +++ b/arch/x86/lguest/boot.c @@ -379,6 +379,11 @@ static void lguest_cpuid(unsigned int *ax, unsigned int *bx, native_cpuid(ax, bx, cx, dx); switch (function) { + case 0: /* ID and highest CPUID. Futureproof a little by sticking to + * older ones. */ + if (*ax > 5) + *ax = 5; + break; case 1: /* Basic feature request. */ /* We only allow kernel to see SSE3, CMPXCHG16B and SSSE3 */ *cx &= 0x00002201; |