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
|
/** @file
Copyright (c) 2018, Intel Corporation. All rights reserved.<BR>
This program and the accompanying materials are licensed and made available under
the terms and conditions of the BSD License that accompanies this distribution.
The full text of the license may be found at
http://opensource.org/licenses/bsd-license.php.
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
**/
#ifndef __SOCKET_MP_LINK_CONFIG_DATA_H__
#define __SOCKET_MP_LINK_CONFIG_DATA_H__
#include <UncoreCommonIncludes.h>
#include "SocketConfiguration.h"
extern EFI_GUID gEfiSocketMpLinkVariableGuid;
#define SOCKET_MP_LINK_CONFIGURATION_NAME L"SocketMpLinkConfig"
#pragma pack(1)
typedef struct {
// SKXTODO: rename to Kti when removing HSX code
UINT8 QpiSetupNvVariableStartTag; // This must be the very first one of the whole KTI Setup NV variable!
//
// Used by the PciHostBridge DXE driver, these variables don't need to be exposed through setup options
// The variables are used as a communication vehicle from the PciHostBridge DXE driver to an OEM hook
// which updates the KTI resource map
//
//
// KTI host structure inputs
//
UINT8 BusRatio[MAX_SOCKET];
UINT8 LegacyVgaSoc; // Socket that claims the legacy VGA range; valid values are 0-3; 0 is default.
UINT8 LegacyVgaStack; // Stack that claims the legacy VGA range; valid values are 0-3; 0 is default.
UINT8 MmioP2pDis; // 1 - Disable; 0 - Enable
UINT8 DebugPrintLevel; // Bit 0 - Fatal, Bit1 - Warning, Bit2 - Info Summary; Bit 3 - Info detailed. 1 - Enable; 0 - Disable
UINT8 DegradePrecedence; // Use DEGRADE_PRECEDENCE definition; TOPOLOGY_PRECEDENCE is default
//
// Phy/Link Layer Options
//
UINT8 QpiLinkSpeedMode; // Link speed mode selection; 0 - Slow Speed; 1- Full Speed
UINT8 QpiLinkSpeed; // One of SPEED_REC_96GT, SPEED_REC_104GT, MAX_KTI_LINK_SPEED (default), FREQ_PER_LINK
UINT8 KtiLinkL0pEn; // 0 - Disable, 1 - Enable, 2- Auto (default)
UINT8 KtiLinkL1En; // 0 - Disable, 1 - Enable, 2- Auto (default)
UINT8 KtiFailoverEn; // 0 - Disable, 1 - Enable, 2- Auto (default)
UINT8 KtiLbEn; // 0 - Disable(default), 1 - Enable
UINT8 KtiCrcMode; // 0 - 8 bit CRC 1 - 16 bit CRC Mode
UINT8 QpiCpuSktHotPlugEn; // 0 - Disable (default), 1 - Enable
UINT8 KtiCpuSktHotPlugTopology; // 0 - 4S Topology (default), 1 - 8S Topology
UINT8 KtiSkuMismatchCheck; // 0 - No, 1 - Yes (default)
UINT8 KtiLinkVnaOverride; // 0x100 - per link, 0xff - max (default), 0x00 - min
UINT8 SncEn; // 0 - Disable (default), 1 - Enable
UINT8 IoDcMode; // 0 - Disable IODC, 1 - AUTO (default), 2 - IODC_EN_REM_INVITOM_PUSH, 3 - IODC_EN_REM_INVITOM_ALLOCFLOW
// 4 - IODC_EN_REM_INVITOM_ALLOC_NONALLOC, 5 - IODC_EN_REM_INVITOM_AND_WCILF
UINT8 DirectoryModeEn; // 0 - Disable; 1 - Enable (default)
UINT8 XptPrefetchEn; // XPT Prefetch : 1 - Enable (Default); 0 - Disable
UINT8 KtiPrefetchEn; // KTI Prefetch : 1 - Enable (Default); 0 - Disable
UINT8 RdCurForXptPrefetchEn; // RdCur for XPT Prefetch : 0 - Disable, 1 - Enable, 2- Auto (default)
UINT8 IrqThreshold; // KTI IRQ Threshold setting
UINT8 TscSyncEn; // TSC Sync Enable: 0 - Disable; 1 - Enable; 2 - AUTO (default)
UINT8 StaleAtoSOptEn; // HA A to S directory optimization
UINT8 LLCDeadLineAlloc; // Never fill dead lines in LLC: 1 - Enable, 0 - Disable
#define CSICPUPRTVARIABLE(x) x##KtiPortDisable;x##KtiLinkSpeed;x##KtiLinkVnaOverride;
UINT8 KtiCpuPerPortStartTag;
CSICPUPRTVARIABLE(UINT8 Cpu0P0)
CSICPUPRTVARIABLE(UINT8 Cpu0P1)
CSICPUPRTVARIABLE(UINT8 Cpu0P2)
#if MAX_SOCKET > 1
CSICPUPRTVARIABLE(UINT8 Cpu1P0)
CSICPUPRTVARIABLE(UINT8 Cpu1P1)
CSICPUPRTVARIABLE(UINT8 Cpu1P2)
#endif
#if MAX_SOCKET > 2
CSICPUPRTVARIABLE(UINT8 Cpu2P0)
CSICPUPRTVARIABLE(UINT8 Cpu2P1)
CSICPUPRTVARIABLE(UINT8 Cpu2P2)
#endif
#if MAX_SOCKET > 3
CSICPUPRTVARIABLE(UINT8 Cpu3P0)
CSICPUPRTVARIABLE(UINT8 Cpu3P1)
CSICPUPRTVARIABLE(UINT8 Cpu3P2)
#endif
#if (MAX_SOCKET > 4)
CSICPUPRTVARIABLE(UINT8 Cpu4P0)
CSICPUPRTVARIABLE(UINT8 Cpu4P1)
CSICPUPRTVARIABLE(UINT8 Cpu4P2)
#endif
#if (MAX_SOCKET > 5)
CSICPUPRTVARIABLE(UINT8 Cpu5P0)
CSICPUPRTVARIABLE(UINT8 Cpu5P1)
CSICPUPRTVARIABLE(UINT8 Cpu5P2)
#endif
#if (MAX_SOCKET > 6)
CSICPUPRTVARIABLE(UINT8 Cpu6P0)
CSICPUPRTVARIABLE(UINT8 Cpu6P1)
CSICPUPRTVARIABLE(UINT8 Cpu6P2)
#endif
#if (MAX_SOCKET > 7)
CSICPUPRTVARIABLE(UINT8 Cpu7P0)
CSICPUPRTVARIABLE(UINT8 Cpu7P1)
CSICPUPRTVARIABLE(UINT8 Cpu7P2)
#endif
UINT8 QpiSetupNvVariableEndTag; // This must be the last one of the whole KTI Setup NV variable
} SOCKET_MP_LINK_CONFIGURATION;
#pragma pack()
#endif // __SOCKET_MP_LINK_CONFIG_DATA_H__
|