[edk2-devel] [Patch 4/5] UefiCpuPkg/CpuMpPei: Produce EDKII_PEI_MP_SERVICES2_PPI.

Dong, Eric eric.dong at intel.com
Sun Jul 21 10:43:20 UTC 2019


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 at edk2.groups.io; Dong, Eric <eric.dong at intel.com>
> Cc: Laszlo Ersek <lersek at redhat.com>; Kumar, Chandana C
> <chandana.c.kumar at intel.com>; Zeng, Star <star.zeng at 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 at edk2.groups.io <devel at edk2.groups.io> On Behalf Of Dong,
> > Eric
> > Sent: Friday, July 19, 2019 3:28 PM
> > To: devel at edk2.groups.io
> > Cc: Ni, Ray <ray.ni at intel.com>; Laszlo Ersek <lersek at redhat.com>;
> > Kumar, Chandana C <chandana.c.kumar at intel.com>; Zeng, Star
> > <star.zeng at 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 at intel.com>
> > Cc: Laszlo Ersek <lersek at redhat.com>
> > Cc: Chandana Kumar <chandana.c.kumar at intel.com>
> > Cc: Star Zeng <star.zeng at intel.com>
> > Signed-off-by: Eric Dong <eric.dong at 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
> >
> >
> > 


-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.

View/Reply Online (#44071): https://edk2.groups.io/g/devel/message/44071
Mute This Topic: https://groups.io/mt/32524460/1813853
Group Owner: devel+owner at edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub  [edk2-devel-archive at redhat.com]
-=-=-=-=-=-=-=-=-=-=-=-





More information about the edk2-devel-archive mailing list