diff options
author | Cornelia Huck <cornelia.huck@de.ibm.com> | 2013-02-28 06:33:18 -0500 |
---|---|---|
committer | Marcelo Tosatti <mtosatti@redhat.com> | 2013-03-05 17:12:16 -0500 |
commit | a0f155e9646d5f1c263f6f9aae880151100243bb (patch) | |
tree | 761de60204c9c0a5c2208775295c6baa9e5693fb /virt/kvm/kvm_main.c | |
parent | 6a773cb825afb74a600a08fe87fab55ee98ec2ac (diff) |
KVM: Initialize irqfd from kvm_init().
Currently, eventfd introduces module_init/module_exit functions
to initialize/cleanup the irqfd workqueue. This only works, however,
if no other module_init/module_exit functions are built into the
same module.
Let's just move the initialization and cleanup to kvm_init and kvm_exit.
This way, it is also clearer where kvm startup may fail.
Signed-off-by: Cornelia Huck <cornelia.huck@de.ibm.com>
Signed-off-by: Marcelo Tosatti <mtosatti@redhat.com>
Diffstat (limited to 'virt/kvm/kvm_main.c')
-rw-r--r-- | virt/kvm/kvm_main.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c index 0e919a1d4d56..faf05bddd131 100644 --- a/virt/kvm/kvm_main.c +++ b/virt/kvm/kvm_main.c | |||
@@ -2898,6 +2898,9 @@ int kvm_init(void *opaque, unsigned vcpu_size, unsigned vcpu_align, | |||
2898 | int r; | 2898 | int r; |
2899 | int cpu; | 2899 | int cpu; |
2900 | 2900 | ||
2901 | r = kvm_irqfd_init(); | ||
2902 | if (r) | ||
2903 | goto out_irqfd; | ||
2901 | r = kvm_arch_init(opaque); | 2904 | r = kvm_arch_init(opaque); |
2902 | if (r) | 2905 | if (r) |
2903 | goto out_fail; | 2906 | goto out_fail; |
@@ -2978,6 +2981,8 @@ out_free_0a: | |||
2978 | out_free_0: | 2981 | out_free_0: |
2979 | kvm_arch_exit(); | 2982 | kvm_arch_exit(); |
2980 | out_fail: | 2983 | out_fail: |
2984 | kvm_irqfd_exit(); | ||
2985 | out_irqfd: | ||
2981 | return r; | 2986 | return r; |
2982 | } | 2987 | } |
2983 | EXPORT_SYMBOL_GPL(kvm_init); | 2988 | EXPORT_SYMBOL_GPL(kvm_init); |
@@ -2994,6 +2999,7 @@ void kvm_exit(void) | |||
2994 | on_each_cpu(hardware_disable_nolock, NULL, 1); | 2999 | on_each_cpu(hardware_disable_nolock, NULL, 1); |
2995 | kvm_arch_hardware_unsetup(); | 3000 | kvm_arch_hardware_unsetup(); |
2996 | kvm_arch_exit(); | 3001 | kvm_arch_exit(); |
3002 | kvm_irqfd_exit(); | ||
2997 | free_cpumask_var(cpus_hardware_enabled); | 3003 | free_cpumask_var(cpus_hardware_enabled); |
2998 | } | 3004 | } |
2999 | EXPORT_SYMBOL_GPL(kvm_exit); | 3005 | EXPORT_SYMBOL_GPL(kvm_exit); |