Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S938736AbcLTTN3 (ORCPT ); Tue, 20 Dec 2016 14:13:29 -0500 Received: from mail-eopbgr10104.outbound.protection.outlook.com ([40.107.1.104]:14991 "EHLO EUR02-HE1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S964860AbcLTTMc (ORCPT ); Tue, 20 Dec 2016 14:12:32 -0500 X-Greylist: delayed 11715 seconds by postgrey-1.27 at vger.kernel.org; Tue, 20 Dec 2016 14:12:14 EST Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=rkagan@virtuozzo.com; From: Roman Kagan To: Paolo Bonzini , =?UTF-8?q?Radim=20Kr=C4=8Dm=C3=A1=C5=99?= , "K. Y. Srinivasan" , Vitaly Kuznetsov CC: Thomas Gleixner , Ingo Molnar , "H. Peter Anvin" , , Haiyang Zhang , , , , "Denis V . Lunev" , Roman Kagan Subject: [PATCH 10/15] hyperv: uapi-fy PostMessage and SignalEvent hypercall structures Date: Tue, 20 Dec 2016 18:55:57 +0300 Message-ID: <20161220155602.6298-11-rkagan@virtuozzo.com> X-Mailer: git-send-email 2.9.3 In-Reply-To: <20161220155602.6298-1-rkagan@virtuozzo.com> References: <20161220155602.6298-1-rkagan@virtuozzo.com> MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [195.214.232.10] X-ClientProxiedBy: AM4PR01CA0030.eurprd01.prod.exchangelabs.com (10.164.74.168) To VI1PR0802MB2478.eurprd08.prod.outlook.com (10.175.26.21) X-MS-Office365-Filtering-Correlation-Id: aae301b2-de52-436f-b54a-08d428f0d143 X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001);SRVR:VI1PR0802MB2478; X-Microsoft-Exchange-Diagnostics: 1;VI1PR0802MB2478;3:D8NtTaXtPqPLJqDCx4qrhM2HjBLg9FofYfS/aFsxvlMAdnz5NqLjozamRV8BM+xq2ZLIYITbx3Yh9y5Li3ZjpzYTL00onCvneBuXbkCNLwseYoJSK/2AtO3UrIuU5fN/AEAxmRaNIn0lq3UaxPXJEFCP0qvSEgNcFtSmxJyErWTZsG4y0psvcWVP4mcUN281iZ7MZ0j+HY6PeQAZR7X1VLp07yhtuHX/iU6wiwC2m5Kbd6v/D7bpDw4huwbpJu1CkmoUn91SoF4naYxe6PL1Fg== X-Microsoft-Exchange-Diagnostics: 1;VI1PR0802MB2478;25:g63er/j0rlWthBzQ38oAIe5zW9w+ruPDLeT9FnMBlsf/jqWxSipD+v32eNdvtGKw1C+4nnGG2pn41eyQux0mNRzjuowF97qxNOnVVUkzAiPtsGW2uKbvBDBtKksOewIn9xNz9AxVfL63J12ip96YaDi14R60LZr0+zPmMx0O5+gNxlY86wi00JYjKOyVB346k7X3/X8l5h4KrmeSttzU7uzRctQVB82bzp4rWVvuBP0uF/YTrOwtZVgqtYfS/4jDJFi597p8LZ+g/BC0fuFRIrhW+JIR0iOiJx4YMAk89RfBehsMsRzRH9LFbjqjzIA1UxQVucm4KwrEhokUQXF0RwTGbblpCPSnIdOFdTIQLejFpIXmuGsKNCryeKbLILZl14sSR5gl++IoWBcsUNAvmB1g/8fCN2wuSV+/Z26Ni3ecWHn9hKrqVzdLGLvDsZdi78AjaKk3nqy5SbFoFTZss29TRXR5J8yEgk4u5aOwindD0fktq50F0fcjNNDEJRfOo/qbp0Nucwa5rQqKp2iaaP5wYOlGgzcnLkXd8cuRtcL6vFv6azjZBqZMKYRRTsjzw4pVCN7jtKQg+bqRWz+WpwZEWkOI2BqmJDZexgwZqXJZ7NZPBkRDVYhAxP+CTzs/UeyabVNbVjoAKn3PGYayZWx056pWCpsVZU9hwFUIFb+936eiB82DQOj8gB/XPyRC+fYm0dlL51NuQBruyhanjYe+KEdopMADw1G8Y0J7D1hgdyZq/09Tu+hjjrTi2/XAE73EVRoBjXyBJE1F/oLGbA== X-Microsoft-Exchange-Diagnostics: 1;VI1PR0802MB2478;31:3PGlFVnmvVfjc6VGlUTLDKjY5NGRrIQVoK/xm70I77xYRdfO4yFfu8EZRxp3vglHci1SPRlCSxen1qZg/jeN3+rUhjHSbOEx//tmEHyPFKKYxG2Bw7XXOkI9fvNkSVBL+HSFPFMcKFFErwyBpAfoYSSCReDWPzFGnM5qs8mNfuwhXApsGY8lhEXNL++0zpkgtQbNdz1IO87D+WvYo5OP9x39XxDX0gLnLmWieHi9/T5lpUh4T9hm6UR+f7tY/wno;20:XsggF337GBF7OYUf3L5qKrQJwryN3vUX069LW1cWmBbR6JLQ+FoGE7niSeLNfPRw67Btu3dVRLEOhaqk3+vy5s3l3Z/jl3Sf4txY+WsJoQ1gtU/itxb+JUZ0CK12A1pMgJS50dsXVdZWZEfiul1QMxO4WgARzy767oeE1OVzvLtzoIA2H4a/jvwyMTX7OoKVUINtJfCOnspbNKj6rBRQ8tHwlIqj7yZ/T5+o+1ud0EBDjtpKDlUyIhrVZTzd0VnR X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(211171220733660); X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(6040375)(601004)(2401047)(8121501046)(5005006)(10201501046)(3002001)(6041248)(20161123564025)(20161123555025)(20161123560025)(20161123558021)(20161123562025)(6072148);SRVR:VI1PR0802MB2478;BCL:0;PCL:0;RULEID:;SRVR:VI1PR0802MB2478; X-Microsoft-Exchange-Diagnostics: 1;VI1PR0802MB2478;4:F6QoVnDDpYyEw0aSYI28NxziZr80FYr0A/l/iRWz5lZTZbO6GQ8GepYbthK3BfXQiEECHAU5w5TVK3PrIZu9amHPrg0aOC2yeoMay/KNN9H/je4wQHMpfMlQggEWxNDuo755IPl/87szbG5Jh2cQuTIaYh2jii72s5MbKEldjWteD1qneI9frukHThy6QV5HIRi3d8/wQ0Igc9e97/S+hXhNBSNjRY06cf96d2a9qBjh7qhDPXMvHaVXY4oU/Z6RpAXx70YTSGP2wjr2XiZq9uq8osSxxLGulnKZYsM9S2vVEPe7HfoFlo1ZjsQedFJdgLOfdPI0zG6odTveovIEEtAHKMSXG1Tin9xLNtWD15tD9i8pmXivze9YqBUALAD1GnPUV3nlYAq9kBDcs/J/2VM81LSoEhKqOGOfZ209GlXEG44erAFUQk9DFcjlo1FpAsDProNiaJu5DzZkg67IlGJiXMlqZ/6KS6DeeBYm0sOfR+g9tr+kfKCsstIaxJFntpMLtljjVpW8ayP6y8UqXQhRpnsz8Fs+VQ7JhUUmqyi+AwkHFEmJ3cU8Nz9bAsWwoJB6+HLcTvpKp6JtIte+oOrtHoNtnuKGdFjWTIez/0dgiXEGW91lQsBRGgKSrGZ4b0XoeM/AcrzzJNfY9x4g9Q== X-Forefront-PRVS: 0162ACCC24 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10019020)(4630300001)(6009001)(7916002)(39450400003)(199003)(189002)(97736004)(189998001)(101416001)(5001770100001)(4001430100002)(5003940100001)(36756003)(81166006)(47776003)(50986999)(66066001)(1511001)(2950100002)(50466002)(76176999)(5660300001)(81156014)(2906002)(8666005)(305945005)(69596002)(48376002)(7736002)(92566002)(7416002)(106356001)(53416004)(25786008)(6116002)(105586002)(6486002)(2421001)(6506006)(1076002)(3846002)(86362001)(4326007)(68736007)(8676002)(50226002)(42186005)(107886002)(2561002)(38730400001)(6512006)(33646002);DIR:OUT;SFP:1102;SCL:1;SRVR:VI1PR0802MB2478;H:rkaganb.sw.ru;FPR:;SPF:None;PTR:InfoNoRecords;A:1;MX:1;LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;VI1PR0802MB2478;23:3YI2jAzQaEB57TaW94G4K1Cs+d27ermpiZX1y5g?= =?us-ascii?Q?O5bnMYgaug3Feayczi5TGICDrZrH2Yo7ETApu7mIKEfr+VbbIsgryBzW68sw?= =?us-ascii?Q?bER0TEYQZctB694Ij1/DrmdBcXjQyJGPfa04oJm0MNhhJ3jQ5CoZTcdyUTgR?= =?us-ascii?Q?RjjC3biiOhwGn6ES1XbfwJX/ik6cI8q+vJ2Vg7x9RbGIzlAyVpmKdjnfrHYG?= =?us-ascii?Q?BcEGZOb5yx7FuRUzzZkeMW4OGZKeYFn70HO3OKzPg7Y7LwNn+rY9aCRXafqz?= =?us-ascii?Q?imogCxUzR6xw6wDrC0MngB6zHJgNti1c22z90jI1iA8bdJ2Wsmye4DhpuXIz?= =?us-ascii?Q?i4IdiLuHvumPC02ZU6s3LYK5cuC15qSOs2xi9JniIl97ZoxPRmkf7vqqnRdI?= =?us-ascii?Q?9JX0bVnovThhCfbhT2aWHI6iL/pTU36IgTrO3BooxhyoWvEeQRs8MFzSz/+v?= =?us-ascii?Q?sYE/Nd6PIto8shHuSB3loCopFbJR9PkiS1VlN31avlr8A/6W4LYF3d0UrD3C?= =?us-ascii?Q?ANVyLfoLUjkLEh4XaURr6Q+Nv5jAESYDYOOUKaO4ccXzje0KxmS7U3vtKqIj?= =?us-ascii?Q?4CJoTcAEEaycrINGKeG6x3H23qG5vKpXz3FOhUIRfiIXIJxKKx0gkk66jnTj?= =?us-ascii?Q?szDoZFVOeG2eE8kczZQvf3vER2z1pDtotbXL8X4FOjNi/kDpBY4yz5Lpyhc9?= =?us-ascii?Q?w4I+b5OctVvt830ehS+KbHAJ9hpRvaaqtdDt9A7Iym6+N9mx29xhqDrLN6iZ?= =?us-ascii?Q?VW0lbLl27qPhjEnd5EsK61iuUjRXgMVdF2qJ8nDVofSAe9xGNO+Aq5IeHVGD?= =?us-ascii?Q?ou2DQnKVX5/iq+WlHV1pScmnmY3PpFWlZNESThpuywMMOBbaUWb0hrPigxDn?= =?us-ascii?Q?ZCw4o6NzUybzXSvlC/ZaIS8bZJb1v2yh4KzyZxVUwttg2VXI2GqJSXKZuYFo?= =?us-ascii?Q?HQM77SonAQYI8AHFtYrMTuudjwfI5DHzNkEMXz6QLk8zz9D3+4SAjOZ7228c?= =?us-ascii?Q?kzNy79fwAHvKRNSAi98qGnUe2pEQaV7ZFYrZB7amS2uW/1k5OFICKnIeZnRQ?= =?us-ascii?Q?76idrv6JOL8AMnvAC1VE+a02AzQ+IlHhS55+Yj/nSt/sz6Z4b7D4+kzCr5NC?= =?us-ascii?Q?zpejpgMWUCHJ+a6ZHMvhI8tPfmElg/6QHOHXz0nxal23ipePWBclLcNGESdY?= =?us-ascii?Q?3jBB6Yd1JnfBBOTyCe/X6ku4GgxvmEnWy3Pv0Ozxh+bw/0ZlP0jk69/Fqm40?= =?us-ascii?Q?dS3nkrI5Edv1v/Gd0kO0=3D?= X-Microsoft-Exchange-Diagnostics: 1;VI1PR0802MB2478;6:vW93hTuViIN/24vmfV9kBRFYduPLfkgH80BbsfYn2kRycnX6BQbZJodobXPZEEuLa7dDKUhhJEZcPzlyPcJy+uBOT95ugPqN23YZCiqFKdJKpeJzRPf9xrEjKHVL1LErdZXwKZBPI9AVgLK5ghcE3c1e4Yb9S6l6rq8mG7xkLcLqkzBOgfBUrdKQ1dVMmLi+uRc+WVpWXRjciQ3fYW5y99WFaKnzc3ryNikfmefxbTXIC2MwJqx0Gj54b67na9maPd/anhe9cFiVoU/uhwazmd6R63heitYQ3YINC7rivs7PetkiWSiWTMLmVTQvdtY7qM9+yoLlEVqKQ7CBpXUA27Dk2hlabISoYGan3xdSpBlFh6+qu6kte/zpjv+vahLZllZ6fn1y8AY/qIJPxJUUdt+hOGuYw+DhrQoZIHL46Lo=;5:b1XgvzcNKNQXN2FH+PGq6BPKrB7UegPNudDudcXVFiSgUWl1i8OFiArEr2dP6YlJkAmhHFPifVDgW7jkOO+lylYd6fbhIzOxBL6iLZTrCfLAp9RxIjI/9KniiDjQOoBuY0Nj8CiVsvg9UVLWniXUNTYx927jhL6KNHWHm/gp2oA=;24:0Viih4fisFlyyjAMGne523xB7s+7ONIor/M8mkTCLCOBbY42wAGqSRVkyar/N3RDSQDot0Eu/DdKaT95JBJGrZvZT3Y20fbxEuHEQkzUSsg= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;VI1PR0802MB2478;7:UVFz7f6AA1nFLXSXozYPtjKwvyJYkjbL4ALop2JpLl0oEMja8BHX75jLzKCj3J7ioWB5UbL+qokUjDlEpeVRowj1Va81zGRE0VGaZjiC7mMSyFxnhWuMBXNodckehr1n6cZpkGu7umVsZq9uSrpTMk7dZkgwHek1uAL/WryVoHo5TSqKBcHBIIdnMcdZrMaAWkVR56FjR7UNwxTItVeSTgTiqHbYwS+2vrPSI0hJlI0iL2eRil5XUndVZfgSMKLNl5UZZqHEccxLFF+59gAPYhRt655BhmVWrDf5csNk/RFYPCBBgsbjaWY5QbxJ37M5YJufNn51mJZcJJPhPb2dYy8ftE0pCjXxVSPTLdg5myx8viopRjeAKJAJzx0VcpSsWp5seK3Zm49i8dok0+fzDCEfmBRDnraaqJpveliH3Qk1cU+G0hZA1Z4iMjDn/7bME3vdIY0lAf4wiVHJD0NiXQ==;20:yaJ/J+wJ0yCJE5uOdU6sIyPhVQFbb5MRoZDqk9zWdgnMutfwNzHV+CoEvJLCagEPedx12MDIiGP6aAIYwzAIHnbJoIm4a8/dbHkgSGRmscHOS8O1tmpHvq1xeVmLusiUB99k4Vy/RlN3y7BZ5Cn3WrU4zPxW6rqxnHaaQ3jvqfI=;23:Tu4Dnlsfig5XTbJLePrkmxGhDurGDHvdS6MMS3WM9/5GBBC0Tymyw+VKkljWWsoaw8q+3gqLUygLDNHc9+IDJzRz62urwUZbbYE1ctioe4SihMS5rw/Pb46x77br+unXSF9by65lL3OdlJW+xN7YgQ== X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Dec 2016 15:56:52.4071 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR0802MB2478 X-OriginatorOrg: virtuozzo.com Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 7083 Lines: 225 Expose structures used for PostMessage and SignalEvent hypercalls in a uapi header. While doing so, simplify alignment handling and drop unnecessary complications in the connectionid field. Signed-off-by: Roman Kagan --- arch/x86/include/uapi/asm/hyperv.h | 18 ++++++++++++++++++ drivers/hv/hyperv_vmbus.h | 16 ++-------------- include/linux/hyperv.h | 24 +----------------------- drivers/hv/channel_mgmt.c | 14 ++++---------- drivers/hv/connection.c | 9 +++------ drivers/hv/hv.c | 2 +- drivers/hv/vmbus_drv.c | 2 +- 7 files changed, 30 insertions(+), 55 deletions(-) diff --git a/arch/x86/include/uapi/asm/hyperv.h b/arch/x86/include/uapi/asm/hyperv.h index 749fbb25..eb8d42a 100644 --- a/arch/x86/include/uapi/asm/hyperv.h +++ b/arch/x86/include/uapi/asm/hyperv.h @@ -378,4 +378,22 @@ struct hv_synic_event_flags_page { struct hv_synic_event_flags sintevent_flags[HV_SYNIC_SINT_COUNT]; }; +#define HV_HYPERCALL_PARAM_ALIGN 8 + +/* Definition of the hv_post_message hypercall input structure. */ +struct hv_input_post_message { + __u32 connectionid; + __u32 reserved; + __u32 message_type; + __u32 payload_size; + __u64 payload[HV_MESSAGE_PAYLOAD_BYTE_COUNT]; +} __attribute__((aligned(HV_HYPERCALL_PARAM_ALIGN))); + +/* Definition of the hv_signal_event hypercall input structure. */ +struct hv_input_signal_event { + __u32 connectionid; + __u16 flag_number; + __u16 rsvdz; +} __attribute__((aligned(HV_HYPERCALL_PARAM_ALIGN))); + #endif diff --git a/drivers/hv/hyperv_vmbus.h b/drivers/hv/hyperv_vmbus.h index ac73832..a96f021 100644 --- a/drivers/hv/hyperv_vmbus.h +++ b/drivers/hv/hyperv_vmbus.h @@ -104,7 +104,7 @@ union hv_monitor_trigger_group { }; struct hv_monitor_parameter { - union hv_connection_id connectionid; + u32 connectionid; u16 flagnumber; u16 rsvdz; }; @@ -154,15 +154,6 @@ struct hv_monitor_page { u8 rsvdz4[1984]; }; -/* Definition of the hv_post_message hypercall input structure. */ -struct hv_input_post_message { - union hv_connection_id connectionid; - u32 reserved; - u32 message_type; - u32 payload_size; - u64 payload[HV_MESSAGE_PAYLOAD_QWORD_COUNT]; -}; - /* * Versioning definitions used for guests reporting themselves to the * hypervisor, and visa versa. @@ -248,9 +239,6 @@ static inline __u64 generate_guest_id(__u8 d_info1, __u32 kernel_version, #define HV_CAPS_MAX 8 -#define HV_HYPERCALL_PARAM_ALIGN sizeof(u64) - - /* Service definitions */ #define HV_SERVICE_PARENT_PORT (0) @@ -351,7 +339,7 @@ extern int hv_init(void); extern void hv_cleanup(bool crash); -extern int hv_post_message(union hv_connection_id connection_id, +extern int hv_post_message(u32 connection_id, enum hv_message_type message_type, void *payload, size_t payload_size); diff --git a/include/linux/hyperv.h b/include/linux/hyperv.h index 42fe43f..e92446e 100644 --- a/include/linux/hyperv.h +++ b/include/linux/hyperv.h @@ -648,27 +648,6 @@ struct vmbus_close_msg { struct vmbus_channel_close_channel msg; }; -/* Define connection identifier type. */ -union hv_connection_id { - u32 asu32; - struct { - u32 id:24; - u32 reserved:8; - } u; -}; - -/* Definition of the hv_signal_event hypercall input structure. */ -struct hv_input_signal_event { - union hv_connection_id connectionid; - u16 flag_number; - u16 rsvdz; -}; - -struct hv_input_signal_event_buffer { - u64 align8; - struct hv_input_signal_event event; -}; - enum hv_signal_policy { HV_SIGNAL_POLICY_DEFAULT = 0, HV_SIGNAL_POLICY_EXPLICIT, @@ -755,8 +734,7 @@ struct vmbus_channel { bool batched_reading; bool is_dedicated_interrupt; - struct hv_input_signal_event_buffer sig_buf; - struct hv_input_signal_event *sig_event; + struct hv_input_signal_event sig_event; /* * Starting with win8, this field will be used to specify diff --git a/drivers/hv/channel_mgmt.c b/drivers/hv/channel_mgmt.c index 49eaae2..4a5cc11 100644 --- a/drivers/hv/channel_mgmt.c +++ b/drivers/hv/channel_mgmt.c @@ -766,20 +766,14 @@ static void vmbus_onoffer(struct vmbus_channel_message_header *hdr) /* * Setup state for signalling the host. */ - newchannel->sig_event = (struct hv_input_signal_event *) - (ALIGN((unsigned long) - &newchannel->sig_buf, - HV_HYPERCALL_PARAM_ALIGN)); - - newchannel->sig_event->connectionid.asu32 = 0; - newchannel->sig_event->connectionid.u.id = VMBUS_EVENT_CONNECTION_ID; - newchannel->sig_event->flag_number = 0; - newchannel->sig_event->rsvdz = 0; + newchannel->sig_event.connectionid = VMBUS_EVENT_CONNECTION_ID; + newchannel->sig_event.flag_number = 0; + newchannel->sig_event.rsvdz = 0; if (vmbus_proto_version != VERSION_WS2008) { newchannel->is_dedicated_interrupt = (offer->is_dedicated_interrupt != 0); - newchannel->sig_event->connectionid.u.id = + newchannel->sig_event.connectionid = offer->connection_id; } diff --git a/drivers/hv/connection.c b/drivers/hv/connection.c index d38b27f..16ae977 100644 --- a/drivers/hv/connection.c +++ b/drivers/hv/connection.c @@ -418,21 +418,18 @@ void vmbus_on_event(unsigned long data) */ int vmbus_post_msg(void *buffer, size_t buflen) { - union hv_connection_id conn_id; int ret = 0; int retries = 0; u32 usec = 1; - conn_id.asu32 = 0; - conn_id.u.id = VMBUS_MESSAGE_CONNECTION_ID; - /* * hv_post_message() can have transient failures because of * insufficient resources. Retry the operation a couple of * times before giving up. */ while (retries < 20) { - ret = hv_post_message(conn_id, HVMSG_VMBUS, buffer, buflen); + ret = hv_post_message(VMBUS_MESSAGE_CONNECTION_ID, HVMSG_VMBUS, + buffer, buflen); switch (ret) { case HV_STATUS_INVALID_CONNECTION_ID: @@ -472,6 +469,6 @@ void vmbus_set_event(struct vmbus_channel *channel) set_bit(child_relid, (unsigned long *)vmbus_connection.send_int_page); - hv_do_hypercall(HVCALL_SIGNAL_EVENT, channel->sig_event, NULL); + hv_do_hypercall(HVCALL_SIGNAL_EVENT, &channel->sig_event, NULL); } EXPORT_SYMBOL_GPL(vmbus_set_event); diff --git a/drivers/hv/hv.c b/drivers/hv/hv.c index 7d2a3d1..b9f50de 100644 --- a/drivers/hv/hv.c +++ b/drivers/hv/hv.c @@ -297,7 +297,7 @@ void hv_cleanup(bool crash) * * This involves a hypercall. */ -int hv_post_message(union hv_connection_id connection_id, +int hv_post_message(u32 connection_id, enum hv_message_type message_type, void *payload, size_t payload_size) { diff --git a/drivers/hv/vmbus_drv.c b/drivers/hv/vmbus_drv.c index 7564a7b..f6b626b 100644 --- a/drivers/hv/vmbus_drv.c +++ b/drivers/hv/vmbus_drv.c @@ -159,7 +159,7 @@ static u32 channel_conn_id(struct vmbus_channel *channel, { u8 monitor_group = channel_monitor_group(channel); u8 monitor_offset = channel_monitor_offset(channel); - return monitor_page->parameter[monitor_group][monitor_offset].connectionid.u.id; + return monitor_page->parameter[monitor_group][monitor_offset].connectionid; } static ssize_t id_show(struct device *dev, struct device_attribute *dev_attr, -- 2.9.3