OvmfPkg: include UefiCpuPkg/CpuMpPei

In the next patch we're going to put EFI_PEI_MP_SERVICES_PPI to use.

CpuMpPei uses the following PCDs from gUefiCpuPkgTokenSpaceGuid, beyond
those already used by CpuDxe:

- PcdCpuMicrocodePatchAddress and PcdCpuMicrocodePatchRegionSize: these
  control whether CpuMpPei performs microcode update. If the region size
  is zero, then the microcode update is skipped. UefiCpuPkg.dec sets the
  region size to zero by default, which is appropriate for OVMF.

- PcdCpuApLoopMode and PcdCpuApTargetCstate: the former controls how
  CpuMpPei puts the APs to sleep: 1 -- HLT, 2 -- MWAIT, 3 -- busy wait
  (with PAUSE). The latter PCD is only relevant if the former PCD is 2
  (MWAIT). In order to be consistent with SeaBIOS and with CpuDxe itself,
  we choose HLT. That's the default set by UefiCpuPkg.dec.

Furthermore, although CpuMpPei could consume SecPeiCpuExceptionHandlerLib
technically, it is supposed to consume PeiCpuExceptionHandlerLib. See:

- http://thread.gmane.org/gmane.comp.bios.edk2.devel/12703

- git commit a81abf161666 ("UefiCpuPkg/ExceptionLib: Import
  PeiCpuExceptionHandlerLib module"), part of the series linked above.

Jeff recommended to resolve CpuExceptionHandlerLib to
PeiCpuExceptionHandlerLib for all PEIMs:

- http://thread.gmane.org/gmane.comp.bios.edk2.devel/14471/focus=14477

Since at the moment we have no resolution in place that would cover this
for PEIMs (from either [LibraryClasses] or [LibraryClasses.common.PEIM]),
it's easy to do.

Cc: Jeff Fan <jeff.fan@intel.com>
Cc: Jordan Justen <jordan.l.justen@intel.com>
Cc: Michael Kinney <michael.d.kinney@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Jeff Fan <jeff.fan@intel.com>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
diff --git a/OvmfPkg/OvmfPkgIa32.dsc b/OvmfPkg/OvmfPkgIa32.dsc
index 8056500..8af3267 100644
--- a/OvmfPkg/OvmfPkgIa32.dsc
+++ b/OvmfPkg/OvmfPkgIa32.dsc
@@ -212,6 +212,7 @@
 !ifdef $(SOURCE_DEBUG_ENABLE)

   DebugAgentLib|SourceLevelDebugPkg/Library/DebugAgent/SecPeiDebugAgentLib.inf

 !endif

+  CpuExceptionHandlerLib|UefiCpuPkg/Library/CpuExceptionHandlerLib/PeiCpuExceptionHandlerLib.inf

 

 [LibraryClasses.common.DXE_CORE]

   HobLib|MdePkg/Library/DxeCoreHobLib/DxeCoreHobLib.inf

@@ -519,6 +520,10 @@
       PcdLib|MdePkg/Library/PeiPcdLib/PeiPcdLib.inf

   }

 !endif

+  UefiCpuPkg/CpuMpPei/CpuMpPei.inf {

+    <LibraryClasses>

+      PcdLib|MdePkg/Library/PeiPcdLib/PeiPcdLib.inf

+  }

 

   #

   # DXE Phase modules

diff --git a/OvmfPkg/OvmfPkgIa32.fdf b/OvmfPkg/OvmfPkgIa32.fdf
index ccc3e14..1369734 100644
--- a/OvmfPkg/OvmfPkgIa32.fdf
+++ b/OvmfPkg/OvmfPkgIa32.fdf
@@ -161,6 +161,7 @@
 !if $(SMM_REQUIRE) == TRUE

 INF  OvmfPkg/SmmAccess/SmmAccessPei.inf

 !endif

