diff options
-rw-r--r-- | arch/x86/kvm/x86.c | 8 | ||||
-rw-r--r-- | virt/kvm/kvm_main.c | 6 |
2 files changed, 13 insertions, 1 deletions
diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c index 4ff0c271f125..d0764a258047 100644 --- a/arch/x86/kvm/x86.c +++ b/arch/x86/kvm/x86.c | |||
@@ -5533,7 +5533,15 @@ int kvm_arch_vcpu_reset(struct kvm_vcpu *vcpu) | |||
5533 | 5533 | ||
5534 | int kvm_arch_hardware_enable(void *garbage) | 5534 | int kvm_arch_hardware_enable(void *garbage) |
5535 | { | 5535 | { |
5536 | struct kvm *kvm; | ||
5537 | struct kvm_vcpu *vcpu; | ||
5538 | int i; | ||
5539 | |||
5536 | kvm_shared_msr_cpu_online(); | 5540 | kvm_shared_msr_cpu_online(); |
5541 | list_for_each_entry(kvm, &vm_list, vm_list) | ||
5542 | kvm_for_each_vcpu(i, vcpu, kvm) | ||
5543 | if (vcpu->cpu == smp_processor_id()) | ||
5544 | kvm_request_guest_time_update(vcpu); | ||
5537 | return kvm_x86_ops->hardware_enable(garbage); | 5545 | return kvm_x86_ops->hardware_enable(garbage); |
5538 | } | 5546 | } |
5539 | 5547 | ||
diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c index 5186e728c53e..da117a6b1e2e 100644 --- a/virt/kvm/kvm_main.c +++ b/virt/kvm/kvm_main.c | |||
@@ -1961,7 +1961,9 @@ static int kvm_cpu_hotplug(struct notifier_block *notifier, unsigned long val, | |||
1961 | case CPU_STARTING: | 1961 | case CPU_STARTING: |
1962 | printk(KERN_INFO "kvm: enabling virtualization on CPU%d\n", | 1962 | printk(KERN_INFO "kvm: enabling virtualization on CPU%d\n", |
1963 | cpu); | 1963 | cpu); |
1964 | spin_lock(&kvm_lock); | ||
1964 | hardware_enable(NULL); | 1965 | hardware_enable(NULL); |
1966 | spin_unlock(&kvm_lock); | ||
1965 | break; | 1967 | break; |
1966 | } | 1968 | } |
1967 | return NOTIFY_OK; | 1969 | return NOTIFY_OK; |
@@ -2168,8 +2170,10 @@ static int kvm_suspend(struct sys_device *dev, pm_message_t state) | |||
2168 | 2170 | ||
2169 | static int kvm_resume(struct sys_device *dev) | 2171 | static int kvm_resume(struct sys_device *dev) |
2170 | { | 2172 | { |
2171 | if (kvm_usage_count) | 2173 | if (kvm_usage_count) { |
2174 | WARN_ON(spin_is_locked(&kvm_lock)); | ||
2172 | hardware_enable(NULL); | 2175 | hardware_enable(NULL); |
2176 | } | ||
2173 | return 0; | 2177 | return 0; |
2174 | } | 2178 | } |
2175 | 2179 | ||