]> git.proxmox.com Git - mirror_edk2.git/blame - UefiCpuPkg/CpuFeatures/CpuFeaturesPei.c
BaseTools/BinToPcd: Fix Python 2.7.x compatibility issue
[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
5 This program and the accompanying materials\r
6 are licensed and made available under the terms and conditions of the BSD License\r
7 which accompanies this distribution. The full text of the license may be found at\r
8 http://opensource.org/licenses/bsd-license.php\r
9\r
10 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
11 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
12\r
13**/\r
14\r
15#include <PiPei.h>\r
16\r
17#include <Library/BaseLib.h>\r
18#include <Library/DebugLib.h>\r
19#include <Library/PeiServicesLib.h>\r
20#include <Library/RegisterCpuFeaturesLib.h>\r
bf5a306a 21#include <Library/HobLib.h>\r
80c4b236
JF
22\r
23#include <Guid/CpuFeaturesInitDone.h>\r
24\r
25EFI_PEI_PPI_DESCRIPTOR mPeiCpuFeaturesInitDonePpiDesc = {\r
26 (EFI_PEI_PPI_DESCRIPTOR_PPI | EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST),\r
27 &gEdkiiCpuFeaturesInitDoneGuid,\r
28 NULL\r
29};\r
30\r
31/**\r
32 CPU Features driver entry point function.\r
33\r
34 It will perform CPU features initialization, except for\r
35 PcdCpuFeaturesInitOnS3Resume is FALSE on S3 resume.\r
36\r
37 @param FileHandle Handle of the file being invoked.\r
38 @param PeiServices Describes the list of possible PEI Services.\r
39\r
40 @retval EFI_SUCCESS CPU Features is initialized successfully.\r
41**/\r
42EFI_STATUS\r
43EFIAPI\r
44CpuFeaturesPeimInitialize (\r
45 IN EFI_PEI_FILE_HANDLE FileHandle,\r
46 IN CONST EFI_PEI_SERVICES **PeiServices\r
47 )\r
48{\r
49 EFI_STATUS Status;\r
50 EFI_BOOT_MODE BootMode;\r
51\r
52 Status = PeiServicesGetBootMode (&BootMode);\r
53 ASSERT_EFI_ERROR (Status);\r
54\r
55 if (BootMode == BOOT_ON_S3_RESUME &&\r
56 !PcdGetBool (PcdCpuFeaturesInitOnS3Resume)) {\r
57 //\r
58 // Does nothing when if PcdCpuFeaturesInitOnS3Resume is FLASE\r
59 // on S3 boot mode\r
60 //\r
61 return EFI_SUCCESS;\r
62 }\r
63\r
64 CpuFeaturesDetect ();\r
65\r
66 CpuFeaturesInitialize ();\r
67\r
68 //\r
69 // Install CPU Features Init Done PPI\r
70 //\r
71 Status = PeiServicesInstallPpi(&mPeiCpuFeaturesInitDonePpiDesc);\r
72 ASSERT_EFI_ERROR (Status);\r
73\r
bf5a306a
ED
74 //\r
75 // Build HOB to let CpuFeatureDxe driver skip the initialization process.\r
76 //\r
77 BuildGuidHob (&gEdkiiCpuFeaturesInitDoneGuid, 0);\r
78\r
80c4b236
JF
79 return EFI_SUCCESS;\r
80}\r
81\r