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.100, mailfrom: ray.ni@intel.com) Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) by groups.io with SMTP; Mon, 22 Jul 2019 22:47:23 -0700 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga008.jf.intel.com ([10.7.209.65]) by orsmga105.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 22 Jul 2019 22:47:22 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.64,297,1559545200"; d="scan'208";a="163393123" Received: from fmsmsx105.amr.corp.intel.com ([10.18.124.203]) by orsmga008.jf.intel.com with ESMTP; 22 Jul 2019 22:47:22 -0700 Received: from fmsmsx102.amr.corp.intel.com (10.18.124.200) by FMSMSX105.amr.corp.intel.com (10.18.124.203) with Microsoft SMTP Server (TLS) id 14.3.439.0; Mon, 22 Jul 2019 22:47:22 -0700 Received: from shsmsx108.ccr.corp.intel.com (10.239.4.97) by FMSMSX102.amr.corp.intel.com (10.18.124.200) with Microsoft SMTP Server (TLS) id 14.3.439.0; Mon, 22 Jul 2019 22:47:21 -0700 Received: from shsmsx104.ccr.corp.intel.com ([169.254.5.110]) by SHSMSX108.ccr.corp.intel.com ([169.254.8.174]) with mapi id 14.03.0439.000; Tue, 23 Jul 2019 13:46:29 +0800 From: "Ni, Ray" To: "devel@edk2.groups.io" , "Dong, Eric" CC: Laszlo Ersek , "Kumar, Chandana C" , "Zeng, Star" Subject: Re: [edk2-devel] [Patch v2 2/6] UefiCpuPkg/MpInitLib: Add MpInitLibStartupAllCPUs API. Thread-Topic: [edk2-devel] [Patch v2 2/6] UefiCpuPkg/MpInitLib: Add MpInitLibStartupAllCPUs API. Thread-Index: AQHVQF0i+n7nqSOynkuP+PAzqNcKvabXsobw Date: Tue, 23 Jul 2019 05:46:29 +0000 Message-ID: <734D49CCEBEEF84792F5B80ED585239D5C240CEE@SHSMSX104.ccr.corp.intel.com> References: <20190722071423.17372-1-eric.dong@intel.com> <20190722071423.17372-3-eric.dong@intel.com> In-Reply-To: <20190722071423.17372-3-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 "CPU" is used in MpInitLibStartupAllCPUs() and StartupAllCpusWorker(). Can you please follow today's capital rule of "AP" to update StartupAllCpusWorker() to StartupAllCPUsWorker()? And with the copyright year update to 2019, Reviewed-by: Ray Ni > -----Original Message----- > From: devel@edk2.groups.io On Behalf Of Dong, > Eric > Sent: Monday, July 22, 2019 3:14 PM > To: devel@edk2.groups.io > Cc: Ni, Ray ; Laszlo Ersek ; Kumar, > Chandana C ; Zeng, Star > > Subject: [edk2-devel] [Patch v2 2/6] UefiCpuPkg/MpInitLib: 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/Library/MpInitLib/DxeMpLib.c | 3 +- > UefiCpuPkg/Library/MpInitLib/MpLib.c | 60 +++++++++++++++++++++++- > - > UefiCpuPkg/Library/MpInitLib/MpLib.h | 4 +- > UefiCpuPkg/Library/MpInitLib/PeiMpLib.c | 3 +- > 4 files changed, 63 insertions(+), 7 deletions(-) >=20 > diff --git a/UefiCpuPkg/Library/MpInitLib/DxeMpLib.c > b/UefiCpuPkg/Library/MpInitLib/DxeMpLib.c > index 6be1bae464..23adfd0625 100644 > --- a/UefiCpuPkg/Library/MpInitLib/DxeMpLib.c > +++ b/UefiCpuPkg/Library/MpInitLib/DxeMpLib.c > @@ -568,9 +568,10 @@ MpInitLibStartupAllAPs ( > // > mStopCheckAllApsStatus =3D TRUE; >=20 > - Status =3D StartupAllAPsWorker ( > + Status =3D StartupAllCpusWorker ( > Procedure, > SingleThread, > + TRUE, > WaitEvent, > TimeoutInMicroseconds, > ProcedureArgument, > diff --git a/UefiCpuPkg/Library/MpInitLib/MpLib.c > b/UefiCpuPkg/Library/MpInitLib/MpLib.c > index 6f51bc4ebf..51e63e14a3 100644 > --- a/UefiCpuPkg/Library/MpInitLib/MpLib.c > +++ b/UefiCpuPkg/Library/MpInitLib/MpLib.c > @@ -2130,6 +2130,7 @@ MpInitLibGetNumberOfProcessors ( > number. If FALSE, then all the e= nabled APs > execute the function specified by= Procedure > simultaneously. > + @param[in] ExcludeBsp Whether let BSP also trig this ta= sk. > @param[in] WaitEvent The event created by the caller w= ith > CreateEvent() > service. > @param[in] TimeoutInMicroseconds Indicates the time limit in > microseconds for > @@ -2151,9 +2152,10 @@ MpInitLibGetNumberOfProcessors ( >=20 > **/ > EFI_STATUS > -StartupAllAPsWorker ( > +StartupAllCpusWorker ( > IN EFI_AP_PROCEDURE Procedure, > IN BOOLEAN SingleThread, > + IN BOOLEAN ExcludeBsp, > IN EFI_EVENT WaitEvent OPTIONAL, > IN UINTN TimeoutInMicroseconds, > IN VOID *ProcedureArgument OPTIONAL, > @@ -2175,7 +2177,7 @@ StartupAllAPsWorker ( > *FailedCpuList =3D NULL; > } >=20 > - if (CpuMpData->CpuCount =3D=3D 1) { > + if (CpuMpData->CpuCount =3D=3D 1 && ExcludeBsp) { > return EFI_NOT_STARTED; > } >=20 > @@ -2218,9 +2220,9 @@ StartupAllAPsWorker ( > } > } >=20 > - if (!HasEnabledAp) { > + if (!HasEnabledAp && ExcludeBsp) { > // > - // If no enabled AP exists, return EFI_NOT_STARTED. > + // If no enabled AP exists and not include Bsp to do the procedure,= return > EFI_NOT_STARTED. > // > return EFI_NOT_STARTED; > } > @@ -2266,6 +2268,13 @@ StartupAllAPsWorker ( > } > } >=20 > + if (!ExcludeBsp) { > + // > + // Start BSP. > + // > + Procedure (ProcedureArgument); > + } > + > Status =3D EFI_SUCCESS; > if (WaitEvent =3D=3D NULL) { > do { > @@ -2411,3 +2420,46 @@ GetCpuMpDataFromGuidedHob ( > return CpuMpData; > } >=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. > + > + @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 > + ) > +{ > + return StartupAllCpusWorker ( > + Procedure, > + FALSE, > + FALSE, > + NULL, > + TimeoutInMicroseconds, > + ProcedureArgument, > + NULL > + ); > +} > diff --git a/UefiCpuPkg/Library/MpInitLib/MpLib.h > b/UefiCpuPkg/Library/MpInitLib/MpLib.h > index f89037c59e..81de45c73b 100644 > --- a/UefiCpuPkg/Library/MpInitLib/MpLib.h > +++ b/UefiCpuPkg/Library/MpInitLib/MpLib.h > @@ -405,6 +405,7 @@ InitMpGlobalData ( > number. If FALSE, then all the e= nabled APs > execute the function specified by= Procedure > simultaneously. > + @param[in] ExcludeBsp Whether let BSP also trig this ta= sk. > @param[in] WaitEvent The event created by the caller w= ith > CreateEvent() > service. > @param[in] TimeoutInMicroseconds Indicates the time limit in > microseconds for > @@ -426,9 +427,10 @@ InitMpGlobalData ( >=20 > **/ > EFI_STATUS > -StartupAllAPsWorker ( > +StartupAllCpusWorker ( > IN EFI_AP_PROCEDURE Procedure, > IN BOOLEAN SingleThread, > + IN BOOLEAN ExcludeBsp, > IN EFI_EVENT WaitEvent OPTIONAL, > IN UINTN TimeoutInMicroseconds, > IN VOID *ProcedureArgument OPTIONAL, > diff --git a/UefiCpuPkg/Library/MpInitLib/PeiMpLib.c > b/UefiCpuPkg/Library/MpInitLib/PeiMpLib.c > index 35dff91fd2..5666ad0862 100644 > --- a/UefiCpuPkg/Library/MpInitLib/PeiMpLib.c > +++ b/UefiCpuPkg/Library/MpInitLib/PeiMpLib.c > @@ -401,9 +401,10 @@ MpInitLibStartupAllAPs ( > return EFI_UNSUPPORTED; > } >=20 > - return StartupAllAPsWorker ( > + return StartupAllCpusWorker ( > Procedure, > SingleThread, > + TRUE, > NULL, > TimeoutInMicroseconds, > ProcedureArgument, > -- > 2.21.0.windows.1 >=20 >=20 >=20