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
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
/** @file
  Data format for Ioh Memory Config Data Structure
 
  @copyright
  Copyright 1999 - 2021 Intel Corporation. <BR>
 
  SPDX-License-Identifier: BSD-2-Clause-Patent
**/
 
#ifndef   __SOCKET_MEMORY_CONFIG_DATA_H__
#define   __SOCKET_MEMORY_CONFIG_DATA_H__
 
 
#include <UncoreCommonIncludes.h>
#include <MemDefaults.h>
 
extern EFI_GUID gEfiSocketMemoryVariableGuid;
#define SOCKET_MEMORY_CONFIGURATION_NAME L"SocketMemoryConfig"
 
#pragma pack(1)
typedef struct {
  UINT8                   ReservedS48;
  UINT8                   MemoryHotPlugBase;
  UINT8                   MemoryHotPlugLen;
  UINT8                   Srat;
  UINT8                   SratMemoryHotPlug;
  UINT8                   SratCpuHotPlug;
  UINT8                   PagePolicy;
  UINT8                   PatrolScrub;
  UINT8                   PatrolScrubDuration;
  UINT8                   TempRefreshOption;
  UINT8                   HalfxRefreshValue;
  UINT8                   TwoxRefreshValue;
  UINT8                   FourxRefreshValue;
  UINT8                   NsddcEn;
  UINT8                   EsddcEn;
  UINT8                   ColumnCorrectionDisable;
  UINT8                   SaiPolicyGroupWaBiosW;
  UINT8                   PatrolScrubAddrMode;
  UINT8                   partialmirrorsad0;
  UINT8                   PartialMirrorUefi;
  UINT16                  PartialMirrorUefiPercent;
  UINT16                  partialmirrorsize[MAX_PARTIAL_MIRROR]; // Array of sizes of different partial mirrors
  UINT8                   ImmediateFailoverAction;
  UINT8                   PlusOneEn;
  UINT8                   MemCeFloodPolicy;
  UINT16                  spareErrTh;
  UINT8                   TriggerSWErrThEn;
  UINT16                  SpareSwErrTh;
  UINT16                  timeWindow;
  UINT8                   DieSparing;
  UINT8                   PclsEn;
  UINT8                   ADDDCEn;
  UINT8                   DcpmmEccModeSwitch;
  UINT8                   AdddcErrInjEn;
  UINT8                   leakyBktTimeWindow;
  UINT8                   leakyBktLo;
  UINT8                   leakyBktHi;
  UINT16                  leakyBktHour;
  UINT8                   leakyBktMinute;
  UINT8                   CmdNormalization;
  UINT8                   LrDimmBacksideVrefEn;
  UINT8                   CmdVrefEnable;
  UINT8                   DramRonEn;
  UINT8                   McRonEn;
  UINT8                   RxCtleTrnEn;
  UINT8                   RxOdtEn;
  UINT8                   LrDimmWrVrefEn;
  UINT8                   LrDimmRdVrefEn;
  UINT8                   LrDimmTxDqCentering;
  UINT8                   LrDimmRxDqCentering;
  UINT8                   txEqCalibration;
  UINT8                   CmdTxEqCalibration;
  UINT8                   RxDfe;
  UINT8                   TxRiseFallSlewRate;
  UINT8                   iModeTraining;
  UINT8                   TcoCompTraining;
  UINT8                   RoundTripLatency;
  UINT8                   DutyCycleTraining;
  UINT8                   PxcTraining;
  UINT8                   DdjcTraining;
  UINT8                   refreshMode;
  UINT8                   dllResetTestLoops;
  UINT8                   DdrMemoryType;
  UINT8                   HwMemTest;
  UINT16                  MemTestLoops;
  UINT8                   TrainingResultOffsetFunctionEnable;
  UINT16                  OffsetTxDq;
  UINT16                  OffsetRxDq;
  UINT16                  OffsetTxVref;
  UINT16                  OffsetRxVref;
  UINT16                  OffsetCmdAll;
  UINT16                  OffsetCmdVref;
  UINT16                  OffsetCtlAll;
  UINT32                  AdvMemTestOptions;
  UINT8                   AdvMemTestResetList;
  UINT8                   AdvMemTestCondition;
  UINT16                  AdvMemTestCondVdd;
  UINT8                   AdvMemTestCondTwr;
  UINT16                  AdvMemTestCondTrefi;
  UINT32                  AdvMemTestCondPause;
  UINT8                   EccSupport;
  UINT8                   EccEnable;
  UINT8                   ReservedS49;
  UINT8                   ReservedS50;
  UINT8                   ReservedS51;
  UINT8                   ReservedS52;
  UINT16                  ReservedS53;
  UINT16                  ReservedS54;
  UINT16                  ReservedS55;
  UINT16                  ReservedS56;
  UINT16                  ReservedS57;
  UINT8                   ReservedS58;
  UINT16                  ReservedS59;
  UINT8                   ReservedS60;
  UINT16                  ReservedS61;
  UINT8                   ReservedS62;
  UINT8                   ReservedS63;
  UINT16                  ReservedS64;
  UINT16                  ReservedS65;
  UINT8                   ReservedS66;
  UINT8                   ReservedS67;
  UINT8                   ReservedS68;
  UINT8                   ReservedS69;
  UINT8                   ReservedS70;
  UINT8                   ReservedS71;
  UINT8                   ReservedS72;
  UINT8                   ReservedS73;
  UINT8                   ReservedS74[16];    //[MAX_SOCKET * MAX_IMC] = [8]
  UINT8                   volMemMode;
  UINT8                   CacheMemType; //Only valid if volMemMode is 2LM
  UINT8                   DdrCacheSize;
  UINT8                   PmemCaching;
  UINT8                   ReservedS75;
  UINT8                   memInterleaveGran1LM;
  UINT8                   ReservedS76;
  UINT8                   ReservedS77;
  UINT8                   ReservedS78;
  UINT8                   ReservedS79;
  UINT8                   ReservedS80;
  UINT8                   CkeProgramming;
  UINT8                   SrefProgramming;
  UINT8                   PkgcSrefEn;
  UINT8                   CkeIdleTimer;
  UINT8                   ApdEn;
  UINT8                   PpdEn;
  UINT8                   DdrtCkeEn;
  UINT8                   OppSrefEn;
  UINT8                   OppSrefVisible;    //Setup variable to hide Opportunistic Self Refresh Knob
  UINT8                   DdrtSrefEn;
  UINT8                   DataDllOff;
  UINT8                   MdllOffEn;
  UINT8                   CkMode;
  UINT8                   MemTestOnColdFastBoot;
  UINT8                   AttemptFastBoot;
  UINT8                   AttemptFastBootCold;
  UINT8                   bdatEn;
  UINT8                   ScrambleEnDDRT;
  UINT8                   ScrambleEn;  // for ddr4
  UINT8                   allowCorrectableError;
  UINT8                   allowCorrectableMemTestError;
  UINT16                  ScrambleSeedLow;
  UINT16                  ScrambleSeedHigh;
  UINT8                   CustomRefreshRateEn;
  UINT8                   CustomRefreshRate;
  UINT8                   readVrefCenter;
  UINT8                   wrVrefCenter;
  UINT8                   haltOnMemErr;
  UINT8                   thermalthrottlingsupport;
  UINT8                   MemTripReporting;
  UINT8                   OffPkgMemToThermTrip;
  UINT8                   OffPkgMemToMemTrip;
  UINT8                   InPkgMemToThermTrip;
  UINT8                   InPkgMemToMemTrip;
  UINT8                   DimmTempStatValue;
  UINT8                   XMPProfilesSup;
  UINT8                   XMPMode;
  UINT8                   tCAS;
  UINT8                   tRP;
  UINT8                   tRCD;
  UINT8                   tRAS;
  UINT8                   tWR;
  UINT16                  tRFC;
  UINT8                   tRRD;
  UINT8                   tRRD_L;
  UINT8                   tRTP;
  UINT8                   tWTR;
  UINT8                   tFAW;
  UINT8                   tCWL;
  UINT8                   tRC;
  UINT8                   commandTiming;
  UINT16                  tREFI;
  UINT8                   DdrFreqLimit;
  UINT16                  Vdd;
  UINT8                   lrdimmModuleDelay;
  UINT32                  rmtPatternLength;
  UINT32                  rmtPatternLengthExt;
  UINT8                   RecEnDelayAverage;
  UINT8                   check_pm_sts;
  UINT8                   check_platform_detect;
  UINT8                   MemPwrSave;
  UINT8                   ElectricalThrottlingMode;
  UINT8                   MultiThreaded;
  UINT8                   promoteMrcWarnings;
  UINT8                   promoteWarnings;
  UINT8                   oppReadInWmm;
  UINT16                  normOppInterval;
  UINT8                   ReservedS81[96]; //[MAX_SETUP_SOCKET * MAX_SETUP_IMC * MAX_SETUP_MC_CH] = [8 * 4 * 3 = 96]
  UINT8                   mdllSden;
  UINT8                   memhotSupport;
  UINT8                   MemHotIn;
  UINT8                   MemHotOut;
  UINT8                   MemHotOuputAssertThreshold;
  UINT8                   ADREn;
  UINT8                   RankMargin;
  UINT8                   EnableBacksideRMT;
  UINT8                   EnableBacksideCMDRMT;
  UINT8                   EnableNgnBcomMargining;
  UINT8                   ReservedS82;
  UINT8                   RankSparing;
  UINT8                   multiSparingRanks;
  UINT8                   ReservedS83;
  UINT8                   dimmIsolation;
  UINT8                   smbSpeed;
  UINT8                   SmbSpdAccess;
  UINT8                   SpdPrintEn;
  UINT16                  SpdPrintLength;
  UINT8                   EnforcePOR;
  UINT8                   pda;
  UINT8                   turnaroundOpt;
  UINT8                   turnaroundOptDdrt;
  UINT8                   oneRankTimingMode;
  UINT8                   eyeDiagram;
  UINT8                   NvmdimmPerfConfig;
  UINT8                   ReservedS84;
  UINT8                   ReservedS85;
  UINT8                   ReservedS86;
  UINT8                   ReservedS87;
  UINT8                   ReservedS88;
  UINT8                   ReservedS89;
  UINT8                   ReservedS90;
  UINT8                   ReservedS91;
  UINT8                   ReservedS92;
  UINT8                   ReservedS93;
  UINT8                   ReservedS94;
  UINT8                   ReservedS95;
  UINT8                   ReservedS96;
  UINT8                   ReservedS97;
  UINT8                   ReservedS98;
  UINT8                   ReservedS99;
  UINT8                   ReservedS100;
  UINT8                   ReservedS101;
  UINT8                   ReservedS102;
  UINT8                   ReservedS103;
  UINT8                   ReservedS104;
  UINT8                   DramRaplPwrLimitLockCsr;
  UINT8                   DramRaplEnable;
  UINT8                   BwLimitTfOvrd;
  UINT8                   perbitmargin;
  UINT8                   DramRaplExtendedRange;
  UINT8                   CmsEnableDramPm;
  UINT8                   logParsing;
  UINT8                   WritePreamble;
  UINT8                   ReadPreamble;
  UINT8                   WrCRC;
  UINT8                   AepOnSystem;
  UINT8                   EkvOnSystem;   // 0 => Do not suppress power management policy for BWV, 1 => suppress power management policy for BWV.
  UINT8                   BwvOnSystem;   // 0 => Do not suppress power management policy for EKV, 1 => suppress power management policy for EKV.
  // NGN options
  UINT8                   LockNgnCsr;
  UINT8                   NgnCmdTime;
  UINT8                   NgnEccCorr;
  UINT8                   NgnEccWrChk;
  UINT8                   NgnEccRdChk;
  UINT8                   NgnEccExitCorr;
  UINT8                   NgnDebugLock;
  UINT8                   NgnArsPublish;
  UINT8                   RmtOnColdFastBoot;
  UINT8                   LegacyRmt;
  UINT8                   mrcRepeatTest;
  UINT8                   ReservedS105;
  UINT8                   ReservedS106;
  UINT8                   ReservedS107;
  UINT8                   staggerref;
  UINT32                  memFlows;
  UINT32                  memFlowsExt;
  UINT32                  memFlowsExt2;
  UINT32                  memFlowsExt3;
  UINT8                   Blockgnt2cmd1cyc;
  UINT8                   TrefiPerChannel;
  UINT8                   TrefiNumofRank;
  UINT16                  TrefiDelay;
  UINT8                   Disddrtopprd;
  UINT16                  Reserved;
  UINT8                   setSecureEraseAllDIMMs;
  UINT8                   setSecureEraseSktCh[64];  // [MAX_SOCKET * MAX_IMC * MAX_MC_CH]
  UINT8                   SetSecureEraseSktChHob[64]; // [MAX_SOCKET * MAX_IMC * MAX_MC_CH]
  UINT8                   AppDirectMemoryHole;
  UINT8                   LatchSystemShutdownState;
  UINT8                   ExtendedType17;
  //
  // PPR related
  //
  UINT8                   pprType;
  UINT8                   pprErrInjTest;
  // CR QoS Configuration Profiles
  UINT8                   FastGoConfig;
  UINT8                   ReservedS108;
  UINT8                   LegacyADRModeEn;
  UINT8                   MinNormalMemSize;
  UINT8                   ADRDataSaveMode;
  UINT8                   eraseArmNVDIMMS;
  UINT8                   restoreNVDIMMS;
  UINT8                   interNVDIMMS;
  UINT8                   imcBclk;
  UINT8                   spdCrcCheck;
  UINT8                   ReservedS109;
  UINT8                   SETUP_REMOVE_SanitizeOverwriteNvmDimm;  // removed
  UINT8                   EliminateDirectoryInFarMemory;
  UINT8                   NvmdimmPowerCyclePolicy;
 
  //CMI Init option
  UINT8                   CmiInitOption;
  //
  // Cmd setup hold percent offset for 2n timing
  //
  UINT8                   cmdSetupPercentOffset;
  UINT8                   ShortStroke2GB;
  UINT8                   NvDimmEnergyPolicy;     //Energy Policy Management
  UINT8                   ReservedS110;
  UINT8                   ReservedS111;
  UINT8                   ReservedS112;
  UINT8                   ReservedS113;
  UINT8                   DisableDirForAppDirect;
  UINT8                   NvmMediaStatusException;
  UINT8                   NvmQos;
  UINT8                   ReservedS114;
  UINT8                   ReservedS115;
  UINT8                   ReservedS116;
 
  //
  // FIS 2.x
  //
  UINT16                  DcpmmAveragePowerLimit;        // Power limit in mW used for averaged power ( Valid range starts from 10000mW).
  UINT8                   DcpmmAveragePowerTimeConstant;    // Value used as a base time window for power usage measurements Turbo Mode Support(in mSec).
  UINT32                  DcpmmMbbAveragePowerTimeConstant; // Value used as a base time window for power usage measurements Memory Bandwidth Boost Support(in mSec).
  UINT8                   DcpmmMbbFeature;                  // Allows enabling and disabling the feature (Turbo Mode State/Memory Bandwidth Boost).
  UINT16                  DcpmmMbbMaxPowerLimit;            // Power limit in mW used for limiting the Turbo Mode/Memory Bandwidth Boost
                                                            // power consumption (Valid range starts from 15000mW).
 
  UINT8                   ReservedS117;
  UINT8                   ReservedS118;
  UINT8                   ReservedS119;
 
  UINT8                   ReservedS120;
  UINT8                   LsxImplementation;
  UINT8                   FactoryResetClear;
  UINT8                   EadrSupport;
  UINT32                  NvdimmSmbusMaxAccessTime;
  UINT32                  NvdimmSmbusReleaseDelay;
  UINT8                   NfitPublishMailboxStructs;
 
  //
  // fADR setup option
  //
  UINT8                   FadrSupport;
 
  //
  // Biased 2-way near memory cache support options
  //
  UINT8                   EnableTwoWayNmCache;          // Enable or disable biased 2-way near memory cache.
  UINT16                  NonPreferredWayMask;          // A 10-bit mask to control the bias counter ratio.
  UINT8                   PreferredReadFirst;           // Reads are issued to the non-preferred or preferred way first.
 
  //
  // Boot-time fast zero memory setup option
  //
  UINT8                   FastZeroMemSupport;           // Enable or disable boot-time fast zero memory support.
 
  //
  // XOR decoder options
  //
  UINT8                   ReservedS121;
  UINT8                   ReservedS122;
  UINT8                   ReservedS123;
  UINT8                   ReservedS124;
  UINT8                   ReservedS125;
  UINT8                   ReservedS126;
  UINT8                   ReservedS127;
 
  UINT8                   ReservedS128;
  UINT8                   ReservedS129;
 
  UINT8                   ReservedS130;
  UINT16                  ReservedS131;
  UINT8                   ReservedS132;
  UINT8                   ReservedS133;
  UINT8                   ReservedS134;
  UINT8                   ReservedS135;
  UINT8                   DcpmmApiVersion200OnSystem;   // 0 => Suppress DcpmmAveragePowerTimeConstant, 1 => Do not suppress DcpmmAveragePowerTimeConstant.
  UINT8                   DcpmmApiVersion201OnSystem;   // 0 => Suppress DcpmmAveragePowerTimeConstant, 1 => Do not suppress DcpmmAveragePowerTimeConstant.
  UINT8                   DcpmmApiVersion200OrGreaterOnSystem;
  UINT8                   ReservedS136;
  UINT8                   EnforcePopulationPor;
 
  //
  // DFE Path Finding
  //
  UINT8                   EnableTapSweep;
 
  UINT8                   DfeGainBias;
 
  UINT8                   Tap1Start;
  UINT8                   Tap1End;
  UINT8                   Tap1Size;
 
  UINT8                   Tap2Start;
  UINT8                   Tap2End;
  UINT8                   Tap2Size;
 
  UINT8                   Tap3Start;
  UINT8                   Tap3End;
  UINT8                   Tap3Size;
 
  UINT8                   Tap4Start;
  UINT8                   Tap4End;
  UINT8                   Tap4Size;
 
  UINT8                   TrainingCompOptions;          // Memory Training Comp Options Values.
 
  UINT8                   PeriodicRcomp;                // Memory Periodic Rcomp Auto/Enable/Disable.
  UINT8                   PeriodicRcompInterval;        // Memory Periodic Rcomp Interval.
 
  UINT8                   ReservedS137;
 
  UINT8                   AepNotSupportedException;
 
  UINT8                   ReservedS138;
 
  UINT8                   ReservedS139;
  UINT8                   PanicWm;
 
  UINT16                  OffsetRecEn;
 
  UINT8                   EadrCacheFlushMode;
  UINT8                   ReservedS140;
  UINT8                   ReservedS141;
  UINT8                   ReservedS142;
  UINT8                   ReservedS143;
 
  UINT8                   ReservedS144;
  UINT8                   ReservedS145;
  UINT8                   LrdimmDbDfeTraining;
 
  UINT8                   ReservedS146;
  UINT8                   ReservedS147;
  UINT8                   ReservedS148;
  UINT8                   AdvMemTestRetryAfterRepair;
  UINT8                   AdvMemTestPpr;
  UINT8                   AdvMemTestRankListNumEntries;
  UINT32                  AdvMemTestRankList[ADV_MT_LIST_LIMIT];
 
  UINT32                  SmartTestKey;
  UINT8                   SetMemTested;
 
  //
  // RMT minimum margin check
  //
  UINT8                   RmtMinimumMarginCheck;
 
  UINT8                   ReservedS149;
} SOCKET_MEMORY_CONFIGURATION;
 
#pragma pack()
 
#endif