]> git.proxmox.com Git - mirror_edk2.git/commitdiff
OvmfPkg: Enable 2 different CpuMpPei and CpuDxe drivers
authorMin M Xu <min.m.xu@intel.com>
Sat, 7 May 2022 01:36:23 +0000 (09:36 +0800)
committermergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
Wed, 11 May 2022 08:40:53 +0000 (08:40 +0000)
BZ: https://bugzilla.tianocore.org/show_bug.cgi?id=3918

In OvmfPkgX64 we enable 2 different CpuMpPei and CpuDxe drivers. The
difference between the drivers is the MpInitLib or MpInitLibUp. This is
acomplished by adding a MpInitLibDepLib.

In IntelTdxX64 we enable 2 versions of CpuDxe drivers. It is because PEI
is skipped in IntelTdxX64.

Cc: Eric Dong <eric.dong@intel.com>
Cc: Ray Ni <ray.ni@intel.com>
Cc: Brijesh Singh <brijesh.singh@amd.com>
Cc: Erdem Aktas <erdemaktas@google.com>
Cc: James Bottomley <jejb@linux.ibm.com>
Cc: Jiewen Yao <jiewen.yao@intel.com>
Cc: Tom Lendacky <thomas.lendacky@amd.com>
Cc: Gerd Hoffmann <kraxel@redhat.com>
Signed-off-by: Min Xu <min.m.xu@intel.com>
Tested-by: Tom Lendacky <thomas.lendacky@amd.com>
Acked-by: Gerd Hoffmann <kraxel@redhat.com>
Acked-by: Jiewen Yao <jiewen.yao@intel.com>
Reviewed-by: Ray Ni <ray.ni@intel.com>
OvmfPkg/IntelTdx/IntelTdxX64.dsc
OvmfPkg/IntelTdx/IntelTdxX64.fdf
OvmfPkg/OvmfPkgX64.dsc
OvmfPkg/OvmfPkgX64.fdf

index 73a6c30096a8a31c07987dd5a4cabf0fb9fb1079..80c331ea233a62064229574690a07c636f1aefbd 100644 (file)
 !endif\r
 !endif\r
 \r
+  #\r
+  # Define the FILE_GUID of CpuDxe for unique-processor version.\r
+  #\r
+  DEFINE UP_CPU_DXE_GUID  = 6490f1c5-ebcc-4665-8892-0075b9bb49b7\r
+\r
 [BuildOptions]\r
   GCC:RELEASE_*_*_CC_FLAGS             = -DMDEPKG_NDEBUG\r
   INTEL:RELEASE_*_*_CC_FLAGS           = /D MDEPKG_NDEBUG\r
 \r
   MdeModulePkg/Universal/EbcDxe/EbcDxe.inf\r
   UefiCpuPkg/CpuIo2Dxe/CpuIo2Dxe.inf\r
-  UefiCpuPkg/CpuDxe/CpuDxe.inf\r
+\r
+  UefiCpuPkg/CpuDxe/CpuDxe.inf {\r
+    <LibraryClasses>\r
+      #\r
+      # Directly use DxeMpInitLib. It depends on DxeMpInitLibMpDepLib which\r
+      # checks the Protocol of gEfiMpInitLibMpDepProtocolGuid.\r
+      #\r
+      MpInitLib|UefiCpuPkg/Library/MpInitLib/DxeMpInitLib.inf\r
+      NULL|OvmfPkg/Library/MpInitLibDepLib/DxeMpInitLibMpDepLib.inf\r
+  }\r
+\r
+  UefiCpuPkg/CpuDxe/CpuDxe.inf {\r
+    <Defines>\r
+      FILE_GUID = $(UP_CPU_DXE_GUID)\r
+\r
+    <LibraryClasses>\r
+      #\r
+      # Directly use MpInitLibUp. It depends on DxeMpInitLibUpDepLib which\r
+      # checks the Protocol of gEfiMpInitLibUpDepProtocolGuid.\r
+      #\r
+      MpInitLib|UefiCpuPkg/Library/MpInitLibUp/MpInitLibUp.inf\r
+      NULL|OvmfPkg/Library/MpInitLibDepLib/DxeMpInitLibUpDepLib.inf\r
+  }\r
+\r
   OvmfPkg/LocalApicTimerDxe/LocalApicTimerDxe.inf\r
   OvmfPkg/IncompatiblePciDeviceSupportDxe/IncompatiblePciDeviceSupport.inf\r
   OvmfPkg/PciHotPlugInitDxe/PciHotPlugInit.inf\r
