Reviewed-by: Ray Ni <ray...@intel.com> > -----Original Message----- > From: Dong, Eric > Sent: Monday, July 22, 2019 3:14 PM > To: devel@edk2.groups.io > Cc: Ni, Ray <ray...@intel.com>; Laszlo Ersek <ler...@redhat.com>; Kumar, > Chandana C <chandana.c.ku...@intel.com>; Zeng, Star > <star.z...@intel.com> > Subject: [Patch v2 4/6] UefiCpuPkg: Add new EDKII_PEI_MP_SERVICES2_PPI > > REF: https://bugzilla.tianocore.org/show_bug.cgi?id=1973 > > Add definition for new EDKII_PEI_MP_SERVICES2_PPI. > > 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...@intel.com> > Cc: Laszlo Ersek <ler...@redhat.com> > Cc: Chandana Kumar <chandana.c.ku...@intel.com> > Cc: Star Zeng <star.z...@intel.com> > Signed-off-by: Eric Dong <eric.d...@intel.com> > --- > UefiCpuPkg/Include/Ppi/EdkiiMpServices2.h | 72 > +++++++++++++++++++++++ > UefiCpuPkg/UefiCpuPkg.dec | 3 + > 2 files changed, 75 insertions(+) > create mode 100644 UefiCpuPkg/Include/Ppi/EdkiiMpServices2.h > > diff --git a/UefiCpuPkg/Include/Ppi/EdkiiMpServices2.h > b/UefiCpuPkg/Include/Ppi/EdkiiMpServices2.h > new file mode 100644 > index 0000000000..c6b9712cc0 > --- /dev/null > +++ b/UefiCpuPkg/Include/Ppi/EdkiiMpServices2.h > @@ -0,0 +1,72 @@ > +/** @file > + This file declares edkii Multi-processor service PPI. > + > + Copyright (c) 2019, Intel Corporation. All rights reserved.<BR> > + SPDX-License-Identifier: BSD-2-Clause-Patent > + > +**/ > + > +#ifndef __EDKII_PEI_MP_SERVICES2_PPI_H__ #define > +__EDKII_PEI_MP_SERVICES2_PPI_H__ > + > +#include <Ppi/MpServices.h> > + > +#define EDKII_PEI_MP_SERVICES2_PPI_GUID \ > + { \ > + 0x5cb9cb3d, 0x31a4, 0x480c, { 0x94, 0x98, 0x29, 0xd2, 0x69, 0xba, > +0xcf, 0xba} \ > + } > + > +typedef struct _EDKII_PEI_MP_SERVICES2_PPI > EDKII_PEI_MP_SERVICES2_PPI; > + > +typedef EFI_PEI_MP_SERVICES_GET_NUMBER_OF_PROCESSORS > EDKII_PEI_MP_SERVICES_GET_NUMBER_OF_PROCESSORS; > +typedef EFI_PEI_MP_SERVICES_GET_PROCESSOR_INFO > EDKII_PEI_MP_SERVICES_GET_PROCESSOR_INFO; > +typedef EFI_PEI_MP_SERVICES_STARTUP_ALL_APS > EDKII_PEI_MP_SERVICES_STARTUP_ALL_APS; > +typedef EFI_PEI_MP_SERVICES_STARTUP_THIS_AP > EDKII_PEI_MP_SERVICES_STARTUP_THIS_AP; > +typedef EFI_PEI_MP_SERVICES_SWITCH_BSP > EDKII_PEI_MP_SERVICES_SWITCH_BSP; > +typedef EFI_PEI_MP_SERVICES_ENABLEDISABLEAP > EDKII_PEI_MP_SERVICES_ENABLEDISABLEAP; > +typedef EFI_PEI_MP_SERVICES_WHOAMI > EDKII_PEI_MP_SERVICES_WHOAMI; > + > +/** > + Activate all of the application proessors. > + > + @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. > +**/ > +typedef > +EFI_STATUS > +(EFIAPI *EDKII_PEI_MP_SERVICES_STARTUP_ALL_CPUS) ( > + IN EDKII_PEI_MP_SERVICES2_PPI *This, > + IN EFI_AP_PROCEDURE Procedure, > + IN UINTN TimeoutInMicroSeconds, > + IN VOID *ProcedureArgument OPTIONAL > + ); > + > +struct _EDKII_PEI_MP_SERVICES2_PPI { > + EDKII_PEI_MP_SERVICES_GET_NUMBER_OF_PROCESSORS > GetNumberOfProcessors; > + EDKII_PEI_MP_SERVICES_GET_PROCESSOR_INFO GetProcessorInfo; > + EDKII_PEI_MP_SERVICES_STARTUP_ALL_APS StartupAllAPs; > + EDKII_PEI_MP_SERVICES_STARTUP_THIS_AP StartupThisAP; > + EDKII_PEI_MP_SERVICES_SWITCH_BSP SwitchBSP; > + EDKII_PEI_MP_SERVICES_ENABLEDISABLEAP EnableDisableAP; > + EDKII_PEI_MP_SERVICES_WHOAMI WhoAmI; > + EDKII_PEI_MP_SERVICES_STARTUP_ALL_CPUS StartupAllCPUs; > +}; > + > +extern EFI_GUID gEdkiiPeiMpServices2PpiGuid; > + > +#endif > diff --git a/UefiCpuPkg/UefiCpuPkg.dec b/UefiCpuPkg/UefiCpuPkg.dec > index 6ddf0cd224..5a555644b7 100644 > --- a/UefiCpuPkg/UefiCpuPkg.dec > +++ b/UefiCpuPkg/UefiCpuPkg.dec > @@ -75,6 +75,9 @@ > # 0x80000001 | Invalid value provided. > # > > +[Ppis] > + gEdkiiPeiMpServices2PpiGuid = { 0x5cb9cb3d, 0x31a4, 0x480c, { 0x94, > 0x98, 0x29, 0xd2, 0x69, 0xba, 0xcf, 0xba}} > + > [PcdsFeatureFlag] > ## Indicates if SMM Profile will be enabled. > # If enabled, instruction executions in and data accesses to memory > outside of SMRAM will be logged. > -- > 2.21.0.windows.1
-=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#44214): https://edk2.groups.io/g/devel/message/44214 Mute This Topic: https://groups.io/mt/32556154/21656 Group Owner: devel+ow...@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-