From nobody Sun Feb 8 05:54:47 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of groups.io designates 66.175.222.12 as permitted sender) client-ip=66.175.222.12; envelope-from=bounce+27952+44102+1787277+3901457@groups.io; helo=web01.groups.io; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zoho.com: domain of groups.io designates 66.175.222.12 as permitted sender) smtp.mailfrom=bounce+27952+44102+1787277+3901457@groups.io; dmarc=fail(p=none dis=none) header.from=intel.com ARC-Seal: i=1; a=rsa-sha256; t=1563779674; cv=none; d=zoho.com; s=zohoarc; b=OalDv+UzqfIZOflz4q2vI0rVmYLchplueP18fScYCXU+SLhZ0cKqioBEFVPq/XdS7EgO9OZkBKYsMt2qRUcT5GiRUABm0g7oV+8B0bYYaCPJRImovGWKpAxUgeZN/RxXpnWBRs7t2W9KZzmScZAorcQrdGSudBWzKFVuHW9CV4s= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1563779674; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Id:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:References:Sender:Subject:To:ARC-Authentication-Results; bh=CtWtecK4c8kNvyCyWUt8SxWYqkmOBVawuxEK5hrDarE=; b=eY8njM8imcJGuj34MiTcr0TYH77g8YDzT6IuIBShhx7pVHB9jF0bk/rsZ8Mm7loOxATyRKL3alsCQkR+K5b/BGVc9FFTPXbJDIt3P8xnvYfi0C0dWOY3NYMc6OicpbtanmFeK9u1AuAXIT4li1goIcMIZxwUI3Jf2t8H/B+Iju8= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=pass; spf=pass (zoho.com: domain of groups.io designates 66.175.222.12 as permitted sender) smtp.mailfrom=bounce+27952+44102+1787277+3901457@groups.io; dmarc=fail header.from= (p=none dis=none) header.from= Received: from web01.groups.io (web01.groups.io [66.175.222.12]) by mx.zohomail.com with SMTPS id 1563779674848592.3058533921865; Mon, 22 Jul 2019 00:14:34 -0700 (PDT) Return-Path: X-Received: from mga02.intel.com (mga02.intel.com []) by groups.io with SMTP; Mon, 22 Jul 2019 00:14:34 -0700 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False X-Received: from orsmga002.jf.intel.com ([10.7.209.21]) by orsmga101.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 22 Jul 2019 00:14:33 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.64,294,1559545200"; d="scan'208";a="180313560" X-Received: from ydong10-win10.ccr.corp.intel.com ([10.239.158.133]) by orsmga002.jf.intel.com with ESMTP; 22 Jul 2019 00:14:26 -0700 From: "Dong, Eric" To: devel@edk2.groups.io Cc: Ray Ni , Laszlo Ersek , Chandana Kumar , Star Zeng Subject: [edk2-devel] [Patch v2 2/6] UefiCpuPkg/MpInitLib: Add MpInitLibStartupAllCPUs API. Date: Mon, 22 Jul 2019 15:14:19 +0800 Message-Id: <20190722071423.17372-3-eric.dong@intel.com> In-Reply-To: <20190722071423.17372-1-eric.dong@intel.com> References: <20190722071423.17372-1-eric.dong@intel.com> MIME-Version: 1.0 Precedence: Bulk List-Unsubscribe: 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,eric.dong@intel.com Content-Transfer-Encoding: quoted-printable DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1563779674; bh=/uQruLupm+xuXwEluo05QSSJjZqqQ7jxBdOQUtbUKi4=; h=Cc:Date:From:Reply-To:Subject:To; b=bwJaz0p7M6TftBMa67bYtTjnGkamTYXdVIkanaTTe9f4zMFEe9FO/s1600ZED8vJty+ IfpN1lMzCb9/8ORk0In3db6Y/1OZ6B6kVXxfBOxHU1YF3nfNwsCBgXILhMiUd3R4JbZm5 m+2vnwsx9qWOCjXAYnZarMKCCHkd/fds/O8= X-ZohoMail-DKIM: pass (identity @groups.io) Content-Type: text/plain; charset="utf-8" REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3D1973 Add new MpInitLibStartupAllCPUs API uses to start all processors at the same time. 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(-) diff --git a/UefiCpuPkg/Library/MpInitLib/DxeMpLib.c b/UefiCpuPkg/Library/M= pInitLib/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/MpIn= itLib/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 enab= led APs execute the function specified by Pr= ocedure simultaneously. + @param[in] ExcludeBsp Whether let BSP also trig this task. @param[in] WaitEvent The event created by the caller with= CreateEvent() service. @param[in] TimeoutInMicroseconds Indicates the time limit in microsec= onds 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, re= turn 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 run = on + enabled APs of the system. See type + EFI_AP_PROCEDURE. + @param[in] TimeoutInMicroseconds Indicates the time limit in microsec= onds for + APs to return from Procedure, either= for + blocking or non-blocking mode. Zero = means + infinity. + @param[in] ProcedureArgument The parameter passed into Procedure = for + all APs. + + @retval EFI_SUCCESS In blocking mode, all CPUs have finished= before + the timeout expired. + @retval EFI_SUCCESS In non-blocking mode, function has been = 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 initialized. + @retval EFI_TIMEOUT In blocking mode, the timeout expired be= fore + 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/MpIn= itLib/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 enab= led APs execute the function specified by Pr= ocedure simultaneously. + @param[in] ExcludeBsp Whether let BSP also trig this task. @param[in] WaitEvent The event created by the caller with= CreateEvent() service. @param[in] TimeoutInMicroseconds Indicates the time limit in microsec= onds 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/M= pInitLib/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, --=20 2.21.0.windows.1 -=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 (#44102): https://edk2.groups.io/g/devel/message/44102 Mute This Topic: https://groups.io/mt/32556153/1787277 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org] -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-