index 9e290ea78f61088ecae3cc5063cd5a5641d700e0..1029916c3484c21b14ab0bbcd9d63057cf7c45f9 100644 (file)
@@ -185,7 +185,10 @@ INF  MdeModulePkg/Core/RuntimeDxe/RuntimeDxe.inf
 INF  MdeModulePkg/Universal/SecurityStubDxe/SecurityStubDxe.inf\r
 INF  MdeModulePkg/Universal/EbcDxe/EbcDxe.inf\r
 INF  UefiCpuPkg/CpuIo2Dxe/CpuIo2Dxe.inf\r
+\r
 INF  UefiCpuPkg/CpuDxe/CpuDxe.inf\r
+INF  FILE_GUID = $(UP_CPU_DXE_GUID) UefiCpuPkg/CpuDxe/CpuDxe.inf\r
+\r
 INF  OvmfPkg/LocalApicTimerDxe/LocalApicTimerDxe.inf\r
 INF  OvmfPkg/IncompatiblePciDeviceSupportDxe/IncompatiblePciDeviceSupport.inf\r
 INF  OvmfPkg/PciHotPlugInitDxe/PciHotPlugInit.inf\r
index 45ffa2dbe35f29b5146f32111ec3e72202cf224d..71526bba31839b970022712e88aed983ad756af7 100644 (file)
 !endif\r
 !endif\r
 \r
+  #\r
+  # Define the FILE_GUID of CpuMpPei/CpuDxe for unique-processor version.\r
+  #\r
+  DEFINE UP_CPU_PEI_GUID  = 280251c4-1d09-4035-9062-839acb5f18c1\r
+  DEFINE UP_CPU_DXE_GUID  = 6490f1c5-ebcc-4665-8892-0075b9bb49b7\r
+\r
 [BuildOptions]\r
   GCC:RELEASE_*_*_CC_FLAGS             = -DMDEPKG_NDEBUG\r
   INTEL:RELEASE_*_*_CC_FLAGS           = /D MDEPKG_NDEBUG\r
   MdeModulePkg/Universal/Variable/Pei/VariablePei.inf\r
   OvmfPkg/SmmAccess/SmmAccessPei.inf\r
 !endif\r
-  UefiCpuPkg/CpuMpPei/CpuMpPei.inf\r
+\r
+  UefiCpuPkg/CpuMpPei/CpuMpPei.inf {\r
+    <LibraryClasses>\r
+      #\r
+      # Directly use PeiMpInitLib. It depends on PeiMpInitLibMpDepLib which\r
+      # checks the PPI of gEfiPeiMpInitLibMpDepPpiGuid.\r
+      #\r
+      MpInitLib|UefiCpuPkg/Library/MpInitLib/PeiMpInitLib.inf\r
+      NULL|OvmfPkg/Library/MpInitLibDepLib/PeiMpInitLibMpDepLib.inf\r
+  }\r
+\r
+  UefiCpuPkg/CpuMpPei/CpuMpPei.inf {\r
+    <Defines>\r
+      FILE_GUID = $(UP_CPU_PEI_GUID)\r
+\r
+    <LibraryClasses>\r
+      #\r
+      # Directly use MpInitLibUp. It depends on PeiMpInitLibUpDepLib which\r
+      # checks the PPI of gEfiPeiMpInitLibUpDepPpiGuid.\r
+      #\r
+      MpInitLib|UefiCpuPkg/Library/MpInitLibUp/MpInitLibUp.inf\r
+      NULL|OvmfPkg/Library/MpInitLibDepLib/PeiMpInitLibUpDepLib.inf\r
+  }\r
 \r
 !include OvmfPkg/OvmfTpmComponentsPei.dsc.inc\r
 \r
 \r
   MdeModulePkg/Universal/EbcDxe/EbcDxe.inf\r
   UefiCpuPkg/CpuIo2Dxe/CpuIo2Dxe.inf\r
