vmbus_reg.h (307310) | vmbus_reg.h (307448) |
---|---|
1/*- 2 * Copyright (c) 2016 Microsoft Corp. 3 * All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions 7 * are met: 8 * 1. Redistributions of source code must retain the above copyright --- 9 unchanged lines hidden (view full) --- 18 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 19 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 20 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 21 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 22 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 23 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 24 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 25 * | 1/*- 2 * Copyright (c) 2016 Microsoft Corp. 3 * All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions 7 * are met: 8 * 1. Redistributions of source code must retain the above copyright --- 9 unchanged lines hidden (view full) --- 18 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 19 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 20 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 21 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 22 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 23 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 24 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 25 * |
26 * $FreeBSD: stable/11/sys/dev/hyperv/vmbus/vmbus_reg.h 307310 2016-10-14 09:10:41Z sephe $ | 26 * $FreeBSD: stable/11/sys/dev/hyperv/vmbus/vmbus_reg.h 307448 2016-10-17 01:47:49Z sephe $ |
27 */ 28 29#ifndef _VMBUS_REG_H_ 30#define _VMBUS_REG_H_ 31 32#include <sys/param.h> 33#include <dev/hyperv/vmbus/hyperv_reg.h> | 27 */ 28 29#ifndef _VMBUS_REG_H_ 30#define _VMBUS_REG_H_ 31 32#include <sys/param.h> 33#include <dev/hyperv/vmbus/hyperv_reg.h> |
34#include <dev/hyperv/include/hyperv.h> /* XXX for hyperv_guid */ |
|
34 35/* 36 * Hyper-V SynIC message format. 37 */ 38 39#define VMBUS_MSG_DSIZE_MAX 240 40#define VMBUS_MSG_SIZE 256 41 --- 70 unchanged lines hidden (view full) --- 112struct vmbus_gpa_range { 113 uint32_t gpa_len; 114 uint32_t gpa_ofs; 115 uint64_t gpa_page[]; 116} __packed; 117 118/* 119 * Channel messages | 35 36/* 37 * Hyper-V SynIC message format. 38 */ 39 40#define VMBUS_MSG_DSIZE_MAX 240 41#define VMBUS_MSG_SIZE 256 42 --- 70 unchanged lines hidden (view full) --- 113struct vmbus_gpa_range { 114 uint32_t gpa_len; 115 uint32_t gpa_ofs; 116 uint64_t gpa_page[]; 117} __packed; 118 119/* 120 * Channel messages |
120 * - Embedded in vmbus_message.msg_data, e.g. response. | 121 * - Embedded in vmbus_message.msg_data, e.g. response and notification. |
121 * - Embedded in hypercall_postmsg_in.hc_data, e.g. request. 122 */ 123 | 122 * - Embedded in hypercall_postmsg_in.hc_data, e.g. request. 123 */ 124 |
125#define VMBUS_CHANMSG_TYPE_CHOFFER 1 /* NOTE */ 126#define VMBUS_CHANMSG_TYPE_CHRESCIND 2 /* NOTE */ |
|
124#define VMBUS_CHANMSG_TYPE_CHREQUEST 3 /* REQ */ | 127#define VMBUS_CHANMSG_TYPE_CHREQUEST 3 /* REQ */ |
128#define VMBUS_CHANMSG_TYPE_CHOFFER_DONE 4 /* NOTE */ |
|
125#define VMBUS_CHANMSG_TYPE_CHOPEN 5 /* REQ */ 126#define VMBUS_CHANMSG_TYPE_CHOPEN_RESP 6 /* RESP */ 127#define VMBUS_CHANMSG_TYPE_CHCLOSE 7 /* REQ */ 128#define VMBUS_CHANMSG_TYPE_GPADL_CONN 8 /* REQ */ 129#define VMBUS_CHANMSG_TYPE_GPADL_SUBCONN 9 /* REQ */ 130#define VMBUS_CHANMSG_TYPE_GPADL_CONNRESP 10 /* RESP */ 131#define VMBUS_CHANMSG_TYPE_GPADL_DISCONN 11 /* REQ */ 132#define VMBUS_CHANMSG_TYPE_GPADL_DISCONNRESP 12 /* RESP */ 133#define VMBUS_CHANMSG_TYPE_CHFREE 13 /* REQ */ 134#define VMBUS_CHANMSG_TYPE_CONNECT 14 /* REQ */ 135#define VMBUS_CHANMSG_TYPE_CONNECT_RESP 15 /* RESP */ 136#define VMBUS_CHANMSG_TYPE_DISCONNECT 16 /* REQ */ | 129#define VMBUS_CHANMSG_TYPE_CHOPEN 5 /* REQ */ 130#define VMBUS_CHANMSG_TYPE_CHOPEN_RESP 6 /* RESP */ 131#define VMBUS_CHANMSG_TYPE_CHCLOSE 7 /* REQ */ 132#define VMBUS_CHANMSG_TYPE_GPADL_CONN 8 /* REQ */ 133#define VMBUS_CHANMSG_TYPE_GPADL_SUBCONN 9 /* REQ */ 134#define VMBUS_CHANMSG_TYPE_GPADL_CONNRESP 10 /* RESP */ 135#define VMBUS_CHANMSG_TYPE_GPADL_DISCONN 11 /* REQ */ 136#define VMBUS_CHANMSG_TYPE_GPADL_DISCONNRESP 12 /* RESP */ 137#define VMBUS_CHANMSG_TYPE_CHFREE 13 /* REQ */ 138#define VMBUS_CHANMSG_TYPE_CONNECT 14 /* REQ */ 139#define VMBUS_CHANMSG_TYPE_CONNECT_RESP 15 /* RESP */ 140#define VMBUS_CHANMSG_TYPE_DISCONNECT 16 /* REQ */ |
141#define VMBUS_CHANMSG_TYPE_MAX 22 |
|
137 138struct vmbus_chanmsg_hdr { 139 uint32_t chm_type; /* VMBUS_CHANMSG_TYPE_ */ 140 uint32_t chm_rsvd; 141} __packed; 142 143/* VMBUS_CHANMSG_TYPE_CONNECT */ 144struct vmbus_chanmsg_connect { --- 91 unchanged lines hidden (view full) --- 236} __packed; 237 238/* VMBUS_CHANMSG_TYPE_CHFREE */ 239struct vmbus_chanmsg_chfree { 240 struct vmbus_chanmsg_hdr chm_hdr; 241 uint32_t chm_chanid; 242} __packed; 243 | 142 143struct vmbus_chanmsg_hdr { 144 uint32_t chm_type; /* VMBUS_CHANMSG_TYPE_ */ 145 uint32_t chm_rsvd; 146} __packed; 147 148/* VMBUS_CHANMSG_TYPE_CONNECT */ 149struct vmbus_chanmsg_connect { --- 91 unchanged lines hidden (view full) --- 241} __packed; 242 243/* VMBUS_CHANMSG_TYPE_CHFREE */ 244struct vmbus_chanmsg_chfree { 245 struct vmbus_chanmsg_hdr chm_hdr; 246 uint32_t chm_chanid; 247} __packed; 248 |
249/* VMBUS_CHANMSG_TYPE_CHRESCIND */ 250struct vmbus_chanmsg_chrescind { 251 struct vmbus_chanmsg_hdr chm_hdr; 252 uint32_t chm_chanid; 253} __packed; 254 255/* VMBUS_CHANMSG_TYPE_CHOFFER */ 256struct vmbus_chanmsg_choffer { 257 struct vmbus_chanmsg_hdr chm_hdr; 258 struct hyperv_guid chm_chtype; 259 struct hyperv_guid chm_chinst; 260 uint64_t chm_chlat; /* unit: 100ns */ 261 uint32_t chm_chrev; 262 uint32_t chm_svrctx_sz; 263 uint16_t chm_chflags; 264 uint16_t chm_mmio_sz; /* unit: MB */ 265 uint8_t chm_udata[120]; 266 uint16_t chm_subidx; 267 uint16_t chm_rsvd; 268 uint32_t chm_chanid; 269 uint8_t chm_montrig; 270 uint8_t chm_flags1; /* VMBUS_CHOFFER_FLAG1_ */ 271 uint16_t chm_flags2; 272 uint32_t chm_connid; 273} __packed; 274CTASSERT(sizeof(struct vmbus_chanmsg_choffer) <= VMBUS_MSG_DSIZE_MAX); 275 276#define VMBUS_CHOFFER_FLAG1_HASMNF 0x01 277 |
|
244#endif /* !_VMBUS_REG_H_ */ | 278#endif /* !_VMBUS_REG_H_ */ |