]> git.proxmox.com Git - mirror_edk2.git/commitdiff
UefiCpuPkg/CpuMpPei: Install PI CPU MP PPI
authorJeff Fan <jeff.fan@intel.com>
Wed, 15 Jul 2015 03:45:11 +0000 (03:45 +0000)
committervanjeff <vanjeff@Edk2>
Wed, 15 Jul 2015 03:45:11 +0000 (03:45 +0000)
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

UefiCpuPkg/CpuMpPei/CpuMpPei.c
UefiCpuPkg/CpuMpPei/CpuMpPei.h
UefiCpuPkg/CpuMpPei/CpuMpPei.inf
UefiCpuPkg/CpuMpPei/PeiMpServices.c

index bfcf8168298e656bdb2cb98ae77a8868be4f3b03..7b75d354dd51b7767ae92216b77639fb45a3f8bc 100644 (file)
@@ -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;
 }
index d8ee2ee5fb11a7f110995bc4fd46319de3d584c5..97d52bf563231527178eb0b9f1e844c0da723fae 100644 (file)
@@ -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.
index faf999add755582c8676bfaaddbc22b8121a6987..7160c0e05c1231e768fd36d83a75c403ccd73f19 100644 (file)
@@ -68,6 +68,7 @@
   UefiCpuLib
 
 [Ppis]
+  gEfiPeiMpServicesPpiGuid                      ## PRODUCES
   gEfiSecPlatformInformationPpiGuid             ## SOMETIMES_CONSUMES
   ## SOMETIMES_CONSUMES
   ## SOMETIMES_PRODUCES
index b20892be82e2552746d4679d3cf37077ee0ca665..5c20c1874e1df1def5df712187632987e6cf0417 100644 (file)
 
 #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.