hc
2024-03-25 edb30157bad0c0001c32b854271ace01d3b9a16a
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
/** @file
  Data format for Universal Data Structure
 
  @copyright
  Copyright 1999 - 2021 Intel Corporation. <BR>
 
  SPDX-License-Identifier: BSD-2-Clause-Patent
**/
 
#ifndef   __SOCKET_POWERMANAGEMENT_CONFIGURATION_DATA_H__
#define   __SOCKET_POWERMANAGEMENT_CONFIGURATION_DATA_H__
 
 
#include <UncoreCommonIncludes.h>
 
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