From: "Dong, Eric" <eric.dong@intel.com>
To: "Ni, Ray" <ray.ni@intel.com>,
"devel@edk2.groups.io" <devel@edk2.groups.io>
Cc: Laszlo Ersek <lersek@redhat.com>,
"Kumar, Chandana C" <chandana.c.kumar@intel.com>,
"Zeng, Star" <star.zeng@intel.com>
Subject: Re: [edk2-devel] [Patch 4/5] UefiCpuPkg/CpuMpPei: Produce EDKII_PEI_MP_SERVICES2_PPI.
Date: Sun, 21 Jul 2019 10:43:20 +0000 [thread overview]
Message-ID: <ED077930C258884BBCB450DB737E662259E99789@shsmsx102.ccr.corp.intel.com> (raw)
In-Reply-To: <734D49CCEBEEF84792F5B80ED585239D5C2388EA@SHSMSX104.ccr.corp.intel.com>
Ray,
Agree, will remove this parameter in next version change.
Thanks,
Eric
> -----Original Message-----
> From: Ni, Ray
> Sent: Friday, July 19, 2019 4:03 PM
> To: devel@edk2.groups.io; Dong, Eric <eric.dong@intel.com>
> Cc: Laszlo Ersek <lersek@redhat.com>; Kumar, Chandana C
> <chandana.c.kumar@intel.com>; Zeng, Star <star.zeng@intel.com>
> Subject: RE: [edk2-devel] [Patch 4/5] UefiCpuPkg/CpuMpPei: Produce
> EDKII_PEI_MP_SERVICES2_PPI.
>
> If FailedCpuList isn't cared by the new PPI service, can we remove the
> FailedCpuList parameter from the MpInitLib library API?
>
> > -----Original Message-----
> > From: devel@edk2.groups.io <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 <ray.ni@intel.com>; Laszlo Ersek <lersek@redhat.com>;
> > Kumar, Chandana C <chandana.c.kumar@intel.com>; Zeng, Star
> > <star.zeng@intel.com>
> > Subject: [edk2-devel] [Patch 4/5] UefiCpuPkg/CpuMpPei: Produce
> > EDKII_PEI_MP_SERVICES2_PPI.
> >
> > REF: https://bugzilla.tianocore.org/show_bug.cgi?id=1973
> >
> > Produce new EDKII_PEI_MP_SERVICES2_PPI service.
> >
> > It includes all APIs existed in EFI_PEI_MP_SERVICES_PPI and add new
> > API EDKII_PEI_MP_SERVICES_STARTUP_ALL_CPUS.
> >
> > Cc: Ray Ni <ray.ni@intel.com>
> > Cc: Laszlo Ersek <lersek@redhat.com>
> > Cc: Chandana Kumar <chandana.c.kumar@intel.com>
> > Cc: Star Zeng <star.zeng@intel.com>
> > Signed-off-by: Eric Dong <eric.dong@intel.com>
> > ---
> > UefiCpuPkg/CpuMpPei/CpuMpPei.c | 73
> > +++++++++++++++++++++++++++++---
> > UefiCpuPkg/CpuMpPei/CpuMpPei.h | 35 ++++++++++++++-
> > UefiCpuPkg/CpuMpPei/CpuMpPei.inf | 1 +
> > 3 files changed, 102 insertions(+), 7 deletions(-)
> >
> > diff --git a/UefiCpuPkg/CpuMpPei/CpuMpPei.c
> > b/UefiCpuPkg/CpuMpPei/CpuMpPei.c index 926541c937..5ed2297770
> 100644
> > --- a/UefiCpuPkg/CpuMpPei/CpuMpPei.c
> > +++ b/UefiCpuPkg/CpuMpPei/CpuMpPei.c
> > @@ -1,7 +1,7 @@
> > /** @file
> > CPU PEI Module installs CPU Multiple Processor PPI.
> >
> > - Copyright (c) 2015 - 2018, Intel Corporation. All rights
> > reserved.<BR>
> > + Copyright (c) 2015 - 2019, Intel Corporation. All rights
> > + reserved.<BR>
> > SPDX-License-Identifier: BSD-2-Clause-Patent
> >
> > **/
> > @@ -21,10 +21,31 @@ EFI_PEI_MP_SERVICES_PPI mMpServicesPpi
> =
> > {
> > PeiWhoAmI,
> > };
> >
> > -EFI_PEI_PPI_DESCRIPTOR mPeiCpuMpPpiDesc = {
> > - (EFI_PEI_PPI_DESCRIPTOR_PPI |
> > EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST),
> > - &gEfiPeiMpServicesPpiGuid,
> > - &mMpServicesPpi
> > +//
> > +// CPU MP2 PPI to be installed
> > +//
> > +EDKII_PEI_MP_SERVICES2_PPI mMpServices2Ppi = {
> > + PeiGetNumberOfProcessors,
> > + PeiGetProcessorInfo,
> > + PeiStartupAllAPs,
> > + PeiStartupThisAP,
> > + PeiSwitchBSP,
> > + PeiEnableDisableAP,
> > + PeiWhoAmI,
> > + PeiStartupAllCPUs
> > +};
> > +
> > +EFI_PEI_PPI_DESCRIPTOR mPeiCpuMpPpiList[] = {
> > + {
> > + EFI_PEI_PPI_DESCRIPTOR_PPI,
> > + &gEdkiiPeiMpServices2PpiGuid,
> > + &mMpServices2Ppi
> > + },
> > + {
> > + (EFI_PEI_PPI_DESCRIPTOR_PPI |
> > EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST),
> > + &gEfiPeiMpServicesPpiGuid,
> > + &mMpServicesPpi
> > + }
> > };
> >
> > /**
> > @@ -402,6 +423,46 @@ PeiWhoAmI (
> > return MpInitLibWhoAmI (ProcessorNumber); }
> >
> > +/**
> > + This service executes a caller provided function on all enabled CPUs.
> > +CPUs can
> > + run either simultaneously or one at a time in sequence. This
> > +service may only
> > + be called from the BSP.
> > +
> > + @param[in] This A pointer to the EDKII_PEI_MP_SERVICES2_PPI
> > instance.
> > + @param[in] Procedure A pointer to the function to be run on
> > enabled APs of
> > + the system.
> > + @param[in] TimeoutInMicroSeconds
> > + Indicates the time limit in microseconds for APs to
> > + return from Procedure, for blocking mode only. Zero
> > + means infinity. If the timeout expires in blocking
> > + mode, BSP returns EFI_TIMEOUT.
> > + @param[in] ProcedureArgument The parameter passed into Procedure
> > for all CPUs.
> > +
> > + @retval EFI_SUCCESS In blocking mode, all APs have finished
> before
> > the
> > + timeout expired.
> > + @retval EFI_DEVICE_ERROR Caller processor is AP.
> > + @retval EFI_NOT_READY Any enabled APs are busy.
> > + @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
> > +PeiStartupAllCPUs (
> > + IN EDKII_PEI_MP_SERVICES2_PPI *This,
> > + IN EFI_AP_PROCEDURE Procedure,
> > + IN UINTN TimeoutInMicroSeconds,
> > + IN VOID *ProcedureArgument OPTIONAL
> > + )
> > +{
> > + return MpInitLibStartupAllCPUs (
> > + Procedure,
> > + TimeoutInMicroSeconds,
> > + ProcedureArgument,
> > + NULL
> > + );
> > +}
> > +
> > /**
> > Get GDT register value.
> >
> > @@ -667,7 +728,7 @@ InitializeCpuMpWorker (
> > //
> > // Install CPU MP PPI
> > //
> > - Status = PeiServicesInstallPpi(&mPeiCpuMpPpiDesc);
> > + Status = PeiServicesInstallPpi(mPeiCpuMpPpiList);
> > ASSERT_EFI_ERROR (Status);
> >
> > return Status;
> > diff --git a/UefiCpuPkg/CpuMpPei/CpuMpPei.h
> > b/UefiCpuPkg/CpuMpPei/CpuMpPei.h index a5d8a755b2..b385c5088b
> > 100644
> > --- a/UefiCpuPkg/CpuMpPei/CpuMpPei.h
> > +++ b/UefiCpuPkg/CpuMpPei/CpuMpPei.h
> > @@ -1,7 +1,7 @@
> > /** @file
> > Definitions to install Multiple Processor PPI.
> >
> > - Copyright (c) 2015 - 2018, Intel Corporation. All rights
> > reserved.<BR>
> > + Copyright (c) 2015 - 2019, Intel Corporation. All rights
> > + reserved.<BR>
> > SPDX-License-Identifier: BSD-2-Clause-Patent
> >
> > **/
> > @@ -15,6 +15,7 @@
> > #include <Ppi/SecPlatformInformation.h> #include
> > <Ppi/SecPlatformInformation2.h> #include <Ppi/EndOfPeiPhase.h>
> > +#include <Ppi/EdkiiMpServices2.h>
> >
> > #include <Library/BaseLib.h>
> > #include <Library/DebugLib.h>
> > @@ -431,6 +432,38 @@ MemoryDiscoveredPpiNotifyCallback (
> > IN VOID *Ppi
> > );
> >
> > +/**
> > + This service executes a caller provided function on all enabled CPUs.
> > +CPUs can
> > + run either simultaneously or one at a time in sequence. This
> > +service may only
> > + be called from the BSP.
> > +
> > + @param[in] This A pointer to the EDKII_PEI_MP_SERVICES2_PPI
> > instance.
> > + @param[in] Procedure A pointer to the function to be run on
> > enabled APs of
> > + the system.
> > + @param[in] TimeoutInMicroSeconds
> > + Indicates the time limit in microseconds for APs to
> > + return from Procedure, for blocking mode only. Zero
> > + means infinity. If the timeout expires in blocking
> > + mode, BSP returns EFI_TIMEOUT.
> > + @param[in] ProcedureArgument The parameter passed into Procedure
> > for all CPUs.
> > +
> > + @retval EFI_SUCCESS In blocking mode, all APs have finished
> before
> > the
> > + timeout expired.
> > + @retval EFI_DEVICE_ERROR Caller processor is AP.
> > + @retval EFI_NOT_READY Any enabled APs are busy.
> > + @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
> > +PeiStartupAllCPUs (
> > + IN EDKII_PEI_MP_SERVICES2_PPI *This,
> > + IN EFI_AP_PROCEDURE Procedure,
> > + IN UINTN TimeoutInMicroSeconds,
> > + IN VOID *ProcedureArgument OPTIONAL
> > + );
> > +
> > extern EFI_PEI_NOTIFY_DESCRIPTOR mPostMemNotifyList[];
> >
> > #endif
> > diff --git a/UefiCpuPkg/CpuMpPei/CpuMpPei.inf
> > b/UefiCpuPkg/CpuMpPei/CpuMpPei.inf
> > index 4fc4ea77ba..e42ba824e4 100644
> > --- a/UefiCpuPkg/CpuMpPei/CpuMpPei.inf
> > +++ b/UefiCpuPkg/CpuMpPei/CpuMpPei.inf
> > @@ -54,6 +54,7 @@
> > gEfiSecPlatformInformation2PpiGuid
> > gEfiVectorHandoffInfoPpiGuid ## SOMETIMES_CONSUMES
> > gEfiPeiMemoryDiscoveredPpiGuid ## CONSUMES
> > + gEdkiiPeiMpServices2PpiGuid ## PRODUCES
> >
> > [Pcd]
> >
> >
> gEfiMdeModulePkgTokenSpaceGuid.PcdPteMemoryEncryptionAddressOrM
> > ask ## CONSUMES
> > --
> > 2.21.0.windows.1
> >
> >
> >
next prev parent reply other threads:[~2019-07-21 10:43 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-07-19 7:28 [Patch 0/5] UefiCpuPkg: Enable Edkii Mp Services2 Ppi Dong, Eric
2019-07-19 7:28 ` [Patch 1/5] UefiCpuPkg/Include/MpInitLib.h: Add MpInitLibStartupAllCPUs API Dong, Eric
2019-07-19 7:52 ` [edk2-devel] " Ni, Ray
2019-07-19 7:28 ` [Patch 2/5] UefiCpuPkg/MpInitLib: " Dong, Eric
2019-07-19 7:56 ` [edk2-devel] " Ni, Ray
2019-07-19 7:28 ` [Patch 3/5] UefiCpuPkg: Add new EDKII_PEI_MP_SERVICES2_PPI Dong, Eric
2019-07-19 7:57 ` [edk2-devel] " Ni, Ray
2019-07-19 7:28 ` [Patch 4/5] UefiCpuPkg/CpuMpPei: Produce EDKII_PEI_MP_SERVICES2_PPI Dong, Eric
2019-07-19 8:03 ` [edk2-devel] " Ni, Ray
2019-07-21 10:43 ` Dong, Eric [this message]
2019-07-19 7:28 ` [Patch 5/5] UefiCpuPkg/RegisterCpuFeaturesLib: Start all processors simultaneously Dong, Eric
2019-07-19 8:06 ` [edk2-devel] " Ni, Ray
2019-07-19 12:45 ` [Patch 0/5] UefiCpuPkg: Enable Edkii Mp Services2 Ppi Laszlo Ersek
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-list from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=ED077930C258884BBCB450DB737E662259E99789@shsmsx102.ccr.corp.intel.com \
--to=devel@edk2.groups.io \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox