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 (#44103): https://edk2.groups.io/g/devel/message/44103 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] -=-=-=-=-=-=-=-=-=-=-=-