From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by mx.groups.io with SMTP id smtpd.web11.467.1624402141223372567 for ; Tue, 22 Jun 2021 15:49:01 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@intel.onmicrosoft.com header.s=selector2-intel-onmicrosoft-com header.b=o9yyBzOS; spf=pass (domain: intel.com, ip: 134.134.136.65, mailfrom: guo.dong@intel.com) IronPort-SDR: ZsoYu1TLS0J6KZCdKRPMY4PU6L5vFTQLnMSao6z0mNs1riDa1TZsiFoyPoRUiTL0NUo3qwI+3U 1+iP2nYqxM2g== X-IronPort-AV: E=McAfee;i="6200,9189,10023"; a="207197009" X-IronPort-AV: E=Sophos;i="5.83,292,1616482800"; d="scan'208";a="207197009" Received: from fmsmga007.fm.intel.com ([10.253.24.52]) by orsmga103.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 22 Jun 2021 15:49:00 -0700 IronPort-SDR: RINOzrMisLqaTSmOYUx++2FNiJEtRptPva8rwDjdfLSg4M3GvPNym6w0TjfRtEkzun3pGz3fqT JC/lp/rBmh5w== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.83,292,1616482800"; d="scan'208";a="417538573" Received: from fmsmsx602.amr.corp.intel.com ([10.18.126.82]) by fmsmga007.fm.intel.com with ESMTP; 22 Jun 2021 15:48:59 -0700 Received: from fmsmsx609.amr.corp.intel.com (10.18.126.89) by fmsmsx602.amr.corp.intel.com (10.18.126.82) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.4; Tue, 22 Jun 2021 15:48:59 -0700 Received: from fmsmsx602.amr.corp.intel.com (10.18.126.82) by fmsmsx609.amr.corp.intel.com (10.18.126.89) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.4; Tue, 22 Jun 2021 15:48:59 -0700 Received: from fmsedg602.ED.cps.intel.com (10.1.192.136) by fmsmsx602.amr.corp.intel.com (10.18.126.82) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.4 via Frontend Transport; Tue, 22 Jun 2021 15:48:59 -0700 Received: from NAM11-BN8-obe.outbound.protection.outlook.com (104.47.58.174) by edgegateway.intel.com (192.55.55.71) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2242.4; Tue, 22 Jun 2021 15:48:58 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=UqK5domY4wJv7bGs4OMT/i2mycywNqJ7fy8/At1UuzLTF0Jp/92emXsGzd/yPvt0PDxZoaCjli73nojCmaFw0TnN0Wkvzjt4MeFA/5XoCG3cX7zriZtx4fawKGFACn1dJKOH32pKvS92/vYCsfIGosnf4pEhGS4UfOaonW5fvQWccLJCW8IJr7QsGYglxc+No325rQ8B2sWRVXGwu+bdwQieY1XAzw+GXxfnr5Ip9CmUnIXc/MnBApC57EcHTjwMF1xskT2hZaJ7t59KLhCN8t4tbRyS11LjoUjTrQQpABbnOaiDT8QjNcxeNYh1+onm+BQmbn3v4erWnpKG8Uo0Iw== 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=hYlrpSPOGj+rJDt2Rua7EXZ3aTD811bfFl+7UIi+tfo=; b=NEfCVsbOjW7bmlU6dtfSy0ROwUxdEErDPlxaZMqWo3R69jBBIngl8mKVcoUph4hQr10/Iv09Wac142ixFNs2lbkTRXl4sYUSJ7IGSmj9xqLnMkuXt/TYsoIWFr0cDCY8ukOx3xCF52jRCAYc8K2uE+J/1YPIucDe0Rh2tqSWTyx6hv5a4hfUmQQxsc9CdPAO9wN/7KrjWqeZL/74xLUUmOnUHSeG5RAICGP/8WTAXRVMbDIOmjgQZvtF71PR/bufTYgMynvTvtOej6OjwOwsSieQPuV3PrTKyDaCm7gNe4T3jHebsdRVS1ku0/Apvi4ppLiCj7aBbWPXTuxmh7NTdg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=intel.onmicrosoft.com; s=selector2-intel-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=hYlrpSPOGj+rJDt2Rua7EXZ3aTD811bfFl+7UIi+tfo=; b=o9yyBzOSnzlVtHQttQwwonuo3xdzjLZKxwhcgrMqT7Fz+BLho93fd3zwaPMvF/FqxTrsPfMVx+NwBEsr6I4kqHph1EoOSxP+KiB63EmQrwPygqvlXiEOrDcT6gb2SBrLkW2+OB4gez9nK4L8fr2w9p7Vsyg0S5oWhC8I+LVpaqA= Received: from BYAPR11MB3622.namprd11.prod.outlook.com (2603:10b6:a03:fe::30) by SJ0PR11MB4960.namprd11.prod.outlook.com (2603:10b6:a03:2ac::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4242.21; Tue, 22 Jun 2021 22:48:57 +0000 Received: from BYAPR11MB3622.namprd11.prod.outlook.com ([fe80::247b:262c:b8da:710b]) by BYAPR11MB3622.namprd11.prod.outlook.com ([fe80::247b:262c:b8da:710b%7]) with mapi id 15.20.4242.023; Tue, 22 Jun 2021 22:48:57 +0000 From: "Guo Dong" To: "Liu, Zhiguang" , "devel@edk2.groups.io" CC: "Ma, Maurice" , "You, Benjamin" Subject: Re: [PATCH 04/12] UefiPayloadPkg: Update the function definition of HobConstructor Thread-Topic: [PATCH 04/12] UefiPayloadPkg: Update the function definition of HobConstructor Thread-Index: AQHXZeuSGpnzb9yYd02ll74h7Jfe56sgko5g Date: Tue, 22 Jun 2021 22:48:57 +0000 Message-ID: References: <20210620154702.2681-1-zhiguang.liu@intel.com> <20210620154702.2681-5-zhiguang.liu@intel.com> In-Reply-To: <20210620154702.2681-5-zhiguang.liu@intel.com> Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-product: dlpe-windows dlp-reaction: no-action dlp-version: 11.5.1.3 authentication-results: intel.com; dkim=none (message not signed) header.d=none;intel.com; dmarc=none action=none header.from=intel.com; x-originating-ip: [68.104.146.79] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: ac78d5a7-52d7-4234-1094-08d935cfeb58 x-ms-traffictypediagnostic: SJ0PR11MB4960: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:2958; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: UqgN6xJBXS5Ht5oKxDWqOMdQ4Z8TeGXgFwJp1O4X5n2fqALl4ZtDTvUQ+qB2DqFJ+gsIAbA3WYfFXmD/BuYCY9JbBh4fgfZiJO7Uu+y+ZryNE4IYbnG42efqXZ7dKJE/MM5K730o0bp669k8QScqbGOoO9kr30lFNoyxCSXpxVptcZy3cA+ODs2bUqXFxpIKdDKFygnU7yYawBOFjrqBgdWO24zCdwYPPEIQQvOD3nl6dI9ka5JSrwqtG48VDad8XIu7MXOWLWpJhYKhjvpQytHxv8dTvkj/4qklUiKq0p7Hkn3Mg9fot24PFWF/UZNNg+6yp+6h2VeGgS+rY5/X8i/9zFFtVNM82CAgtbEAgveQqkrcjROpy3n9ZHmUg8EsVOkMfLgZvC3EacPh3Ao0pFzixZbSO3zQtjMceeTNJ49JPU+ozKNuldL9yjEawdVaPRLKfX7VRqycY9SAyVmUrFUhqW0Elx8Dw/VY8lDXYewVEzZvaK/npGDwtsUqoTeQ93EvbGVeHuOuRf7sxnu52NcPrm3mIiJ+KIepSjhGpfELd9pKcrdAH+9KZbER2MpxpxQDq4dVculZ8H5MiWm1FTS0dngnkQIrylnmMMcXjlk= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BYAPR11MB3622.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(136003)(366004)(39860400002)(376002)(346002)(396003)(7696005)(52536014)(122000001)(66446008)(86362001)(8936002)(5660300002)(186003)(8676002)(478600001)(71200400001)(83380400001)(15650500001)(66556008)(66476007)(64756008)(26005)(38100700002)(33656002)(6506007)(54906003)(66946007)(110136005)(4326008)(2906002)(107886003)(316002)(9686003)(76116006)(53546011)(55016002);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?zlX3pKd3r42PwAdloBiuErodjj97T1JYe0Jf0oGEDmlL8SeIcWdgITAIeZ2R?= =?us-ascii?Q?89Xjt0FpwwOfQT/6dO6MpZ5UfmARLKrrHQPH8KRqejNxVnDzsV4IY5tWXDzp?= =?us-ascii?Q?Mv2JYdRJg12dQiKycrm8PtOytUMZC6js2qzrrcPKYhVlwdjPwoh+CRBjK4nW?= =?us-ascii?Q?T9EcODyOpUokK7kaSoTpMO4Z6+xJ66s7Ti2f9lsVTv3kR/mmUdj+og2bNtao?= =?us-ascii?Q?YT8v/6e/erjUPybV+KuD1qau9p0hqPFoYF8A6yyj4fZFvLeVzb91rzUhK5Dd?= =?us-ascii?Q?0/KSIMzjba3r9Vc0UtJejHH5POuOCKsSu8He+qWMxv5pajxQ6lFa14GnA+sD?= =?us-ascii?Q?xt4MtWGJsMnKuzsBkSKtYG2s3n7SDG9tob58oEpw3PG1Mi+JR7RiD2X4khEH?= =?us-ascii?Q?3QpQ+VfdKIuG3TGgXtS1oRMwdEkxK6bB9dRf8cXvlPxv5lzYiSNljEyjCWkY?= =?us-ascii?Q?7XR1cB28xdNd5mg2Lj41MoaqEbzAnmjv4MF3rllCMeEQT6+UhGgBPl9TY//i?= =?us-ascii?Q?x+Op2ebWaUxPj/TKgHfY9MHuYsiSUDvnfoYGIV/oX3SrAZl3Dl7sX4ZUhMaD?= =?us-ascii?Q?QHS2xcAhashC0t06uefXRsuUqOxac8bfxaS6js7NA2N62zC5Cb5vEsUyb1i3?= =?us-ascii?Q?3SqMaGr8vdV7gLT+P413QMcPMioStlz+Sh9QLtmYL/KgEhRfDS9+tLESoAvd?= =?us-ascii?Q?iPZ/cVxccjw0JMsLw/ZcLqdxO6GF8ouiALos3Qm2kNIqE09T55vwf72z6kQG?= =?us-ascii?Q?8PYArNAnZpjUxp7XlmjyAwkys00MDSgCvBB+2bxTSbo1I1di1HY99uha/f/O?= =?us-ascii?Q?0xUTqUiwDACOTV6qSRn9vjgD7pysE52H0TeqBaVQh4YRH3n4mEvzVgXePczt?= =?us-ascii?Q?LAChlx2EnOPeTn6Z8G2gY3HUAXY2CghgqTrH1aq9pcDGQR9p3K4FME7+lr0N?= =?us-ascii?Q?dfL2ckSaIdojX1YnLZf8Hzsxd/ytkkT/meUustbkXUl9nQhzItPq/qLnkq63?= =?us-ascii?Q?XM9EBNWSXGIp0pC6NgxSA+udg3q/GwztcBZv70rrALcFt9IMDFL/8+p5vZzT?= =?us-ascii?Q?1baNa5/060vr8kY/oUCthT57BEapcdHWwf2Na47T+9d2iMntvIBVfVI9lZ9Z?= =?us-ascii?Q?E8dvp8DJOuQIqMvTiAMyVFgSBE155Q/u6hJcuO2luz3u/50Ro89u3V8YpEwR?= =?us-ascii?Q?jrein0CF2IC+YSTw8oh35ZE4kYPFqpqK4YAU2lSm4gzuARJ6xBjtVWKwbVhU?= =?us-ascii?Q?EyqrlG88hyVUilnzh2lC0PeKDtqceoYwxjFSNbqGsqsHouQzw4+7FXBw8Jmc?= =?us-ascii?Q?/0duto5MJnncFRxoQvol/a5t?= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: BYAPR11MB3622.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: ac78d5a7-52d7-4234-1094-08d935cfeb58 X-MS-Exchange-CrossTenant-originalarrivaltime: 22 Jun 2021 22:48:57.1496 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: Vd7zKmDX/PvLuYCOWh3iLLOUX3rWgEZ0Arq8VX60wYH/UqM8ajVcBin2cxJjOzpVrQV9TgcG+YN7uKX9Ln4Jmw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ0PR11MB4960 Return-Path: guo.dong@intel.com X-OriginatorOrg: intel.com Content-Language: en-US Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Reviewed-by: Guo Dong > -----Original Message----- > From: Liu, Zhiguang > Sent: Sunday, June 20, 2021 8:47 AM > To: devel@edk2.groups.io > Cc: Ma, Maurice ; Dong, Guo > ; You, Benjamin > Subject: [PATCH 04/12] UefiPayloadPkg: Update the function definition of > HobConstructor >=20 > Update the function defination of HobConstructor to align the Phit Hob > structure. >=20 > Cc: Maurice Ma > Cc: Guo Dong > Cc: Benjamin You > Signed-off-by: Zhiguang Liu > --- > UefiPayloadPkg/Library/PayloadEntryHobLib/Hob.c | 26 +++++++++++++-- > ----------- > UefiPayloadPkg/UefiPayloadEntry/UefiPayloadEntry.c | 5 +---- > UefiPayloadPkg/UefiPayloadEntry/UefiPayloadEntry.h | 16 ++++++++-------- > 3 files changed, 22 insertions(+), 25 deletions(-) >=20 > diff --git a/UefiPayloadPkg/Library/PayloadEntryHobLib/Hob.c > b/UefiPayloadPkg/Library/PayloadEntryHobLib/Hob.c > index 23a749edf1..768c3db770 100644 > --- a/UefiPayloadPkg/Library/PayloadEntryHobLib/Hob.c > +++ b/UefiPayloadPkg/Library/PayloadEntryHobLib/Hob.c > @@ -39,14 +39,14 @@ GetHobList ( > /** >=20 > Build a Handoff Information Table HOB >=20 >=20 >=20 > - This function initialize a HOB region from EfiMemoryBegin with length >=20 > - EfiMemoryLength. And EfiFreeMemoryBottom and EfiFreeMemoryTop > should >=20 > + This function initialize a HOB region from EfiMemoryBegin to >=20 > + EfiMemoryTop. And EfiFreeMemoryBottom and EfiFreeMemoryTop > should >=20 > be inside the HOB region. >=20 >=20 >=20 > - @param[in] EfiMemoryBegin Total memory start address >=20 > - @param[in] EfiMemoryLength Total memory length reported in handof= f > HOB. >=20 > - @param[in] EfiFreeMemoryBottom Free memory start address >=20 > - @param[in] EfiFreeMemoryTop Free memory end address. >=20 > + @param[in] EfiMemoryBottom Total memory start address >=20 > + @param[in] EfiMemoryTop Total memory end address. >=20 > + @param[in] EfiFreeMemoryBottom Free memory start address >=20 > + @param[in] EfiFreeMemoryTop Free memory end address. >=20 >=20 >=20 > @return The pointer to the handoff HOB table. >=20 >=20 >=20 > @@ -54,8 +54,8 @@ GetHobList ( > EFI_HOB_HANDOFF_INFO_TABLE* >=20 > EFIAPI >=20 > HobConstructor ( >=20 > - IN VOID *EfiMemoryBegin, >=20 > - IN UINTN EfiMemoryLength, >=20 > + IN VOID *EfiMemoryBottom, >=20 > + IN VOID *EfiMemoryTop, >=20 > IN VOID *EfiFreeMemoryBottom, >=20 > IN VOID *EfiFreeMemoryTop >=20 > ) >=20 > @@ -77,11 +77,11 @@ HobConstructor ( > Hob->Version =3D EFI_HOB_HANDOFF_TABLE_VERSION; >=20 > Hob->BootMode =3D BOOT_WITH_FULL_CONFIGURATION; >=20 >=20 >=20 > - Hob->EfiMemoryTop =3D (UINTN)EfiMemoryBegin + EfiMemoryLength; >=20 > - Hob->EfiMemoryBottom =3D (UINTN)EfiMemoryBegin; >=20 > - Hob->EfiFreeMemoryTop =3D (UINTN)EfiFreeMemoryTop; >=20 > - Hob->EfiFreeMemoryBottom =3D > (EFI_PHYSICAL_ADDRESS)(UINTN)(HobEnd+1); >=20 > - Hob->EfiEndOfHobList =3D (EFI_PHYSICAL_ADDRESS)(UINTN)HobEnd; >=20 > + Hob->EfiMemoryTop =3D (EFI_PHYSICAL_ADDRESS) EfiMemoryTop; >=20 > + Hob->EfiMemoryBottom =3D (EFI_PHYSICAL_ADDRESS) EfiMemoryBottom; >=20 > + Hob->EfiFreeMemoryTop =3D (EFI_PHYSICAL_ADDRESS) > EfiFreeMemoryTop; >=20 > + Hob->EfiFreeMemoryBottom =3D (EFI_PHYSICAL_ADDRESS) (UINTN) > (HobEnd+1); >=20 > + Hob->EfiEndOfHobList =3D (EFI_PHYSICAL_ADDRESS) (UINTN) HobEnd; >=20 >=20 >=20 > mHobList =3D Hob; >=20 > return Hob; >=20 > diff --git a/UefiPayloadPkg/UefiPayloadEntry/UefiPayloadEntry.c > b/UefiPayloadPkg/UefiPayloadEntry/UefiPayloadEntry.c > index 8c6f7e326f..4308936d63 100644 > --- a/UefiPayloadPkg/UefiPayloadEntry/UefiPayloadEntry.c > +++ b/UefiPayloadPkg/UefiPayloadEntry/UefiPayloadEntry.c > @@ -382,7 +382,6 @@ PayloadEntry ( > PHYSICAL_ADDRESS DxeCoreEntryPoint; >=20 > EFI_HOB_HANDOFF_INFO_TABLE *HandoffHobTable; >=20 > UINTN MemBase; >=20 > - UINTN MemSize; >=20 > UINTN HobMemBase; >=20 > UINTN HobMemTop; >=20 > EFI_PEI_HOB_POINTERS Hob; >=20 > @@ -401,9 +400,7 @@ PayloadEntry ( > HobMemBase =3D ALIGN_VALUE (MemBase + PcdGet32 > (PcdPayloadFdMemSize), SIZE_1MB); >=20 > HobMemTop =3D HobMemBase + FixedPcdGet32 > (PcdSystemMemoryUefiRegionSize); >=20 >=20 >=20 > - // DXE core assumes the memory below HOB region could be used, so > include the FV region memory into HOB range. >=20 > - MemSize =3D HobMemTop - MemBase; >=20 > - HandoffHobTable =3D HobConstructor ((VOID *)MemBase, MemSize, (VOID > *)HobMemBase, (VOID *)HobMemTop); >=20 > + HobConstructor ((VOID *)MemBase, (VOID *)HobMemTop, (VOID > *)HobMemBase, (VOID *)HobMemTop); >=20 >=20 >=20 > // Build HOB based on information from Bootloader >=20 > Status =3D BuildHobFromBl (); >=20 > diff --git a/UefiPayloadPkg/UefiPayloadEntry/UefiPayloadEntry.h > b/UefiPayloadPkg/UefiPayloadEntry/UefiPayloadEntry.h > index a4c9da128e..e9c3ec3073 100644 > --- a/UefiPayloadPkg/UefiPayloadEntry/UefiPayloadEntry.h > +++ b/UefiPayloadPkg/UefiPayloadEntry/UefiPayloadEntry.h > @@ -83,14 +83,14 @@ UpdateStackHob ( > /** >=20 > Build a Handoff Information Table HOB >=20 >=20 >=20 > - This function initialize a HOB region from EfiMemoryBegin with length >=20 > - EfiMemoryLength. And EfiFreeMemoryBottom and EfiFreeMemoryTop > should >=20 > + This function initialize a HOB region from EfiMemoryBegin to >=20 > + EfiMemoryTop. And EfiFreeMemoryBottom and EfiFreeMemoryTop > should >=20 > be inside the HOB region. >=20 >=20 >=20 > - @param[in] EfiMemoryBegin Total memory start address >=20 > - @param[in] EfiMemoryLength Total memory length reported in handof= f > HOB. >=20 > - @param[in] EfiFreeMemoryBottom Free memory start address >=20 > - @param[in] EfiFreeMemoryTop Free memory end address. >=20 > + @param[in] EfiMemoryBottom Total memory start address >=20 > + @param[in] EfiMemoryTop Total memory end address. >=20 > + @param[in] EfiFreeMemoryBottom Free memory start address >=20 > + @param[in] EfiFreeMemoryTop Free memory end address. >=20 >=20 >=20 > @return The pointer to the handoff HOB table. >=20 >=20 >=20 > @@ -98,8 +98,8 @@ UpdateStackHob ( > EFI_HOB_HANDOFF_INFO_TABLE* >=20 > EFIAPI >=20 > HobConstructor ( >=20 > - IN VOID *EfiMemoryBegin, >=20 > - IN UINTN EfiMemoryLength, >=20 > + IN VOID *EfiMemoryBottom, >=20 > + IN VOID *EfiMemoryTop, >=20 > IN VOID *EfiFreeMemoryBottom, >=20 > IN VOID *EfiFreeMemoryTop >=20 > ); >=20 > -- > 2.16.2.windows.1