/** @file CPU PEI Policy Update & initialization. Copyright (c) 2020, Intel Corporation. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent **/ #include "PeiCpuPolicyUpdate.h" #include #include #include #include /** This function performs CPU PEI Policy initialization. @param[in] SiPolicyPpi The SI Policy PPI instance @retval EFI_SUCCESS The PPI is installed and initialized. @retval EFI ERRORS The PPI is not successfully installed. @retval EFI_OUT_OF_RESOURCES Do not have enough resources to initialize the driver **/ EFI_STATUS EFIAPI UpdatePeiCpuPolicy ( IN OUT SI_POLICY_PPI *SiPolicyPpi ) { EFI_STATUS Status; CPU_CONFIG *CpuConfig; CPU_POWER_MGMT_BASIC_CONFIG *CpuPowerMgmtBasicConfig; SI_PREMEM_POLICY_PPI *SiPreMemPolicyPpi; CPU_POWER_MGMT_CUSTOM_CONFIG *CpuPowerMgmtCustomConfig; CPU_POWER_MGMT_TEST_CONFIG *CpuPowerMgmtTestConfig; CPU_TEST_CONFIG *CpuTestConfig; Status = GetConfigBlock ((VOID *) SiPolicyPpi, &gCpuConfigGuid, (VOID *) &CpuConfig); ASSERT_EFI_ERROR (Status); Status = GetConfigBlock ((VOID *) SiPolicyPpi, &gCpuPowerMgmtBasicConfigGuid, (VOID *) &CpuPowerMgmtBasicConfig); ASSERT_EFI_ERROR (Status); Status = GetConfigBlock((VOID *)SiPolicyPpi, &gCpuPowerMgmtCustomConfigGuid, (VOID *)&CpuPowerMgmtCustomConfig); ASSERT_EFI_ERROR(Status); Status = GetConfigBlock((VOID *)SiPolicyPpi, &gCpuTestConfigGuid, (VOID *)&CpuTestConfig); ASSERT_EFI_ERROR(Status); Status = PeiServicesLocatePpi ( &gSiPreMemPolicyPpiGuid, 0, NULL, (VOID **) &SiPreMemPolicyPpi ); ASSERT_EFI_ERROR (Status); Status = GetConfigBlock((VOID *)SiPolicyPpi, &gCpuPowerMgmtTestConfigGuid, (VOID *)&CpuPowerMgmtTestConfig); ASSERT_EFI_ERROR(Status); // // Init Power Management Policy Variables // CpuPowerMgmtBasicConfig->HwpInterruptControl = 1; CpuPowerMgmtCustomConfig->CustomRatioTable.MaxRatio = 0x4; CpuPowerMgmtBasicConfig->OneCoreRatioLimit = 0x22; CpuPowerMgmtBasicConfig->TwoCoreRatioLimit = 0x22; CpuPowerMgmtBasicConfig->ThreeCoreRatioLimit = 0x22; CpuPowerMgmtBasicConfig->FourCoreRatioLimit = 0x22; CpuPowerMgmtBasicConfig->FiveCoreRatioLimit = 0; CpuPowerMgmtBasicConfig->SixCoreRatioLimit = 0; CpuPowerMgmtBasicConfig->SevenCoreRatioLimit = 0; CpuPowerMgmtBasicConfig->EightCoreRatioLimit = 0; CpuPowerMgmtBasicConfig->Hwp = 0x1; CpuTestConfig->CpuWakeUpTimer = 1; CpuPowerMgmtTestConfig->AutoThermalReporting = 0; return EFI_SUCCESS; }