Received: by 2002:a25:8b91:0:0:0:0:0 with SMTP id j17csp3605587ybl; Sun, 12 Jan 2020 22:34:27 -0800 (PST) X-Google-Smtp-Source: APXvYqwL6Km3Vfw5tIepNKDQoKEO03UrjH66L/Tqg9xPaeW497kgQc0KgfH/2vVUswE24LWDkGRe X-Received: by 2002:a05:6808:315:: with SMTP id i21mr10978764oie.139.1578897266978; Sun, 12 Jan 2020 22:34:26 -0800 (PST) ARC-Seal: i=2; a=rsa-sha256; t=1578897266; cv=pass; d=google.com; s=arc-20160816; b=whg4ssvCJSuxuBgq5fot54Yyx/Zln50rdzmMi2224hbRywmA109oPFgvJZ9+mUiCyA x6EyHIrlS9LAh5jwf+yFc4VyxleboFzADq8qE4yjp01iur3OQXaWskklgBaZRe12mXoN TRgv8bNtsSoeWZ2bQUeGpn0kNyCXLqlb4qGUOGfdBTrYuf7ZLtTrR4mHNp+4MXGryNvm 4ZIJlxlRz4tpHR6k8O/bh9G3Hlm9f2W4da2cIWztdbl32DBwM/GK4M6rmmZg5r3aMVk2 SEHWgRbtrwnhhuQxtEiU2ZoIbjDGStEe3K70iv1H3KgppIoseHcqvLMhyrqzFx9pf9uq 7bvw== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:content-transfer-encoding :msip_labels:content-language:accept-language:message-id:date :thread-index:thread-topic:subject:to:from:dkim-signature; bh=ShsWVrNuBJhiyecvHlqM/cC4Qjs+35HaOw8ORiNvKuk=; b=degOmI/rtwIRaBTgBeFHwPMEYt9cas5HRknvu7rG28Ur/a/0p0tUdBnVgQU/AnB7ut SfUNaif1bNMfdV0EHCroNb7l2fXzgeQV8/26EH55dsHlLu8lB2R8U+Bry/YN3Ow5Cv39 ioVgSQXuAyvv1W7cklorLrkU6sVhXBXaNFm3jYWnZt8X41fECR6wo4IvDuZqFW5VAWAN JrZc2eE+XjEaC9NUqcTeoNTAIdb9KuEQ+ySlz4FdvAeAqMcH9NHjZUMsCTInSBJ/K1Pm Jqrk4W5vkEhzHG9EqRWanN5dIzh2NO1uGJvoulWDsOCRypELnuQIR/OTU7bVB2jKzlWi 3Ngw== ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@microsoft.com header.s=selector2 header.b=aSwt0J+a; arc=pass (i=1 spf=pass spfdomain=microsoft.com dkim=pass dkdomain=microsoft.com dmarc=pass fromdomain=microsoft.com); spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=microsoft.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id y6si5276476oih.217.2020.01.12.22.34.15; Sun, 12 Jan 2020 22:34:26 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@microsoft.com header.s=selector2 header.b=aSwt0J+a; arc=pass (i=1 spf=pass spfdomain=microsoft.com dkim=pass dkdomain=microsoft.com dmarc=pass fromdomain=microsoft.com); spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=microsoft.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1733310AbgAMGbw (ORCPT + 99 others); Mon, 13 Jan 2020 01:31:52 -0500 Received: from mail-eopbgr1300094.outbound.protection.outlook.com ([40.107.130.94]:43648 "EHLO APC01-HK2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1725909AbgAMGbw (ORCPT ); Mon, 13 Jan 2020 01:31:52 -0500 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=WsCGIt+t+tLM95eDRcpjucGiImtNBmuyLtPU8ARtnEE2Evvo6+VifsQjxs3z3Y+7CIFGtTk+nSFm1qgFZd6S4hQR2SFOOB7hU0T+eIVpIz+rPeHds6JswIjAVA+tPFTQRggOsE6R6lpuYnP8b6o+MEx0Ix8pUoOXkGLWgPvIHMuXp9xq01rfc5w2zEkRfAidUrSpsD6718cAZB/C3DkG4Uv4BxdiBgCTheM/BT9sBenfj+355mXaXDft1esHVtyql6dPN2dEr066SW4zKdt2IPrmFs8kVfFhnl9rjZ0GeOr70ua00720TMCabgvA2f1rgYijziFj47s9Ju4NqqAHSA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=ShsWVrNuBJhiyecvHlqM/cC4Qjs+35HaOw8ORiNvKuk=; b=TAZN37X1IryQt5y5AhzI7RkpqHkQynCSn5e0/rcGxZuNbxCXMF7hgMZHTL+ZDDYPahErKJVmIAqYW2PZqM1kClE6V4VzvnkKAn9JJNtoHeaVBUjnoHaVlFAQd/MK5DL7xhEoF+GB96F5KSaA5XUmWAkaolkqxy9uq2cVt06jl6JSBMkMYD8j2oQEqZNGO661dNiDKeaiNxmoyoTMZxzmIiiPoQl2O+JglWwybgEMt5SEmgu7Ouzb+8QGtI94+o4hBuDnOvxcryrmKGXYuTR6lFEIvd5OuklUfUhF1iDycRKc42L9iUBxENGUpYlInekRCqOi2V2JAqBP0Kdk09ijmg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=microsoft.com; dmarc=pass action=none header.from=microsoft.com; dkim=pass header.d=microsoft.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=ShsWVrNuBJhiyecvHlqM/cC4Qjs+35HaOw8ORiNvKuk=; b=aSwt0J+aHzMUOH7K1p2tGsAWa6ViQAHdSsjUqwrj+T6/Xfx0Tc1/zS26NXsBjx3P61wEwNKtJ9HeFkVSDdOOX7JJKDT8Iqtu2c79t01ELGqeLO27kCaCsmRYdhX+TrWx79gj9cJPMUdZIpgG/s9PRVJmUhpD59z4m/P9EbzONHw= Received: from HK0P153MB0148.APCP153.PROD.OUTLOOK.COM (52.133.156.139) by HK0P153MB0324.APCP153.PROD.OUTLOOK.COM (52.132.237.21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2644.2; Mon, 13 Jan 2020 06:31:44 +0000 Received: from HK0P153MB0148.APCP153.PROD.OUTLOOK.COM ([fe80::15e7:8155:31bc:d4e7]) by HK0P153MB0148.APCP153.PROD.OUTLOOK.COM ([fe80::15e7:8155:31bc:d4e7%7]) with mapi id 15.20.2644.014; Mon, 13 Jan 2020 06:31:44 +0000 From: Dexuan Cui To: KY Srinivasan , Haiyang Zhang , Stephen Hemminger , "sashal@kernel.org" , Sasha Levin , "linux-hyperv@vger.kernel.org" , Michael Kelley , vkuznets , "linux-kernel@vger.kernel.org" Subject: [PATCH v2 3/4] hv_utils: Support host-initiated hibernation request Thread-Topic: [PATCH v2 3/4] hv_utils: Support host-initiated hibernation request Thread-Index: AdXJ2xmWH7nlZvI9QtW52nKT4iLjSA== Date: Mon, 13 Jan 2020 06:31:43 +0000 Message-ID: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: msip_labels: MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_Enabled=True; MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_SiteId=72f988bf-86f1-41af-91ab-2d7cd011db47; MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_Owner=decui@microsoft.com; MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_SetDate=2020-01-13T06:31:42.4306444Z; MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_Name=General; MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_Application=Microsoft Azure Information Protection; MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_ActionId=90e4698e-3fc7-43d3-857c-c415f1813480; MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_Extended_MSFT_Method=Automatic authentication-results: spf=none (sender IP is ) smtp.mailfrom=decui@microsoft.com; x-originating-ip: [2001:4898:80e8:a:fa69:ae29:32b9:aa46] x-ms-publictraffictype: Email x-ms-office365-filtering-ht: Tenant x-ms-office365-filtering-correlation-id: 65375c6b-cac3-4df2-b48c-08d797f24236 x-ms-traffictypediagnostic: HK0P153MB0324:|HK0P153MB0324:|HK0P153MB0324: x-ms-exchange-transport-forked: True x-ld-processed: 72f988bf-86f1-41af-91ab-2d7cd011db47,ExtAddr x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:6108; x-forefront-prvs: 028166BF91 x-forefront-antispam-report: SFV:NSPM;SFS:(10019020)(4636009)(39860400002)(396003)(376002)(366004)(136003)(346002)(189003)(199004)(5660300002)(10290500003)(33656002)(186003)(7696005)(86362001)(2906002)(6506007)(52536014)(478600001)(81166006)(81156014)(110136005)(316002)(76116006)(8936002)(9686003)(64756008)(55016002)(8990500004)(66556008)(66476007)(66946007)(66446008)(8676002)(71200400001);DIR:OUT;SFP:1102;SCL:1;SRVR:HK0P153MB0324;H:HK0P153MB0148.APCP153.PROD.OUTLOOK.COM;FPR:;SPF:None;LANG:en;PTR:InfoNoRecords;MX:1;A:1; received-spf: None (protection.outlook.com: microsoft.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: OmG+h/F+4Gscu846AaWe5sycTdBz3KO1da4nzcKANzI2EDjp0y9bAYmXzuQrKJOnBPShtiw5LRN5BFcCqGH7Xb8QX7VCUkFX0KerL+OLeRKRx4sBdsTppiWoFCX8fjDMqnoTXLjBMkwiy/zYdeDedRWl2vDcAli7XZMqSjPLXnYckpdscKvsu5Zdo6nlasEqEWcvwPbj0h8gHaiXZCoEm3lcBR8GOgBTcmZOteKGzEpGbwn2Yu9E7oHpFBuuftJCK2DJEaCoDSw1U6vQFvhEGhtheNCKw1ARoRhWQmG3gWj80WboKqbEmlATDmtWNY1x7JxcL30HcYDgZYjSq5jEfM9SkpX4BPG900MQWoEpmWRTces0gs7FmfnAO9VtjcCPIx5AklxSA0i9WlmyiaMxC5hqpUa9F6Os7TnykZD+60LeaV0PUEciysuywSVvy5yw Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-OriginatorOrg: microsoft.com X-MS-Exchange-CrossTenant-Network-Message-Id: 65375c6b-cac3-4df2-b48c-08d797f24236 X-MS-Exchange-CrossTenant-originalarrivaltime: 13 Jan 2020 06:31:44.0008 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 72f988bf-86f1-41af-91ab-2d7cd011db47 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: m1GauCUw/7DNasmx2cmGel2IJ1iaAZ0feLwz3Wpa4AYkVTv6NTXgyJzc2Q1TkcujtemE5UqHBj8Emk5OYZSvLQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: HK0P153MB0324 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Update the Shutdown IC version to 3.2, which is required for the host to send the hibernation request. The user is expected to create the below udev rule file, which is applied upon the host-initiated hibernation request: root@localhost:~# cat /usr/lib/udev/rules.d/40-vm-hibernation.rules SUBSYSTEM=3D=3D"vmbus", ACTION=3D=3D"change", DRIVER=3D=3D"hv_utils", ENV{E= VENT}=3D=3D"hibernate", RUN+=3D"/usr/bin/systemctl hibernate" Signed-off-by: Dexuan Cui --- drivers/hv/hv_util.c | 52 +++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 51 insertions(+), 1 deletion(-) diff --git a/drivers/hv/hv_util.c b/drivers/hv/hv_util.c index fe3a316380c2..d5216af62788 100644 --- a/drivers/hv/hv_util.c +++ b/drivers/hv/hv_util.c @@ -25,7 +25,9 @@ #define SD_MAJOR 3 #define SD_MINOR 0 #define SD_MINOR_1 1 +#define SD_MINOR_2 2 #define SD_VERSION_3_1 (SD_MAJOR << 16 | SD_MINOR_1) +#define SD_VERSION_3_2 (SD_MAJOR << 16 | SD_MINOR_2) #define SD_VERSION (SD_MAJOR << 16 | SD_MINOR) =20 #define SD_MAJOR_1 1 @@ -52,9 +54,10 @@ static int sd_srv_version; static int ts_srv_version; static int hb_srv_version; =20 -#define SD_VER_COUNT 3 +#define SD_VER_COUNT 4 static const int sd_versions[] =3D { SD_VERSION_3_1, + SD_VERSION_3_2, SD_VERSION, SD_VERSION_1 }; @@ -78,9 +81,45 @@ static const int fw_versions[] =3D { UTIL_WS2K8_FW_VERSION }; =20 +/* + * Send the "hibernate" udev event in a thread context. + */ +struct hibernate_work_context { + struct work_struct work; + struct hv_device *dev; +}; + +static struct hibernate_work_context hibernate_context; +static bool execute_hibernate; + +static void send_hibernate_uevent(struct work_struct *work) +{ + char *uevent_env[2] =3D { "EVENT=3Dhibernate", NULL }; + struct hibernate_work_context *ctx; + + ctx =3D container_of(work, struct hibernate_work_context, work); + + kobject_uevent_env(&ctx->dev->device.kobj, KOBJ_CHANGE, uevent_env); + + pr_info("Sent hibernation uevent\n"); +} + +static int hv_shutdown_init(struct hv_util_service *srv) +{ + struct vmbus_channel *channel =3D srv->channel; + + INIT_WORK(&hibernate_context.work, send_hibernate_uevent); + hibernate_context.dev =3D channel->device_obj; + + execute_hibernate =3D hv_is_hibernation_supported(); + + return 0; +} + static void shutdown_onchannelcallback(void *context); static struct hv_util_service util_shutdown =3D { .util_cb =3D shutdown_onchannelcallback, + .util_init =3D hv_shutdown_init, }; =20 static int hv_timesync_init(struct hv_util_service *srv); @@ -187,6 +226,17 @@ static void shutdown_onchannelcallback(void *context) =20 schedule_work(&restart_work); break; + case 4: + case 5: + pr_info("Hibernation request received\n"); + + if (execute_hibernate) { + icmsghdrp->status =3D HV_S_OK; + schedule_work(&hibernate_context.work); + } else { + icmsghdrp->status =3D HV_E_FAIL; + } + break; default: icmsghdrp->status =3D HV_E_FAIL; execute_shutdown =3D false; --=20 2.19.1