KVM: Initialize the mmu caches only after verifying cpu support
authorAvi Kivity <avi@qumranet.com>
Sun, 13 Jan 2008 11:23:56 +0000 (13:23 +0200)
committerAvi Kivity <avi@qumranet.com>
Wed, 30 Jan 2008 16:01:22 +0000 (18:01 +0200)
Otherwise we re-initialize the mmu caches, which will fail since the
caches are already registered, which will cause us to deinitialize said caches.

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

index 8a90403272e2e826211e182e438cfa7b7e20e830..77d57ff3d74ebf6d88501cfda6cea522b396b250 100644 (file)
@@ -2187,12 +2187,6 @@ int kvm_arch_init(void *opaque)
        int r;
        struct kvm_x86_ops *ops = (struct kvm_x86_ops *)opaque;
 
-       r = kvm_mmu_module_init();
-       if (r)
-               goto out_fail;
-
-       kvm_init_msr_list();
-
        if (kvm_x86_ops) {
                printk(KERN_ERR "kvm: already loaded the other module\n");
                r = -EEXIST;
@@ -2210,13 +2204,17 @@ int kvm_arch_init(void *opaque)
                goto out;
        }
 
+       r = kvm_mmu_module_init();
+       if (r)
+               goto out;
+
+       kvm_init_msr_list();
+
        kvm_x86_ops = ops;
        kvm_mmu_set_nonpresent_ptes(0ull, 0ull);
        return 0;
 
 out:
-       kvm_mmu_module_exit();
-out_fail:
        return r;
 }