]> git.proxmox.com Git - mirror_edk2.git/commitdiff
OvmfPkg/TdxDxe: Install MpInitLibDepLib protocols
authorMin M Xu <min.m.xu@intel.com>
Sat, 7 May 2022 01:36:22 +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 Td guest CpuDxe driver uses the MpInitLibUp, the other guest type
use the MpInitLib. So we install different Protocols according to
the current working guest type.

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/TdxDxe/TdxDxe.c
OvmfPkg/TdxDxe/TdxDxe.inf

index f0929998233c07a5e28da9a37328a414c1d002b2..2318db989792803d04ccf8942838852811a9b42e 100644 (file)
@@ -23,6 +23,7 @@
 #include <Library/UefiLib.h>\r
 #include <Library/HobLib.h>\r
 #include <Protocol/Cpu.h>\r
+#include <Protocol/MpInitLibDepProtocols.h>\r
 #include <Library/UefiBootServicesTableLib.h>\r
 #include <ConfidentialComputingGuestAttr.h>\r
 #include <IndustryStandard/Tdx.h>\r
@@ -250,13 +251,32 @@ TdxDxeEntryPoint (
 \r
   if (!TdIsEnabled ()) {\r
     //\r
-    // If it is Non-Td guest, we're done.\r
+    // If it is Non-Td guest, we install gEfiMpInitLibMpDepProtocolGuid so that\r
+    // MpInitLib will be used in CpuDxe driver.\r
     //\r
+    gBS->InstallProtocolInterface (\r
+           &ImageHandle,\r
+           &gEfiMpInitLibMpDepProtocolGuid,\r
+           EFI_NATIVE_INTERFACE,\r
+           NULL\r
+           );\r
+\r
     return EFI_SUCCESS;\r
   }\r
 \r
   SetMmioSharedBit ();\r
 \r
+  //\r
+  // It is Td guest, we install gEfiMpInitLibUpDepProtocolGuid so that\r
+  // MpInitLibUp will be used in CpuDxe driver.\r
+  //\r
+  gBS->InstallProtocolInterface (\r
+         &ImageHandle,\r
+         &gEfiMpInitLibUpDepProtocolGuid,\r
+         EFI_NATIVE_INTERFACE,\r
+         NULL\r
+         );\r
+\r
   //\r
   // Call TDINFO to get actual number of cpus in domain\r
   //\r
index 2ec2ef2ed5f2902d43882fbf65b749d9489d693d..a7e0abda1522b160ee4d2e8638e5eece4bf0f81c 100644 (file)
@@ -50,6 +50,8 @@
   gQemuAcpiTableNotifyProtocolGuid                 ## CONSUMES\r
   gEfiAcpiSdtProtocolGuid                          ## CONSUMES\r
   gEfiAcpiTableProtocolGuid                        ## CONSUMES\r
+  gEfiMpInitLibMpDepProtocolGuid\r
+  gEfiMpInitLibUpDepProtocolGuid\r
 \r
 [Pcd]\r
   gUefiOvmfPkgTokenSpaceGuid.PcdPciIoBase\r