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