diff options
author | Jeff Fan <jeff.fan@intel.com> | 2015-07-15 03:45:11 +0000 |
---|---|---|
committer | vanjeff <vanjeff@Edk2> | 2015-07-15 03:45:11 +0000 |
commit | e35d034736404dca9240bfe9bd575ea8265461a6 (patch) | |
tree | 89be75bb8672c4660c47883f4f249d55619d7e55 /UefiCpuPkg | |
parent | 53d3f06fd70b16e2dfe4e54569e89ce4ff107d33 (diff) | |
download | edk2-platforms-e35d034736404dca9240bfe9bd575ea8265461a6.tar.xz |
UefiCpuPkg/CpuMpPei: Install PI CPU MP PPI
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Jeff Fan <jeff.fan@intel.com>
Reviewed-by: Feng Tian <feng.tian@intel.com>
Reviewed-by: Jiewen Yao <jiewen.yao@intel.com>
git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@18012 6f19259b-4bc3-4df7-8a09-765794883524
Diffstat (limited to 'UefiCpuPkg')
-rw-r--r-- | UefiCpuPkg/CpuMpPei/CpuMpPei.c | 9 | ||||
-rw-r--r-- | UefiCpuPkg/CpuMpPei/CpuMpPei.h | 2 | ||||
-rw-r--r-- | UefiCpuPkg/CpuMpPei/CpuMpPei.inf | 1 | ||||
-rw-r--r-- | UefiCpuPkg/CpuMpPei/PeiMpServices.c | 18 |
4 files changed, 28 insertions, 2 deletions
diff --git a/UefiCpuPkg/CpuMpPei/CpuMpPei.c b/UefiCpuPkg/CpuMpPei/CpuMpPei.c index bfcf816829..7b75d354dd 100644 --- a/UefiCpuPkg/CpuMpPei/CpuMpPei.c +++ b/UefiCpuPkg/CpuMpPei/CpuMpPei.c @@ -436,7 +436,7 @@ CpuMpPeimInit ( IN CONST EFI_PEI_SERVICES **PeiServices ) { - + EFI_STATUS Status; PEI_CPU_MP_DATA *PeiCpuMpData; UINT32 ProcessorCount; @@ -464,6 +464,11 @@ CpuMpPeimInit ( // Update and publish CPU BIST information // CollectBistDataFromPpi (PeiServices, PeiCpuMpData); + // + // Install CPU MP PPI + // + Status = PeiServicesInstallPpi(&mPeiCpuMpPpiDesc); + ASSERT_EFI_ERROR (Status); - return EFI_SUCCESS; + return Status; } diff --git a/UefiCpuPkg/CpuMpPei/CpuMpPei.h b/UefiCpuPkg/CpuMpPei/CpuMpPei.h index d8ee2ee5fb..97d52bf563 100644 --- a/UefiCpuPkg/CpuMpPei/CpuMpPei.h +++ b/UefiCpuPkg/CpuMpPei/CpuMpPei.h @@ -140,6 +140,8 @@ struct _PEI_CPU_MP_DATA { PEI_CPU_DATA *CpuData; volatile MP_CPU_EXCHANGE_INFO *MpCpuExchangeInfo; }; +extern EFI_PEI_PPI_DESCRIPTOR mPeiCpuMpPpiDesc; + /** Assembly code to get starting address and size of the rendezvous entry for APs. diff --git a/UefiCpuPkg/CpuMpPei/CpuMpPei.inf b/UefiCpuPkg/CpuMpPei/CpuMpPei.inf index faf999add7..7160c0e05c 100644 --- a/UefiCpuPkg/CpuMpPei/CpuMpPei.inf +++ b/UefiCpuPkg/CpuMpPei/CpuMpPei.inf @@ -68,6 +68,7 @@ UefiCpuLib [Ppis] + gEfiPeiMpServicesPpiGuid ## PRODUCES gEfiSecPlatformInformationPpiGuid ## SOMETIMES_CONSUMES ## SOMETIMES_CONSUMES ## SOMETIMES_PRODUCES diff --git a/UefiCpuPkg/CpuMpPei/PeiMpServices.c b/UefiCpuPkg/CpuMpPei/PeiMpServices.c index b20892be82..5c20c1874e 100644 --- a/UefiCpuPkg/CpuMpPei/PeiMpServices.c +++ b/UefiCpuPkg/CpuMpPei/PeiMpServices.c @@ -14,6 +14,24 @@ #include "PeiMpServices.h" +// +// CPU MP PPI to be installed +// +EFI_PEI_MP_SERVICES_PPI mMpServicesPpi = { + PeiGetNumberOfProcessors, + PeiGetProcessorInfo, + PeiStartupAllAPs, + PeiStartupThisAP, + PeiSwitchBSP, + PeiEnableDisableAP, + PeiWhoAmI, +}; + +EFI_PEI_PPI_DESCRIPTOR mPeiCpuMpPpiDesc = { + (EFI_PEI_PPI_DESCRIPTOR_PPI | EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST), + &gEfiPeiMpServicesPpiGuid, + &mMpServicesPpi +}; /** Get CPU Package/Core/Thread location information. |