From nobody Mon Feb 9 18:44:22 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=virtuozzo.com Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1517951276345932.0346959634581; Tue, 6 Feb 2018 13:07:56 -0800 (PST) Received: from localhost ([::1]:34075 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ejAT5-000381-Dm for importer@patchew.org; Tue, 06 Feb 2018 16:07:55 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:44854) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ej9u6-00012v-SU for qemu-devel@nongnu.org; Tue, 06 Feb 2018 15:31:50 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ej9u3-0003FJ-G8 for qemu-devel@nongnu.org; Tue, 06 Feb 2018 15:31:46 -0500 Received: from mail-eopbgr00119.outbound.protection.outlook.com ([40.107.0.119]:45030 helo=EUR02-AM5-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1ej9u3-0003Ej-2w for qemu-devel@nongnu.org; Tue, 06 Feb 2018 15:31:43 -0500 Received: from rkaganb.sw.ru (195.214.232.6) by VI1PR0801MB1983.eurprd08.prod.outlook.com (2603:10a6:800:8a::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.464.11; Tue, 6 Feb 2018 20:31:39 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=virtuozzo.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=gKeZO/+MFpI62LwXQEL+qVZEPbsLAgIaxXeWUtlz0fw=; b=ENX1r97c41nrAakLjRe5olmBaG6rBoqk0Ve4N+tQSf7axAmNRF5Efii8QGHpot11t+iF5Ta0glRikmpoJJMIbGwdFvJnt2LQ3jB0hd8WUp/0hZCt9QwhtBensXiM0b5HSmvJbadltB3D2Pt/RdHqAg1URoFGA8RezGEvpIk0+cs= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=rkagan@virtuozzo.com; From: Roman Kagan To: qemu-devel@nongnu.org Date: Tue, 6 Feb 2018 23:30:33 +0300 Message-Id: <20180206203048.11096-20-rkagan@virtuozzo.com> X-Mailer: git-send-email 2.14.3 In-Reply-To: <20180206203048.11096-1-rkagan@virtuozzo.com> References: <20180206203048.11096-1-rkagan@virtuozzo.com> MIME-Version: 1.0 X-Originating-IP: [195.214.232.6] X-ClientProxiedBy: HE1PR0301CA0008.eurprd03.prod.outlook.com (2603:10a6:3:76::18) To VI1PR0801MB1983.eurprd08.prod.outlook.com (2603:10a6:800:8a::16) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: c2f39e38-9bae-448c-771e-08d56da0a10d X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(4534165)(7168020)(4627221)(201703031133081)(201702281549075)(5600026)(4604075)(2017052603307)(7153060)(7193020); SRVR:VI1PR0801MB1983; X-Microsoft-Exchange-Diagnostics: 1; VI1PR0801MB1983; 3:uwV3tGnuZmKwcRfeROKTZQRCwcJ0Da29z49Y3bewIfk8n3EbKjgP7sO6SoLGI31Cr2WYFtSY8ZK8p86+izzSH9rxo1JGf+CNJsgQImL1oD9xn0AMi80yauTuenpCKWIiTFGNLG1I6JX5lRqYeIr5BjM8Cw68cAHSKOKA8OIGVCLqvuW/pBcbYgoN1P7jdjCAfDIpKfi1nn99SzUoAGsGgyWqWK5x2hg40GBrlK4cjfFFs7xJ77EZmfYXWob4hyxl; 25:lhjU/O1NHf8vjZHqQRqgR74svth+zE2Q7n21gHv2nH+sBKaEogXtqBHDXau1nrd3TC+cjqhgL7KlFFwudLwCN0i98OQ9t4LU82XOapOl9uFc6IlQYiezA0hrZW4/BRcGDdUqTGXvOzdEti3TkjbnV/it2k3+Tux7QVmE8CMl3AJe4qmMHSKXZ0DLXE36praEKsNVfN6Gr9xRAnlAHAJGHjt9Vi0mbKQjKD8D5HxnC1MmeRXZb5R/Ojr6TvaZCAHB5bGer1V3tPnVI2d1oCHyHwZLqRgnNYyRSoj0D/eWB/53yT9Bf+msU4ZMqBPJnC6vUPLNacz8jFodUXwo0hzwpQ==; 31:5O9/QeCnZ1SRtY8qAEI2ar0Mc2HRW12npFTKEb0I3BRj6Lwe/g+NgHVbNYhNSqWTm2g6BnrMGztj9GfJtHOzEBk7R/4o8BijqPwD+Xdu/Gp+BcxIMFt4SETRi5xbhfd5RPGbWCvyucJU1eVf+MRDzjwrhELokc7Vd8eAOhdg5qV6XRQu7MQqyNoxnsEKlsteoySSKUveR381sYMYkuRwSZHlxmOuB2w0kKpIoHNLkXg= X-MS-TrafficTypeDiagnostic: VI1PR0801MB1983: X-Microsoft-Exchange-Diagnostics: 1; VI1PR0801MB1983; 20:2meZa8O0XHLRA9mdgl3pAEItthPTU+N0T9Qd0efCa/8ELrj+VvbV7Le7zjHjoXFPy9oYXzfT33sEC+4lzWaHvGe8FGKtIjSpCjdW7GCasFjhbG6XBvbXgRS+3wBNM/8LZbv5T7HIrUEsLeeDP5Yfcz0BdrmHx9S95CFJGCr56YYoY4Io1kCjEc4YBqEh4Dwvt/igiOSviO3wg3c3CUQa72rruHRubZ//6KtXO7QEGQZz5D7VNDvXU/zN9/t/ce41D5Wn97sm2xjRfUom/Fph/I2IgNXn6xy+ZC43hk90C03xJw44rXmCFQqC5thGH6OUOQcnhHeouerbhup4Le2Ew6joiMV0YqXKPAEHDaZG7Plu8+sKj3zWGoxfMDeKCxvkgMAYyduH97Ro73CEHPV7VCZ4Hx+14MdZVD0DVoSGc+s=; 4:mAc5Tqwcow6mCjm/sFhE1wZtcwLf3J5YatxZjedjroEpZr0d8gilQDC6I8GadFrXQjio8E1cHkDu6HjOJHaqGcDrPnsT9sH49Um3T02RvD0WHKf8kh+s72Jwt9nEYHhVnbPFyeLccnbw37pYYWIMNFgj3mpCIRfnW//6fWtVUgZdJNPPJcQJqCxVFTZVbahyOFuJkF1ew7HXbB/Lp3vumren0L3Vxr7q6Mb1HdP4xqOmpbxNHN67vc9CDmmjsr2PjPYJ8HdmI3oerD8qfIpgaw== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040501)(2401047)(5005006)(8121501046)(3002001)(93006095)(93001095)(3231101)(2400082)(944501161)(10201501046)(6041288)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123558120)(20161123564045)(20161123562045)(20161123560045)(6072148)(201708071742011); SRVR:VI1PR0801MB1983; BCL:0; PCL:0; RULEID:; SRVR:VI1PR0801MB1983; X-Forefront-PRVS: 0575F81B58 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10019020)(396003)(366004)(376002)(39380400002)(39850400004)(346002)(189003)(199004)(16586007)(53936002)(305945005)(54906003)(7736002)(3846002)(316002)(105586002)(2361001)(106356001)(2351001)(6116002)(1076002)(50226002)(8936002)(81156014)(5660300001)(8676002)(81166006)(7416002)(2950100002)(6666003)(551934003)(6916009)(76176011)(86362001)(68736007)(66066001)(16526019)(47776003)(50466002)(4326008)(97736004)(26005)(6512007)(51416003)(2906002)(52116002)(386003)(6506007)(59450400001)(48376002)(55236004)(36756003)(53416004)(69596002)(6486002)(478600001)(186003)(25786009)(217873001); DIR:OUT; SFP:1102; SCL:1; SRVR:VI1PR0801MB1983; H:rkaganb.sw.ru; FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A:1; LANG:en; Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: None (protection.outlook.com: virtuozzo.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; VI1PR0801MB1983; 23:Ze2dUCVwSvEx5mF9baZeBJsKOy06Fd+tHIfTZT8?= =?us-ascii?Q?H4/2+5BcVREI9pIgKUnk+/oe0nO/FEag3QPI+N2E3jCn3JCcTOnSyoI6tDha?= =?us-ascii?Q?CGkr5CoyiQYXTLuPf6TzGy5WiJQfh7HDTtWn8vX2RIMhuo0R/YmGsMbvV6rU?= =?us-ascii?Q?GV9J3gJQeqjB2nXPV0oF7JLQVnV3KcP/49Vu30r/NH5zWvDj85ZrdvXzZh1R?= =?us-ascii?Q?lCIExzblar9YZPTTz2DSVDRvbkH6Pxucf+74QQQDSK/66/x0BcXWIQzfEaCv?= =?us-ascii?Q?R2dm4QsYK1yzRha3dWFQqaUtk1VB7fQX5Yz/8muaQl2E4fsDJQlxFiTpmE2p?= =?us-ascii?Q?mBV7yDgfHrmNa1VVVSOQ+C0g3ehAjF2ZOI1COTcOZD0KdrMyiHtS18V8RCb0?= =?us-ascii?Q?bnJnKWSijfv+vnjGuhKSd3GrQ8+Lf0sFckl0MeXXFrF8vLfOHYmM0Vgc0mSl?= =?us-ascii?Q?z3nb+VyIEccQG/xtubNgKtNEpEdS4oFvXqGlb5xRRRdtNdnNYbw8zpB+XZLu?= =?us-ascii?Q?j4ruPWk7Lm3L4i94xi4FGLt5FSn6PMx/hqioIN2nVP+6gOhle62rSSfwtGEL?= =?us-ascii?Q?R/hEVltB0Uwh+ztdbkisLhqf8BHwt8CtWWwHW//aXy4VNzf1Yg8RLwQILv2d?= =?us-ascii?Q?xqoZbHG3ghjikqhSv8fTtdMjXvDqXC8p6G8XgkR6EJ2uJ/wWmS/l930A/kYv?= =?us-ascii?Q?oliID5N71OOJZVzmmVbIQOkkkosMf9s5wEH/sElUWu+/O9Zi/WZ3ok59H65I?= =?us-ascii?Q?z6wdeUq0fs5jl4sObr4nzbYkWwgPIfetq8CJqr1wF/LRwBrkfrQ157HMUKpU?= =?us-ascii?Q?KBCyl1W8d2A/RvLUTjQaW+P77/h5bjbBq8uQRc/ziQWOw0cbGtztrtUA2Bv6?= =?us-ascii?Q?vg4R2mnKDJAlAb/wWUOWUC0bdp+CA3WRCjbGKJkDBM75f1b4pmjrjei92wzf?= =?us-ascii?Q?5waKWAv861grq17r3dh+IY48rG1jyuloPbz50jXbixqNaX7bFTKA5OEnN98b?= =?us-ascii?Q?h8p97Ufj1CGj9qQZuvEKlxQXwM5kzr99kuytFP5R4PXtDkQUneIvCIKbY+/y?= =?us-ascii?Q?QKNpTujR50EFyZ7N7ae2vMDxsLS8hIJk8uFdPfaG3HUU41yXCLbelJol8EdS?= =?us-ascii?Q?4K7hHq82EnD8YUmBKjc2M6ihqjTqkXCbO1LhJnSquMWBOKgGZXPAxf+x6A+Z?= =?us-ascii?Q?zQ2HFkyiq44Vi3czyh6KZqoDQlGXKnV/+oJjteNWQjVFpdXuZ0VbRJM63r0S?= =?us-ascii?Q?pc4Dv9aKswXiDxV9m/I4TBNi5lqoXy4pEtBAJwtFVK3UDPf8D3qsI+2FfSW6?= =?us-ascii?Q?qzcGIhylRRXMStbh5dAfdOH3AyVY6wYDe2pkbd7CtzofL?= X-Microsoft-Exchange-Diagnostics: 1; VI1PR0801MB1983; 6:OifL3WlYkh+8sUHuTFWC4O9aDFq7AmwOR0O+k2ZBTv9NO1FfxbjB5tGeb6sd6BnYgbCj0Znoy/cdFSCNU0H7mvV1F4mll5dQtAkM60J4x3NalRSWpfyVXpdQVpKx/ahgMXwjrxxS0YI+mLhfJEqnBP1nmGB/b+W3UDHjcHBwlkrUzDvwbraGedizg8iAAh07AUhq1GrnbDjWKS4v3/kwNpnMIjYejcZpAl/WpxJ4R49RGDhQrVv4bc/bK2aTVj6bzXCymLrZNM1Y8891KjowpDzAxYSf+gmfEMCs6JKFpkbWYwE7ajaVvNrICdI4J4vJs2cfNEFkFRY96GvO7v4YxmhGY3FKuax/FO8kw8Dt1dA=; 5:j3wd+V51vdM3f77ERXkEXW3lZpSOAK8i3m1pC63+y8aLBVjnaYsjsLxrT7gW/nZ0icCtFs6T7U1QRXpgbJbvrKpfqXkGv/zqRNG6yOelwIsspRxB5lS/R4Dn4TAnjcn1wQbr87kGMCSK5v55HG+MvXhEjkwSn53tROu+kJHKGA8=; 24:F00cUIjmHzg045FNG6k1gWeKD+t5Vt2qtXb1xMJuoTxvao1YByo0To9j4mrIpuXchixOpXJsGvK2Ww/qyviJjUUi7dNe/DqhDaF7TV+aVHw=; 7:KwQTTv9t6s4lpl0vTgnzFfoVHWnucX2mbXiPD1JWhfvQc5iACkTZeiD6k2Q3Ygo8uEDC3EtTqliPatjkayIlO4O0TUX4jA/QlFEJm1Qelg11+INdqtQbboI17b/wztZ+EFynjKfhlWM/EsPKgVFwEx4gzWO2muu2/O9XVfmqM5e8eEu8UwYxWQy67UMkIX7pDlKvE8I5tCHrEL0+DY3OgMQHzyVXhyb/0bxG5O/Ha9Y67JZ2ClXAXQMwbzxVj6vG SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; VI1PR0801MB1983; 20:lVvofNIYLK6QigqWNpysNFlsg/INPFzcb4W/QjuUbv7LHBzAdjBJCq67RzkeznsxBM2niqt5gE1x6+Zdq1mN5NCN6Zu2L3GQdpqr3mk3FAomrrMckFNzA73em0VT+ydO8skHUI8WvpanMw7+qhDxLC0xsbF5tiFE0BO7R7sKbQg= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 06 Feb 2018 20:31:39.7627 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: c2f39e38-9bae-448c-771e-08d56da0a10d X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 0bc7f26d-0264-416e-a6fc-8352af79c58f X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR0801MB1983 X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 [fuzzy] X-Received-From: 40.107.0.119 Subject: [Qemu-devel] [RFC PATCH 19/34] vmbus: add vmbus protocol definitions X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Ben Warren , Konrad Rzeszutek Wilk , Krish Sadhukhan , "Marcos E. Matsunaga" , Jan Dakinevich , Vadim Rozenfeld , "Denis V. Lunev" , si-wei liu , Paolo Bonzini , Vitaly Kuznetsov , Cathy Avery Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Add a header with data structures and constants used in Hyper-V VMBus hypervisor <-> guest interactions. Based on the respective stuff from Linux kernel. Signed-off-by: Roman Kagan --- include/hw/vmbus/vmbus-proto.h | 222 +++++++++++++++++++++++++++++++++++++= ++++ 1 file changed, 222 insertions(+) create mode 100644 include/hw/vmbus/vmbus-proto.h diff --git a/include/hw/vmbus/vmbus-proto.h b/include/hw/vmbus/vmbus-proto.h new file mode 100644 index 0000000000..1a60309650 --- /dev/null +++ b/include/hw/vmbus/vmbus-proto.h @@ -0,0 +1,222 @@ +/* + * QEMU Hyper-V VMBus support + * + * Copyright (c) 2017-2018 Virtuozzo International GmbH. + * + * This work is licensed under the terms of the GNU GPL, version 2 or late= r. + * See the COPYING file in the top-level directory. + */ + +#ifndef _INCLUDE_HYPERV_VMBUS_H_ +#define _INCLUDE_HYPERV_VMBUS_H_ + +#define VMBUS_VERSION_WS2008 ((0 << 16) | (13)) +#define VMBUS_VERSION_WIN7 ((1 << 16) | (1)) +#define VMBUS_VERSION_WIN8 ((2 << 16) | (4)) +#define VMBUS_VERSION_WIN8_1 ((3 << 16) | (0)) +#define VMBUS_VERSION_WIN10 ((4 << 16) | (0)) +#define VMBUS_VERSION_INVAL -1 +#define VMBUS_VERSION_CURRENT VMBUS_VERSION_WIN10 + +#define VMBUS_MESSAGE_CONNECTION_ID 1 +#define VMBUS_EVENT_CONNECTION_ID 2 +#define VMBUS_MONITOR_CONNECTION_ID 3 +#define VMBUS_SINT 2 + +#define VMBUS_MSG_INVALID 0 +#define VMBUS_MSG_OFFERCHANNEL 1 +#define VMBUS_MSG_RESCIND_CHANNELOFFER 2 +#define VMBUS_MSG_REQUESTOFFERS 3 +#define VMBUS_MSG_ALLOFFERS_DELIVERED 4 +#define VMBUS_MSG_OPENCHANNEL 5 +#define VMBUS_MSG_OPENCHANNEL_RESULT 6 +#define VMBUS_MSG_CLOSECHANNEL 7 +#define VMBUS_MSG_GPADL_HEADER 8 +#define VMBUS_MSG_GPADL_BODY 9 +#define VMBUS_MSG_GPADL_CREATED 10 +#define VMBUS_MSG_GPADL_TEARDOWN 11 +#define VMBUS_MSG_GPADL_TORNDOWN 12 +#define VMBUS_MSG_RELID_RELEASED 13 +#define VMBUS_MSG_INITIATE_CONTACT 14 +#define VMBUS_MSG_VERSION_RESPONSE 15 +#define VMBUS_MSG_UNLOAD 16 +#define VMBUS_MSG_UNLOAD_RESPONSE 17 +#define VMBUS_MSG_COUNT 18 + +#define VMBUS_MESSAGE_SIZE_ALIGN sizeof(uint64_t) + +#define VMBUS_PACKET_INVALID 0x0 +#define VMBUS_PACKET_SYNCH 0x1 +#define VMBUS_PACKET_ADD_XFER_PAGESET 0x2 +#define VMBUS_PACKET_RM_XFER_PAGESET 0x3 +#define VMBUS_PACKET_ESTABLISH_GPADL 0x4 +#define VMBUS_PACKET_TEARDOWN_GPADL 0x5 +#define VMBUS_PACKET_DATA_INBAND 0x6 +#define VMBUS_PACKET_DATA_USING_XFER_PAGES 0x7 +#define VMBUS_PACKET_DATA_USING_GPADL 0x8 +#define VMBUS_PACKET_DATA_USING_GPA_DIRECT 0x9 +#define VMBUS_PACKET_CANCEL_REQUEST 0xa +#define VMBUS_PACKET_COMP 0xb +#define VMBUS_PACKET_DATA_USING_ADDITIONAL_PKT 0xc +#define VMBUS_PACKET_ADDITIONAL_DATA 0xd + +#define VMBUS_CHANNEL_USER_DATA_SIZE 120 + +#define VMBUS_OFFER_MONITOR_ALLOCATED 0x1 +#define VMBUS_OFFER_INTERRUPT_DEDICATED 0x1 + +#define VMBUS_RING_BUFFER_FEAT_PENDING_SZ (1ul << 0) + +#define VMBUS_CHANNEL_ENUMERATE_DEVICE_INTERFACE 0x1 +#define VMBUS_CHANNEL_SERVER_SUPPORTS_TRANSFER_PAGES 0x2 +#define VMBUS_CHANNEL_SERVER_SUPPORTS_GPADLS 0x4 +#define VMBUS_CHANNEL_NAMED_PIPE_MODE 0x10 +#define VMBUS_CHANNEL_LOOPBACK_OFFER 0x100 +#define VMBUS_CHANNEL_PARENT_OFFER 0x200 +#define VMBUS_CHANNEL_REQUEST_MONITORED_NOTIFICATION 0x400 +#define VMBUS_CHANNEL_TLNPI_PROVIDER_OFFER 0x2000 + +#define VMBUS_PACKET_FLAG_REQUEST_COMPLETION 1 + +typedef struct vmbus_message_header { + uint32_t message_type; + uint32_t _padding; +} vmbus_message_header; + +typedef struct vmbus_message_initiate_contact { + vmbus_message_header header; + uint32_t version_requested; + uint32_t target_vcpu; + uint64_t interrupt_page; + uint64_t monitor_page1; + uint64_t monitor_page2; +} vmbus_message_initiate_contact; + +typedef struct vmbus_message_version_response { + vmbus_message_header header; + uint8_t version_supported; + uint8_t status; +} vmbus_message_version_response; + +typedef struct vmbus_message_offer_channel { + vmbus_message_header header; + uint8_t type_uuid[16]; + uint8_t instance_uuid[16]; + uint64_t _reserved1; + uint64_t _reserved2; + uint16_t channel_flags; + uint16_t mmio_size_mb; + uint8_t user_data[VMBUS_CHANNEL_USER_DATA_SIZE]; + uint16_t sub_channel_index; + uint16_t _reserved3; + uint32_t child_relid; + uint8_t monitor_id; + uint8_t monitor_flags; // VMBUS_OFFER_MONITOR_* + uint16_t interrupt_flags; // VMBUS_OFFER_INTERRUPT_* + uint32_t connection_id; +} vmbus_message_offer_channel; + +typedef struct vmbus_message_rescind_channel_offer { + vmbus_message_header header; + uint32_t child_relid; +} vmbus_message_rescind_channel_offer; + +typedef struct vmbus_gpa_range { + uint32_t byte_count; + uint32_t byte_offset; + uint64_t pfn_array[0]; +} vmbus_gpa_range; + +typedef struct vmbus_message_gpadl_header { + vmbus_message_header header; + uint32_t child_relid; + uint32_t gpadl_id; + uint16_t range_buflen; + uint16_t rangecount; + vmbus_gpa_range range; +} QEMU_PACKED vmbus_message_gpadl_header; + +typedef struct vmbus_message_gpadl_body { + vmbus_message_header header; + uint32_t message_number; + uint32_t gpadl_id; + uint64_t pfn_array[0]; +} vmbus_message_gpadl_body; + +typedef struct vmbus_message_gpadl_created { + vmbus_message_header header; + uint32_t child_relid; + uint32_t gpadl_id; + uint32_t status; +} vmbus_message_gpadl_created; + +typedef struct vmbus_message_gpadl_teardown { + vmbus_message_header header; + uint32_t child_relid; + uint32_t gpadl_id; +} vmbus_message_gpadl_teardown; + +typedef struct vmbus_message_gpadl_torndown { + vmbus_message_header header; + uint32_t gpadl_id; +} vmbus_message_gpadl_torndown; + +typedef struct vmbus_message_open_channel { + vmbus_message_header header; + uint32_t child_relid; + uint32_t open_id; + uint32_t ring_buffer_gpadl_id; + uint32_t target_vp; + uint32_t ring_buffer_offset; + uint8_t user_data[VMBUS_CHANNEL_USER_DATA_SIZE]; +} vmbus_message_open_channel; + +typedef struct vmbus_message_open_result { + vmbus_message_header header; + uint32_t child_relid; + uint32_t open_id; + uint32_t status; +} vmbus_message_open_result; + +typedef struct vmbus_message_close_channel { + vmbus_message_header header; + uint32_t child_relid; +} vmbus_message_close_channel; + +typedef struct vmbus_ring_buffer { + uint32_t write_index; + uint32_t read_index; + uint32_t interrupt_mask; + uint32_t pending_send_sz; + uint32_t _reserved1[12]; + uint32_t feature_bits; // VMBUS_RING_BUFFER_FEAT_* +} vmbus_ring_buffer; + +typedef struct vmbus_packet_hdr { + uint16_t type; + uint16_t offset_qwords; + uint16_t len_qwords; + uint16_t flags; + uint64_t transaction_id; +} vmbus_packet_hdr; + +typedef struct vmbus_pkt_gpa_direct { + uint32_t _reserved; + uint32_t rangecount; + vmbus_gpa_range range[0]; +} vmbus_pkt_gpa_direct; + +typedef struct vmbus_xferpg_range { + uint32_t byte_count; + uint32_t byte_offset; +} vmbus_xferpg_range; + +typedef struct vmbus_pkt_xferpg { + uint16_t buffer_id; + uint8_t sender_owns_set; + uint8_t _reserved; + uint32_t rangecount; + vmbus_xferpg_range range[0]; +} vmbus_pkt_xferpg; + +#endif --=20 2.14.3