From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga18.intel.com (mga18.intel.com [134.134.136.126]) by mx.groups.io with SMTP id smtpd.web12.6564.1612437880588327417 for ; Thu, 04 Feb 2021 03:24:41 -0800 Authentication-Results: mx.groups.io; dkim=pass header.i=@intel.onmicrosoft.com header.s=selector2-intel-onmicrosoft-com header.b=bY+O8bDN; spf=pass (domain: intel.com, ip: 134.134.136.126, mailfrom: star.zeng@intel.com) IronPort-SDR: fBPSrKNbdD7xv6eowUfrcrF5xt/kyfUKVPu2x2lFqPKe0nBxl5a5zkjc2runymJVBR6pPeNdlO sw7CZZwA05Bw== X-IronPort-AV: E=McAfee;i="6000,8403,9884"; a="168901895" X-IronPort-AV: E=Sophos;i="5.79,400,1602572400"; d="scan'208";a="168901895" Received: from fmsmga003.fm.intel.com ([10.253.24.29]) by orsmga106.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 04 Feb 2021 03:24:33 -0800 IronPort-SDR: 5vZOgy/obNwBwDHSyGnJs7W2GhSZssbZa/QPnt4pUF0Lkc2HhfNPKQTpIX95bG9FkToVGl1hww Q7T4vjeU2mNw== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.79,400,1602572400"; d="scan'208";a="414772277" Received: from fmsmsx605.amr.corp.intel.com ([10.18.126.85]) by FMSMGA003.fm.intel.com with ESMTP; 04 Feb 2021 03:24:31 -0800 Received: from fmsmsx610.amr.corp.intel.com (10.18.126.90) by fmsmsx605.amr.corp.intel.com (10.18.126.85) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2106.2; Thu, 4 Feb 2021 03:24:31 -0800 Received: from fmsedg602.ED.cps.intel.com (10.1.192.136) by fmsmsx610.amr.corp.intel.com (10.18.126.90) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2106.2 via Frontend Transport; Thu, 4 Feb 2021 03:24:31 -0800 Received: from NAM12-MW2-obe.outbound.protection.outlook.com (104.47.66.49) 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.1713.5; Thu, 4 Feb 2021 03:24:31 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=dHU+al/Ees25Zlpq9UamgfUI8WFvO1mcbXaKqN6EGEGGPbPGWUquXFiipskfAaBAMOqCDRq/40uaXQmXPOWVV1ra9rBWRoZyDsWDlIPz0bda1yiUGX5QtooHFflEeWBw5p6wUf23Rl3F3/bnvD38gBygYo+eP40ROTEqpFlxiZJt4uMBZjYjXTHyisEHGW9u2OZu0mggpivYdJaYnnZSLFynCuWI3CEnX0IpgjUziylq4yT5jv5lzYL8Ez22afIOePdPaLwwaCVCWnuEEvgiRJkWbrr2wf0Ga7AvXVR9NaM1Yx5/LMsy2NDF28lT91vQkwiudR3K7yS5LUO1Yi2HEg== 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=3MVJjxWIr4OFIF8h8ryteVf+LJvHgdSLFBrsTFByRM0=; b=Na40ERuCZqu1PRI7OcLXFPMmM2LhiarNmBz46ezSJZi3W3MuYtrghjAQFx5IGiQweJAR6FhzNRvWM4BqXDMHhqqdVflZJTLmMCBH8L4wbDyY4HComF3cXsg3YHZWjhil7aMHQWXggWdwZaTcOYTiYtBLNr5MtEpAo6nMP2yDl0pbLktClY4mb84qlKYgsqAsxcO0IPFC+XPeMbhDDI3DQjJvg7ZTP+wYf/p14t6qXbDtUSpHvviUoEnv+Wagl2x9cP7M6hHitDz6tdVUZG3ej0mYKOALwUmOIdV0VuxP6yosUMzde9XNNtZN9drshyvtKKbDcMNa7cEco1hRY1CZpw== 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=3MVJjxWIr4OFIF8h8ryteVf+LJvHgdSLFBrsTFByRM0=; b=bY+O8bDNg/vFo0/vPsNllQMrvLA7sPN/hopIcsJRX2KcZl+80QitcZwfxYivVOgd5dzc2fP0ggplMH7cCadMspL0AEc6NBVsDseaWXatflOtg9TwP5SvgFIC4Vw6+f9f007LKpu2fDYHpqv3AvoniKzWskH0moTw1ueFp6BHTc4= Received: from DM6PR11MB4058.namprd11.prod.outlook.com (2603:10b6:5:193::13) by DM6PR11MB3034.namprd11.prod.outlook.com (2603:10b6:5:65::28) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3805.24; Thu, 4 Feb 2021 11:24:30 +0000 Received: from DM6PR11MB4058.namprd11.prod.outlook.com ([fe80::29e6:77f7:8834:9f88]) by DM6PR11MB4058.namprd11.prod.outlook.com ([fe80::29e6:77f7:8834:9f88%7]) with mapi id 15.20.3825.020; Thu, 4 Feb 2021 11:24:30 +0000 From: "Zeng, Star" To: "devel@edk2.groups.io" , "Ni, Ray" CC: Laszlo Ersek , "Dong, Eric" , "Kumar, Rahul1" , "Zeng, Star" Subject: Re: [edk2-devel] [PATCH 2/2] UefiCpuPkg/MpInitLib: Use XADD to avoid lock acquire/release Thread-Topic: [edk2-devel] [PATCH 2/2] UefiCpuPkg/MpInitLib: Use XADD to avoid lock acquire/release Thread-Index: AQHW+qHv2t69evMTm0iXp03wU0OHPapH2x0Q Date: Thu, 4 Feb 2021 11:24:29 +0000 Message-ID: References: <20210204025921.1428-1-ray.ni@intel.com> <20210204025921.1428-3-ray.ni@intel.com> In-Reply-To: <20210204025921.1428-3-ray.ni@intel.com> Accept-Language: zh-CN, en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: edk2.groups.io; dkim=none (message not signed) header.d=none;edk2.groups.io; dmarc=none action=none header.from=intel.com; x-originating-ip: [192.198.147.202] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 78a9db66-39af-489d-6195-08d8c8ff706f x-ms-traffictypediagnostic: DM6PR11MB3034: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:9508; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: mWJBkkWPx12oAdSnzSXFV5FkwNzr4Bo4qh5B+uRVkoErMncVecPUg6+8m1EyEmn9xq07qOtz3NRDpen1PoW6wNYAdxVRcaJR61RsEFZVZgymjzfUEahShxPYnrBoNRX6korD5RbpEpN/gWGH1ITwPxgbZ/eObXjmO+tDv2rjqc2hi5Heo7GOijJzRuAy8LzoOQAWbWXMt0WunQulwFcHBQ94n0ujFG9uHejuUg55YbUa9Op2r6x4+/f9JaYKkAKvPg4pl+DKVxP3JPqctL8XlTcsgA13tYwyEqGFJwALTXejSa940E/TbEPWKpTr0iOFb+EArBNQp70XEk/L3ckDSGp5EHAVpHmIL8LNb6ppG6H1eGgFJn7F3x9JMPtXReGPxuvnTVoxlV1M6Hv5zkmehzdKLLskK7Ux+9/XIoM8HSPqq7h76Mv9gmDGAOi96WdNM3/2+ptuoXS+SvGMaExnUEcTtXxDjOXvwnzx3L02RN2Nd0z70ANbL9PipSO0BTCGT6s7FO6uoPzzNLKghPUX9SnQdeqvVJYZzm07h5QLGxDSek71weXY5aPYYUF6vcwp9eY4GtTclXIGFBEoSRqJsciXHjfx/TQdMnxSC52cftQ= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DM6PR11MB4058.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(6029001)(136003)(376002)(366004)(346002)(39860400002)(396003)(83380400001)(966005)(66556008)(66446008)(52536014)(64756008)(66946007)(6506007)(54906003)(26005)(110136005)(186003)(33656002)(478600001)(7696005)(107886003)(86362001)(5660300002)(8676002)(53546011)(8936002)(76116006)(6636002)(9686003)(316002)(4326008)(2906002)(55016002)(19627235002)(71200400001)(66476007);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata: =?us-ascii?Q?FOmUS4LiC99u3IivkrFcQdFsRzNfNNay0YeI1450Jqz1JEXF0XVat1m8uXC6?= =?us-ascii?Q?kBYkVzgdu/wlgufu8yu1FYWAOnuze5FR4ZTNWGyH8wTRSU6Onz9vMp+ggTKx?= =?us-ascii?Q?Q5f+Wxd9hbbWOHym+lx6NxeBnjtOW+uSAv2kw3bZf9HyumTYbp2uLZBeAHP/?= =?us-ascii?Q?jUQ4sDpiXYaKpu4Jc3j/Xz3OBop3eQKmUZ63b61A8CQjUOUnEZrTNrHxy7HP?= =?us-ascii?Q?hgzxniOY2dMQ/4VsHaqH8XwQU2FJ7/gfnyAMhNlbAqpl4Z2ED9Ldgj6KEBBU?= =?us-ascii?Q?akgZPpl9oI8WlN95beGOQXNvIJL1KGp+AwjskvBg4NiwjygXMdwkkvCR3FdE?= =?us-ascii?Q?6UA5endebRprE6ZeAxOZDUWJxyQSbmbGq22yES5wO3vZYyJy0bgJQv6w/3qG?= =?us-ascii?Q?lCSawNKpTXw4TJS/yGHs64VLw4lVEU6qjpJdH3KUxOHt6kIMcndnL61dG1WR?= =?us-ascii?Q?lktp6QgeA6rZdMjagXkUEUyme9rtdEEcVv62HJr2cFvYUQDK7lBO8IByGkcH?= =?us-ascii?Q?G2uxaoW2W1e0/zXo9gc/IgQ20FkUxuI5gENC24nuTzi0z57JztRZmP0yt62d?= =?us-ascii?Q?P7/WWtkrWGZZLliRueWFXLj5hZrBTTgxSar29yDUD4FMRmZmuAW+nQvU4wPs?= =?us-ascii?Q?EFJwJTED61yXpuDe/lBh7BojVTmVzJF/wvU/V/LfmNM6Lpw889b85fHeIqis?= =?us-ascii?Q?Rg/dzToJApPsWREn6YZsluqsZm3QDzaCwWaPhsyE6pxLxLHlvAHGla/tWmQ8?= =?us-ascii?Q?/JoSAG5nY05fqoh4Bj5ujkqOyK7K8TKzUeIyPgk/lhHlEJZR40OG7UBB/V54?= =?us-ascii?Q?zmH/wUTsErc47X4Zg7pXVL8fNu+9th+oveccN/qU53rtETTOUBkRCNZyzaCJ?= =?us-ascii?Q?SJUEu0PCzLmNjg2wiUfJOG8r4byyweyRV0Uhm/XwXn03uL3lLMvgotAEx0MG?= =?us-ascii?Q?vcJJ1G6dd24xbNGiRN424azBtza6Qoz/wCug0bnh9ioj7gS0RUHIFJJbvk+W?= =?us-ascii?Q?N+rg4d9Lt1QjmR20d2iPs/0mF+h3XIE0kx+qB4ZFMQPXzrHdrm++Wnko5TDE?= =?us-ascii?Q?7FsyUDdC?= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: DM6PR11MB4058.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 78a9db66-39af-489d-6195-08d8c8ff706f X-MS-Exchange-CrossTenant-originalarrivaltime: 04 Feb 2021 11:24:29.9739 (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: 0DuEF5xb4YShMqXCZa1Wlm4rrMS2tFBX5hY0nNFvIDpFNS7/kNzrITW0QQ1FE17yoBK7eMUlvXbjPu7mRLtYIQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR11MB3034 Return-Path: star.zeng@intel.com X-OriginatorOrg: intel.com Content-Language: en-US Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Hi All, Do you think it worth or not to also update MpFuncs.nasm in Edk2\UefiCpuPkg= \PiSmmCpuDxeSmm? Thanks, Star > -----Original Message----- > From: devel@edk2.groups.io On Behalf Of Ni, Ray > Sent: Thursday, February 4, 2021 10:59 AM > To: devel@edk2.groups.io > Cc: Laszlo Ersek ; Dong, Eric ; > Kumar, Rahul1 > Subject: [edk2-devel] [PATCH 2/2] UefiCpuPkg/MpInitLib: Use XADD to avoid > lock acquire/release >=20 > When AP firstly wakes up, MpFuncs.nasm contains below logic to assign an > unique ApIndex to each AP according to who comes first: > ---ASM--- > TestLock: > xchg [edi], eax > cmp eax, NotVacantFlag > jz TestLock >=20 > mov ecx, esi > add ecx, ApIndexLocation > inc dword [ecx] > mov ebx, [ecx] >=20 > Releaselock: > mov eax, VacantFlag > xchg [edi], eax > ---ASM END--- >=20 > "lock inc" cannot be used to increase ApIndex because not only the global > ApIndex should be increased, but also the result should be stored to a lo= cal > general purpose register EBX. >=20 > This patch learns from the NASM implementation of > InternalSyncIncrement() to use "XADD" instruction which can increase the > global ApIndex and store the original ApIndex to EBX in one instruction. >=20 > With this patch, OVMF when running in a 255 threads QEMU spends about > one second to wakeup all APs. Original implementation needs more than > 10 seconds. >=20 > Signed-off-by: Ray Ni > Cc: Laszlo Ersek > Cc: Eric Dong > Cc: Rahul1 Kumar > --- > UefiCpuPkg/Library/MpInitLib/Ia32/MpEqu.inc | 4 ---- > .../Library/MpInitLib/Ia32/MpFuncs.nasm | 21 +++++-------------- > UefiCpuPkg/Library/MpInitLib/MpLib.c | 3 +-- > UefiCpuPkg/Library/MpInitLib/MpLib.h | 3 +-- > UefiCpuPkg/Library/MpInitLib/X64/MpEqu.inc | 4 ---- > UefiCpuPkg/Library/MpInitLib/X64/MpFuncs.nasm | 18 ++++------------ > 6 files changed, 11 insertions(+), 42 deletions(-) >=20 > diff --git a/UefiCpuPkg/Library/MpInitLib/Ia32/MpEqu.inc > b/UefiCpuPkg/Library/MpInitLib/Ia32/MpEqu.inc > index 244c1e72b7..5f1f0351d2 100644 > --- a/UefiCpuPkg/Library/MpInitLib/Ia32/MpEqu.inc > +++ b/UefiCpuPkg/Library/MpInitLib/Ia32/MpEqu.inc > @@ -12,16 +12,12 @@ > ; ;---------------------------------------------------------------------= ---------- - > VacantFlag equ 00h-NotVacantFlag = equ 0ffh- > CPU_SWITCH_STATE_IDLE equ 0 CPU_SWITCH_STATE_STORED > equ 1 CPU_SWITCH_STATE_LOADED equ 2 > MP_CPU_EXCHANGE_INFO_OFFSET equ (SwitchToRealProcEnd - > RendezvousFunnelProcStart) struc MP_CPU_EXCHANGE_INFO- .Lock: > resd 1 .StackStart: resd 1 .StackSize: resd 1 = .CFunction: > resd 1diff --git a/UefiCpuPkg/Library/MpInitLib/Ia32/MpFuncs.nasm > b/UefiCpuPkg/Library/MpInitLib/Ia32/MpFuncs.nasm > index 908c2eb447..b7267393db 100644 > --- a/UefiCpuPkg/Library/MpInitLib/Ia32/MpFuncs.nasm > +++ b/UefiCpuPkg/Library/MpInitLib/Ia32/MpFuncs.nasm > @@ -122,23 +122,12 @@ SkipEnableExecuteDisable: > ; AP init mov edi, esi- add edi, > MP_CPU_EXCHANGE_INFO_OFFSET- mov eax, NotVacantFlag-- > TestLock:- xchg [edi], eax- cmp eax, NotVacantFlag- = jz > TestLock-- mov ecx, esi- add ecx, > MP_CPU_EXCHANGE_INFO_OFFSET + MP_CPU_EXCHANGE_INFO.ApIndex- > inc dword [ecx]- mov ebx, [ecx]--Releaselock:- mov = eax, > VacantFlag- xchg [edi], eax+ add edi, > MP_CPU_EXCHANGE_INFO_OFFSET + > MP_CPU_EXCHANGE_INFO.ApIndex+ mov ebx, 1+ lock xadd [edi], > ebx ; EBX =3D ApIndex+++ inc ebx = ; EBX is > CpuNumber + ; program stack mov edi, esi add edi= , > MP_CPU_EXCHANGE_INFO_OFFSET + MP_CPU_EXCHANGE_INFO.StackSize > mov eax, [edi]diff --git a/UefiCpuPkg/Library/MpInitLib/MpLib.c > b/UefiCpuPkg/Library/MpInitLib/MpLib.c > index 8b1f7f84ba..32a3951742 100644 > --- a/UefiCpuPkg/Library/MpInitLib/MpLib.c > +++ b/UefiCpuPkg/Library/MpInitLib/MpLib.c > @@ -1,7 +1,7 @@ > /** @file CPU MP Initialize Library common functions. - Copyright (c)= 2016 - > 2020, Intel Corporation. All rights reserved.
+ Copyright (c) 2016 - = 2021, > Intel Corporation. All rights reserved.
Copyright (c) 2020, AMD Inc= . All > rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent@@ - > 1012,7 +1012,6 @@ FillExchangeInfoData ( > IA32_CR4 Cr4; ExchangeInfo = =3D CpuMpData- > >MpCpuExchangeInfo;- ExchangeInfo->Lock =3D 0; ExchangeInfo= - > >StackStart =3D CpuMpData->Buffer; ExchangeInfo->StackSize = =3D > CpuMpData->CpuApStackSize; ExchangeInfo->BufferStart =3D CpuMpData- > >WakeupBuffer;diff --git a/UefiCpuPkg/Library/MpInitLib/MpLib.h > b/UefiCpuPkg/Library/MpInitLib/MpLib.h > index 02652eaae1..0bd60388b1 100644 > --- a/UefiCpuPkg/Library/MpInitLib/MpLib.h > +++ b/UefiCpuPkg/Library/MpInitLib/MpLib.h > @@ -1,7 +1,7 @@ > /** @file Common header file for MP Initialize Library. - Copyright (= c) 2016 > - 2020, Intel Corporation. All rights reserved.
+ Copyright (c) 2016 = - 2021, > Intel Corporation. All rights reserved.
Copyright (c) 2020, AMD Inc= . All > rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent@@ - > 190,7 +190,6 @@ typedef struct _CPU_MP_DATA CPU_MP_DATA; > // into this structure are used in assembly code in this module // typed= ef > struct {- UINTN Lock; UINTN StackStart= ; UINTN > StackSize; UINTN CFunction;diff --git > a/UefiCpuPkg/Library/MpInitLib/X64/MpEqu.inc > b/UefiCpuPkg/Library/MpInitLib/X64/MpEqu.inc > index 3974330991..32e9a262bc 100644 > --- a/UefiCpuPkg/Library/MpInitLib/X64/MpEqu.inc > +++ b/UefiCpuPkg/Library/MpInitLib/X64/MpEqu.inc > @@ -12,16 +12,12 @@ > ; ;---------------------------------------------------------------------= ---------- - > VacantFlag equ 00h-NotVacantFlag = equ 0ffh- > CPU_SWITCH_STATE_IDLE equ 0 CPU_SWITCH_STATE_STORED > equ 1 CPU_SWITCH_STATE_LOADED equ 2 > MP_CPU_EXCHANGE_INFO_OFFSET equ (SwitchToRealProcEnd - > RendezvousFunnelProcStart) struc MP_CPU_EXCHANGE_INFO- .Lock: > resq 1 .StackStart: resq 1 .StackSize: resq 1 = .CFunction: > resq 1diff --git a/UefiCpuPkg/Library/MpInitLib/X64/MpFuncs.nasm > b/UefiCpuPkg/Library/MpInitLib/X64/MpFuncs.nasm > index 423beb2cca..383b4974f8 100644 > --- a/UefiCpuPkg/Library/MpInitLib/X64/MpFuncs.nasm > +++ b/UefiCpuPkg/Library/MpInitLib/X64/MpFuncs.nasm > @@ -158,21 +158,11 @@ LongModeStart: > ; AP init mov edi, esi- add edi, > MP_CPU_EXCHANGE_INFO_OFFSET + MP_CPU_EXCHANGE_INFO.Lock- > mov rax, NotVacantFlag+ add edi, > MP_CPU_EXCHANGE_INFO_OFFSET + > MP_CPU_EXCHANGE_INFO.ApIndex+ mov ebx, 1+ lock xadd [edi], > ebx ; EBX =3D ApIndex+++ inc ebx = ; EBX is > CpuNumber -TestLock:- xchg qword [edi], rax- cmp rax, > NotVacantFlag- jz TestLock-- lea ecx, [esi + > MP_CPU_EXCHANGE_INFO_OFFSET + > MP_CPU_EXCHANGE_INFO.ApIndex]- inc dword [ecx]- mov e= bx, > [ecx]--Releaselock:- mov rax, VacantFlag- xchg qword [= edi], rax ; > program stack mov edi, esi add edi, > MP_CPU_EXCHANGE_INFO_OFFSET + > MP_CPU_EXCHANGE_INFO.StackSize-- > 2.27.0.windows.1 >=20 >=20 >=20 > -=3D-=3D-=3D-=3D-=3D-=3D > Groups.io Links: You receive all messages sent to this group. > View/Reply Online (#71132): https://edk2.groups.io/g/devel/message/71132 > Mute This Topic: https://groups.io/mt/80372087/1779220 > Group Owner: devel+owner@edk2.groups.io > Unsubscribe: https://edk2.groups.io/g/devel/unsub [star.zeng@intel.com] - > =3D-=3D-=3D-=3D-=3D-=3D >=20