Commit 7f59f492 authored by Rusty Russell's avatar Rusty Russell Committed by Avi Kivity

KVM: use cpumask_var_t for cpus_hardware_enabled

This changes cpus_hardware_enabled from a cpumask_t to a cpumask_var_t:
equivalent for CONFIG_CPUMASKS_OFFSTACK=n, otherwise dynamically allocated.
Signed-off-by: default avatarRusty Russell <rusty@rustcorp.com.au>
Signed-off-by: default avatarAvi Kivity <avi@redhat.com>
parent 6ef7a1bc
...@@ -70,7 +70,7 @@ module_param(msi2intx, bool, 0); ...@@ -70,7 +70,7 @@ module_param(msi2intx, bool, 0);
DEFINE_SPINLOCK(kvm_lock); DEFINE_SPINLOCK(kvm_lock);
LIST_HEAD(vm_list); LIST_HEAD(vm_list);
static cpumask_t cpus_hardware_enabled; static cpumask_var_t cpus_hardware_enabled;
struct kmem_cache *kvm_vcpu_cache; struct kmem_cache *kvm_vcpu_cache;
EXPORT_SYMBOL_GPL(kvm_vcpu_cache); EXPORT_SYMBOL_GPL(kvm_vcpu_cache);
...@@ -1965,9 +1965,9 @@ static void hardware_enable(void *junk) ...@@ -1965,9 +1965,9 @@ static void hardware_enable(void *junk)
{ {
int cpu = raw_smp_processor_id(); int cpu = raw_smp_processor_id();
if (cpu_isset(cpu, cpus_hardware_enabled)) if (cpumask_test_cpu(cpu, cpus_hardware_enabled))
return; return;
cpu_set(cpu, cpus_hardware_enabled); cpumask_set_cpu(cpu, cpus_hardware_enabled);
kvm_arch_hardware_enable(NULL); kvm_arch_hardware_enable(NULL);
} }
...@@ -1975,9 +1975,9 @@ static void hardware_disable(void *junk) ...@@ -1975,9 +1975,9 @@ static void hardware_disable(void *junk)
{ {
int cpu = raw_smp_processor_id(); int cpu = raw_smp_processor_id();
if (!cpu_isset(cpu, cpus_hardware_enabled)) if (!cpumask_test_cpu(cpu, cpus_hardware_enabled))
return; return;
cpu_clear(cpu, cpus_hardware_enabled); cpumask_clear_cpu(cpu, cpus_hardware_enabled);
kvm_arch_hardware_disable(NULL); kvm_arch_hardware_disable(NULL);
} }
...@@ -2211,9 +2211,14 @@ int kvm_init(void *opaque, unsigned int vcpu_size, ...@@ -2211,9 +2211,14 @@ int kvm_init(void *opaque, unsigned int vcpu_size,
bad_pfn = page_to_pfn(bad_page); bad_pfn = page_to_pfn(bad_page);
if (!alloc_cpumask_var(&cpus_hardware_enabled, GFP_KERNEL)) {
r = -ENOMEM;
goto out_free_0;
}
r = kvm_arch_hardware_setup(); r = kvm_arch_hardware_setup();
if (r < 0) if (r < 0)
goto out_free_0; goto out_free_0a;
for_each_online_cpu(cpu) { for_each_online_cpu(cpu) {
smp_call_function_single(cpu, smp_call_function_single(cpu,
...@@ -2277,6 +2282,8 @@ int kvm_init(void *opaque, unsigned int vcpu_size, ...@@ -2277,6 +2282,8 @@ int kvm_init(void *opaque, unsigned int vcpu_size,
on_each_cpu(hardware_disable, NULL, 1); on_each_cpu(hardware_disable, NULL, 1);
out_free_1: out_free_1:
kvm_arch_hardware_unsetup(); kvm_arch_hardware_unsetup();
out_free_0a:
free_cpumask_var(cpus_hardware_enabled);
out_free_0: out_free_0:
__free_page(bad_page); __free_page(bad_page);
out: out:
...@@ -2300,6 +2307,7 @@ void kvm_exit(void) ...@@ -2300,6 +2307,7 @@ void kvm_exit(void)
kvm_arch_hardware_unsetup(); kvm_arch_hardware_unsetup();
kvm_arch_exit(); kvm_arch_exit();
kvm_exit_debug(); kvm_exit_debug();
free_cpumask_var(cpus_hardware_enabled);
__free_page(bad_page); __free_page(bad_page);
} }
EXPORT_SYMBOL_GPL(kvm_exit); EXPORT_SYMBOL_GPL(kvm_exit);
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment