From mboxrd@z Thu Jan 1 00:00:00 1970 Authentication-Results: mx.groups.io; dkim=missing; spf=pass (domain: intel.com, ip: 134.134.136.31, mailfrom: ray.ni@intel.com) Received: from mga06.intel.com (mga06.intel.com [134.134.136.31]) by groups.io with SMTP; Fri, 19 Jul 2019 00:52:35 -0700 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga002.fm.intel.com ([10.253.24.26]) by orsmga104.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 19 Jul 2019 00:52:35 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.64,281,1559545200"; d="scan'208";a="195872303" Received: from fmsmsx105.amr.corp.intel.com ([10.18.124.203]) by fmsmga002.fm.intel.com with ESMTP; 19 Jul 2019 00:52:34 -0700 Received: from fmsmsx151.amr.corp.intel.com (10.18.125.4) by FMSMSX105.amr.corp.intel.com (10.18.124.203) with Microsoft SMTP Server (TLS) id 14.3.439.0; Fri, 19 Jul 2019 00:52:34 -0700 Received: from shsmsx154.ccr.corp.intel.com (10.239.6.54) by FMSMSX151.amr.corp.intel.com (10.18.125.4) with Microsoft SMTP Server (TLS) id 14.3.439.0; Fri, 19 Jul 2019 00:52:34 -0700 Received: from shsmsx104.ccr.corp.intel.com ([169.254.5.110]) by SHSMSX154.ccr.corp.intel.com ([169.254.7.240]) with mapi id 14.03.0439.000; Fri, 19 Jul 2019 15:52:32 +0800 From: "Ni, Ray" To: "devel@edk2.groups.io" , "Dong, Eric" CC: Laszlo Ersek , "Kumar, Chandana C" , "Zeng, Star" Subject: Re: [edk2-devel] [Patch 1/5] UefiCpuPkg/Include/MpInitLib.h: Add MpInitLibStartupAllCPUs API. Thread-Topic: [edk2-devel] [Patch 1/5] UefiCpuPkg/Include/MpInitLib.h: Add MpInitLibStartupAllCPUs API. Thread-Index: AQHVPgONCuGmHAJjrUeKR2DhApcZYqbRjeqw Date: Fri, 19 Jul 2019 07:52:31 +0000 Message-ID: <734D49CCEBEEF84792F5B80ED585239D5C2387E3@SHSMSX104.ccr.corp.intel.com> References: <20190719072811.6352-1-eric.dong@intel.com> <20190719072811.6352-2-eric.dong@intel.com> In-Reply-To: <20190719072811.6352-2-eric.dong@intel.com> Accept-Language: en-US, zh-CN X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.239.127.40] MIME-Version: 1.0 Return-Path: ray.ni@intel.com Content-Language: en-US Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable My understanding to the difference (No WaitEvent, No SingleThread) between = prototype of *StartupAllCPUs and *StartupAllAPs() is: This library API supports the new PPI service *StartupAllCPUs() and isn't = consumed by CpuMpDxe to produce similar *StartupAllCPUs() protocol service. With the commit message updated to include the reason above, Reviewed-by: = Ray Ni > -----Original Message----- > From: devel@edk2.groups.io On Behalf Of Dong, > Eric > Sent: Friday, July 19, 2019 3:28 PM > To: devel@edk2.groups.io > Cc: Ni, Ray ; Laszlo Ersek ; Kumar, > Chandana C ; Zeng, Star > > Subject: [edk2-devel] [Patch 1/5] UefiCpuPkg/Include/MpInitLib.h: Add > MpInitLibStartupAllCPUs API. >=20 > REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3D1973 >=20 > Add new MpInitLibStartupAllCPUs API uses to start all processors at the = same > time. >=20 > Cc: Ray Ni > Cc: Laszlo Ersek > Cc: Chandana Kumar > Cc: Star Zeng > Signed-off-by: Eric Dong > --- > UefiCpuPkg/Include/Library/MpInitLib.h | 48 > ++++++++++++++++++++++++++ > 1 file changed, 48 insertions(+) >=20 > diff --git a/UefiCpuPkg/Include/Library/MpInitLib.h > b/UefiCpuPkg/Include/Library/MpInitLib.h > index fa82529373..3f06dcf558 100644 > --- a/UefiCpuPkg/Include/Library/MpInitLib.h > +++ b/UefiCpuPkg/Include/Library/MpInitLib.h > @@ -344,4 +344,52 @@ MpInitLibWhoAmI ( > OUT UINTN *ProcessorNumber > ); >=20 > +/** > + This service executes a caller provided function on all enabled CPUs. > + > + @param[in] Procedure A pointer to the function to be r= un on > + enabled APs of the system. See ty= pe > + EFI_AP_PROCEDURE. > + @param[in] TimeoutInMicroseconds Indicates the time limit in > microseconds for > + APs to return from Procedure, eit= her for > + blocking or non-blocking mode. Ze= ro means > + infinity. > + @param[in] ProcedureArgument The parameter passed into > Procedure for > + all APs. > + @param[out] FailedCpuList If NULL, this parameter is ignore= d. > Otherwise, > + if all APs finish successfully, t= hen its > + content is set to NULL. If not al= l APs > + finish before timeout expires, th= en its > + content is set to address of the = buffer > + holding handle numbers of the fai= led APs. > + The buffer is allocated by MP Ini= tialization > + library, and it's the caller's re= sponsibility to > + free the buffer with FreePool() s= ervice. > + In blocking mode, it is ready for= consumption > + when the call returns. In non-blo= cking mode, > + it is ready when WaitEvent is sig= naled. The > + list of failed CPU is terminated = by > + END_OF_CPU_LIST. > + > + @retval EFI_SUCCESS In blocking mode, all CPUs have finis= hed > before > + the timeout expired. > + @retval EFI_SUCCESS In non-blocking mode, function has be= en > dispatched > + to all enabled CPUs. > + @retval EFI_DEVICE_ERROR Caller processor is AP. > + @retval EFI_NOT_READY Any enabled APs are busy. > + @retval EFI_NOT_READY MP Initialize Library is not initiali= zed. > + @retval EFI_TIMEOUT In blocking mode, the timeout expired= before > + all enabled APs have finished. > + @retval EFI_INVALID_PARAMETER Procedure is NULL. > + > +**/ > +EFI_STATUS > +EFIAPI > +MpInitLibStartupAllCPUs ( > + IN EFI_AP_PROCEDURE Procedure, > + IN UINTN TimeoutInMicroseconds, > + IN VOID *ProcedureArgument OPTIONAL, > + OUT UINTN **FailedCpuList OPTIONAL > + ); > + > #endif > -- > 2.21.0.windows.1 >=20 >=20 >=20