/** @file Data format for Universal Data Structure @copyright Copyright 1999 - 2021 Intel Corporation.
SPDX-License-Identifier: BSD-2-Clause-Patent **/ #ifndef __SOCKET_MP_LINK_CONFIG_DATA_H__ #define __SOCKET_MP_LINK_CONFIG_DATA_H__ #include 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 D2KCreditConfig; // 1 - Min, 2 - Med (Default), 3- Max UINT8 SnoopThrottleConfig; // 0 - Disabled, 1 - Min, 2 - Med (Default), 3- Max UINT8 SnoopAllCores; // 0 - Disabled, 1 - Enabled, 2 - Auto 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 P2pRelaxedOrdering; // 1 - Enable; 0 - Disable 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 UINT8 Degrade4SPreference; // 4S1LFullConnect topology is default; another option is 4S2LRing topology. // // 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 XptRemotePrefetchEn; // XPT Remote 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 TorThresLoctoremNorm; // TOR threshold - Loctorem threshold normal UINT8 TorThresLoctoremEmpty; // TOR threshold - Loctorem threshold empty UINT8 MbeBwCal; // 0 - Linear, 1 - Biased, 2 - Legacy, 3 - AUTO (default = Linear) 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 UINT8 SplitLock; // Setting this bit removes the Ubox PCU handshake during stopreq and startreq only // for splitlocks: - Enable, 0 - Disable UINT8 KtiAdaptationEn; // 0 - Disable, 1 - Enable UINT8 KtiAdaptationSpeed; // Use KTI_LINK_SPEED definition; MAX_KTI_LINK_SPEED - Auto (i.e BIOS choosen speed) UINT8 ReservedS150; UINT8 ReservedS151; UINT8 ReservedS152; UINT8 ReservedS153; UINT8 ReservedS154; UINT8 ReservedS155; UINT8 ReservedS156; UINT8 ReservedS157; UINT8 ReservedS158; UINT8 ReservedS159; UINT8 ReservedS160; UINT8 ReservedS161; UINT8 ReservedS162; UINT8 ReservedS163; UINT8 ReservedS164; UINT8 ReservedS165; UINT8 ReservedS166; UINT8 ReservedS167; UINT8 ReservedS168; UINT8 ReservedS169; UINT8 ReservedS170; UINT8 ReservedS171; UINT8 ReservedS172; UINT8 ReservedS173; UINT8 ReservedS174; UINT8 ReservedS175; UINT8 ReservedS176; UINT8 ReservedS177; UINT8 ReservedS178; UINT8 ReservedS179; UINT8 ReservedS180; UINT8 ReservedS181; UINT8 ReservedS182; UINT8 ReservedS183; UINT8 ReservedS184; UINT8 ReservedS185; UINT32 ReservedS186; UINT8 ReservedS187; UINT8 ReservedS188; #define UPICPUPRTVARIABLE(x) x##KtiPortDisable;x##KtiLinkSpeed;x##KtiLinkVnaOverride; UINT8 KtiCpuPerPortStartTag; UPICPUPRTVARIABLE (UINT8 Cpu0P0) UPICPUPRTVARIABLE (UINT8 Cpu0P1) UPICPUPRTVARIABLE (UINT8 Cpu0P2) #if MAX_KTI_PORTS > 3 UPICPUPRTVARIABLE (UINT8 Cpu0P3) #endif #if MAX_KTI_PORTS > 5 UPICPUPRTVARIABLE (UINT8 Cpu0P4) UPICPUPRTVARIABLE (UINT8 Cpu0P5) #endif #if MAX_SOCKET > 1 UPICPUPRTVARIABLE (UINT8 Cpu1P0) UPICPUPRTVARIABLE (UINT8 Cpu1P1) UPICPUPRTVARIABLE (UINT8 Cpu1P2) #if MAX_KTI_PORTS > 3 UPICPUPRTVARIABLE (UINT8 Cpu1P3) #endif #if MAX_KTI_PORTS > 5 UPICPUPRTVARIABLE (UINT8 Cpu1P4) UPICPUPRTVARIABLE (UINT8 Cpu1P5) #endif #endif #if MAX_SOCKET > 2 UPICPUPRTVARIABLE (UINT8 Cpu2P0) UPICPUPRTVARIABLE (UINT8 Cpu2P1) UPICPUPRTVARIABLE (UINT8 Cpu2P2) #if MAX_KTI_PORTS > 3 UPICPUPRTVARIABLE (UINT8 Cpu2P3) #endif #if MAX_KTI_PORTS > 5 UPICPUPRTVARIABLE (UINT8 Cpu2P4) UPICPUPRTVARIABLE (UINT8 Cpu2P5) #endif #endif #if MAX_SOCKET > 3 UPICPUPRTVARIABLE (UINT8 Cpu3P0) UPICPUPRTVARIABLE (UINT8 Cpu3P1) UPICPUPRTVARIABLE (UINT8 Cpu3P2) #if MAX_KTI_PORTS > 3 UPICPUPRTVARIABLE (UINT8 Cpu3P3) #endif #if MAX_KTI_PORTS > 5 UPICPUPRTVARIABLE (UINT8 Cpu3P4) UPICPUPRTVARIABLE (UINT8 Cpu3P5) #endif #endif #if (MAX_SOCKET > 4) UPICPUPRTVARIABLE (UINT8 Cpu4P0) UPICPUPRTVARIABLE (UINT8 Cpu4P1) UPICPUPRTVARIABLE (UINT8 Cpu4P2) #if MAX_KTI_PORTS > 3 UPICPUPRTVARIABLE (UINT8 Cpu4P3) #endif #if MAX_KTI_PORTS > 5 UPICPUPRTVARIABLE (UINT8 Cpu4P4) UPICPUPRTVARIABLE (UINT8 Cpu4P5) #endif #endif #if (MAX_SOCKET > 5) UPICPUPRTVARIABLE (UINT8 Cpu5P0) UPICPUPRTVARIABLE (UINT8 Cpu5P1) UPICPUPRTVARIABLE (UINT8 Cpu5P2) #if MAX_KTI_PORTS > 3 UPICPUPRTVARIABLE (UINT8 Cpu5P3) #endif #if MAX_KTI_PORTS > 5 UPICPUPRTVARIABLE (UINT8 Cpu5P4) UPICPUPRTVARIABLE (UINT8 Cpu5P5) #endif #endif #if (MAX_SOCKET > 6) UPICPUPRTVARIABLE (UINT8 Cpu6P0) UPICPUPRTVARIABLE (UINT8 Cpu6P1) UPICPUPRTVARIABLE (UINT8 Cpu6P2) #if MAX_KTI_PORTS > 3 UPICPUPRTVARIABLE (UINT8 Cpu6P3) #endif #if MAX_KTI_PORTS > 5 UPICPUPRTVARIABLE (UINT8 Cpu6P4) UPICPUPRTVARIABLE (UINT8 Cpu6P5) #endif #endif #if (MAX_SOCKET > 7) UPICPUPRTVARIABLE (UINT8 Cpu7P0) UPICPUPRTVARIABLE (UINT8 Cpu7P1) UPICPUPRTVARIABLE (UINT8 Cpu7P2) #if MAX_KTI_PORTS > 3 UPICPUPRTVARIABLE (UINT8 Cpu7P3) #endif #if MAX_KTI_PORTS > 5 UPICPUPRTVARIABLE (UINT8 Cpu7P4) UPICPUPRTVARIABLE (UINT8 Cpu7P5) #endif #endif #define UPICPUPRTDFXVARIABLE(x) x##ReservedS189;x##ReservedS190;x##ReservedS191;x##ReservedS246; UINT8 DfxKtiCpuPerPortStartTag; UPICPUPRTDFXVARIABLE (UINT8 Cpu0P0) UPICPUPRTDFXVARIABLE (UINT8 Cpu0P1) UPICPUPRTDFXVARIABLE (UINT8 Cpu0P2) #if MAX_KTI_PORTS > 3 UPICPUPRTDFXVARIABLE (UINT8 Cpu0P3) #endif #if MAX_KTI_PORTS > 5 UPICPUPRTDFXVARIABLE (UINT8 Cpu0P4) UPICPUPRTDFXVARIABLE (UINT8 Cpu0P5) #endif #if MAX_SOCKET > 1 UPICPUPRTDFXVARIABLE (UINT8 Cpu1P0) UPICPUPRTDFXVARIABLE (UINT8 Cpu1P1) UPICPUPRTDFXVARIABLE (UINT8 Cpu1P2) #if MAX_KTI_PORTS > 3 UPICPUPRTDFXVARIABLE (UINT8 Cpu1P3) #endif #if MAX_KTI_PORTS > 5 UPICPUPRTDFXVARIABLE (UINT8 Cpu1P4) UPICPUPRTDFXVARIABLE (UINT8 Cpu1P5) #endif #endif #if MAX_SOCKET > 2 UPICPUPRTDFXVARIABLE (UINT8 Cpu2P0) UPICPUPRTDFXVARIABLE (UINT8 Cpu2P1) UPICPUPRTDFXVARIABLE (UINT8 Cpu2P2) #if MAX_KTI_PORTS > 3 UPICPUPRTDFXVARIABLE (UINT8 Cpu2P3) #endif #if MAX_KTI_PORTS > 5 UPICPUPRTDFXVARIABLE (UINT8 Cpu2P4) UPICPUPRTDFXVARIABLE (UINT8 Cpu2P5) #endif #endif #if MAX_SOCKET > 3 UPICPUPRTDFXVARIABLE (UINT8 Cpu3P0) UPICPUPRTDFXVARIABLE (UINT8 Cpu3P1) UPICPUPRTDFXVARIABLE (UINT8 Cpu3P2) #if MAX_KTI_PORTS > 3 UPICPUPRTDFXVARIABLE (UINT8 Cpu3P3) #endif #if MAX_KTI_PORTS > 5 UPICPUPRTDFXVARIABLE (UINT8 Cpu3P4) UPICPUPRTDFXVARIABLE (UINT8 Cpu3P5) #endif #endif #if MAX_SOCKET > 4 UPICPUPRTDFXVARIABLE (UINT8 Cpu4P0) UPICPUPRTDFXVARIABLE (UINT8 Cpu4P1) UPICPUPRTDFXVARIABLE (UINT8 Cpu4P2) #if MAX_KTI_PORTS > 3 UPICPUPRTDFXVARIABLE (UINT8 Cpu4P3) #endif #if MAX_KTI_PORTS > 5 UPICPUPRTDFXVARIABLE (UINT8 Cpu4P4) UPICPUPRTDFXVARIABLE (UINT8 Cpu4P5) #endif #endif #if MAX_SOCKET > 5 UPICPUPRTDFXVARIABLE (UINT8 Cpu5P0) UPICPUPRTDFXVARIABLE (UINT8 Cpu5P1) UPICPUPRTDFXVARIABLE (UINT8 Cpu5P2) #if MAX_KTI_PORTS > 3 UPICPUPRTDFXVARIABLE (UINT8 Cpu5P3) #endif #if MAX_KTI_PORTS > 5 UPICPUPRTDFXVARIABLE (UINT8 Cpu5P4) UPICPUPRTDFXVARIABLE (UINT8 Cpu5P5) #endif #endif #if MAX_SOCKET > 6 UPICPUPRTDFXVARIABLE (UINT8 Cpu6P0) UPICPUPRTDFXVARIABLE (UINT8 Cpu6P1) UPICPUPRTDFXVARIABLE (UINT8 Cpu6P2) #if MAX_KTI_PORTS > 3 UPICPUPRTDFXVARIABLE (UINT8 Cpu6P3) #endif #if MAX_KTI_PORTS > 5 UPICPUPRTDFXVARIABLE (UINT8 Cpu6P4) UPICPUPRTDFXVARIABLE (UINT8 Cpu6P5) #endif #endif #if MAX_SOCKET > 7 UPICPUPRTDFXVARIABLE (UINT8 Cpu7P0) UPICPUPRTDFXVARIABLE (UINT8 Cpu7P1) UPICPUPRTDFXVARIABLE (UINT8 Cpu7P2) #if MAX_KTI_PORTS > 3 UPICPUPRTDFXVARIABLE (UINT8 Cpu7P3) #endif #if MAX_KTI_PORTS > 5 UPICPUPRTDFXVARIABLE (UINT8 Cpu7P4) UPICPUPRTDFXVARIABLE (UINT8 Cpu7P5) #endif #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__