aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorYoshimi Ichiyanagi <ichiyanagi.yoshimi@lab.ntt.co.jp>2007-01-05 16:36:24 -0800
committerLinus Torvalds <torvalds@woody.osdl.org>2007-01-05 23:55:22 -0800
commite097f35ce58eb8d687f3a300247cf1a978fcea39 (patch)
treed6d35f79744a7ec1b507c26b00ffd76effd1198e
parent[PATCH] KVM: Use raw_smp_processor_id() instead of smp_processor_id() where applicable (diff)
downloadlinux-dev-e097f35ce58eb8d687f3a300247cf1a978fcea39.tar.xz
linux-dev-e097f35ce58eb8d687f3a300247cf1a978fcea39.zip
[PATCH] KVM: Recover after an arch module load failure
If we load the wrong arch module, it leaves behind kvm_arch_ops set, which prevents loading of the correct arch module later. Fix be not setting kvm_arch_ops until we're sure it's good. Signed-off-by: Yoshimi Ichiyanagi <ichiyanagi.yoshimi@lab.ntt.co.jp> Signed-off-by: Avi Kivity <avi@qumranet.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-rw-r--r--drivers/kvm/kvm_main.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/drivers/kvm/kvm_main.c b/drivers/kvm/kvm_main.c
index ce7fe640f18d..b54caf0ceeb1 100644
--- a/drivers/kvm/kvm_main.c
+++ b/drivers/kvm/kvm_main.c
@@ -1944,17 +1944,17 @@ int kvm_init_arch(struct kvm_arch_ops *ops, struct module *module)
return -EEXIST;
}
- kvm_arch_ops = ops;
-
- if (!kvm_arch_ops->cpu_has_kvm_support()) {
+ if (!ops->cpu_has_kvm_support()) {
printk(KERN_ERR "kvm: no hardware support\n");
return -EOPNOTSUPP;
}
- if (kvm_arch_ops->disabled_by_bios()) {
+ if (ops->disabled_by_bios()) {
printk(KERN_ERR "kvm: disabled by bios\n");
return -EOPNOTSUPP;
}
+ kvm_arch_ops = ops;
+
r = kvm_arch_ops->hardware_setup();
if (r < 0)
return r;