*/
int kvm_arch_enable_virtualization_cpu(void);
void kvm_arch_disable_virtualization_cpu(void);
+void kvm_arch_shutdown(void);
+void kvm_arch_suspend(void);
+void kvm_arch_resume(void);
#endif
bool kvm_vcpu_has_events(struct kvm_vcpu *vcpu);
int kvm_arch_vcpu_runnable(struct kvm_vcpu *vcpu);
return 0;
}
+__weak void kvm_arch_shutdown(void)
+{
+
+}
+
+__weak void kvm_arch_suspend(void)
+{
+
+}
+__weak void kvm_arch_resume(void)
+{
+
+}
+
static void kvm_shutdown(void)
{
/*
pr_info("kvm: exiting hardware virtualization\n");
kvm_rebooting = true;
on_each_cpu(kvm_disable_virtualization_cpu, NULL, 1);
+ kvm_arch_shutdown();
}
static int kvm_suspend(void)
lockdep_assert_irqs_disabled();
kvm_disable_virtualization_cpu(NULL);
+ kvm_arch_suspend();
return 0;
}
lockdep_assert_not_held(&kvm_usage_lock);
lockdep_assert_irqs_disabled();
+ kvm_arch_resume();
WARN_ON_ONCE(kvm_enable_virtualization_cpu());
}