#include <Library/UefiLib.h>\r
#include <Library/UefiBootServicesTableLib.h>\r
#include <Library/RegisterCpuFeaturesLib.h>\r
+#include <Library/HobLib.h>\r
\r
#include <Protocol/SmmConfiguration.h>\r
#include <Guid/CpuFeaturesInitDone.h>\r
)\r
{\r
VOID *Registration;\r
+ EFI_STATUS Status;\r
+ EFI_HANDLE Handle;\r
+\r
+ if (GetFirstGuidHob (&gEdkiiCpuFeaturesInitDoneGuid) != NULL) {\r
+ //\r
+ // Try to find HOB first. This HOB exist means CPU features have \r
+ // been initialized by CpuFeaturesPei driver, just install \r
+ // gEdkiiCpuFeaturesInitDoneGuid.\r
+ //\r
+ Handle = NULL;\r
+ Status = gBS->InstallProtocolInterface (\r
+ &Handle,\r
+ &gEdkiiCpuFeaturesInitDoneGuid,\r
+ EFI_NATIVE_INTERFACE,\r
+ NULL\r
+ );\r
+ ASSERT_EFI_ERROR (Status);\r
+ return Status;\r
+ }\r
\r
if (PcdGetBool (PcdCpuFeaturesInitAfterSmmRelocation)) {\r
//\r
#include <Library/DebugLib.h>\r
#include <Library/PeiServicesLib.h>\r
#include <Library/RegisterCpuFeaturesLib.h>\r
+#include <Library/HobLib.h>\r
\r
#include <Guid/CpuFeaturesInitDone.h>\r
\r
Status = PeiServicesInstallPpi(&mPeiCpuFeaturesInitDonePpiDesc);\r
ASSERT_EFI_ERROR (Status);\r
\r
+ //\r
+ // Build HOB to let CpuFeatureDxe driver skip the initialization process.\r
+ //\r
+ BuildGuidHob (&gEdkiiCpuFeaturesInitDoneGuid, 0);\r
+\r
return EFI_SUCCESS;\r
}\r
\r