]> git.proxmox.com Git - mirror_edk2.git/blame - UefiCpuPkg/CpuFeatures/CpuFeaturesPei.c
UefiCpuPkg: Move AsmRelocateApLoopStart from Mpfuncs.nasm to AmdSev.nasm
[mirror_edk2.git] / UefiCpuPkg / CpuFeatures / CpuFeaturesPei.c
CommitLineData
80c4b236
JF
1/** @file\r
2 CPU Features PEIM driver to initialize CPU features.\r
3\r
4 Copyright (c) 2017, Intel Corporation. All rights reserved.<BR>\r
0acd8697 5 SPDX-License-Identifier: BSD-2-Clause-Patent\r
80c4b236
JF
6\r
7**/\r
8\r
9#include <PiPei.h>\r
10\r
11#include <Library/BaseLib.h>\r
12#include <Library/DebugLib.h>\r
13#include <Library/PeiServicesLib.h>\r
14#include <Library/RegisterCpuFeaturesLib.h>\r
bf5a306a 15#include <Library/HobLib.h>\r
80c4b236
JF
16\r
17#include <Guid/CpuFeaturesInitDone.h>\r
18\r
053e878b 19EFI_PEI_PPI_DESCRIPTOR mPeiCpuFeaturesInitDonePpiDesc = {\r
80c4b236
JF
20 (EFI_PEI_PPI_DESCRIPTOR_PPI | EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST),\r
21 &gEdkiiCpuFeaturesInitDoneGuid,\r
22 NULL\r
23};\r
24\r
25/**\r
26 CPU Features driver entry point function.\r
27\r
28 It will perform CPU features initialization, except for\r
29 PcdCpuFeaturesInitOnS3Resume is FALSE on S3 resume.\r
30\r
31 @param FileHandle Handle of the file being invoked.\r
32 @param PeiServices Describes the list of possible PEI Services.\r
33\r
34 @retval EFI_SUCCESS CPU Features is initialized successfully.\r
35**/\r
36EFI_STATUS\r
37EFIAPI\r
38CpuFeaturesPeimInitialize (\r
39 IN EFI_PEI_FILE_HANDLE FileHandle,\r
40 IN CONST EFI_PEI_SERVICES **PeiServices\r
41 )\r
42{\r
053e878b
MK
43 EFI_STATUS Status;\r
44 EFI_BOOT_MODE BootMode;\r
80c4b236
JF
45\r
46 Status = PeiServicesGetBootMode (&BootMode);\r
47 ASSERT_EFI_ERROR (Status);\r
48\r
053e878b
MK
49 if ((BootMode == BOOT_ON_S3_RESUME) &&\r
50 !PcdGetBool (PcdCpuFeaturesInitOnS3Resume))\r
51 {\r
80c4b236
JF
52 //\r
53 // Does nothing when if PcdCpuFeaturesInitOnS3Resume is FLASE\r
54 // on S3 boot mode\r
55 //\r
56 return EFI_SUCCESS;\r
57 }\r
58\r
59 CpuFeaturesDetect ();\r
60\r
61 CpuFeaturesInitialize ();\r
62\r
63 //\r
64 // Install CPU Features Init Done PPI\r
65 //\r
053e878b 66 Status = PeiServicesInstallPpi (&mPeiCpuFeaturesInitDonePpiDesc);\r
80c4b236
JF
67 ASSERT_EFI_ERROR (Status);\r
68\r
bf5a306a
ED
69 //\r
70 // Build HOB to let CpuFeatureDxe driver skip the initialization process.\r
71 //\r
72 BuildGuidHob (&gEdkiiCpuFeaturesInitDoneGuid, 0);\r
73\r
80c4b236
JF
74 return EFI_SUCCESS;\r
75}\r