#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
\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
gQemuAcpiTableNotifyProtocolGuid ## CONSUMES\r
gEfiAcpiSdtProtocolGuid ## CONSUMES\r
gEfiAcpiTableProtocolGuid ## CONSUMES\r
+ gEfiMpInitLibMpDepProtocolGuid\r
+ gEfiMpInitLibUpDepProtocolGuid\r
\r
[Pcd]\r
gUefiOvmfPkgTokenSpaceGuid.PcdPciIoBase\r