lguest: restrict CPUID to avoid perf counter wrmsr
authorRusty Russell <rusty@rustcorp.com.au>
Sat, 18 Jul 2009 03:47:44 +0000 (21:47 -0600)
committerRusty Russell <rusty@rustcorp.com.au>
Fri, 17 Jul 2009 12:17:45 +0000 (21:47 +0930)
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>
arch/x86/lguest/boot.c

index 0188fd37b6c0936b4d6f5feb53f44a10b404abb9..f2bf1f73d468942590d5c914e874d24fa23d22b0 100644 (file)
@@ -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;