/** @file Copyright (c) 2018, Intel Corporation. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent **/ #ifndef __SOCKET_POWERMANAGEMENT_CONFIGURATION_DATA_H__ #define __SOCKET_POWERMANAGEMENT_CONFIGURATION_DATA_H__ #include #include "SocketConfiguration.h" extern EFI_GUID gEfiSocketPowermanagementVarGuid; #define SOCKET_POWERMANAGEMENT_CONFIGURATION_NAME L"SocketPowerManagementConfig" #define NUM_CST_LAT_MSR 3 #pragma pack(1) typedef struct { UINT8 LOT26UnusedVrPowerDownEnable; UINT8 WFRWAEnable; UINT8 UFSDisable; // Allow Mailbox Command to PCU_MISC_CONFIG Bit[28] UINT8 ProcessorEistEnable; // EIST or GV3 setup option // Config TDP UINT8 ConfigTDP; UINT8 ConfigTDPLevel; // Individual controls for ACPI sleep states // ** These can be overridden by AcpiSleepState because these knobs are not available to CRB ** // UINT8 AcpiS3Enable; UINT8 AcpiS4Enable; // //HWPM starts // UINT8 ProcessorHWPMEnable; UINT8 ProcessorAutonomousCstateEnable; UINT8 ProcessorHWPMInterrupt; UINT8 ProcessorEPPEnable; UINT8 ProcessorEppProfile; UINT8 ProcessorAPSrocketing; UINT8 ProcessorScalability; UINT8 ProcessorRaplPrioritization; UINT8 ProcessorOutofBandAlternateEPB; // //HWPM ends // UINT8 PStateDomain; // P State Domain UINT8 ProcessorEistPsdFunc; // EIST/PSD Function select option UINT8 ProcessorSinglePCTLEn; // PCPS - SINGLE_PCTL select option UINT8 ProcessorSPD; // PCPS - SPD select option UINT8 BootPState; // Boot Performance Mode // // Prioritized Base Frequency // UINT8 ProcessorActivePbf; // PBF UINT8 ProcessorConfigurePbf; // PBF High Priority Cores // // Processor Control // UINT8 TurboMode; UINT8 EnableXe; //OverClocking UINT8 OverclockingLock; UINT8 TurboRatioLimitRatio[8]; UINT8 TurboRatioLimitCores[8]; UINT8 C2C3TT; UINT8 DynamicL1; // Enabling Dynamic L1 UINT8 ProcessorCcxEnable; // Enabling CPU C states of processor UINT8 PackageCState; // Package C-State Limit UINT8 C3Enable; // Enable/Disable NHM C3(ACPI C2) report to OS UINT8 C6Enable; // Enable/Disable NHM C6(ACPI C3) report to OS UINT8 ProcessorC1eEnable; // Enabling C1E state of processor UINT8 OSCx; // ACPI C States UINT8 CStateLatencyCtrlValid[NUM_CST_LAT_MSR]; // C_STATE_LATENCY_CONTROL_x.Valid UINT8 CStateLatencyCtrlMultiplier[NUM_CST_LAT_MSR]; // C_STATE_LATENCY_CONTROL_x.Multiplier UINT16 CStateLatencyCtrlValue[NUM_CST_LAT_MSR]; // C_STATE_LATENCY_CONTROL_x.Value UINT8 TStateEnable; // T states enable? UINT8 OnDieThermalThrottling; // Throtte ratio UINT8 ProchotLock; UINT8 EnableProcHot; UINT8 EnableThermalMonitor; UINT8 ProchotResponse; UINT8 EETurboDisable; UINT8 SapmctlValCtl; UINT8 PwrPerfTuning; UINT8 AltEngPerfBIAS; UINT8 PwrPerfSwitch; UINT8 WorkLdConfig; UINT16 EngAvgTimeWdw1; UINT8 ProchotResponseRatio; UINT8 TCCActivationOffset; UINT8 P0TtlTimeLow1; UINT8 P0TtlTimeHigh1; UINT8 PkgCLatNeg; UINT8 LTRSwInput; UINT8 SAPMControl; UINT8 CurrentConfig; UINT8 PriPlnCurCfgValCtl; UINT8 Psi3Code; UINT16 CurrentLimit; UINT8 Psi3Thshld; UINT8 Psi2Code; UINT8 Psi2Thshld; UINT8 Psi1Code; UINT8 Psi1Thshld; //Power Management Setup options UINT8 PkgCstEntryValCtl; // PRIMARY_PLANE_CURRENT_CONFIG_CONTROL 0x601 UINT8 PpcccLock; UINT8 SnpLatVld; UINT8 SnpLatOvrd; UINT8 SnpLatMult; UINT16 SnpLatVal; UINT16 NonSnpLatVld; UINT8 NonSnpLatOvrd; UINT8 NonSnpLatMult; UINT16 NonSnpLatVal; // DYNAMIC_PERF_POWER_CTL (CSR 1:30:2:0x64) UINT8 EepLOverride; UINT8 EepLOverrideEn; UINT8 ITurboOvrdEn; UINT8 CstDemotOvrdEN; UINT8 TrboDemotOvrdEn; UINT8 UncrPerfPlmtOvrdEn; UINT8 EetOverrideEn; UINT8 IoBwPlmtOvrdEn; UINT8 ImcApmOvrdEn; // unused UINT8 IomApmOvrdEn; UINT8 QpiApmOvrdEn; UINT8 PerfPLmtThshld; // SAPMCTL_CFG (CSR 1:30:1:0xB0) UINT8 Iio0PkgcClkGateDis[MAX_SOCKET]; //Bit[0] UINT8 Iio1PkgcClkGateDis[MAX_SOCKET]; //Bit[1] UINT8 Iio2PkgcClkGateDis[MAX_SOCKET]; //Bit[2] UINT8 Kti01PkgcClkGateDis[MAX_SOCKET]; //Bit[3] UINT8 Kti23PkgcClkGateDis[MAX_SOCKET]; //Bit[4] UINT8 P0pllOffEna[MAX_SOCKET]; //Bit[16] UINT8 P1pllOffEna[MAX_SOCKET]; //Bit[17] UINT8 P2pllOffEna[MAX_SOCKET]; //Bit[18] UINT8 Mc0pllOffEna[MAX_SOCKET]; //Bit[22] UINT8 Mc1pllOffEna[MAX_SOCKET]; //Bit[23] UINT8 Mc0PkgcClkGateDis[MAX_SOCKET]; //Bit[6] UINT8 Mc1PkgcClkGateDis[MAX_SOCKET]; //Bit[7] UINT8 Kti01pllOffEna[MAX_SOCKET]; //Bit[19] UINT8 Kti23pllOffEna[MAX_SOCKET]; //Bit[20] UINT8 SetvidDecayDisable[MAX_SOCKET]; //Bit[30]; UINT8 SapmCtlLock[MAX_SOCKET]; //Bit[31]; // PERF_P_LIMIT_CONTROL (CSR 1:30:2:0xe4) UINT8 PerfPLimitClip; UINT8 PerfPLimitEn; // PERF_P_LIMIT_CONTROL (CSR 1:30:2:0xe4) >= HSX C stepping UINT8 PerfPlimitDifferential; UINT8 PerfPLimitClipC; // SKX: PKG_CST_ENTRY_CRITERIA_MASK2 (CSR 1:30:2:0x90) UINT8 Kti0In[MAX_SOCKET]; UINT8 Kti1In[MAX_SOCKET]; UINT8 Kti2In[MAX_SOCKET]; // SKX: PKG_CST_ENTRY_CRITERIA_MASK (CSR 1:30:2:0x8c) UINT8 PcieIio0In[MAX_SOCKET]; UINT8 PcieIio1In[MAX_SOCKET]; UINT8 PcieIio2In[MAX_SOCKET]; UINT8 PcieIio3In[MAX_SOCKET]; UINT8 PcieIio4In[MAX_SOCKET]; UINT8 PcieIio5In[MAX_SOCKET]; UINT8 FastRaplDutyCycle; UINT8 TurboPowerLimitLock; UINT8 TurboPowerLimitCsrLock; UINT8 PowerLimit1En; UINT32 PowerLimit1Power; UINT8 PowerLimit1Time; UINT8 PkgClmpLim1; UINT8 PowerLimit2En; UINT32 PowerLimit2Power; UINT8 PkgClmpLim2; UINT8 PowerLimit2Time; UINT8 UsePmaxOffsetTable; UINT8 PmaxSign; UINT8 PmaxOffset; //XTU 3.0 UINT8 MaxEfficiencyRatio[MAX_SOCKET]; UINT8 MaxNonTurboRatio[MAX_SOCKET]; // use SPT workarounds - B2P cmd MISC_WORKAROUND_ENABLE UINT8 SPTWorkaround; UINT8 VccSAandVccIOdisable; UINT8 AvxIccpLevel; UINT8 IntelSpeedSelectSupport; // Intel Speed Select (ISS) } SOCKET_POWERMANAGEMENT_CONFIGURATION; #pragma pack() #endif