+INF  UefiCpuPkg/CpuMpPei/CpuMpPei.inf

 

 ################################################################################

 

diff --git a/OvmfPkg/OvmfPkgIa32X64.dsc b/OvmfPkg/OvmfPkgIa32X64.dsc
index 7615ee9..4bb38d0 100644
--- a/OvmfPkg/OvmfPkgIa32X64.dsc
+++ b/OvmfPkg/OvmfPkgIa32X64.dsc
@@ -217,6 +217,7 @@
 !ifdef $(SOURCE_DEBUG_ENABLE)

   DebugAgentLib|SourceLevelDebugPkg/Library/DebugAgent/SecPeiDebugAgentLib.inf

 !endif

+  CpuExceptionHandlerLib|UefiCpuPkg/Library/CpuExceptionHandlerLib/PeiCpuExceptionHandlerLib.inf

 

 [LibraryClasses.common.DXE_CORE]

   HobLib|MdePkg/Library/DxeCoreHobLib/DxeCoreHobLib.inf

@@ -527,6 +528,10 @@
       PcdLib|MdePkg/Library/PeiPcdLib/PeiPcdLib.inf

   }

 !endif

+  UefiCpuPkg/CpuMpPei/CpuMpPei.inf {

+    <LibraryClasses>

+      PcdLib|MdePkg/Library/PeiPcdLib/PeiPcdLib.inf

+  }

 

 [Components.X64]

   #

diff --git a/OvmfPkg/OvmfPkgIa32X64.fdf b/OvmfPkg/OvmfPkgIa32X64.fdf
index 3e368b4..34f8938 100644
--- a/OvmfPkg/OvmfPkgIa32X64.fdf
+++ b/OvmfPkg/OvmfPkgIa32X64.fdf
@@ -161,6 +161,7 @@
 !if $(SMM_REQUIRE) == TRUE

 INF  OvmfPkg/SmmAccess/SmmAccessPei.inf

 !endif

+INF  UefiCpuPkg/CpuMpPei/CpuMpPei.inf

 

 ################################################################################

 

diff --git a/OvmfPkg/OvmfPkgX64.dsc b/OvmfPkg/OvmfPkgX64.dsc
index 7f8a5c2..be3aa1f 100644
--- a/OvmfPkg/OvmfPkgX64.dsc
+++ b/OvmfPkg/OvmfPkgX64.dsc
@@ -217,6 +217,7 @@
 !ifdef $(SOURCE_DEBUG_ENABLE)

   DebugAgentLib|SourceLevelDebugPkg/Library/DebugAgent/SecPeiDebugAgentLib.inf

 !endif

+  CpuExceptionHandlerLib|UefiCpuPkg/Library/CpuExceptionHandlerLib/PeiCpuExceptionHandlerLib.inf

 

 [LibraryClasses.common.DXE_CORE]

   HobLib|MdePkg/Library/DxeCoreHobLib/DxeCoreHobLib.inf

@@ -526,6 +527,10 @@
       PcdLib|MdePkg/Library/PeiPcdLib/PeiPcdLib.inf

   }

 !endif

+  UefiCpuPkg/CpuMpPei/CpuMpPei.inf {

+    <LibraryClasses>

+      PcdLib|MdePkg/Library/PeiPcdLib/PeiPcdLib.inf

+  }

 

   #

   # DXE Phase modules

diff --git a/OvmfPkg/OvmfPkgX64.fdf b/OvmfPkg/OvmfPkgX64.fdf
index f31afdb..630c295 100644
--- a/OvmfPkg/OvmfPkgX64.fdf
+++ b/OvmfPkg/OvmfPkgX64.fdf
@@ -161,6 +161,7 @@
 !if $(SMM_REQUIRE) == TRUE

 INF  OvmfPkg/SmmAccess/SmmAccessPei.inf

 !endif

+INF  UefiCpuPkg/CpuMpPei/CpuMpPei.inf

 

 ################################################################################