123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318 |
- /** @file
- @copyright
- Copyright 2004 - 2021 Intel Corporation. <BR>
- SPDX-License-Identifier: BSD-2-Clause-Patent
- **/
- // Definition Flag:
- // 1. KTI_SW_SIMULATION -> run with KTIRC Simulation
- // 2. IA32 -> run with IA32 mode
- #ifndef _KTI_HOST_H_
- #define _KTI_HOST_H_
- #include "DataTypes.h"
- #include "PlatformHost.h"
- #include <Upi/KtiSi.h>
- #include <Upi/KtiDisc.h>
- #include "MemHostChipCommon.h"
- #pragma pack(1)
- /*********************************************************
- KTIRC Host Structure Related
- *********************************************************/
- typedef enum {
- KTI_LINK0 = 0x0,
- KTI_LINK1,
- KTI_LINK2,
- KTI_LINK3,
- KTI_LINK4,
- KTI_LINK5
- } KTI_LOGIC_LINK;
- typedef struct {
- UINT8 Reserved1;
- UINT8 Reserved2;
- UINT8 Reserved3;
- UINT8 Reserved4;
- UINT8 Reserved5;
- UINT8 Reserved6;
- UINT8 Reserved7;
- UINT8 Reserved8;
- UINT8 Reserved9;
- UINT8 Reserved10;
- UINT8 Reserved11;
- UINT8 Reserved12;
- UINT8 Reserved13;
- UINT8 Reserved14;
- UINT8 Reserved15;
- UINT8 Reserved16;
- UINT8 Reserved17;
- UINT8 Reserved18;
- UINT8 Reserved19;
- UINT8 Reserved20;
- UINT8 Reserved21;
- UINT8 Reserved22;
- UINT8 Reserved23;
- UINT8 Reserved24;
- UINT8 Reserved25;
- UINT8 Reserved26;
- UINT8 Reserved27;
- UINT8 Reserved28;
- UINT8 Reserved29;
- UINT8 Reserved30;
- UINT8 Reserved31;
- UINT8 Reserved32;
- UINT8 Reserved33;
- UINT8 Reserved34;
- UINT8 Reserved35;
- UINT8 Reserved36;
- UINT8 Reserved37;
- UINT32 Reserved38;
- UINT8 Reserved39;
- UINT8 Reserved40;
- } KTI_RESERVED_3;
- typedef struct {
- UINT32 Reserved1:2;
- UINT32 Reserved2:2;
- UINT32 Reserved3:2;
- UINT32 Rsvd1 : 26;
- } KTI_RESERVED_1;
- typedef struct {
- UINT8 Reserved4 : 2;
- UINT8 Rsvd1 : 6;
- } KTI_RESERVED_2;
- typedef struct {
- KTI_RESERVED_1 Link[MAX_FW_KTI_PORTS];
- KTI_RESERVED_2 Phy[MAX_FW_KTI_PORTS];
- } KTI_RESERVED_4;
- /**
- Per Lane PHY Configuration
- These PHY settings are system dependent. Every socket/link/freq requires an instance of this structure.
- **/
- typedef struct {
- UINT8 SocketID; ///< Socket ID
- UINT8 AllLanesUseSameTxeq; ///< Use same TXEQ on all lanes
- UINT8 Freq; ///< The Link Speed these TXEQ settings should be used for
- UINT32 Link; ///< Port Number
- UINT32 TXEQL[20]; ///< TXEQ Settings
- UINT32 CTLEPEAK[5]; ///< CTLE Peaking Settings
- } PER_LANE_EPARAM_LINK_INFO;
- /**
- All Lanes PHY Configuration
- This is for full speed mode, all lanes have the same TXEQ setting
- **/
- typedef struct {
- UINT8 SocketID; ///< Socket ID
- UINT8 Freq; ///< The Link Speed these TXEQ settings should be used for
- UINT32 Link; ///< Port Number
- UINT32 AllLanesTXEQ; ///< TXEQ Setting
- UINT8 CTLEPEAK; ///< CTLE Peaking Setting
- } ALL_LANES_EPARAM_LINK_INFO;
- #define ADAPTIVE_CTLE 0x3f
- typedef enum {
- TYPE_UBOX = 0,
- TYPE_UBOX_IIO,
- TYPE_MCP,
- TYPE_FPGA,
- TYPE_HFI,
- TYPE_NAC,
- TYPE_GRAPHICS,
- TYPE_DINO,
- TYPE_RESERVED,
- TYPE_DISABLED, // This item must be prior to stack specific disable types
- TYPE_UBOX_IIO_DIS,
- TYPE_MCP_DIS,
- TYPE_FPGA_DIS,
- TYPE_HFI_DIS,
- TYPE_NAC_DIS,
- TYPE_GRAPHICS_DIS,
- TYPE_DINO_DIS,
- TYPE_RESERVED_DIS,
- TYPE_NONE
- } STACK_TYPE;
- //
- // Link layer settings, per link
- //
- typedef struct {
- UINT8 KtiPortDisable:1; // TRUE - Port disabled; FALSE- Port enabled (default)
- UINT8 KtiLinkVnaOverride:7; // Numeric value 0x00-0x7f
- UINT8 Rsvd:8;
- } KTI_CPU_LINK_SETTING;
- //
- // Phy general setting, per link
- //
- typedef struct {
- UINT32 KtiLinkSpeed:3;
- UINT32 Rsvd:29;
- } KTI_CPU_PHY_SETTING;
- //
- // Per CPU setting
- //
- typedef struct {
- KTI_CPU_LINK_SETTING Link[MAX_FW_KTI_PORTS];
- KTI_CPU_PHY_SETTING Phy[MAX_FW_KTI_PORTS];
- } KTI_CPU_SETTING;
- /**
- KTIRC input structure
- **/
- typedef struct {
- //
- // Protocol layer and other general options; note that "Auto" is provided only options whose value will change depending
- // on the topology, not for all options.
- //
- /**
- Indicates the ratio of Bus/MMIOL/IO resource to be allocated for each CPU's IIO.
- Value 0 indicates, that CPU is not relevant for the system. If resource is
- requested for an CPU that is not currently populated, KTIRC will assume
- that the ratio is 0 for that CPU and won't allocate any resources for it.
- If resource is not requested for a CPU that is populated, KTIRC will force
- the ratio for that CPU to 1.
- **/
- UINT8 BusRatio[MAX_SOCKET];
- UINT8 D2KCreditConfig; ///< 1 - Min, 2 - Med (Default), 3- Max
- UINT8 SnoopThrottleConfig; ///< 0 - Disabled (Default), 1 - Min, 2 - Med, 3- Max
- UINT8 SnoopAllCores; ///< 0 - Disabled, 1 - Enabled, 2 - Auto
- UINT8 LegacyVgaSoc; ///< Socket that claims the legacy VGA range; valid values are 0-7; 0 is default.
- UINT8 LegacyVgaStack; ///< Stack that claims the legacy VGA range; valid values are 0-3; 0 is default.
- UINT8 ColdResetRequestStart; ///< @deprecated Reserved.
- UINT8 P2pRelaxedOrdering; ///< 0 - Disable(default) 1 - Enable
- UINT8 DebugPrintLevel; ///< Bit 0 - Fatal, Bit1 - Warning, Bit2 - Info Summary; Bit 3 - Info detailed. 1 - Enable; 0 - Disable
- UINT8 SncEn; ///< 0 - Disable, (default) 1 - Enable
- UINT8 UmaClustering; ///< 0 - Disable, 2 - 2Clusters UMA, 4 - 4Clusters UMA
- 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 DegradePrecedence; ///< Use DEGRADE_PRECEDENCE definition; TOPOLOGY_PRECEDENCE is default
- UINT8 Degrade4SPreference; ///< 4S1LFullConnect topology is default; another option is 4S2LRing topology.
- UINT8 DirectoryModeEn; ///< 0 - Disable; 1 - Enable (default)
- UINT8 XptPrefetchEn; ///< Xpt Prefetch : 1 - Enable; 0 - Disable; 2 - Auto (default)
- UINT8 KtiPrefetchEn; ///< Kti Prefetch : 1 - Enable; 0 - Disable; 2 - Auto (default)
- UINT8 XptRemotePrefetchEn; ///< Xpt Remote Prefetch : 1 - Enable; 0 - Disable; 2 - Auto (default) (ICX only)
- UINT8 RdCurForXptPrefetchEn; ///< RdCur for XPT Prefetch : 0 - Disable, 1 - Enable, 2- Auto (default)
- UINT8 KtiFpgaEnable[MAX_SOCKET]; ///< Indicate if should enable Fpga device found in this socket : 0 - Disable, 1 - Enable, 2- Auto
- UINT8 DdrtQosMode; ///< DDRT QoS Feature: 0 - Disable (default), 1 - M2M QoS Enable, Cha QoS Disable
- ///< 2 - M2M QoS Enable, Cha QoS Enable
- //
- // Phy/Link Layer Options (System-wide and per socket)
- //
- UINT8 KtiLinkSpeedMode; ///< Link speed mode selection; 0 - Slow Speed; 1- Full Speed (default)
- UINT8 KtiLinkSpeed; ///< Use KTI_LINKSPEED definition
- UINT8 KtiAdaptationEn; ///< 0 - Disable, 1 - Enable
- UINT8 KtiAdaptationSpeed; ///< Use KTI_LINK_SPEED definition; MAX_KTI_LINK_SPEED - Auto (i.e BIOS choosen speed)
- 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; ///< CRC_MODE_16BIT, CRC_MODE_ROLLING_32BIT, CRC_MODE_AUTO or CRC_MODE_PER_LINK
- UINT8 KtiCpuSktHotPlugEn; ///< 0 - Disable (default), 1 - Enable
- UINT8 KtiCpuSktHotPlugTopology; ///< 0 - 4S Topology (default), 1 - 8S Topology
- UINT8 KtiSkuMismatchCheck; ///< 0 - No, 1 - Yes (default)
- UINT8 IrqThreshold; ///< 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 in sockets: 0 - Disable, 1 - Enable, 2 - AUTO (Default)
- UINT8 StaleAtoSOptEn; ///< HA A to S directory optimization: 1 - Enable; 0 - Disable; 2 - Auto (Default)
- UINT8 LLCDeadLineAlloc; ///< LLC dead line alloc: 1 - Enable(Default); 0 - Disable
- UINT8 SplitLock; ///< @deprecated Reserved, must be set to 0.
- UINT8 ColdResetRequestEnd; ///< @deprecated Reserved.
- ///
- /// Phy/Link Layer Options (per Port)
- ///
- KTI_CPU_SETTING PhyLinkPerPortSetting[MAX_SOCKET];
- UINT8 mmCfgBase; ///< MMCFG Base address, must be 64MB (SKX, HSX, BDX) / 256MB (GROVEPORT) aligned. Options: {0:1G, 1:1.5G, 2:1.75G, 3:2G, 4:2.25G, 5:3G, 6: Auto}
- UINT8 mmCfgSize; ///< MMCFG Size address, must be 64M, 128M or 256M. Options: {0:64M, 1:128M, 2:256M, 3:512M, 4:1G, 5:2G, 6: Auto}
- UINT32 mmiolBase; ///< MMIOL Base address, must be 64MB aligned
- UINT32 mmiolSize; ///< MMIOL Size address
- UINT32 mmiohBase; ///< Address bits above 4GB, i,e, the hex value here is address Bit[45:32] for SKX family, Bit[51:32] for ICX-SP
- UINT8 CpuPaLimit; ///< Limits the max address to 46bits. This will take precedence over mmiohBase
- UINT8 lowGap; ///< @deprecated Reserved.
- UINT8 highGap; ///< @deprecated Reserved.
- UINT16 mmiohSize; ///< Number of 1GB contiguous regions to be assigned for MMIOH space per CPU. Range 1-1024
- UINT8 isocEn; ///< 1 - Enable; 0 - Disable (BIOS will force this for 4S)
- UINT8 dcaEn; ///< 1 - Enable; 0 - Disable
- /**
- BoardTypeBitmask:
- - Bits[3:0] - Socket0
- - Bits[7:4] - Socket1
- - Bits[11:8] - Socket2
- - Bits[15:12] - Socket3
- - Bits[19:16] - Socket4
- - Bits[23:20] - Socket5
- - Bits[27:24] - Socket6
- - Bits[31:28] - Socket7
- Within each Socket-specific field, bits mean:
- - Bit0 = CPU_TYPE_STD support; always 1 on Socket0
- - Bit1 = CPU_TYPE_F support
- - Bit2 = CPU_TYPE_P support
- - Bit3 = reserved
- **/
- UINT32 BoardTypeBitmask;
- UINT32 AllLanesPtr; ///< Pointer to an array of ALL_LANES_EPARAM_LINK_INFO structures.
- UINT32 PerLanePtr; ///< Pointer to an array of PER_LANE_EPARAM_LINK_INFO structures.
- UINT32 AllLanesSizeOfTable; ///< Number of elements in array pointed to by AllLanesPtr
- UINT32 PerLaneSizeOfTable; ///< Number of elements in array pointed to by PerLanePtr
- UINT32 WaitTimeForPSBP; ///< the wait time in units of 1000us for PBSP to check in.
- BOOLEAN IsKtiNvramDataReady; ///< Used internally, Reserved.
- UINT32 OemHookPostTopologyDiscovery; ///< OEM_HOOK_POST_TOPOLOGY_DISCOVERY function pointer. Invoked at the end of topology discovery, used for error reporting.
- UINT32 OemGetResourceMapUpdate; ///< OEM_GET_RESOURCE_MAP_UPDATE function pointer. Allows platform code to adjust the resource map.
- UINT32 OemGetAdaptedEqSettings; ///< @deprecated Reserved, must be set to 0.
- UINT32 OemCheckCpuPartsChangeSwap; ///< @deprecated Reserved, must be set to 0.
- BOOLEAN WaSerializationEn; ///< Enable BIOS serialization WA by PcdWaSerializationEn
- KTI_RESERVED_3 Reserved166;
- KTI_RESERVED_4 Reserved167[MAX_SOCKET];
- UINT8 KtiInEnableMktme; ///< 0 - Disabled; 1 - Enabled; MkTme status decides D2Kti feature state
- /**
- Pointers to the location of the CFR/SINIT binaries.
- Contains a pointer to a 24 byte fixed length array.
- The array contains the 3 instances of the following c-struct
- ~~~
- typedef struct {
- UINT32 CfrImagePtr;
- UINT32 CfrImageSize;
- }
- ~~~
- This allows a maximum of 3 CFR/SINIT binaries to be provided by platform code.
- **/
- UINT32 CFRImagePtr;
- UINT8 S3mCFRCommit; ///< 0 - Disable S3m CFR flow. 1 - Provision S3m CFR but not Commit. 2 - Provision and Commit S3M CFR.
- UINT8 PucodeCFRCommit; ///< 0 - Disable Pucode CFR flow. 1 - Provision Pucode CFR but not Commit. 2 - Provision and Commit Pucode CFR.
- } KTI_HOST_IN;
- #pragma pack()
- #endif // _KTI_HOST_H_
|