-  UefiCpuPkg/CpuDxe/CpuDxe.inf\r
+\r
+  UefiCpuPkg/CpuDxe/CpuDxe.inf {\r
+    <LibraryClasses>\r
+      #\r
+      # Directly use DxeMpInitLib. It depends on DxeMpInitLibMpDepLib which\r
+      # checks the Protocol of gEfiMpInitLibMpDepProtocolGuid.\r
+      #\r
+      MpInitLib|UefiCpuPkg/Library/MpInitLib/DxeMpInitLib.inf\r
+      NULL|OvmfPkg/Library/MpInitLibDepLib/DxeMpInitLibMpDepLib.inf\r
+  }\r
+\r
+  UefiCpuPkg/CpuDxe/CpuDxe.inf {\r
+    <Defines>\r
+      FILE_GUID = $(UP_CPU_DXE_GUID)\r
+\r
+    <LibraryClasses>\r
+      #\r
+      # Directly use MpInitLibUp. It depends on DxeMpInitLibUpDepLib which\r
+      # checks the Protocol of gEfiMpInitLibUpDepProtocolGuid.\r
+      #\r
+      MpInitLib|UefiCpuPkg/Library/MpInitLibUp/MpInitLibUp.inf\r
+      NULL|OvmfPkg/Library/MpInitLibDepLib/DxeMpInitLibUpDepLib.inf\r
+  }\r
+\r
 !ifdef $(CSM_ENABLE)\r
   OvmfPkg/8259InterruptControllerDxe/8259.inf\r
   OvmfPkg/8254TimerDxe/8254Timer.inf\r
index 6e72cdf3453e2484bd4ed010d8dc021496160030..aa9a83032d9bd8ca0965a43a02219c803327ecb1 100644 (file)
@@ -185,6 +185,7 @@ INF  MdeModulePkg/Universal/Variable/Pei/VariablePei.inf
 INF  OvmfPkg/SmmAccess/SmmAccessPei.inf\r
 !endif\r
 INF  UefiCpuPkg/CpuMpPei/CpuMpPei.inf\r
+INF  FILE_GUID = $(UP_CPU_PEI_GUID) UefiCpuPkg/CpuMpPei/CpuMpPei.inf\r
 \r
 !include OvmfPkg/OvmfTpmPei.fdf.inc\r
 \r
@@ -239,7 +240,10 @@ INF  MdeModulePkg/Core/RuntimeDxe/RuntimeDxe.inf
 INF  MdeModulePkg/Universal/SecurityStubDxe/SecurityStubDxe.inf\r
 INF  MdeModulePkg/Universal/EbcDxe/EbcDxe.inf\r
 INF  UefiCpuPkg/CpuIo2Dxe/CpuIo2Dxe.inf\r
+\r
 INF  UefiCpuPkg/CpuDxe/CpuDxe.inf\r
+INF  FILE_GUID = $(UP_CPU_DXE_GUID) UefiCpuPkg/CpuDxe/CpuDxe.inf\r
+\r
 !ifdef $(CSM_ENABLE)\r
   INF  OvmfPkg/8259InterruptControllerDxe/8259.inf\r
   INF  OvmfPkg/8254TimerDxe/8254Timer.inf\r