162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */ 262306a36Sopenharmony_ci#ifndef _ASM_X86_REBOOT_H 362306a36Sopenharmony_ci#define _ASM_X86_REBOOT_H 462306a36Sopenharmony_ci 562306a36Sopenharmony_ci#include <linux/kdebug.h> 662306a36Sopenharmony_ci 762306a36Sopenharmony_cistruct pt_regs; 862306a36Sopenharmony_ci 962306a36Sopenharmony_cistruct machine_ops { 1062306a36Sopenharmony_ci void (*restart)(char *cmd); 1162306a36Sopenharmony_ci void (*halt)(void); 1262306a36Sopenharmony_ci void (*power_off)(void); 1362306a36Sopenharmony_ci void (*shutdown)(void); 1462306a36Sopenharmony_ci void (*crash_shutdown)(struct pt_regs *); 1562306a36Sopenharmony_ci void (*emergency_restart)(void); 1662306a36Sopenharmony_ci}; 1762306a36Sopenharmony_ci 1862306a36Sopenharmony_ciextern struct machine_ops machine_ops; 1962306a36Sopenharmony_ciextern int crashing_cpu; 2062306a36Sopenharmony_ci 2162306a36Sopenharmony_civoid native_machine_crash_shutdown(struct pt_regs *regs); 2262306a36Sopenharmony_civoid native_machine_shutdown(void); 2362306a36Sopenharmony_civoid __noreturn machine_real_restart(unsigned int type); 2462306a36Sopenharmony_ci/* These must match dispatch in arch/x86/realmore/rm/reboot.S */ 2562306a36Sopenharmony_ci#define MRR_BIOS 0 2662306a36Sopenharmony_ci#define MRR_APM 1 2762306a36Sopenharmony_ci 2862306a36Sopenharmony_ci#if IS_ENABLED(CONFIG_KVM_INTEL) || IS_ENABLED(CONFIG_KVM_AMD) 2962306a36Sopenharmony_citypedef void (cpu_emergency_virt_cb)(void); 3062306a36Sopenharmony_civoid cpu_emergency_register_virt_callback(cpu_emergency_virt_cb *callback); 3162306a36Sopenharmony_civoid cpu_emergency_unregister_virt_callback(cpu_emergency_virt_cb *callback); 3262306a36Sopenharmony_civoid cpu_emergency_disable_virtualization(void); 3362306a36Sopenharmony_ci#else 3462306a36Sopenharmony_cistatic inline void cpu_emergency_disable_virtualization(void) {} 3562306a36Sopenharmony_ci#endif /* CONFIG_KVM_INTEL || CONFIG_KVM_AMD */ 3662306a36Sopenharmony_ci 3762306a36Sopenharmony_citypedef void (*nmi_shootdown_cb)(int, struct pt_regs*); 3862306a36Sopenharmony_civoid nmi_shootdown_cpus(nmi_shootdown_cb callback); 3962306a36Sopenharmony_civoid run_crash_ipi_callback(struct pt_regs *regs); 4062306a36Sopenharmony_ci 4162306a36Sopenharmony_ci#endif /* _ASM_X86_REBOOT_H */ 42