xref: /linux/arch/x86/include/asm/virt.h (revision 428afac5a8ea9c55bb8408e02dc92b8f85bf5f30)
1 /* SPDX-License-Identifier: GPL-2.0-only */
2 #ifndef _ASM_X86_VIRT_H
3 #define _ASM_X86_VIRT_H
4 
5 #include <asm/reboot.h>
6 
7 typedef void (cpu_emergency_virt_cb)(void);
8 
9 #if IS_ENABLED(CONFIG_KVM_X86)
10 extern bool virt_rebooting;
11 
12 void __init x86_virt_init(void);
13 
14 #if IS_ENABLED(CONFIG_KVM_INTEL)
15 int x86_vmx_enable_virtualization_cpu(void);
16 int x86_vmx_disable_virtualization_cpu(void);
17 #endif
18 
19 #if IS_ENABLED(CONFIG_KVM_AMD)
20 int x86_svm_enable_virtualization_cpu(void);
21 int x86_svm_disable_virtualization_cpu(void);
22 #endif
23 
24 int x86_virt_emergency_disable_virtualization_cpu(void);
25 
26 void x86_virt_register_emergency_callback(cpu_emergency_virt_cb *callback);
27 void x86_virt_unregister_emergency_callback(cpu_emergency_virt_cb *callback);
28 #else
29 static __always_inline void x86_virt_init(void) {}
30 static inline int x86_virt_emergency_disable_virtualization_cpu(void) { return -ENOENT; }
31 #endif
32 
33 #endif /* _ASM_X86_VIRT_H */
34