lguest: don't allow KVM-detection cpuid.
authorRusty Russell <rusty@rustcorp.com.au>
Thu, 27 Oct 2011 00:26:17 +0000 (10:56 +1030)
committerRusty Russell <rusty@rustcorp.com.au>
Thu, 27 Oct 2011 00:26:17 +0000 (10:56 +1030)
Host might be running under KVM, but we shouldn't allow Guest to think it
can use KVM hypercalls (it can't, and it will embarrass itself if it tries).

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
arch/x86/lguest/boot.c

index 13ee258442ae2b58cb195374c02c1a213f8333ee..f63da5ef217c40deb6af93e0924246fc68f94008 100644 (file)
@@ -70,6 +70,7 @@
 #include <asm/i387.h>
 #include <asm/stackprotector.h>
 #include <asm/reboot.h>                /* for struct machine_ops */
+#include <asm/kvm_para.h>
 
 /*G:010
  * Welcome to the Guest!
@@ -455,6 +456,15 @@ static void lguest_cpuid(unsigned int *ax, unsigned int *bx,
                *ax &= 0xFFFFF0FF;
                *ax |= 0x00000500;
                break;
+
+       /*
+        * This is used to detect if we're running under KVM.  We might be,
+        * but that's a Host matter, not us.  So say we're not.
+        */
+       case KVM_CPUID_SIGNATURE:
+               *bx = *cx = *dx = 0;
+               break;
+
        /*
         * 0x80000000 returns the highest Extended Function, so we futureproof
         * like we do above by limiting it to known fields.