xref: /openbmc/linux/arch/x86/include/asm/mshyperv.h (revision 3f646ed70ccd1c4e5c1263d2922247d28c8e08f0)
1e08cae41SH. Peter Anvin #ifndef _ASM_X86_MSHYPER_H
2e08cae41SH. Peter Anvin #define _ASM_X86_MSHYPER_H
3a2a47c6cSKy Srinivasan 
4e08cae41SH. Peter Anvin #include <linux/types.h>
51aec1696SThomas Gleixner #include <linux/interrupt.h>
6e08cae41SH. Peter Anvin #include <asm/hyperv.h>
7e08cae41SH. Peter Anvin 
8e08cae41SH. Peter Anvin struct ms_hyperv_info {
9e08cae41SH. Peter Anvin 	u32 features;
10cc2dd402SDenis V. Lunev 	u32 misc_features;
11e08cae41SH. Peter Anvin 	u32 hints;
12e08cae41SH. Peter Anvin };
13e08cae41SH. Peter Anvin 
14e08cae41SH. Peter Anvin extern struct ms_hyperv_info ms_hyperv;
15a2a47c6cSKy Srinivasan 
16*3f646ed7SK. Y. Srinivasan /*
17*3f646ed7SK. Y. Srinivasan  * Declare the MSR used to setup pages used to communicate with the hypervisor.
18*3f646ed7SK. Y. Srinivasan  */
19*3f646ed7SK. Y. Srinivasan union hv_x64_msr_hypercall_contents {
20*3f646ed7SK. Y. Srinivasan 	u64 as_uint64;
21*3f646ed7SK. Y. Srinivasan 	struct {
22*3f646ed7SK. Y. Srinivasan 		u64 enable:1;
23*3f646ed7SK. Y. Srinivasan 		u64 reserved:11;
24*3f646ed7SK. Y. Srinivasan 		u64 guest_physical_address:52;
25*3f646ed7SK. Y. Srinivasan 	};
26*3f646ed7SK. Y. Srinivasan };
27*3f646ed7SK. Y. Srinivasan 
28bc2b0331SK. Y. Srinivasan void hyperv_callback_vector(void);
29cf910e83SSeiji Aguchi #ifdef CONFIG_TRACING
30cf910e83SSeiji Aguchi #define trace_hyperv_callback_vector hyperv_callback_vector
31cf910e83SSeiji Aguchi #endif
32bc2b0331SK. Y. Srinivasan void hyperv_vector_handler(struct pt_regs *regs);
3376d388cdSThomas Gleixner void hv_setup_vmbus_irq(void (*handler)(void));
3476d388cdSThomas Gleixner void hv_remove_vmbus_irq(void);
35bc2b0331SK. Y. Srinivasan 
362517281dSVitaly Kuznetsov void hv_setup_kexec_handler(void (*handler)(void));
372517281dSVitaly Kuznetsov void hv_remove_kexec_handler(void);
38b4370df2SVitaly Kuznetsov void hv_setup_crash_handler(void (*handler)(struct pt_regs *regs));
39b4370df2SVitaly Kuznetsov void hv_remove_crash_handler(void);
40a2a47c6cSKy Srinivasan #endif
41