blob: 188ddfdde2b99a099f010bb232d439f7d7881884 [file] [log] [blame]
H. Peter Anvine08cae42010-05-07 16:57:28 -07001#ifndef _ASM_X86_MSHYPER_H
2#define _ASM_X86_MSHYPER_H
Ky Srinivasana2a47c62010-05-06 12:08:41 -07003
H. Peter Anvine08cae42010-05-07 16:57:28 -07004#include <linux/types.h>
Thomas Gleixner1aec1692014-02-23 21:40:22 +00005#include <linux/interrupt.h>
H. Peter Anvine08cae42010-05-07 16:57:28 -07006#include <asm/hyperv.h>
7
8struct ms_hyperv_info {
9 u32 features;
Denis V. Lunevcc2dd402015-08-01 16:08:20 -070010 u32 misc_features;
H. Peter Anvine08cae42010-05-07 16:57:28 -070011 u32 hints;
12};
13
14extern struct ms_hyperv_info ms_hyperv;
Ky Srinivasana2a47c62010-05-06 12:08:41 -070015
K. Y. Srinivasan3f646ed2017-01-18 16:45:00 -070016/*
17 * Declare the MSR used to setup pages used to communicate with the hypervisor.
18 */
19union hv_x64_msr_hypercall_contents {
20 u64 as_uint64;
21 struct {
22 u64 enable:1;
23 u64 reserved:11;
24 u64 guest_physical_address:52;
25 };
26};
27
K. Y. Srinivasanbc2b0332013-02-03 17:22:39 -080028void hyperv_callback_vector(void);
Seiji Aguchicf910e82013-06-20 11:46:53 -040029#ifdef CONFIG_TRACING
30#define trace_hyperv_callback_vector hyperv_callback_vector
31#endif
K. Y. Srinivasanbc2b0332013-02-03 17:22:39 -080032void hyperv_vector_handler(struct pt_regs *regs);
Thomas Gleixner76d388c2014-03-05 13:42:14 +010033void hv_setup_vmbus_irq(void (*handler)(void));
34void hv_remove_vmbus_irq(void);
K. Y. Srinivasanbc2b0332013-02-03 17:22:39 -080035
Vitaly Kuznetsov25172812015-08-01 16:08:07 -070036void hv_setup_kexec_handler(void (*handler)(void));
37void hv_remove_kexec_handler(void);
Vitaly Kuznetsovb4370df2015-08-01 16:08:09 -070038void hv_setup_crash_handler(void (*handler)(struct pt_regs *regs));
39void hv_remove_crash_handler(void);
Ky Srinivasana2a47c62010-05-06 12:08:41 -070040#endif