123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- /** @file
- CPU Features PEIM driver to initialize CPU features.
- Copyright (c) 2017, Intel Corporation. All rights reserved.<BR>
- SPDX-License-Identifier: BSD-2-Clause-Patent
- **/
- #include <PiPei.h>
- #include <Library/BaseLib.h>
- #include <Library/DebugLib.h>
- #include <Library/PeiServicesLib.h>
- #include <Library/RegisterCpuFeaturesLib.h>
- #include <Library/HobLib.h>
- #include <Guid/CpuFeaturesInitDone.h>
- EFI_PEI_PPI_DESCRIPTOR mPeiCpuFeaturesInitDonePpiDesc = {
- (EFI_PEI_PPI_DESCRIPTOR_PPI | EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST),
- &gEdkiiCpuFeaturesInitDoneGuid,
- NULL
- };
- /**
- CPU Features driver entry point function.
- It will perform CPU features initialization, except for
- PcdCpuFeaturesInitOnS3Resume is FALSE on S3 resume.
- @param FileHandle Handle of the file being invoked.
- @param PeiServices Describes the list of possible PEI Services.
- @retval EFI_SUCCESS CPU Features is initialized successfully.
- **/
- EFI_STATUS
- EFIAPI
- CpuFeaturesPeimInitialize (
- IN EFI_PEI_FILE_HANDLE FileHandle,
- IN CONST EFI_PEI_SERVICES **PeiServices
- )
- {
- EFI_STATUS Status;
- EFI_BOOT_MODE BootMode;
- Status = PeiServicesGetBootMode (&BootMode);
- ASSERT_EFI_ERROR (Status);
- if ((BootMode == BOOT_ON_S3_RESUME) &&
- !PcdGetBool (PcdCpuFeaturesInitOnS3Resume))
- {
- //
- // Does nothing when if PcdCpuFeaturesInitOnS3Resume is FLASE
- // on S3 boot mode
- //
- return EFI_SUCCESS;
- }
- CpuFeaturesDetect ();
- CpuFeaturesInitialize ();
- //
- // Install CPU Features Init Done PPI
- //
- Status = PeiServicesInstallPpi (&mPeiCpuFeaturesInitDonePpiDesc);
- ASSERT_EFI_ERROR (Status);
- //
- // Build HOB to let CpuFeatureDxe driver skip the initialization process.
- //
- BuildGuidHob (&gEdkiiCpuFeaturesInitDoneGuid, 0);
- return EFI_SUCCESS;
- }
|