From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail02.groups.io (mail02.groups.io [66.175.222.108]) by spool.mail.gandi.net (Postfix) with ESMTPS id 557AB7803CC for ; Fri, 5 Jan 2024 02:21:31 +0000 (UTC) DKIM-Signature: a=rsa-sha256; bh=AObJGpAhvKnTtOUn52jDjg98RceyIKDwJVWR8I331lM=; c=relaxed/simple; d=groups.io; h=ARC-Seal:ARC-Message-Signature:ARC-Authentication-Results:From:To:CC:Subject:Thread-Topic:Thread-Index:Date:Message-ID:References:In-Reply-To:Accept-Language:MIME-Version:Precedence:List-Subscribe:List-Help:Sender:List-Id:Mailing-List:Delivered-To:Reply-To:List-Unsubscribe-Post:List-Unsubscribe:Content-Language:Content-Type:Content-Transfer-Encoding; s=20140610; t=1704421290; v=1; b=CLq2TV4r4oUzFY/LYEtnodYEu8AJSHMTN9xdFJuZJTTV7rhaD/cUFJPG8AYi/dZ6idVQarxU d0OHHSixj4D4GVmCtJ8n91eq3WzB5Ryso8Yn3eBGX6WE4Ntfps3FsRwzshRweerv6z0ElsLjWQc j9HTtFFWAJLzTd9tP8ZuPVTw= X-Received: by 127.0.0.2 with SMTP id rqM7YY7687511xckhnVP7wkQ; Thu, 04 Jan 2024 18:21:30 -0800 X-Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.11]) by mx.groups.io with SMTP id smtpd.web10.15239.1704421288886555079 for ; Thu, 04 Jan 2024 18:21:29 -0800 X-IronPort-AV: E=McAfee;i="6600,9927,10943"; a="4192880" X-IronPort-AV: E=Sophos;i="6.04,332,1695711600"; d="scan'208";a="4192880" X-Received: from orsmga002.jf.intel.com ([10.7.209.21]) by orvoesa103.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 04 Jan 2024 18:20:53 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10943"; a="780627736" X-IronPort-AV: E=Sophos;i="6.04,332,1695711600"; d="scan'208";a="780627736" X-Received: from fmsmsx602.amr.corp.intel.com ([10.18.126.82]) by orsmga002.jf.intel.com with ESMTP/TLS/AES256-GCM-SHA384; 04 Jan 2024 18:20:52 -0800 X-Received: from fmsmsx611.amr.corp.intel.com (10.18.126.91) 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.2507.35; Thu, 4 Jan 2024 18:20:51 -0800 X-Received: from fmsmsx612.amr.corp.intel.com (10.18.126.92) by fmsmsx611.amr.corp.intel.com (10.18.126.91) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.35; Thu, 4 Jan 2024 18:20:51 -0800 X-Received: from FMSEDG603.ED.cps.intel.com (10.1.192.133) by fmsmsx612.amr.corp.intel.com (10.18.126.92) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.35 via Frontend Transport; Thu, 4 Jan 2024 18:20:51 -0800 X-Received: from NAM12-DM6-obe.outbound.protection.outlook.com (104.47.59.169) by edgegateway.intel.com (192.55.55.68) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.35; Thu, 4 Jan 2024 18:20:51 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=OQ3fOTJ92pa0AF0IUku5Cegsmfd83xtWhIQTjZ4wmjl/39GPLpQ/irBc4miHCsCqaVn1VXtUSesGOWs+rOlbT/1WBW3pDQ+LAjj60KMIJaYDn10gDkjCBqYVwoZyKC76Bo8xHqFFUaICtNbRwzvfmpYsH3EUWTTsrKkOJpzYMDGK3wh3t67RPVMyLKjyE2HTOm/K6IoR2l65o8jEojO4aZO5Wjqt2BcTEOd160pN70o8PTw5NSNk4ifC++lFYWkJ8a1rzLm3a8bj6lOy0RtxPKKvgAt/L1mKT8a+bZVHHgqOokJbDsH7+GBDedclYen4y5iMx06ESKjRuO2E78E6IQ== 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-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=pvKM9J6VsQVny47Dv+8eVPQTzZbi3STh5mErGxdcekA=; b=PShYa0Dg9jH7IGZqzYS6+RF/MaZREAjipxSik3Iyz/D1OQEYHheydLBvIJl9VHVXVcqzuWq3xFH0xfFB9zAAgongn65YZhe4mFRyAqMkYXLiitgGSrthd2mdl79wqch9JexN7xzZ5ri+fumxIk+0OgOprsynn9yX9Ocd8GHZpVtn094ot+G+r1fWUEn9OnNdA9O+PXp6V1VknPOgRvRyYecQag51eRVZ56Od5m4XwqaNc1PZoTIQzE9RX56clilJbquTBGNbPVhOnSCGhVzBvAZiGJ5C8qxckD1H2Km6SDAgJptaesBXaXvgy6ouZMw+HRT2AnOSj+5c5zeOWY3l2A== 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 X-Received: from MN6PR11MB8244.namprd11.prod.outlook.com (2603:10b6:208:470::14) by IA1PR11MB6514.namprd11.prod.outlook.com (2603:10b6:208:3a2::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7159.16; Fri, 5 Jan 2024 02:20:49 +0000 X-Received: from MN6PR11MB8244.namprd11.prod.outlook.com ([fe80::3fea:ca2b:2ef7:e3d4]) by MN6PR11MB8244.namprd11.prod.outlook.com ([fe80::3fea:ca2b:2ef7:e3d4%4]) with mapi id 15.20.7159.013; Fri, 5 Jan 2024 02:20:48 +0000 From: "Ni, Ray" To: "devel@edk2.groups.io" , "Jin, Zhi" CC: Laszlo Ersek , "Kumar, Rahul R" , Gerd Hoffmann , "Wu, Jiaxin" Subject: Re: [edk2-devel] [PATCH 1/1] UefiCpuPkg/PiSmmCpuDxeSmm: Optimize PatchSmmSaveStateMap and FlushTlbForAll Thread-Topic: [edk2-devel] [PATCH 1/1] UefiCpuPkg/PiSmmCpuDxeSmm: Optimize PatchSmmSaveStateMap and FlushTlbForAll Thread-Index: AQHaP3uEpkmWeLO4P02LnNM1FyxhCrDKe/zw Date: Fri, 5 Jan 2024 02:20:48 +0000 Message-ID: References: <17A7512BA8BD522D.25044@groups.io> In-Reply-To: <17A7512BA8BD522D.25044@groups.io> Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ms-publictraffictype: Email x-ms-traffictypediagnostic: MN6PR11MB8244:EE_|IA1PR11MB6514:EE_ x-ms-office365-filtering-correlation-id: 52785f98-9c6c-4cf8-f55b-08dc0d94ee95 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam-message-info: Bk6IX5Guhxcx7Fmjlyr0NKRDkroEUXj8JUeSLDTrpE+HNPWh3ukp4T039lcqLvj481T1zmmhkRrl2A4lstejnZB6X/+C3s4sIlNdwyGZGpzGH5TWM+IPNYi/U/UNf5HZUB9yQA8k5JmV91zBtCNZmOI2XaUSWJTMvUHM3sNkEYnPCJYesafzIWKYUp3RI3cbraxUxS1Awu9sS3yIhygXvI58vQfC45KRtdikZZ7cXxPxzSQLNcrzrg+fXphSVxQmc/8xSlx2yJF9FoVCe4Dtgt5pJnqPIGXxk2DExcdll+nxfFKBWHlE+BPmsU7FHYz6zNdJ72tNk0iVDDf+XQgSdIfSe3WSlgANxNlUq6LJJ5jvtzsZXk7DbWVhkv7dSYWZhYdmzDJBVRhbvIwQB5//xcNf+jitjkx39lxJfnEDslIBuEl2UCdUoYEDm+G3cSwFHOGKZDpV9ZrZhC2g0jPDyevNHAbJigJLGk0FrpTR7EENo/8Sytua7ObucRhEmUqvSn0RDWn16WRQm2gN1260KgY6vXcO9GZDOx29uLDXJ1i9xpI8kQusSKYBirU7YNpbbn1S/ecq+fV1Q4sFEPF3mYAHCvyzO82+UP3XBlpkpT9r/zu1zFtDxjoCbxXoknVqwzxBynfU3iZ/JGxmWdp+6teeZKjy7ww4Pedo9rW69Ps= x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?DbtrO54/tF5Rc9UNdcBKdAHZiSo7HcBdcUIZBmlO6Wup60hUl1lr1g6dIQps?= =?us-ascii?Q?Th200PEGS2l/yZdMDmzv+vFTsaS/qO6S8fDYWTwUJBX/KsCvEtoUSVntl1rW?= =?us-ascii?Q?HIZGGa1B0fuzAZ8Z93RSni05YCCaOZ2E6wHyUIXuwPOS+wEi/IAp1dk/uYaQ?= =?us-ascii?Q?xhCHcfCEbbHyVVigGVqbJ8Aw9eFijc/tN+zDL8ba/6fU0QdNMDarcaBZOIfn?= =?us-ascii?Q?1fvr5xNVkfypMY+12Gr2WgPRj58TlEtwqkbvTixndV4+DtFCs3pGL+wYf9LB?= =?us-ascii?Q?9G2DdoF2bUApEXQ+FIGoXQrwYQUawuE8U06yIdsUwjpTeY39+umUGdZbW1Wr?= =?us-ascii?Q?F66XMYLJ+p3FYGFeGhgGGmWH7mkSh3KLNb0tCRE2ZbkzRHVRjQlClplZdrv5?= =?us-ascii?Q?JI5skeOArfib/3fA7L8VBudoH3/FSuo2pHG635HX+B1HXpQTAZqzsG525f3K?= =?us-ascii?Q?HVZO2BP5oo5zLlIoaRJH5gbm/cZmPrtufbRcJ/tkm5XJ+mGjCGhMQJEdDK44?= =?us-ascii?Q?wM3q2AvgbEeKCSksuoW7CuUN9Q4L2387t0YSq4soFeGqYsF1WYMhOZi4q0BJ?= =?us-ascii?Q?orTI0ZyrSHLzMqJaxxfjLYPfXm1HLmcpRp7Ca7Np3rmwoSAoRLXqCHgvCJUE?= =?us-ascii?Q?UxrgrMeidUYpyvo85YRaF49seS8biA+9g+2levd5ONaj9fDgWdFRm0zshDuE?= =?us-ascii?Q?6ubDx3/OMTS59h2/3Q/8RaMJV7BwrbApcqD+vtAizNL0hHgz6v0+znRo7Xni?= =?us-ascii?Q?N5ZlZ5NkJGSwsMoGWQO9h02Il6F6g12AZ0vwvfkcl6U43wzhXIVv21VeFz6L?= =?us-ascii?Q?mPLs5Hh/JU5isFWB+OEJPtilHutOgEjQH//otUem/KWRKHqrHFhQ8he3lU+q?= =?us-ascii?Q?HZ/QB6MMij0hIcEeYeEsnejK8s3ITWD139PzPgwjoxxyxFDv0LVRnP/lhAFu?= =?us-ascii?Q?ASrGyoacEdTJ0f85BgTFmYz9yvPqm38M1rCvuUHfBixxKXe5htvTFUt106AG?= =?us-ascii?Q?qS30mcJRxbm52VW3D8Gvp1am1oudRTVd7PGbDOV/K4wv6Iv2IJEwV5RQSUeG?= =?us-ascii?Q?se8BOsrhCWxSrM9llbPoA6+DuSClTRcNlHQHnleGTIoiyAKBwgM78MjE52U5?= =?us-ascii?Q?8DhohYobQ9+tdIKOIb8mOsiMC01MzTAwZjsP6dxf2AAhyhJUbvjCOpDnTXxk?= =?us-ascii?Q?F/zQn1fQQG1EMqvi/b+vFrGIpeQ/G99PbOwTJ51WjhBUF3j4MGuQARxvL1R9?= =?us-ascii?Q?9LF/QOYgL+I5hbhvX0MV/52mcDaBA0cDc8Awwi6uKX7iyF2LEstYKQfxqANK?= =?us-ascii?Q?ebJFZrSxLiqtuQYkugSTIDdGoyNViSJ6lftnnXyYFEuAY6CY4UBv1yH0ttjG?= =?us-ascii?Q?V9UE8tvSTAly4AP+VYB3YWk7sie00DZKAYzopl6NuoUGbzGLQxRsJX6iuwwK?= =?us-ascii?Q?d/5jxNfrUP5rmsdbX4gxa5BeWCsAg9qH1ys6Wee7oNSgEoREA7YV20rRkN4f?= =?us-ascii?Q?D+9HE28PqlX5iuF+bGumZumOBYb3p9bewyf7MscFfaaEhrURrpZXwudNWuH/?= =?us-ascii?Q?SyDxD/DBsaUXHsKw4fs=3D?= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: MN6PR11MB8244.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 52785f98-9c6c-4cf8-f55b-08dc0d94ee95 X-MS-Exchange-CrossTenant-originalarrivaltime: 05 Jan 2024 02:20:48.8317 (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: cFBmZ1AOYJLSNKvqzwxpnI6HpVn6S0vB8lWqxwme26DGoPWSc/HN3vbfFTTQGRlzxyQ6fegqVRF1HStc4qhPTw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA1PR11MB6514 X-OriginatorOrg: intel.com Precedence: Bulk List-Subscribe: List-Help: Sender: devel@edk2.groups.io List-Id: Mailing-List: list devel@edk2.groups.io; contact devel+owner@edk2.groups.io Reply-To: devel@edk2.groups.io,ray.ni@intel.com List-Unsubscribe-Post: List-Unsubscribe=One-Click List-Unsubscribe: X-Gm-Message-State: GjnKPGRqdY3RfTy2I5hWdLZGx7686176AA= Content-Language: en-US Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable X-GND-Status: LEGIT Authentication-Results: spool.mail.gandi.net; dkim=pass header.d=groups.io header.s=20140610 header.b=CLq2TV4r; arc=reject ("signature check failed: fail, {[1] = sig:microsoft.com:reject}"); dmarc=fail reason="SPF not aligned (relaxed), DKIM not aligned (relaxed)" header.from=intel.com (policy=none); spf=pass (spool.mail.gandi.net: domain of bounce@groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce@groups.io Zhi, With your patch, 1. SMM entry(code) and SmmSaveState region (data) are changed to correct pa= ging attributes. 2. FlushTlb() is removed after the changing. 3. FlushTlb() is updated to flush in parallel. My concern is about #2. Can you explain a bit why FlushTlb() can be removed= after changing paging attributes in #1? Thanks, Ray > -----Original Message----- > From: devel@edk2.groups.io On Behalf Of Jin, Zhi > Sent: Friday, January 5, 2024 10:04 AM > To: devel@edk2.groups.io > Cc: Jin, Zhi ; Ni, Ray ; Laszlo Erse= k > ; Kumar, Rahul R ; Gerd > Hoffmann ; Wu, Jiaxin > Subject: [edk2-devel] [PATCH 1/1] UefiCpuPkg/PiSmmCpuDxeSmm: Optimize > PatchSmmSaveStateMap and FlushTlbForAll >=20 > PatchSmmSaveStateMap patches the SMM entry (code) and SmmSaveState > region (data) for each core, which can be improved to flush TLB once > after all the memory entries have been patched. > FlushTlbForAll flushes TLB for each core in serial, which can be > improved to flush TLB in parrallel. >=20 > Cc: Ray Ni > Cc: Laszlo Ersek > Cc: Rahul Kumar > Cc: Gerd Hoffmann > Cc: Jiaxin Wu > Signed-off-by: Zhi Jin > --- > .../PiSmmCpuDxeSmm/SmmCpuMemoryManagement.c | 95 > ++++++++++++------- > 1 file changed, 63 insertions(+), 32 deletions(-) >=20 > diff --git a/UefiCpuPkg/PiSmmCpuDxeSmm/SmmCpuMemoryManagement.c > b/UefiCpuPkg/PiSmmCpuDxeSmm/SmmCpuMemoryManagement.c > index 15f998e501..d4066436f5 100644 > --- a/UefiCpuPkg/PiSmmCpuDxeSmm/SmmCpuMemoryManagement.c > +++ b/UefiCpuPkg/PiSmmCpuDxeSmm/SmmCpuMemoryManagement.c > @@ -547,17 +547,14 @@ FlushTlbForAll ( > VOID > ) > { > - UINTN Index; > - > FlushTlbOnCurrentProcessor (NULL); > - > - for (Index =3D 0; Index < gSmst->NumberOfCpus; Index++) { > - if (Index !=3D gSmst->CurrentlyExecutingCpu) { > - // Force to start up AP in blocking mode, > - SmmBlockingStartupThisAp (FlushTlbOnCurrentProcessor, Index, NULL)= ; > - // Do not check return status, because AP might not be present in = some > corner cases. > - } > - } > + InternalSmmStartupAllAPs ( > + (EFI_AP_PROCEDURE2)FlushTlbOnCurrentProcessor, > + 0, > + NULL, > + NULL, > + NULL > + ); > } >=20 > /** > @@ -799,71 +796,105 @@ PatchSmmSaveStateMap ( > UINTN TileCodeSize; > UINTN TileDataSize; > UINTN TileSize; > + UINTN PageTableBase; >=20 > - TileCodeSize =3D GetSmiHandlerSize (); > - TileCodeSize =3D ALIGN_VALUE (TileCodeSize, SIZE_4KB); > - TileDataSize =3D (SMRAM_SAVE_STATE_MAP_OFFSET - SMM_PSD_OFFSET) + > sizeof (SMRAM_SAVE_STATE_MAP); > - TileDataSize =3D ALIGN_VALUE (TileDataSize, SIZE_4KB); > - TileSize =3D TileDataSize + TileCodeSize - 1; > - TileSize =3D 2 * GetPowerOfTwo32 ((UINT32)TileSize); > + TileCodeSize =3D GetSmiHandlerSize (); > + TileCodeSize =3D ALIGN_VALUE (TileCodeSize, SIZE_4KB); > + TileDataSize =3D (SMRAM_SAVE_STATE_MAP_OFFSET - SMM_PSD_OFFSET) + > sizeof (SMRAM_SAVE_STATE_MAP); > + TileDataSize =3D ALIGN_VALUE (TileDataSize, SIZE_4KB); > + TileSize =3D TileDataSize + TileCodeSize - 1; > + TileSize =3D 2 * GetPowerOfTwo32 ((UINT32)TileSize); > + PageTableBase =3D AsmReadCr3 () & PAGING_4K_ADDRESS_MASK_64; >=20 > DEBUG ((DEBUG_INFO, "PatchSmmSaveStateMap:\n")); > for (Index =3D 0; Index < mMaxNumberOfCpus - 1; Index++) { > // > // Code > // > - SmmSetMemoryAttributes ( > + ConvertMemoryPageAttributes ( > + PageTableBase, > + mPagingMode, > mCpuHotPlugData.SmBase[Index] + SMM_HANDLER_OFFSET, > TileCodeSize, > - EFI_MEMORY_RO > + EFI_MEMORY_RO, > + TRUE, > + NULL > ); > - SmmClearMemoryAttributes ( > + ConvertMemoryPageAttributes ( > + PageTableBase, > + mPagingMode, > mCpuHotPlugData.SmBase[Index] + SMM_HANDLER_OFFSET, > TileCodeSize, > - EFI_MEMORY_XP > + EFI_MEMORY_XP, > + FALSE, > + NULL > ); >=20 > // > // Data > // > - SmmClearMemoryAttributes ( > + ConvertMemoryPageAttributes ( > + PageTableBase, > + mPagingMode, > mCpuHotPlugData.SmBase[Index] + SMM_HANDLER_OFFSET + > TileCodeSize, > TileSize - TileCodeSize, > - EFI_MEMORY_RO > + EFI_MEMORY_RO, > + FALSE, > + NULL > ); > - SmmSetMemoryAttributes ( > + ConvertMemoryPageAttributes ( > + PageTableBase, > + mPagingMode, > mCpuHotPlugData.SmBase[Index] + SMM_HANDLER_OFFSET + > TileCodeSize, > TileSize - TileCodeSize, > - EFI_MEMORY_XP > + EFI_MEMORY_XP, > + TRUE, > + NULL > ); > } >=20 > // > // Code > // > - SmmSetMemoryAttributes ( > + ConvertMemoryPageAttributes ( > + PageTableBase, > + mPagingMode, > mCpuHotPlugData.SmBase[mMaxNumberOfCpus - 1] + > SMM_HANDLER_OFFSET, > TileCodeSize, > - EFI_MEMORY_RO > + EFI_MEMORY_RO, > + TRUE, > + NULL > ); > - SmmClearMemoryAttributes ( > + ConvertMemoryPageAttributes ( > + PageTableBase, > + mPagingMode, > mCpuHotPlugData.SmBase[mMaxNumberOfCpus - 1] + > SMM_HANDLER_OFFSET, > TileCodeSize, > - EFI_MEMORY_XP > + EFI_MEMORY_XP, > + FALSE, > + NULL > ); >=20 > // > // Data > // > - SmmClearMemoryAttributes ( > + ConvertMemoryPageAttributes ( > + PageTableBase, > + mPagingMode, > mCpuHotPlugData.SmBase[mMaxNumberOfCpus - 1] + > SMM_HANDLER_OFFSET + TileCodeSize, > SIZE_32KB - TileCodeSize, > - EFI_MEMORY_RO > + EFI_MEMORY_RO, > + FALSE, > + NULL > ); > - SmmSetMemoryAttributes ( > + ConvertMemoryPageAttributes ( > + PageTableBase, > + mPagingMode, > mCpuHotPlugData.SmBase[mMaxNumberOfCpus - 1] + > SMM_HANDLER_OFFSET + TileCodeSize, > SIZE_32KB - TileCodeSize, > - EFI_MEMORY_XP > + EFI_MEMORY_XP, > + TRUE, > + NULL > ); > } >=20 > -- > 2.39.2 >=20 >=20 >=20 >=20 >=20 -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#113206): https://edk2.groups.io/g/devel/message/113206 Mute This Topic: https://groups.io/mt/103535844/7686176 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/leave/12367111/7686176/19134562= 12/xyzzy [rebecca@openfw.io] -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-