public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
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
> >
> >
> > 


  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