Changeset View
Changeset View
Standalone View
Standalone View
head/sys/dev/hyperv/include/hyperv.h
Show First 20 Lines • Show All 52 Lines • ▼ Show 20 Lines | |||||
#include <vm/vm.h> | #include <vm/vm.h> | ||||
#include <vm/vm_param.h> | #include <vm/vm_param.h> | ||||
#include <vm/pmap.h> | #include <vm/pmap.h> | ||||
#include <amd64/include/xen/synch_bitops.h> | #include <amd64/include/xen/synch_bitops.h> | ||||
#include <amd64/include/atomic.h> | #include <amd64/include/atomic.h> | ||||
#include <dev/hyperv/include/hyperv_busdma.h> | #include <dev/hyperv/include/hyperv_busdma.h> | ||||
#define HV_S_OK 0x00000000 | |||||
#define HV_E_FAIL 0x80004005 | |||||
#define HV_ERROR_NOT_SUPPORTED 0x80070032 | |||||
#define HV_ERROR_MACHINE_LOCKED 0x800704F7 | |||||
/* | /* | ||||
* VMBUS version is 32 bit, upper 16 bit for major_number and lower | * VMBUS version is 32 bit, upper 16 bit for major_number and lower | ||||
* 16 bit for minor_number. | * 16 bit for minor_number. | ||||
* | * | ||||
* 0.13 -- Windows Server 2008 | * 0.13 -- Windows Server 2008 | ||||
* 1.1 -- Windows 7 | * 1.1 -- Windows 7 | ||||
* 2.4 -- Windows 8 | * 2.4 -- Windows 8 | ||||
* 3.0 -- Windows 8.1 | * 3.0 -- Windows 8.1 | ||||
*/ | */ | ||||
#define VMBUS_VERSION_WS2008 ((0 << 16) | (13)) | #define VMBUS_VERSION_WS2008 ((0 << 16) | (13)) | ||||
#define VMBUS_VERSION_WIN7 ((1 << 16) | (1)) | #define VMBUS_VERSION_WIN7 ((1 << 16) | (1)) | ||||
#define VMBUS_VERSION_WIN8 ((2 << 16) | (4)) | #define VMBUS_VERSION_WIN8 ((2 << 16) | (4)) | ||||
#define VMBUS_VERSION_WIN8_1 ((3 << 16) | (0)) | #define VMBUS_VERSION_WIN8_1 ((3 << 16) | (0)) | ||||
#define VMBUS_VERSION_MAJOR(ver) (((uint32_t)(ver)) >> 16) | #define VMBUS_VERSION_MAJOR(ver) (((uint32_t)(ver)) >> 16) | ||||
#define VMBUS_VERSION_MINOR(ver) (((uint32_t)(ver)) & 0xffff) | #define VMBUS_VERSION_MINOR(ver) (((uint32_t)(ver)) & 0xffff) | ||||
struct hyperv_guid { | struct hyperv_guid { | ||||
uint8_t hv_guid[16]; | uint8_t hv_guid[16]; | ||||
} __packed; | } __packed; | ||||
#define HYPERV_GUID_STRLEN 40 | #define HYPERV_GUID_STRLEN 40 | ||||
int hyperv_guid2str(const struct hyperv_guid *, char *, size_t); | int hyperv_guid2str(const struct hyperv_guid *, char *, size_t); | ||||
/* | |||||
* Common defines for Hyper-V ICs | |||||
*/ | |||||
#define HV_ICMSGTYPE_NEGOTIATE 0 | |||||
#define HV_ICMSGTYPE_HEARTBEAT 1 | |||||
#define HV_ICMSGTYPE_KVPEXCHANGE 2 | |||||
#define HV_ICMSGTYPE_SHUTDOWN 3 | |||||
#define HV_ICMSGTYPE_TIMESYNC 4 | |||||
#define HV_ICMSGTYPE_VSS 5 | |||||
#define HV_ICMSGHDRFLAG_TRANSACTION 1 | |||||
#define HV_ICMSGHDRFLAG_REQUEST 2 | |||||
#define HV_ICMSGHDRFLAG_RESPONSE 4 | |||||
typedef struct hv_vmbus_pipe_hdr { | |||||
uint32_t flags; | |||||
uint32_t msgsize; | |||||
} __packed hv_vmbus_pipe_hdr; | |||||
typedef struct hv_vmbus_ic_version { | |||||
uint16_t major; | |||||
uint16_t minor; | |||||
} __packed hv_vmbus_ic_version; | |||||
typedef struct hv_vmbus_icmsg_hdr { | |||||
hv_vmbus_ic_version icverframe; | |||||
uint16_t icmsgtype; | |||||
hv_vmbus_ic_version icvermsg; | |||||
uint16_t icmsgsize; | |||||
uint32_t status; | |||||
uint8_t ictransaction_id; | |||||
uint8_t icflags; | |||||
uint8_t reserved[2]; | |||||
} __packed hv_vmbus_icmsg_hdr; | |||||
typedef struct hv_vmbus_icmsg_negotiate { | |||||
uint16_t icframe_vercnt; | |||||
uint16_t icmsg_vercnt; | |||||
uint32_t reserved; | |||||
hv_vmbus_ic_version icversion_data[1]; /* any size array */ | |||||
} __packed hv_vmbus_icmsg_negotiate; | |||||
typedef struct hv_vmbus_shutdown_msg_data { | |||||
uint32_t reason_code; | |||||
uint32_t timeout_seconds; | |||||
uint32_t flags; | |||||
uint8_t display_message[2048]; | |||||
} __packed hv_vmbus_shutdown_msg_data; | |||||
typedef struct hv_vmbus_heartbeat_msg_data { | |||||
uint64_t seq_num; | |||||
uint32_t reserved[8]; | |||||
} __packed hv_vmbus_heartbeat_msg_data; | |||||
typedef struct { | typedef struct { | ||||
/* | /* | ||||
* offset in bytes from the start of ring data below | * offset in bytes from the start of ring data below | ||||
*/ | */ | ||||
volatile uint32_t write_index; | volatile uint32_t write_index; | ||||
/* | /* | ||||
* offset in bytes from the start of ring data below | * offset in bytes from the start of ring data below | ||||
▲ Show 20 Lines • Show All 132 Lines • Show Last 20 Lines |