/** @file CPU Features PEIM driver to initialize CPU features. Copyright (c) 2017, Intel Corporation. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent **/ #include #include #include #include #include #include #include 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; }