KVM: Fix removal of nx capability from guest cpuid
authorAvi Kivity <avi@qumranet.com>
Wed, 25 Jul 2007 06:22:12 +0000 (09:22 +0300)
committerAvi Kivity <avi@qumranet.com>
Wed, 25 Jul 2007 11:31:13 +0000 (14:31 +0300)
Testing the wrong bit caused kvm not to disable nx on the guest when it is
disabled on the host (an mmu optimization relies on the nx bits being the
same in the guest and host).

This allows Windows to boot when nx is disabled on te host (e.g. when
host pae is disabled).

Signed-off-by: Avi Kivity <avi@qumranet.com>
drivers/kvm/kvm_main.c

index a8d8db8e3ccb1f24100f38d41d4c35cd54f56142..96856097d15bb9f2cb2b897c87d6a25a6d9248ea 100644 (file)
@@ -2432,9 +2432,9 @@ static void cpuid_fix_nx_cap(struct kvm_vcpu *vcpu)
                        break;
                }
        }
-       if (entry && (entry->edx & EFER_NX) && !(efer & EFER_NX)) {
+       if (entry && (entry->edx & (1 << 20)) && !(efer & EFER_NX)) {
                entry->edx &= ~(1 << 20);
-               printk(KERN_INFO ": guest NX capability removed\n");
+               printk(KERN_INFO "kvm: guest NX capability removed\n");
        }
 }