|
@@ -71,6 +71,7 @@ MODULE_LICENSE("GPL");
|
|
|
*/
|
|
|
|
|
|
DEFINE_RAW_SPINLOCK(kvm_lock);
|
|
|
+static DEFINE_RAW_SPINLOCK(kvm_count_lock);
|
|
|
LIST_HEAD(vm_list);
|
|
|
|
|
|
static cpumask_var_t cpus_hardware_enabled;
|
|
@@ -2683,10 +2684,10 @@ static void hardware_enable_nolock(void *junk)
|
|
|
|
|
|
static void hardware_enable(void)
|
|
|
{
|
|
|
- raw_spin_lock(&kvm_lock);
|
|
|
+ raw_spin_lock(&kvm_count_lock);
|
|
|
if (kvm_usage_count)
|
|
|
hardware_enable_nolock(NULL);
|
|
|
- raw_spin_unlock(&kvm_lock);
|
|
|
+ raw_spin_unlock(&kvm_count_lock);
|
|
|
}
|
|
|
|
|
|
static void hardware_disable_nolock(void *junk)
|
|
@@ -2701,10 +2702,10 @@ static void hardware_disable_nolock(void *junk)
|
|
|
|
|
|
static void hardware_disable(void)
|
|
|
{
|
|
|
- raw_spin_lock(&kvm_lock);
|
|
|
+ raw_spin_lock(&kvm_count_lock);
|
|
|
if (kvm_usage_count)
|
|
|
hardware_disable_nolock(NULL);
|
|
|
- raw_spin_unlock(&kvm_lock);
|
|
|
+ raw_spin_unlock(&kvm_count_lock);
|
|
|
}
|
|
|
|
|
|
static void hardware_disable_all_nolock(void)
|
|
@@ -2718,16 +2719,16 @@ static void hardware_disable_all_nolock(void)
|
|
|
|
|
|
static void hardware_disable_all(void)
|
|
|
{
|
|
|
- raw_spin_lock(&kvm_lock);
|
|
|
+ raw_spin_lock(&kvm_count_lock);
|
|
|
hardware_disable_all_nolock();
|
|
|
- raw_spin_unlock(&kvm_lock);
|
|
|
+ raw_spin_unlock(&kvm_count_lock);
|
|
|
}
|
|
|
|
|
|
static int hardware_enable_all(void)
|
|
|
{
|
|
|
int r = 0;
|
|
|
|
|
|
- raw_spin_lock(&kvm_lock);
|
|
|
+ raw_spin_lock(&kvm_count_lock);
|
|
|
|
|
|
kvm_usage_count++;
|
|
|
if (kvm_usage_count == 1) {
|
|
@@ -2740,7 +2741,7 @@ static int hardware_enable_all(void)
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- raw_spin_unlock(&kvm_lock);
|
|
|
+ raw_spin_unlock(&kvm_count_lock);
|
|
|
|
|
|
return r;
|
|
|
}
|
|
@@ -3130,7 +3131,7 @@ static int kvm_suspend(void)
|
|
|
static void kvm_resume(void)
|
|
|
{
|
|
|
if (kvm_usage_count) {
|
|
|
- WARN_ON(raw_spin_is_locked(&kvm_lock));
|
|
|
+ WARN_ON(raw_spin_is_locked(&kvm_count_lock));
|
|
|
hardware_enable_nolock(NULL);
|
|
|
}
|
|
|
}
|