/** @file
Copyright (c) 2018, Intel Corporation. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent
**/
#ifndef __SOCKET_PROCESSORCORE_CONFIGURATION_DATA_H__
#define __SOCKET_PROCESSORCORE_CONFIGURATION_DATA_H__
#include
#include "SocketConfiguration.h"
extern EFI_GUID gEfiSocketProcessorCoreVarGuid;
#define SOCKET_PROCESSORCORE_CONFIGURATION_NAME L"SocketProcessorCoreConfig"
#pragma pack(1)
typedef struct {
UINT8 CpuidMaxValue;
UINT8 ExecuteDisableBit;
UINT8 PchTraceHubEn; // PCH TRACE HUB
UINT8 C1AutoDemotion; // C1 Auto Demotion
UINT8 C3AutoDemotion; // C3 Auto Demotion
UINT8 ProcessorHyperThreadingDisable; // Hyper Threading [ALL]
UINT8 ProcessorLtsxEnable; // Enabling TXT
UINT8 ProcessorVmxEnable; // Enabling VMX
UINT8 ProcessorSmxEnable; // Enabling SMX
UINT8 ProcessorMsrLockControl; // MSR Lock Bit Control
UINT8 DebugInterface; // IA32_DEBUG_INTERFACE_MSR
UINT8 ThreeStrikeTimer; // Disable 3strike timer
UINT8 FastStringEnable; // Fast String
UINT8 MachineCheckEnable; // Machine Check
UINT8 MlcStreamerPrefetcherEnable; // Hardware Prefetch
UINT8 MlcSpatialPrefetcherEnable; // Adjacent Cache Line Prefetch
UINT8 DCUStreamerPrefetcherEnable; // DCU Streamer Prefetcher
UINT8 DCUIPPrefetcherEnable; // DCU IP Prefetcher
UINT8 DCUModeSelection; // DCU Mode Selection
UINT8 ProcessorX2apic; // Enable Processor XAPIC
UINT8 ForceX2ApicIds; // Force to use > 8bit ApicId
UINT8 BspSelection; // Select BSP
UINT8 IedSize; // IED size
UINT8 IedTraceSize; // IED trace size
UINT8 TsegSize; // TSEG size
UINT8 AllowMixedPowerOnCpuRatio; // Allow Mixed PowerOn CpuRatio
UINT8 CheckCpuBist; // check and disable BIST faile core or ignore
UINT8 ProcessorFlexibleRatio; // Non-Turbo Mode Processor Core Ratio Multiplier
UINT8 ProcessorFlexibleRatioOverrideEnable; // Non-Turbo Mode Processor Core Ratio Multiplier Enable
UINT8 Reserved2; // Reserved 2
UINT8 ForcePhysicalModeEnable; // Force physical destionation mode
UINT8 LlcPrefetchEnable; // LLC Prefetch
UINT8 ProcessorVirtualWireMode;
UINT8 AesEnable;
UINT8 PpinControl; // PPIN Control MSR
UINT8 LockChipset; // Lock Chipset
UINT8 SkipStopPbet; // Skip StopPbet
UINT8 BiosAcmErrorReset; // Disable LT-SX and reset system when BIOS ACM error occurs
UINT8 AcmType; // 0x80 = debug signed ACM; 0x40 = NPW production signed ACM; 0x00 = PW production signed ACM
UINT64 CoreDisableMask[MAX_SOCKET]; // one for each CPU socket
// IOT/OCLA configs
#ifndef OCLA_TOR_ENTRY_MAX
#define OCLA_TOR_ENTRY_MIN 0
#define OCLA_TOR_ENTRY_MAX 0x11 // 15 or 17 depending on Isoch on/off
#define OCLA_TOR_ENTRY_DEFAULT 1
#define OCLA_WAY_MIN 0
#define OCLA_WAY_MAX 8 // max 8 LLC ways out of 11 can be reserved for OCLA
#define OCLA_WAY_DEFAULT 1
#endif
UINT8 IotEn[MAX_SOCKET];
UINT8 OclaMaxTorEntry[MAX_SOCKET];
UINT8 OclaMinWay[MAX_SOCKET];
UINT32 IioLlcWaysMask; // MSR CBO_SLICE0_CR_IIO_LLC_WAYS bitmask. - Only Bits[22:0] are used
UINT32 ExpandedIioLlcWaysMask; // MSR INGRESS_SPARE[10:0] bitmask. - Only Bits[10:0] are used
UINT32 RemoteWaysMask; // MSR INGRESS_SPARE[26:16] bitmask. - Only Bits[10:0] are used
UINT32 QlruCfgMask_Lo; // MSR VIRTUAL_MSR_CR_QLRU_CONFIG bitmask - Lower 32-bit
UINT32 QlruCfgMask_Hi; // MSR VIRTUAL_MSR_CR_QLRU_CONFIG bitmask - Higher 32-bit
UINT8 PCIeDownStreamPECIWrite;
//
// Targeted Smi Support
//
UINT8 TargetedSmi;
//
// eSMM Save State Mode
//
UINT8 eSmmSaveState;
UINT8 PeciInTrustControlBit; //On Setup
UINT8 Poison;
UINT8 Viral;
UINT8 EVMode;
UINT8 SmbusErrorRecovery;
UINT8 RdtCatOpportunisticTuning;
UINT8 CpuDbpEnable; // Enable/Disable DBP-F
UINT8 L2RfoPrefetchDisable; // L2 RFO Prefetch
UINT8 MonitorMwaitEnabled;
UINT8 MonitorMwaitSwitchPresent;
} SOCKET_PROCESSORCORE_CONFIGURATION;
#pragma pack()
#endif