]> www.infradead.org Git - users/dwmw2/linux.git/commitdiff
KVM: Add arch hooks for KVM syscore ops
authorDavid Woodhouse <dwmw@amazon.co.uk>
Mon, 23 Jun 2025 10:35:37 +0000 (11:35 +0100)
committerDavid Woodhouse <dwmw@amazon.co.uk>
Mon, 23 Jun 2025 13:20:18 +0000 (15:20 +0200)
Allow the architecture to hook kvm_shutdown(), kvm_suspend() and kvm_resume()

Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
include/linux/kvm_host.h
virt/kvm/kvm_main.c

index 3bde4fb5c6aa4055638f37c064e41978c9cf2079..8e16b6c0d2bae1d3532f45060d416f1f2b103d82 100644 (file)
@@ -1622,6 +1622,9 @@ void kvm_arch_disable_virtualization(void);
  */
 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);
index eec82775c5bfbe50f3aa955b08e6e113396e856a..4af1d9943d39b59cab7626dbbf9136f1f1b89205 100644 (file)
@@ -5609,6 +5609,20 @@ static int kvm_offline_cpu(unsigned int cpu)
        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)
 {
        /*
@@ -5625,6 +5639,7 @@ 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)
@@ -5641,6 +5656,7 @@ static int kvm_suspend(void)
        lockdep_assert_irqs_disabled();
 
        kvm_disable_virtualization_cpu(NULL);
+       kvm_arch_suspend();
        return 0;
 }
 
@@ -5649,6 +5665,7 @@ static void kvm_resume(void)
        lockdep_assert_not_held(&kvm_usage_lock);
        lockdep_assert_irqs_disabled();
 
+       kvm_arch_resume();
        WARN_ON_ONCE(kvm_enable_virtualization_cpu());
 }