]> git.proxmox.com Git - mirror_edk2.git/blame_incremental - UefiCpuPkg/CpuFeatures/CpuFeaturesPei.c
UefiCpuPkg: Move AsmRelocateApLoopStart from Mpfuncs.nasm to AmdSev.nasm
[mirror_edk2.git] / UefiCpuPkg / CpuFeatures / CpuFeaturesPei.c
... / ...
CommitLineData
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
5 SPDX-License-Identifier: BSD-2-Clause-Patent\r
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
15#include <Library/HobLib.h>\r
16\r
17#include <Guid/CpuFeaturesInitDone.h>\r
18\r
19EFI_PEI_PPI_DESCRIPTOR mPeiCpuFeaturesInitDonePpiDesc = {\r
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
43 EFI_STATUS Status;\r
44 EFI_BOOT_MODE BootMode;\r
45\r
46 Status = PeiServicesGetBootMode (&BootMode);\r
47 ASSERT_EFI_ERROR (Status);\r
48\r
49 if ((BootMode == BOOT_ON_S3_RESUME) &&\r
50 !PcdGetBool (PcdCpuFeaturesInitOnS3Resume))\r
51 {\r
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
66 Status = PeiServicesInstallPpi (&mPeiCpuFeaturesInitDonePpiDesc);\r
67 ASSERT_EFI_ERROR (Status);\r
68\r
69 //\r
70 // Build HOB to let CpuFeatureDxe driver skip the initialization process.\r
71 //\r
72 BuildGuidHob (&gEdkiiCpuFeaturesInitDoneGuid, 0);\r
73\r
74 return EFI_SUCCESS;\r
75}\r