/** @file Data format for Universal Data Structure @copyright Copyright 1999 - 2021 Intel Corporation.
SPDX-License-Identifier: BSD-2-Clause-Patent **/ #ifndef __SOCKET_POWERMANAGEMENT_CONFIGURATION_DATA_H__ #define __SOCKET_POWERMANAGEMENT_CONFIGURATION_DATA_H__ #include extern EFI_GUID gEfiSocketPowermanagementVarGuid; #define SOCKET_POWERMANAGEMENT_CONFIGURATION_NAME L"SocketPowerManagementConfig" #define NUM_CST_LAT_MSR 3 #pragma pack(1) typedef struct { UINT8 WFRWAEnable; UINT8 UncoreFreqScaling; UINT8 InputUncoreFreq; UINT8 ProcessorEistSupport; // Gates EIST based on CPUID ECX[7] UINT8 ProcessorEistEnable; // EIST or GV3 setup option UINT8 GpssTimer; // Global P-state Selection timer setup option // Intel Speed Select (ISS) UINT8 IssTdpLevel; UINT8 DynamicIss; // Config TDP UINT8 ConfigTdpLevel; UINT8 ConfigTdpLock; // 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 ProcessorHWPMInterrupt; UINT8 ProcessorEPPEnable; UINT8 ProcessorEppProfile; UINT8 ProcessorAPSrocketing; UINT8 ProcessorScalability; UINT8 ProcessorRaplPrioritization; UINT8 ProcessorOutofBandAlternateEPB; // //HWPM ends // UINT8 ProcessorEistPsdFunc; // EIST/PSD Function select option UINT8 BootPState; // Boot Performance Mode // // Active PBF (Prioritized Base Frequency) // UINT8 ProcessorActivePbf; // // Configure PBF High Priority Cores // UINT8 ProcessorConfigurePbf; // // Processor Control // UINT8 TurboMode; UINT8 EnableXe; //OverClocking UINT8 HideOverclockingLock; UINT8 OverclockingLock; UINT8 AvxSupport; UINT8 AvxLicensePreGrant; UINT8 AvxIccpLevel; 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 EnableLowerLatencyMode; // Enable Lower Latency Mode for register accesses 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 C1AutoDemotion; // Enabling C1 auto demotion UINT8 C1AutoUnDemotion; // Enabling C1 auto un-demotion UINT8 MonitorMWait; // Enabling IO MWAIT 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 ThermalMonitorStatusFilter; UINT8 ThermalMonitorStatusFilterTimeWindow; 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; UINT8 NativeAspmEnable; // 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 KtiApmOvrdEn; 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 Kti45PkgcClkGateDis[MAX_SOCKET]; //Bit[5] 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 Kti45pllOffEna[MAX_SOCKET]; //Bit[21] 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]; // WRITE_PKGC_SA_PS_CRITERIA (B2P) UINT8 EnablePkgcCriteria; UINT8 PkgCCriteriaLogicalIpType[MAX_SOCKET]; UINT8 EnablePkgCCriteriaKti[MAX_SOCKET]; UINT8 EnablePkgCCriteriaRlink[MAX_SOCKET]; UINT8 EnablePkgCCriteriaFxr[MAX_SOCKET]; UINT8 EnablePkgCCriteriaMcddr[MAX_SOCKET]; UINT8 EnablePkgCCriteriaHbm[MAX_SOCKET]; UINT8 EnablePkgCCriteriaIio[MAX_SOCKET]; UINT8 EnablePkgCCriteriaHqm[MAX_SOCKET]; UINT8 EnablePkgCCriteriaNac[MAX_SOCKET]; UINT8 EnablePkgCCriteriaTip[MAX_SOCKET]; UINT8 EnablePkgCCriteriaMdfs[MAX_SOCKET]; UINT8 EnablePkgCCriteriaHcx[MAX_SOCKET]; UINT8 EnablePkgCCriteriaDino[MAX_SOCKET]; UINT8 PkgCCriteriaLogicalIpTypeMcddr[MAX_SOCKET]; UINT8 PkgCCriteriaLogicalIpTypeHbm[MAX_SOCKET]; UINT8 PkgCCriteriaLogicalIpTypeIio[MAX_SOCKET]; UINT8 PkgCCriteriaInstanceNoKti[MAX_SOCKET]; UINT8 EnableLinkInL1Kti[MAX_SOCKET]; UINT8 PkgCCriteriaInstanceNoRlink[MAX_SOCKET]; UINT8 EnableLinkInL1Rlink[MAX_SOCKET]; UINT8 PkgCCriteriaInstanceNoFxr[MAX_SOCKET]; UINT8 PkgcCriteraPsMaskFxr[MAX_SOCKET]; UINT8 PkgCCriteriaAllowedPsMaskFxr[MAX_SOCKET]; UINT8 PkgCCriteriaInstanceNoMcddr[MAX_SOCKET]; UINT8 PkgcCriteriaPsOptionMcddr[MAX_SOCKET]; UINT8 PkgCCriteriaInstanceNoHbm[MAX_SOCKET]; UINT8 PkgcCriteriaPsOptionHbm[MAX_SOCKET]; UINT8 PkgCCriteriaInstanceNoIio[MAX_SOCKET]; UINT8 EnableLinkInL1Iio[MAX_SOCKET]; UINT8 PkgCCriteriaInstanceNoHqm[MAX_SOCKET]; UINT8 PkgcCriteraPsMaskHqm[MAX_SOCKET]; UINT8 PkgCCriteriaAllowedPsMaskHqm[MAX_SOCKET]; UINT8 PkgCCriteriaInstanceNoNac[MAX_SOCKET]; UINT8 PkgcCriteraPsMaskNac[MAX_SOCKET]; UINT8 PkgCCriteriaAllowedPsMaskNac[MAX_SOCKET]; UINT8 PkgCCriteriaInstanceNoTip[MAX_SOCKET]; UINT8 PkgcCriteraPsMaskTip[MAX_SOCKET]; UINT8 PkgCCriteriaAllowedPsMaskTip[MAX_SOCKET]; UINT8 PkgCCriteriaInstanceNoMdfs[MAX_SOCKET]; UINT8 AllowLpStateMdfs[MAX_SOCKET]; UINT8 PkgCCriteriaInstanceNoHcx[MAX_SOCKET]; UINT8 PkgcCriteraPsMaskHcx[MAX_SOCKET]; UINT8 PkgCCriteriaAllowedPsMaskHcx[MAX_SOCKET]; UINT8 PkgCCriteriaInstanceNoDino[MAX_SOCKET]; UINT8 PkgcCriteraPsMaskDino[MAX_SOCKET]; UINT8 PkgCCriteriaAllowedPsMaskDino[MAX_SOCKET]; UINT8 FastRaplDutyCycle; UINT8 TurboPowerLimitLock; UINT8 TurboPowerLimitCsrLock; UINT8 PowerLimit1En; UINT16 PowerLimit1Power; UINT16 PowerLimit1Time; UINT8 PowerLimit2En; UINT16 PowerLimit2Power; UINT16 PowerLimit2Time; UINT8 PmaxDetector; UINT8 PmaxAutoAdjustment; UINT8 PmaxLoadLine; UINT8 PmaxSign; UINT8 PmaxOffset; UINT8 PmaxOffsetNegative; UINT8 PmaxTriggerSetup; //XTU 3.0 UINT8 MaxEfficiencyRatio[MAX_SOCKET]; UINT8 MaxNonTurboRatio[MAX_SOCKET]; UINT8 VccSAandVccIOdisable; // Software LTR Override Control UINT8 SwLtrOvrdCtl; UINT8 EnhancedPmaxDetector; UINT8 PcodeWdogTimerEn; UINT8 RunCpuPpmInPei; UINT8 UncoreFreqRaplLimit; } SOCKET_POWERMANAGEMENT_CONFIGURATION; #pragma pack() #endif