/** @file Implementation of Fsp CPU Policy Initialization. Copyright (c) 2021, Intel Corporation. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent **/ #include #include #include #include #include #include #include #include #include #include #include #include #include /** Performs FSP CPU PEI Policy initialization. @param[in][out] FspmUpd Pointer to FSP UPD Data. @retval EFI_SUCCESS FSP UPD Data is updated. @retval EFI_NOT_FOUND Fail to locate required PPI. @retval Other FSP UPD Data update process fail. **/ EFI_STATUS EFIAPI PeiFspCpuPolicyInitPreMem ( IN OUT FSPM_UPD *FspmUpd ) { CPU_CONFIG_LIB_PREMEM_CONFIG *CpuConfigLibPreMemConfig; CPU_SECURITY_PREMEM_CONFIG *CpuSecurityPreMemConfig; #if FixedPcdGet8(PcdFspModeSelection) == 0 EFI_STATUS Status; SI_PREMEM_POLICY_PPI *SiPreMemPolicyPpi; SiPreMemPolicyPpi = NULL; #endif CpuConfigLibPreMemConfig = NULL; CpuSecurityPreMemConfig = NULL; DEBUG ((DEBUG_INFO | DEBUG_INIT, "FSP Update SiCpuPolicy Pre-Mem Start\n")); #if FixedPcdGet8(PcdFspModeSelection) == 0 // // Locate SiPreMemPolicyPpi // Status = PeiServicesLocatePpi ( &gSiPreMemPolicyPpiGuid, 0, NULL, (VOID **) &SiPreMemPolicyPpi ); if (EFI_ERROR (Status)) { return EFI_NOT_FOUND; } Status = GetConfigBlock ((VOID *) SiPreMemPolicyPpi, &gCpuConfigLibPreMemConfigGuid, (VOID *) &CpuConfigLibPreMemConfig); DEBUG ((DEBUG_INFO | DEBUG_INIT, "FSP Update SiCpuPolicy Pre-Mem End\n")); Status = GetConfigBlock ((VOID *) SiPreMemPolicyPpi, &gCpuSecurityPreMemConfigGuid, (VOID *) &CpuSecurityPreMemConfig); ASSERT_EFI_ERROR(Status); #endif // // Cpu Config Lib policies // UPDATE_POLICY (FspmUpd->FspmConfig.CpuRatio, CpuConfigLibPreMemConfig->CpuRatio, 0); DEBUG ((DEBUG_INFO, "BIOS Guard PCD and Policy are disabled\n")); UPDATE_POLICY (FspmUpd->FspmConfig.BiosGuard, CpuSecurityPreMemConfig->BiosGuard, 0); UPDATE_POLICY (FspmUpd->FspmConfig.PrmrrSize, CpuSecurityPreMemConfig->PrmrrSize, SIZE_1MB); UPDATE_POLICY (FspmUpd->FspmConfig.EnableC6Dram, CpuSecurityPreMemConfig->EnableC6Dram, 1); return EFI_SUCCESS; }