summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/vendorcode/intel/fsp/fsp2_0/graniterapids/ap/CxlNodeHob.h16
-rw-r--r--src/vendorcode/intel/fsp/fsp2_0/graniterapids/ap/EnhancedWarningLogLib.h169
-rw-r--r--src/vendorcode/intel/fsp/fsp2_0/graniterapids/ap/FirmwareVersionInfoHob.h59
-rw-r--r--src/vendorcode/intel/fsp/fsp2_0/graniterapids/ap/FspAcpiHobs.h21
-rw-r--r--src/vendorcode/intel/fsp/fsp2_0/graniterapids/ap/FspEas.h17
-rw-r--r--src/vendorcode/intel/fsp/fsp2_0/graniterapids/ap/FspEdpcParam.h4
-rw-r--r--src/vendorcode/intel/fsp/fsp2_0/graniterapids/ap/FspErrorInfoHob.h21
-rw-r--r--src/vendorcode/intel/fsp/fsp2_0/graniterapids/ap/FspExtMemoryPprHob.h70
-rw-r--r--src/vendorcode/intel/fsp/fsp2_0/graniterapids/ap/FspExtSystemMemoryMapHob.h161
-rw-r--r--src/vendorcode/intel/fsp/fsp2_0/graniterapids/ap/FspGlobals.h61
-rw-r--r--src/vendorcode/intel/fsp/fsp2_0/graniterapids/ap/FspUpd.h8
-rw-r--r--src/vendorcode/intel/fsp/fsp2_0/graniterapids/ap/FspiUpd.h233
-rw-r--r--src/vendorcode/intel/fsp/fsp2_0/graniterapids/ap/FspmUpd.h1835
-rw-r--r--src/vendorcode/intel/fsp/fsp2_0/graniterapids/ap/FspsUpd.h307
-rw-r--r--src/vendorcode/intel/fsp/fsp2_0/graniterapids/ap/FsptUpd.h26
-rw-r--r--src/vendorcode/intel/fsp/fsp2_0/graniterapids/ap/IioPcieConfigUpd.h260
-rw-r--r--src/vendorcode/intel/fsp/fsp2_0/graniterapids/ap/IioUniversalDataHob.h321
-rw-r--r--src/vendorcode/intel/fsp/fsp2_0/graniterapids/ap/MemoryMapDataHob.h223
-rw-r--r--src/vendorcode/intel/fsp/fsp2_0/graniterapids/ap/PrevBootErrSrcHob.h7
-rw-r--r--src/vendorcode/intel/fsp/fsp2_0/graniterapids/ap/SystemInfoHob.h52
-rw-r--r--src/vendorcode/intel/fsp/fsp2_0/graniterapids/sp/CxlNodeHob.h16
-rw-r--r--src/vendorcode/intel/fsp/fsp2_0/graniterapids/sp/EnhancedWarningLogLib.h169
-rw-r--r--src/vendorcode/intel/fsp/fsp2_0/graniterapids/sp/FirmwareVersionInfoHob.h59
-rw-r--r--src/vendorcode/intel/fsp/fsp2_0/graniterapids/sp/FspAcpiHobs.h21
-rw-r--r--src/vendorcode/intel/fsp/fsp2_0/graniterapids/sp/FspEas.h17
-rw-r--r--src/vendorcode/intel/fsp/fsp2_0/graniterapids/sp/FspEdpcParam.h4
-rw-r--r--src/vendorcode/intel/fsp/fsp2_0/graniterapids/sp/FspErrorInfoHob.h21
-rw-r--r--src/vendorcode/intel/fsp/fsp2_0/graniterapids/sp/FspExtMemoryPprHob.h70
-rw-r--r--src/vendorcode/intel/fsp/fsp2_0/graniterapids/sp/FspExtSystemMemoryMapHob.h161
-rw-r--r--src/vendorcode/intel/fsp/fsp2_0/graniterapids/sp/FspGlobals.h61
-rw-r--r--src/vendorcode/intel/fsp/fsp2_0/graniterapids/sp/FspUpd.h8
-rw-r--r--src/vendorcode/intel/fsp/fsp2_0/graniterapids/sp/FspiUpd.h231
-rw-r--r--src/vendorcode/intel/fsp/fsp2_0/graniterapids/sp/FspmUpd.h1835
-rw-r--r--src/vendorcode/intel/fsp/fsp2_0/graniterapids/sp/FspsUpd.h307
-rw-r--r--src/vendorcode/intel/fsp/fsp2_0/graniterapids/sp/FsptUpd.h26
-rw-r--r--src/vendorcode/intel/fsp/fsp2_0/graniterapids/sp/IioPcieConfigUpd.h260
-rw-r--r--src/vendorcode/intel/fsp/fsp2_0/graniterapids/sp/IioUniversalDataHob.h319
-rw-r--r--src/vendorcode/intel/fsp/fsp2_0/graniterapids/sp/MemoryMapDataHob.h223
-rw-r--r--src/vendorcode/intel/fsp/fsp2_0/graniterapids/sp/PrevBootErrSrcHob.h7
-rw-r--r--src/vendorcode/intel/fsp/fsp2_0/graniterapids/sp/SystemInfoHob.h52
40 files changed, 4471 insertions, 3267 deletions
diff --git a/src/vendorcode/intel/fsp/fsp2_0/graniterapids/ap/CxlNodeHob.h b/src/vendorcode/intel/fsp/fsp2_0/graniterapids/ap/CxlNodeHob.h
index 42b5cc20d5..5f6afc2146 100644
--- a/src/vendorcode/intel/fsp/fsp2_0/graniterapids/ap/CxlNodeHob.h
+++ b/src/vendorcode/intel/fsp/fsp2_0/graniterapids/ap/CxlNodeHob.h
@@ -1,6 +1,6 @@
/** @file
-Copyright (c) 2019-2023, Intel Corporation. All rights reserved.<BR>
+Copyright (c) 2024, Intel Corporation. All rights reserved.<BR>
Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met:
@@ -26,25 +26,32 @@ are permitted provided that the following conditions are met:
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
THE POSSIBILITY OF SUCH DAMAGE.
+ This file is automatically generated. Please do NOT modify !!!
+
**/
#ifndef _CXL_NODE_HOB_
#define _CXL_NODE_HOB_
-#define CXL_NODE_HOB_GUID { 0xdd8ae009, 0xda5a, 0x44a3, { 0xbe, 0x18, 0xda, 0x0c, 0x16, 0xc5, 0xaf, 0x5c } }
+#define CXL_NODE_HOB_GUID { 0xdd8ae009, 0xda5a, 0x44a3, { 0xbe, 0x18, 0xda, 0x0c, 0x16, 0xc5, 0xaf, 0x5c } }
+
+#ifndef MAX_IIO_STACK
+#define MAX_IIO_STACK 16
+#endif
#ifndef MAX_CXL_HDM_RANGES
#define MAX_CXL_HDM_RANGES 0x2 // Maximum number of CXL HDM ranges per CXL end device.
#endif
#ifndef MAX_CXL_PER_SOCKET
-#define MAX_CXL_PER_SOCKET 8
+#define MAX_CXL_PER_SOCKET MAX_IIO_STACK
#endif
#define CXL_NODE_ATTR_MEM BIT0
#define CXL_NODE_ATTR_PERSISTENT BIT1
#define CXL_NODE_ATTR_MEM_HW_INIT BIT2
#define CXL_NODE_ATTR_ACCELERATOR BIT3
+#define CXL_NODE_ATTR_HOT_PLUGGABLE BIT4
typedef UINT32 CXL_NODE_ATTR;
@@ -75,6 +82,7 @@ typedef struct {
UINT32 Size;
UINT8 Ways;
UINT8 SocketBitmap;
+ BOOLEAN AcpiSratSpMemFlag;
CXL_EFI_MEM_TYPE EfiMemType;
CXL_PERF_DATA InitiatorPerfData; // Performance data between device egress and initiator.
CXL_PERF_DATA TargetPerfData; // Performance data of entire target memory region.
@@ -86,7 +94,7 @@ typedef struct {
//
// CXL node info for UEFI memory map and ACPI tables construction
//
- CXL_NODE_INFO CxlNodeInfo[MAX_CXL_PER_SOCKET * MAX_CXL_HDM_RANGES];
+ CXL_NODE_INFO CxlNodeInfo[MAX_IIO_STACK * MAX_CXL_HDM_RANGES];
} CXL_NODE_SOCKET;
#pragma pack()
diff --git a/src/vendorcode/intel/fsp/fsp2_0/graniterapids/ap/EnhancedWarningLogLib.h b/src/vendorcode/intel/fsp/fsp2_0/graniterapids/ap/EnhancedWarningLogLib.h
deleted file mode 100644
index 7c54749304..0000000000
--- a/src/vendorcode/intel/fsp/fsp2_0/graniterapids/ap/EnhancedWarningLogLib.h
+++ /dev/null
@@ -1,169 +0,0 @@
-/** @file
-
-Copyright (c) 2019-2023, Intel Corporation. All rights reserved.<BR>
-
-Redistribution and use in source and binary forms, with or without modification,
-are permitted provided that the following conditions are met:
-
-* Redistributions of source code must retain the above copyright notice, this
- list of conditions and the following disclaimer.
-* Redistributions in binary form must reproduce the above copyright notice, this
- list of conditions and the following disclaimer in the documentation and/or
- other materials provided with the distribution.
-* Neither the name of Intel Corporation nor the names of its contributors may
- be used to endorse or promote products derived from this software without
- specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
- LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
- THE POSSIBILITY OF SUCH DAMAGE.
-
-**/
-
-#ifndef _ENHANCED_WARNING_LOG_LIB_
-#define _ENHANCED_WARNING_LOG_LIB_
-
-#define FSP_RESERVED_LEN 12
-
-#pragma pack(1)
-
-///
-/// Enhanced Warning Log Header
-///
-typedef struct {
- EFI_GUID EwlGuid; /// GUID that uniquely identifies the EWL revision
- UINT32 Size; /// Total size in bytes including the header and buffer
- UINT32 FreeOffset; /// Offset of the beginning of the free space from byte 0
- /// of the buffer immediately following this structure
- /// Can be used to determine if buffer has sufficient space for next entry
- UINT32 Crc; /// 32-bit CRC generated over the whole size minus this crc field
- /// Note: UEFI 32-bit CRC implementation (CalculateCrc32) (References [7])
- /// Consumers can ignore CRC check if not needed.
- UINT32 Reserved; /// Reserved for future use, must be initialized to 0
-} EWL_HEADER;
-
-///
-/// List of all entry types supported by this revision of EWL
-///
-typedef enum {
- EwlType0 = 0,
- EwlType1 = 1,
- EwlType2 = 2,
- EwlType3 = 3,
- EwlType4 = 4,
- EwlType5 = 5,
- EwlType6 = 6,
- EwlType7 = 7,
- EwlType8 = 8,
- EwlType9 = 9,
- EwlType10 = 10,
- EwlType11 = 11,
- EwlType12 = 12,
- EwlType13 = 13,
- EwlType14 = 14,
- EwlType15 = 15,
- EwlType16 = 16,
- EwlType17 = 17,
- EwlType18 = 18,
- EwlType19 = 19,
- EwlType20 = 20,
- EwlType21 = 21,
- EwlType22 = 22,
- EwlType23 = 23,
- EwlType24 = 24,
- EwlType25 = 25,
- EwlType26 = 26,
- EwlType27 = 27,
- EwlType28 = 28,
- EwlType29 = 29,
- EwlType30 = 30,
- EwlType31 = 31,
- EwlType32 = 32,
- EwlTypeMax,
- EwlTypeOem = 0x8000,
- EwlTypeDelim = MAX_INT32
-} EWL_TYPE;
-
-///
-/// EWL severities
-///
-typedef enum {
- EwlSeverityInfo,
- EwlSeverityWarning,
- EwlSeverityFatal,
- EwlSeverityMax,
- EwlSeverityDelim = MAX_INT32
-} EWL_SEVERITY;
-
-
-///
-/// Generic entry header for parsing the log
-///
-typedef struct {
- EWL_TYPE Type;
- UINT16 Size; /// Entries will be packed by byte in contiguous space
- EWL_SEVERITY Severity; /// Warning, error, informational, this may be extended in the future
-} EWL_ENTRY_HEADER;
-
-///
-/// Legacy content provides context of the warning
-///
-typedef struct {
- UINT8 MajorCheckpoint; // EWL Spec - Appendix B
- UINT8 MinorCheckpoint;
- UINT8 MajorWarningCode; // EWL Spec - Appendix A
- UINT8 MinorWarningCode;
-} EWL_ENTRY_CONTEXT;
-
-///
-/// Legacy content to specify memory location
-///
-typedef struct {
- UINT8 Socket; /// 0xFF = n/a
- UINT8 Channel; /// 0xFF = n/a
- UINT8 PseudoChannel; /// 0xFF = n/a
- UINT8 Dimm; /// 0xFF = n/a
- UINT8 Rank; /// 0xFF = n/a
-} EWL_ENTRY_MEMORY_LOCATION;
-
-///
-/// Type 3 = Enhanced type for command, control IO errors
-///
-typedef struct {
- EWL_ENTRY_HEADER Header;
- EWL_ENTRY_CONTEXT Context;
- EWL_ENTRY_MEMORY_LOCATION MemoryLocation;
- UINT8 reserved1[FSP_RESERVED_LEN]; // MRC_LT Level; MRC_GT Group; GSM_CSN Signal;
- UINT8 EyeSize; // 0xFF = n/a
-} EWL_ENTRY_TYPE3;
-
-#pragma pack()
-
-///
-/// Enhanced Warning Log Spec defined data log structure
-///
-typedef struct {
- EWL_HEADER Header; /// The size will vary by implementation and should not be assumed
- UINT8 Buffer[4 * 1024]; /// The spec requirement is that the buffer follow the header
-} EWL_PUBLIC_DATA;
-
-///
-/// EWL private data structure. This is going to be implementation dependent
-/// When we separate OEM hooks via a PPI, we can remove this
-///
-typedef struct {
- UINT32 bufSizeOverflow; // Number of bytes that could not be added to buffer
- UINT32 numEntries; // Number of entries currently logged
- EWL_PUBLIC_DATA status; // Spec defined EWL
-} EWL_PRIVATE_DATA;
-
-
-#endif // #ifndef _ENHANCED_WARNING_LOG_LIB_
diff --git a/src/vendorcode/intel/fsp/fsp2_0/graniterapids/ap/FirmwareVersionInfoHob.h b/src/vendorcode/intel/fsp/fsp2_0/graniterapids/ap/FirmwareVersionInfoHob.h
deleted file mode 100644
index 5d09dd2d18..0000000000
--- a/src/vendorcode/intel/fsp/fsp2_0/graniterapids/ap/FirmwareVersionInfoHob.h
+++ /dev/null
@@ -1,59 +0,0 @@
-/** @file
- Header file for Firmware Version Information
- @copyright
- Copyright (c) 2015 - 2021, Intel Corporation. All rights reserved.<BR>
- SPDX-License-Identifier: BSD-2-Clause-Patent
-**/
-
-#ifndef _FIRMWARE_VERSION_INFO_HOB_H_
-#define _FIRMWARE_VERSION_INFO_HOB_H_
-
-#include <Uefi/UefiMultiPhase.h>
-#include <Pi/PiBootMode.h>
-#include <Pi/PiHob.h>
-
-#pragma pack(1)
-///
-/// Firmware Version Structure
-///
-typedef struct {
- UINT8 MajorVersion;
- UINT8 MinorVersion;
- UINT8 Revision;
- UINT16 BuildNumber;
-} FIRMWARE_VERSION;
-
-///
-/// Firmware Version Information Structure
-///
-typedef struct {
- UINT8 ComponentNameIndex; ///< Offset 0 Index of Component Name
- UINT8 VersionStringIndex; ///< Offset 1 Index of Version String
- FIRMWARE_VERSION Version; ///< Offset 2-6 Firmware version
-} FIRMWARE_VERSION_INFO;
-
-#ifndef __SMBIOS_STANDARD_H__
-///
-/// The Smbios structure header.
-///
-typedef struct {
- UINT8 Type;
- UINT8 Length;
- UINT16 Handle;
-} SMBIOS_STRUCTURE;
-#endif
-
-///
-/// Firmware Version Information HOB Structure
-///
-typedef struct {
- EFI_HOB_GUID_TYPE Header; ///< Offset 0-23 The header of FVI HOB
- SMBIOS_STRUCTURE SmbiosData; ///< Offset 24-27 The SMBIOS header of FVI HOB
- UINT8 Count; ///< Offset 28 Number of FVI elements included.
-///
-/// FIRMWARE_VERSION_INFO structures followed by the null terminated string buffer
-///
-} FIRMWARE_VERSION_INFO_HOB;
-#pragma pack()
-
-#endif // _FIRMWARE_VERSION_INFO_HOB_H_ \ No newline at end of file
diff --git a/src/vendorcode/intel/fsp/fsp2_0/graniterapids/ap/FspAcpiHobs.h b/src/vendorcode/intel/fsp/fsp2_0/graniterapids/ap/FspAcpiHobs.h
index 6d5ba0a37b..7150e5ed8e 100644
--- a/src/vendorcode/intel/fsp/fsp2_0/graniterapids/ap/FspAcpiHobs.h
+++ b/src/vendorcode/intel/fsp/fsp2_0/graniterapids/ap/FspAcpiHobs.h
@@ -1,6 +1,6 @@
/** @file
-Copyright (c) 2019-2023, Intel Corporation. All rights reserved.<BR>
+Copyright (c) 2024, Intel Corporation. All rights reserved.<BR>
Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met:
@@ -26,15 +26,28 @@ are permitted provided that the following conditions are met:
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
THE POSSIBILITY OF SUCH DAMAGE.
+ This file is automatically generated. Please do NOT modify !!!
+
**/
-#ifndef _FSP_ACPI_HOBS_H_
-#define _FSP_ACPI_HOBS_H_
+#ifndef __FSP_ACPI_HOBS__
+#define __FSP_ACPI_HOBS__
+
+//Typecast HOB pointer to APEI table structure of ACPI version 6.2
+#define FSP_RAS_ACPI_HOB_GUID { 0x826785ee, 0xa8e0, 0x4d8f, { 0x82, 0x6f, 0x54, 0x29, 0x2c, 0xe7, 0x6f, 0xe6 } }
//Typecast HOB pointer to ACPI CXL CEDT table structure
#define FSP_CXL_CEDT_ACPI_HOB_GUID { 0x5CB7A12A, 0x8B2D, 0x485A, { 0xB7, 0x04, 0xC0, 0x52, 0x49, 0x56, 0x81, 0xE7 } }
+// Typecast HOB pointer to MEM_TRAINING_DATA_HOB_HEADER.
+// User with NDA clearance should refer to RC code for latest structure definition.
+#define FSP_MEM_TRAINING_DATA_HOB_GUID { 0x7e8b89e2, 0x8b84, 0x4cb3, { 0x86, 0x8f, 0x10, 0xb6, 0x78, 0x71, 0xa2, 0xc0 }}
+
+// Typecast HOB pointer to EWL_PRIVATE_DATA.
+// User with NDA clearance should refer to RC code for latest structure definition.
+#define FSP_EWL_ID_HOB_GUID { 0xd8e05800, 0x5e, 0x4462, { 0xaa, 0x3d, 0x9c, 0x6b, 0x47, 0x4, 0x92, 0xb } };
+
//Typecast HOB pointer to RAS_ACPI_PARAM_HOB_DATA;
#define RAS_ACPI_PARAM_HOB_GUID {0x594dfe5c, 0x7a87, 0x49dc, { 0x8f, 0x33, 0xea, 0x83, 0x4d, 0x6f, 0x18, 0x90 } }
-#endif //#ifndef _FSP_ACPI_HOBS_H_
+#endif // __FSP_ACPI_HOBS__
diff --git a/src/vendorcode/intel/fsp/fsp2_0/graniterapids/ap/FspEas.h b/src/vendorcode/intel/fsp/fsp2_0/graniterapids/ap/FspEas.h
deleted file mode 100644
index f99c3bc36b..0000000000
--- a/src/vendorcode/intel/fsp/fsp2_0/graniterapids/ap/FspEas.h
+++ /dev/null
@@ -1,17 +0,0 @@
-/** @file
- Intel FSP definition from Intel Firmware Support Package External
- Architecture Specification v2.2.
- @copyright
- Copyright (c) 2015 - 2021, Intel Corporation. All rights reserved.<BR>
- SPDX-License-Identifier: BSD-2-Clause-Patent
-**/
-
-#ifndef _FSP_EAS_H_
-#define _FSP_EAS_H_
-
-#include <Uefi.h>
-#include <Guid/GuidHobFspEas.h>
-#include <Guid/FspHeaderFile.h>
-#include <FspEas/FspApi.h>
-
-#endif // _FSP_EAS_H_ \ No newline at end of file
diff --git a/src/vendorcode/intel/fsp/fsp2_0/graniterapids/ap/FspEdpcParam.h b/src/vendorcode/intel/fsp/fsp2_0/graniterapids/ap/FspEdpcParam.h
index af0dc5055e..ce694e9c91 100644
--- a/src/vendorcode/intel/fsp/fsp2_0/graniterapids/ap/FspEdpcParam.h
+++ b/src/vendorcode/intel/fsp/fsp2_0/graniterapids/ap/FspEdpcParam.h
@@ -1,6 +1,6 @@
/** @file
-Copyright (c) 2019-2023, Intel Corporation. All rights reserved.<BR>
+Copyright (c) 2024, Intel Corporation. All rights reserved.<BR>
Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met:
@@ -26,6 +26,8 @@ are permitted provided that the following conditions are met:
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
THE POSSIBILITY OF SUCH DAMAGE.
+ This file is automatically generated. Please do NOT modify !!!
+
**/
#ifndef __FSP_EDPC_PARAM__
diff --git a/src/vendorcode/intel/fsp/fsp2_0/graniterapids/ap/FspErrorInfoHob.h b/src/vendorcode/intel/fsp/fsp2_0/graniterapids/ap/FspErrorInfoHob.h
index ecc2d6fdf7..6b418c514c 100644
--- a/src/vendorcode/intel/fsp/fsp2_0/graniterapids/ap/FspErrorInfoHob.h
+++ b/src/vendorcode/intel/fsp/fsp2_0/graniterapids/ap/FspErrorInfoHob.h
@@ -1,6 +1,6 @@
/** @file
-Copyright (c) 2019-2023, Intel Corporation. All rights reserved.<BR>
+Copyright (c) 2024, Intel Corporation. All rights reserved.<BR>
Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met:
@@ -26,20 +26,23 @@ are permitted provided that the following conditions are met:
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
THE POSSIBILITY OF SUCH DAMAGE.
+ This file is automatically generated. Please do NOT modify !!!
+
**/
#ifndef _FSP_ERROR_INFO_HOB_H_
#define _FSP_ERROR_INFO_HOB_H_
-#include <Uefi/UefiMultiPhase.h>
-#include <Pi/PiBootMode.h>
-#include <Pi/PiHob.h>
-#include <Pi/PiStatusCode.h>
-
-#define FSP_ERROR_INFO_HOB_GUID { 0x611e6a88, 0xadb7, 0x4301, { 0x93, 0xff, 0xe4, 0x73, 0x04, 0xb4, 0x3d, 0xa6 }}
+///
+/// GUID value indicating the FSP error information.
+///
+#define FSP_ERROR_INFO_HOB_GUID { 0x611e6a88, 0xadb7, 0x4301, { 0x93, 0xff, 0xe4, 0x73, 0x04, 0xb4, 0x3d, 0xa6 } }
+#define FSP_ERROR_INFO_STATUS_CODE_TYPE (EFI_ERROR_CODE | EFI_ERROR_UNRECOVERED)
+///
+/// FSP Error Information Block.
+///
#pragma pack(1)
-
typedef struct {
///
/// GUID HOB header.
@@ -81,4 +84,4 @@ typedef struct {
#pragma pack()
-#endif //#ifndef _FSP_ERROR_INFO_HOB_H_
+#endif //_FSP_ERROR_INFO_H_
diff --git a/src/vendorcode/intel/fsp/fsp2_0/graniterapids/ap/FspExtMemoryPprHob.h b/src/vendorcode/intel/fsp/fsp2_0/graniterapids/ap/FspExtMemoryPprHob.h
new file mode 100644
index 0000000000..97e3710965
--- /dev/null
+++ b/src/vendorcode/intel/fsp/fsp2_0/graniterapids/ap/FspExtMemoryPprHob.h
@@ -0,0 +1,70 @@
+/** @file
+
+Copyright (c) 2024, Intel Corporation. All rights reserved.<BR>
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+* Redistributions of source code must retain the above copyright notice, this
+ list of conditions and the following disclaimer.
+* Redistributions in binary form must reproduce the above copyright notice, this
+ list of conditions and the following disclaimer in the documentation and/or
+ other materials provided with the distribution.
+* Neither the name of Intel Corporation nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ THE POSSIBILITY OF SUCH DAMAGE.
+
+ This file is automatically generated. Please do NOT modify !!!
+
+**/
+
+#ifndef _FSP_EXT_MEMORY_PPR_HOB_H_
+#define _FSP_EXT_MEMORY_PPR_HOB_H_
+
+#include "FspGlobals.h"
+
+#define FSP_EXT_MEMORY_PPR_HOB_GUID { 0x3956C6DA, 0x35B6, 0x4036, { 0x93, 0xE4, 0xB1, 0x51, 0x38, 0x60, 0x21, 0x1E } }
+
+#pragma pack(1)
+
+typedef struct FspExtPprAddr {
+ UINT8 Status;
+ UINT8 ErrorType;
+ UINT8 Socket;
+ UINT8 MemoryController;
+ UINT8 Channel;
+ UINT8 Dimm;
+ UINT8 Bank;
+ UINT32 Row;
+ UINT8 Rank;
+} FSP_EXT_PPR_ADDR;
+
+typedef struct FspExtPprDdrInfo {
+ UINT8 Count;
+ FSP_EXT_PPR_ADDR PprAddresses[FSP_MAX_PPR_ADDR_ENTRIES_DDR];
+} FSP_EXT_DDR_PPR_INFO;
+
+typedef struct FspExtMemoryPprData {
+ FSP_EXT_DDR_PPR_INFO DdrPprInfo;
+} FSP_EXT_MEMORY_PPR_DATA;
+
+typedef struct FspExtMemoryPprHob {
+ FSP_EXT_HEADER Header;
+ FSP_EXT_MEMORY_PPR_DATA Data;
+} FSP_EXT_MEMORY_PPR_HOB;
+
+#pragma pack()
+
+#endif // _FSP_EXT_MEMORY_PPR_HOB_H_
diff --git a/src/vendorcode/intel/fsp/fsp2_0/graniterapids/ap/FspExtSystemMemoryMapHob.h b/src/vendorcode/intel/fsp/fsp2_0/graniterapids/ap/FspExtSystemMemoryMapHob.h
new file mode 100644
index 0000000000..864d53ac45
--- /dev/null
+++ b/src/vendorcode/intel/fsp/fsp2_0/graniterapids/ap/FspExtSystemMemoryMapHob.h
@@ -0,0 +1,161 @@
+/** @file
+
+Copyright (c) 2024, Intel Corporation. All rights reserved.<BR>
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+* Redistributions of source code must retain the above copyright notice, this
+ list of conditions and the following disclaimer.
+* Redistributions in binary form must reproduce the above copyright notice, this
+ list of conditions and the following disclaimer in the documentation and/or
+ other materials provided with the distribution.
+* Neither the name of Intel Corporation nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ THE POSSIBILITY OF SUCH DAMAGE.
+
+ This file is automatically generated. Please do NOT modify !!!
+
+**/
+
+#ifndef _FSP_EXT_SYSTEM_MEMORY_MAP_HOB_H_
+#define _FSP_EXT_SYSTEM_MEMORY_MAP_HOB_H_
+
+#include "FspGlobals.h"
+
+#define FSP_EXT_SYSTEM_MEMORY_MAP_HOB_GUID { 0xDF310DE8, 0x579F, 0x419C, { 0xB6, 0xAB, 0x4D, 0x4B, 0xE7, 0xCA, 0xB0, 0x83 } }
+
+#pragma pack(1)
+
+typedef struct FspDimmDevice {
+ UINT8 Present;
+ BOOLEAN Enabled;
+ UINT8 DramIoWidth; // Actual DRAM IO Width (4, 8, 16)
+ UINT8 NumRanks; // Number of ranks on dimm
+ UINT8 NumPackageRanks; // Number of Package ranks on dimm
+ // For DDR5 NumRanks and NumPackageRanks same
+ // For MCR NumRanks and NumPackageRanks may differ
+ UINT8 ActKeyByte2; // Actual module type reported by SPD
+ UINT16 DimmSize;
+ UINT16 VendorID;
+ UINT16 DeviceID;
+ UINT16 RevisionID;
+ UINT8 SerialNumber[FSP_DIMM_MAX_SERIALNUMBER_LEN]; // Serial Number
+ UINT8 PartNumber[FSP_DIMM_MAX_PARTNUMBER_LEN]; // Part Number
+ UINT16 SubsystemVendorID;
+ UINT16 SubsystemDeviceID;
+ UINT16 SubsystemRevisionID;
+ UINT16 FisVersion; // Firmware Interface Specification version
+ INT32 CommonTck;
+ UINT16 SpdRegVen; // Register Vendor ID in SPD
+ UINT8 DataWidth;
+} FSP_EXT_DIMM_DEVICE;
+
+typedef struct FspExtMemoryDimmDeviceInfo {
+ UINT8 Count;
+ FSP_EXT_DIMM_DEVICE Dimms[FSP_MAX_DIMM];
+} FSP_EXT_DIMM_DEVICE_INFO;
+
+typedef struct FspMemoryChannelDevice {
+ UINT8 Enabled; // 0 = channel disabled, 1 = channel enabled
+ UINT8 Features; // Bit mask of features to enable or disable
+ UINT8 MaxDimm; // Number of DIMM
+ UINT8 ChFailed;
+ UINT8 NgnChFailed;
+ UINT8 Is4BitEccDimmPresent; // 4-bit Ecc dimm present indicator
+ UINT8 DdrPopulationMap; // Bitmap to indicate location of DDR DIMMs within the channel memory slots (BIT0: Ch.D0, BIT1: CH.D1)
+ UINT8 PmemPopulationMap; // Bitmap to indicate location of PMem modules within the channel memory slots (BIT0: Ch.D0, BIT1: CH.D1)
+ FSP_EXT_DIMM_DEVICE_INFO DimmInfo;
+} FSP_EXT_MEMORY_CHANNEL_DEVICE;
+
+typedef struct FspMemoryController {
+ UINT8 ImcEnabled;
+ UINT32 MemSize;
+} FSP_EXT_MEMORY_CONTROLLER;
+
+typedef struct FspExtMemoryChannelDeviceInfo {
+ UINT8 Count;
+ FSP_EXT_MEMORY_CHANNEL_DEVICE Devices[FSP_MAX_CH];
+} FSP_EXT_MEMORY_CHANNEL_DEVICE_INFO;
+
+typedef struct FspExtMemoryControllerInfo {
+ UINT8 Count;
+ UINT8 NumChPerMC;
+ FSP_EXT_MEMORY_CONTROLLER MemControllers[FSP_MAX_IMC];
+} FSP_EXT_MEMORY_CONTROLLER_INFO;
+
+typedef struct FspMemoryMapSocket {
+ UINT8 SocketEnabled;
+ UINT32 IioStackBitmap;
+ UINT32 SktTotMemMapSPA; // Total memory mapped to SPA
+ FSP_EXT_MEMORY_CONTROLLER_INFO MemoryControllerInfo;
+ FSP_EXT_MEMORY_CHANNEL_DEVICE_INFO MemoryChannelDeviceInfo;
+} FSP_EXT_MEMORY_MAP_SOCKET;
+
+typedef struct FspExtMemMapSocketInfo {
+ UINT8 Count;
+ FSP_EXT_MEMORY_MAP_SOCKET Sockets[FSP_MAX_SOCKET];
+} FSP_EXT_MEMORY_MAP_SOCKET_INFO;
+
+typedef struct FspMemoryMapElement {
+ UINT16 Type; // Type of this memory element; Bit0: 1LM Bit1: 2LM Bit2: PMEM Bit3: PMEM-cache Bit4: BLK Window Bit5: CSR/Mailbox/Ctrl region
+ UINT8 NodeId; // Node ID of the HA Owning the memory
+ UINT8 SocketId; // Socket Id of socket that has his memory - ONLY IN NUMA
+ UINT8 ClusterId; // Logical cluster Id of SNC cluster - only 0 in UMA clustering and all2all
+ UINT32 BaseAddress; // Base Address of the element in 64MB chunks
+ UINT32 ElementSize; // Size of this memory element in 64MB chunks
+} FSP_EXT_MEMORY_MAP_ELEMENT;
+
+typedef struct FspExtMemMapElementInfo {
+ UINT8 Count;
+ FSP_EXT_MEMORY_MAP_ELEMENT Elements[FSP_MAX_MEMORY_MAP_ELEMENTS];
+} FSP_EXT_MEMORY_MAP_ELEMENT_INFO;
+
+typedef struct FspExtRasInfo {
+ UINT8 SystemRasType;
+ UINT8 RasModesEnabled; // RAS modes that are enabled
+ UINT16 ExRasModesEnabled; // Extended RAS modes that are enabled
+} FSP_EXT_RAS_INFO;
+
+typedef struct FspExtMemoryConfigurationInfo {
+ UINT32 LowMemBase; // Mem base in 64MB units for below 4GB mem.
+ UINT32 LowMemSize; // Mem size in 64MB units for below 4GB mem.
+ UINT32 HighMemBase; // Mem base in 64MB units for above 4GB mem.
+ UINT32 HighMemSize; // Mem size in 64MB units for above 4GB mem.
+ UINT32 MmiohBase; // MMIOH base in 64MB granularity
+ UINT32 MemSize; // Total physical memory size
+ UINT16 MemFreq;
+ UINT8 MemMode; // 0 - Independent, 1 - Lockstep
+ UINT8 VolMemMode; // 0 - 1LM, 1 - 2LM
+ UINT16 DramType;
+ UINT8 DdrVoltage; // Mem Frequency
+ UINT8 ErrorCorrectionType;
+} FSP_EXT_MEMORY_CONFIGURATION_INFO;
+
+typedef struct FspExtSystemMemoryMapData {
+ FSP_EXT_MEMORY_CONFIGURATION_INFO MemoryConfigurationInfo;
+ FSP_EXT_RAS_INFO RasInfo;
+ FSP_EXT_MEMORY_MAP_ELEMENT_INFO MemoryMapElementInfo;
+ FSP_EXT_MEMORY_MAP_SOCKET_INFO MemoryMapSocketInfo;
+} FSP_EXT_SYSTEM_MEMORY_MAP_DATA;
+
+typedef struct FspExtSystemMemoryMapDataHob{
+ FSP_EXT_HEADER Header;
+ FSP_EXT_SYSTEM_MEMORY_MAP_DATA Data;
+} FSP_EXT_SYSTEM_MEMORY_MAP_HOB;
+
+#pragma pack()
+
+#endif // _FSP_EXT_SYSTEM_MEMORY_MAP_HOB_H_
diff --git a/src/vendorcode/intel/fsp/fsp2_0/graniterapids/ap/FspGlobals.h b/src/vendorcode/intel/fsp/fsp2_0/graniterapids/ap/FspGlobals.h
new file mode 100644
index 0000000000..c8df3acaef
--- /dev/null
+++ b/src/vendorcode/intel/fsp/fsp2_0/graniterapids/ap/FspGlobals.h
@@ -0,0 +1,61 @@
+/** @file
+
+Copyright (c) 2024, Intel Corporation. All rights reserved.<BR>
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+* Redistributions of source code must retain the above copyright notice, this
+ list of conditions and the following disclaimer.
+* Redistributions in binary form must reproduce the above copyright notice, this
+ list of conditions and the following disclaimer in the documentation and/or
+ other materials provided with the distribution.
+* Neither the name of Intel Corporation nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ THE POSSIBILITY OF SUCH DAMAGE.
+
+ This file is automatically generated. Please do NOT modify !!!
+
+**/
+
+#ifndef _FSP_EXT_GLOBALS_
+#define _FSP_EXT_GLOBALS_
+
+#define FSP_MAX_SOCKET MAX_SOCKET
+#define FSP_MAX_IMC MAX_IMC
+#define FSP_MAX_MC_CH MAX_MC_CH
+#define FSP_MAX_DIMM MAX_DIMM
+#define FSP_DIMM_MAX_SERIALNUMBER_LEN NGN_MAX_SERIALNUMBER_STRLEN
+#define FSP_DIMM_MAX_PARTNUMBER_LEN NGN_MAX_PARTNUMBER_STRLEN
+#define FSP_MAX_CH ((FSP_MAX_IMC)*(FSP_MAX_MC_CH))
+#define FSP_MAX_MEMORY_MAP_ELEMENTS 150
+
+#define MEM_64MB_TO_BYTES(Size64M) ((UINT64)(Size64M) << 26)
+#define MEM_64MB_TO_KBYTES(Size64M) ((UINT64)(Size64M) << 16)
+#define MEM_64MB_TO_MBYTES(Size64M) ((UINT64)(Size64M) << 6)
+#define MEM_64MB_TO_GBYTES(Size64M) ((Size64M) >> 4)
+#define MEM_BYTES_TO_64MB(SizeB) ((SizeB) >> 26)
+#define MEM_KBYTES_TO_64MB(SizeKB) ((SizeKB) >> 16)
+#define MEM_MBYTES_TO_64MB(SizeMB) ((SizeMB) >> 6)
+
+#define FSP_MAX_PPR_ADDR_ENTRIES_DDR MAX_PPR_ADDR_ENTRIES_DDR
+
+typedef struct FspExtHeader {
+ UINT64 Magic;
+ UINT32 DataLength;
+ UINT32 CheckSum;
+} FSP_EXT_HEADER;
+
+#endif // _FSP_EXT_GLOBALS_
diff --git a/src/vendorcode/intel/fsp/fsp2_0/graniterapids/ap/FspUpd.h b/src/vendorcode/intel/fsp/fsp2_0/graniterapids/ap/FspUpd.h
index d90f785578..cbee351279 100644
--- a/src/vendorcode/intel/fsp/fsp2_0/graniterapids/ap/FspUpd.h
+++ b/src/vendorcode/intel/fsp/fsp2_0/graniterapids/ap/FspUpd.h
@@ -1,6 +1,6 @@
/** @file
-Copyright (c) 2022, Intel Corporation. All rights reserved.<BR>
+Copyright (c) 2024, Intel Corporation. All rights reserved.<BR>
Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met:
@@ -37,11 +37,11 @@ are permitted provided that the following conditions are met:
#pragma pack(1)
-#define FSPT_UPD_SIGNATURE 0x545F445055525053 /* 'SPRUPD_T' */
+#define FSPT_UPD_SIGNATURE 0x545F445055524E47 /* 'GNRUPD_T' */
-#define FSPM_UPD_SIGNATURE 0x4D5F445055525053 /* 'SPRUPD_M' */
+#define FSPM_UPD_SIGNATURE 0x4D5F445055524E47 /* 'GNRUPD_M' */
-#define FSPS_UPD_SIGNATURE 0x535F445055525053 /* 'SPRUPD_S' */
+#define FSPS_UPD_SIGNATURE 0x535F445055524E47 /* 'GNRUPD_S' */
#define FSPI_UPD_SIGNATURE 0x495F445055524E47 /* 'GNRUPD_I' */
diff --git a/src/vendorcode/intel/fsp/fsp2_0/graniterapids/ap/FspiUpd.h b/src/vendorcode/intel/fsp/fsp2_0/graniterapids/ap/FspiUpd.h
index 77133a737a..ba7767267f 100644
--- a/src/vendorcode/intel/fsp/fsp2_0/graniterapids/ap/FspiUpd.h
+++ b/src/vendorcode/intel/fsp/fsp2_0/graniterapids/ap/FspiUpd.h
@@ -1,6 +1,6 @@
/** @file
-Copyright (c) 2022, Intel Corporation. All rights reserved.<BR>
+Copyright (c) 2024, Intel Corporation. All rights reserved.<BR>
Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met:
@@ -35,13 +35,27 @@ are permitted provided that the following conditions are met:
#include <FspUpd.h>
-#define FSP_RAS_ACPI_HOB_GUID { 0x826785ee, 0xa8e0, 0x4d8f, { 0x82, 0x6f, 0x54, 0x29, 0x2c, 0xe7, 0x6f, 0xe6 } };
-
#pragma pack(1)
typedef struct {
- /** WHEA Support
+/** RAS Log Level.
+ RAS Log setup options.
+ 0:None, 1:MIN (BASIC_FLOW), 2:MID (BASIC_FLOW, FUNC_FLOW), 3:MAX (BASIC_FLOW, FUNC_FLOW, REG)
+**/
+ UINT8 RasLogLevel;
+
+/** WHEA FV Base Address
+ The physical memory-mapped base address of the WHEA (FV).
+**/
+ UINT64 WheaFvBase;
+
+/** WHEA FV Base Size
+ The size of the WHEA FV region in bytes
+**/
+ UINT64 WheaFvBaseSize;
+
+/** WHEA Support
Enable/Disable WHEA support.
0:Disable, 1:Enable
**/
@@ -69,15 +83,216 @@ typedef struct {
**/
UINT8 PcieErrInjActionTable;
+/** SGX Memory Error Injection Support
+ Enable/Disable Error Injection Support in SGX Memory.
+ 0:6dB, 1:3.5dB
+**/
+ UINT8 SgxErrorInjEn;
+
+/** Os Native AER Support
+ Select FFM or OS native for AER error handling. If select OS native, BIOS also initialize
+ FFM first until handshake, which depends on OS capability in FSP.
+ 0:Disable, 1:Enable
+**/
+ UINT8 OsNativeAerSupport;
+
+/** IIO MCA Support.
+ Enable/Disable IIO MCA Support.
+ 0:Disable, 1:Enable
+**/
+ UINT8 IoMcaEn;
+
+/** System Errors
+ System Error Enable/Disable setup options.
+ 0:Disabled, 1:Enabled
+**/
+ UINT8 SystemErrorEn;
+
+/** CPU CrashLog Feature
+ The feature helps collecting crash data from OOBMSM SSRAM
+ 0:Disabled, 1:Enabled,2:Auto
+**/
+ UINT8 CpuCrashLogFeature;
+
+/** MCERR Trigger CrashLog Disable
+ The feature helps to disable MCERR to trigger crash log
+ 0:No, 1:Yes
+**/
+ UINT8 McerrTriggerDisable;
+
+/** Smbus Error Recovery
+ Enable or Disable(Default) Smbus Error Recovery
+ 0:Disabled, 1:SMI, 2:Error Pin
+**/
+ UINT8 SmbusErrorRecovery;
+
+/** EMCA Error Support
+ Enable/Disable EMCA Error support
+ 0:Disable, 1:Enable
+**/
+ UINT8 EmcaEn;
+
+/** EMCA Logging Support
+ Enable/Disable EMCA Logging
+ 0:Disable, 1:Enable
+**/
+ UINT8 ElogEn;
+
+/** LMCE Support
+ Enable/Disable Local MCE firmware support
+ 0:Disable, 1:Enable
+**/
+ UINT8 LmceEn;
+
+/** EMCA MCE-SMI Enable
+ Enable/Disable EMCA Uncorrected SMI for gen2
+ 0:Disable, 2:EMCA gen2 MSMI
+**/
+ UINT8 EmcaMsmiEn;
+
+/** EMCA CMCI-SMI Morphing
+ Enable/Disable EMCA CSMI
+ 0:Disable, 2:EMCA gen2 CSMI
+**/
+ UINT8 EmcaCsmiEn;
+
+/** EMCA CMCI-SMI Threshold
+ Set the threshold of CSMI
+**/
+ UINT16 EmcaCsmiThreshold;
+
+/** CSMI Dynamic Disable
+ Enable/Disable CSMI when error threshold reached
+ 0:Disable, 1:Enable
+**/
+ UINT8 CsmiDynamicDisable;
+
+/** Ignore OS ELOG Opt-in
+ Enable/Disable Ignore OS ELOG Opt-in and log
+ 0:Disable, 1:Enable
+**/
+ UINT8 ElogIgnOptin;
+
+/** Corrected Error eLog
+ Enable/Disable Corrected Error eLog
+ 0:Disable, 1:Enable
+**/
+ UINT8 ElogCorrErrEn;
+
+/** Memory Error eLog
+ Enable/Disable Memory Error eLog
+ 0:Disable, 1:Enable
+**/
+ UINT8 ElogMemErrEn;
+
+/** Processor Error eLog
+ Enable/Disable Processor Error eLog
+ 0:Disable, 1:Enable
+**/
+ UINT8 ElogProcErrEn;
+
+/** Ubox Error Mask
+ Mask SMI generation for Ubox Error
+ 0:Disable, 1:Enable
+**/
+ UINT8 UboxErrorMask;
+
+/** Corrected Error Cloaking
+ Mask Corrected errors from OS/SW visibility only when EMCA is enabled
+ 0:Disable, 1:Enable
+**/
+ UINT8 CeCloakingEn;
+
+/** Memory Corrected Error
+ Enable/Disable Memory Corrected Error
+ 0:Disable, 1:Enable, 2:Auto
+**/
+ UINT8 CorrMemErrEn;
+
+/** Mca Bank Error Injection Support
+ Enable/Disable Mca Bank Error Injection Support.
+ $EN_DIS
+**/
+ UINT8 McaBankErrInjEn;
+
+/** Whea Log Memory Error
+ Enable/Disable Whea Log Memory Error
+ 0:Disabled, 1:Enabled
+**/
+ UINT8 WheaLogMemoryEn;
+
+/** Whea Log Processor Error
+ Enable/Disable Whea Log Processor Error
+ 0:Disabled, 1:Enabled
+**/
+ UINT8 WheaLogProcEn;
+
+/** Whea Log PCI Error
+ Enable/Disable Whea Log PCI Error
+ 0:Disabled, 1:Enabled
+**/
+ UINT8 WheaLogPciEn;
+
+/** Viral Status
+ Enable/Disable Viral
+ $EN_DIS
+**/
+ UINT8 ViralEn;
+
+/** System Memory Poison
+ Enable/Disable System Memory Poison.
+ $EN_DIS
+**/
+ UINT8 DfxPoisonEn;
+
+/** Clear Shadow Registers
+ Enable/Disable clearing shadow registers.
+ $EN_DIS
+**/
+ UINT8 ClearShadowRegisters;
+
+/** PCIE Corrected Error Threshold Counter
+ Enable/Disable PCIE Corrected Error Counter.
+ $EN_DIS
+**/
+ UINT8 PcieCorErrCntr;
+
+/** PCIE Corrected Error Threshold Counter
+ 0x00000001 - 0x0000ffff.
+**/
+ UINT32 PcieCorErrThres;
+
/** IIO eDPC Support
Enable/Disable IIO eDPC Support.
0:Disabled, 1:On Fatal Error, 2:On Fatal and Non-Fatal Errors
**/
UINT8 EdpcEn;
+/** IIO eDPC Interrupt
+ Enable/Disable IIO eDPC Interrupt.
+ 0:Disabled, 1:Enabled
+**/
+ UINT8 EdpcInterrupt;
+
+/** IpmiIoBase
+ Address of IpmiIoBase
+**/
+ UINT16 IpmiIoBase;
+
+/** Trigger SW Error Threshold
+ Enable or Disable Sparing trigger SW Error Match Threshold.
+ 0:Disable, 1:Enable
+**/
+ UINT8 TriggerSWErrThEn;
+
+/** SW Per Row Threshold
+ SW Per Row Correctable Error Threshold (1 - 0x7FFF) used for row level error.
+**/
+ UINT16 SparePerRowTh;
+
/** N/A
**/
- UINT8 ReservedSiliconInitUpd[16];
+ UINT8 ReservedSmmInitUpd[16];
} FSPI_CONFIG;
@@ -87,11 +302,15 @@ typedef struct {
/** N/A
**/
FSP_UPD_HEADER FspUpdHeader;
-
+
+/** N/A
+**/
+ FSPI_ARCH_UPD FspiArchUpd;
+
/** N/A
**/
FSPI_CONFIG FspiConfig;
-
+
/** N/A
**/
UINT16 UpdTerminator;
diff --git a/src/vendorcode/intel/fsp/fsp2_0/graniterapids/ap/FspmUpd.h b/src/vendorcode/intel/fsp/fsp2_0/graniterapids/ap/FspmUpd.h
index c0f09df54d..74df875686 100644
--- a/src/vendorcode/intel/fsp/fsp2_0/graniterapids/ap/FspmUpd.h
+++ b/src/vendorcode/intel/fsp/fsp2_0/graniterapids/ap/FspmUpd.h
@@ -1,6 +1,6 @@
/** @file
-Copyright (c) 2022, Intel Corporation. All rights reserved.<BR>
+Copyright (c) 2024, Intel Corporation. All rights reserved.<BR>
Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met:
@@ -30,656 +30,637 @@ are permitted provided that the following conditions are met:
**/
-#ifndef __FSPMUPD_H__
-#define __FSPMUPD_H__
+#ifndef __FSPM_UPD_H__
+#define __FSPM_UPD_H__
#include <FspUpd.h>
#pragma pack(1)
-
-/** FSP-M Configuration
-**/
typedef struct {
-/** Offset 0x0040 - Customer Revision
+/** Customer Revision
The Customer can set this revision string for their own purpose.
**/
UINT8 CustomerRevision[32];
-/** Offset 0x0060 - Bus Ratio
+/** Bus Ratio
Indicates the ratio of Bus/MMIOL/IO resource to be allocated for each CPU's IIO
**/
UINT8 BusRatio[8];
-/** Offset 0x0068 - D2K Credit Config
- Set the D2K Credit Config - 1: Min, <b>2: Med(Default)</b>, 3: Max.
- 1:Min, 2:Med, 3:Max
-**/
- UINT8 D2KCreditConfig;
-
-/** Offset 0x0069 - Snoop Throttle Config
- Set the Snoop Throttle Config - <b>0: DIS(Default)</b>, 1: Min, 2: Med, 3: Max.
- 0:DIS, 1:Min, 2:Med, 3:Max
-**/
- UINT8 SnoopThrottleConfig;
-
-/** Offset 0x006A - Legacy VGA Soc
+/** Legacy VGA Soc
Socket that claims the legacy VGA range
**/
UINT8 LegacyVgaSoc;
-/** Offset 0x006B - Legacy VGA Stack
+/** Legacy VGA Stack
Stack that claims the legacy VGA range
**/
UINT8 LegacyVgaStack;
-/** Offset 0x006C - Pcie P2P Performance Mode
- Determine if to enable PCIe P2P Performance Mode - <b>0: Disable(Default)</b>, 1: Enable.
- 0:Disable, 1:Enable
+/** Pcie P2P Performance Mode
+ Determine if to enable PCIe P2P Performance Mode
+ $EN_DIS
**/
UINT8 P2pRelaxedOrdering;
-/** Offset 0x006D - UPI Debug Print Level
- UPI Debug Print Level Bitmask - 0: Disable, 1: Fatal, 2: Warning, 4: Summary, 8:
- Detail, <b>0x0F: All(Default)</b>.
+/** UPI Debug Print Level
+ UPI Debug Print Level Bitmask. 0- Disable, 1- Fatal, 2- Warning, 4- Summary, 8-
+ Detail, <b>0xF- All(Default)</b>
1:Fatal, 2:Warning, 4:Summary, 8:Detail, 0x0F:All
**/
UINT8 DebugPrintLevel;
-/** Offset 0x006E - NumaEn
- NumaEn - <b>1: Enable Numa(Default)</b>, 0: Disable Numa.
- 0:Disable, 1:Enable
+/** NumaEn
+ Enable or Disable Numa
+ $EN_DIS
**/
UINT8 NumaEn;
-/** Offset 0x006F - SNC
- Enable or Disable SNC - 0: Disable, 2: Snc2, 4: Snc4, <b>0x0F: Auto(Default)</b>.
- 0: Disable, 2: Snc2, 4: Snc4, 0x0F: Auto
+/** SNC Enable
+ Enable or Disable SNC
+ 0x0:Disable, 0x1:Enable, 0x0F:Auto
**/
UINT8 SncEn;
-/** Offset 0x0070 - UMA Clustering
- Set UMA Clusters - 0: Disable, 2: Two Clusters, <b>4: Four Clusters(Default)</b>.
- 0:Disable, 2:Two Clusters, 4:Four Clusters
-**/
- UINT8 UmaClustering;
-
-/** Offset 0x0071 - IODC Mode
- IODC Mode - 0: Disable, <b>1: Auto(Default)</b>, 2: Push, 3: AllocFlow, 4: NonAlloc,
- 5: WCILF.
+/** IODC Mode
+ IODC Mode. 0- Disable, <b>1- Auto(Default)</b>, 2- Push, 3- AllocFlow, 4- NonAlloc, 5- WCILF
0:Disable, 1:Auto, 2:Push, 3:AllocFlow, 4:NonAlloc, 5:WCILF
**/
UINT8 IoDcMode;
-/** Offset 0x0072 - Degrade Precedence
- Setup Degrade Precedence - <b>0: Topology(Default)</b>, 1: Feature.
+/** Degrade Precedence
+ Setup Degrade Precedence
0:Topology, 1:Feature
**/
UINT8 DegradePrecedence;
-/** Offset 0x0073 - Degrade 4 Socket Preference
- Setup Degrade 4 Socket Preference - <b>0: Fully Connect(Default)</b>, 1: Dual Link Ring.
+/** Degrade 4 Socket Preference
+ Setup Degrade 4 Socket Preference
0:Fully Connect, 1:Dual Link Ring
**/
UINT8 Degrade4SPreference;
-/** Offset 0x0074 - Directory Mode
- Enable or Disable Directory Mode - 0: Disable, 1: Enable, <b>2: Auto(Default)</b>.
+/** Directory Mode
+ Enable or Disable Directory Mode
0:Disable, 1:Enable, 2:Auto
**/
UINT8 DirectoryModeEn;
-/** Offset 0x0075 - XPT Prefetch Enable
- Enable or Disable XPT Prefetch - 0: Disable, 1: Enable, <b>2: Auto(Default)</b>.
+/** XPT Prefetch Enable
+ Enable or Disable XPT Prefetch
0:Disable, 1:Enable, 2:Auto
**/
UINT8 XptPrefetchEn;
-/** Offset 0x0076 - KTI Prefetch Enable
- Enable or Disable KTI Prefetch - 0: Disable, 1: Enable, <b>2: Auto(Default)</b>.
+/** KTI Prefetch Enable
+ Enable or Disable KTI Prefetch
0:Disable, 1:Enable, 2:Auto
**/
UINT8 KtiPrefetchEn;
-/** Offset 0x0077 - XPT Remote Prefetch Enable
- Enable or Disable XPT Remote Prefetch Enable - 0: Disable, 1: Enable, <b>2: Auto(Default)</b>.
+/** XPT Remote Prefetch Enable
+ Enable or Disable XPT Remote Prefetch Enable
0:Disable, 1:Enable, 2:Auto
**/
UINT8 XptRemotePrefetchEn;
-/** Offset 0x0078 - KTI FPGA
- Enable or Disable KTI FPGA
+/** Distress QoS Mode
+ Distress QoS. <b>0- Mode 0(Default)</b>, 2- Mode 2
+ 0:Mode 0, 2:Mode 2
**/
- UINT8 KtiFpgaEnable[8];
+ UINT8 DistressQoS;
-/** Offset 0x0080 - DDRT QoS Mode
- DDRT QoS - <b>0: Mode 0(Default)</b>, 1: Mode 1, 2: Mode 2.
- 0:Mode 0, 1:Mode 1, 2:Mode 2
-**/
- UINT8 DdrtQosMode;
-
-/** Offset 0x0081 - KTI Link Speed Mode
- Choose KTI Link Speed Mode - 0: Slow, <b>1: Full(Default)</b>.
+/** KTI Link Speed Mode
+ Choose KTI Link Speed Mode
0:Slow, 1:Full
**/
UINT8 KtiLinkSpeedMode;
-/** Offset 0x0082 - KTI Link Speed
- Setup KTI Link Speed - 0: 128GT, 1: 144GT, 2: 160GT, 3: 200GT, <b>0x7F: Max KTI
- Link Speed (Default)</b>, 0x8F: Frequency Per Link.
- 0:128GT, 1:144GT, 2:160GT, 3:200GT, 0x7F:Max KTI Link Speed, 0x8F:Frequency Per Link
+/** KTI Link Speed
+ Setup KTI Link Speed - 2- 160GT, 3- 200GT, 4- 240GT, <b>0x7F- Max KTI Link Speed
+ (Default)</b>, 0x8F- Frequency Per Link
+ 2:160GT, 3:200GT, 4:240GT, 0x7F:Max KTI Link Speed, 0x8F:Frequency Per Link
**/
UINT8 KtiLinkSpeed;
-/** Offset 0x0083 - KTI Link L0p
- Enable or Disable KTI Link L0p - 0: Disable, 1: Enable, <b>2: Auto(Default)</b>.
- 0:Disable, 1:Enable, 2: Auto
+/** KTI Link L0p
+ Enable or Disable KTI Link L0p
+ 0:Disable, 1:Enable, 2:Auto
**/
UINT8 KtiLinkL0pEn;
-/** Offset 0x0084 - KTI Link L1
- Enable or Disable KTI Link L1 - 0: Disable, 1: Enable, <b>2: Auto(Default)</b>.
- 0:Disable, 1:Enable, 2: Auto
+/** KTI Link L1
+ Enable or Disable KTI Link L1
+ 0:Disable, 1:Enable, 2:Auto
**/
UINT8 KtiLinkL1En;
-/** Offset 0x0085 - Kti Link Speed Per Port
- Setup KTI Link Speed to be allocated for each port - 0: 128GT, 1: 144GT, 2: 160GT,
- 3: 200GT, <b>0x7f: Max KTI Link Speed(Default)</b>.
- 0:128GT, 1:144GT, 2:160GT, 3:200GT, 0x7f:Max KTI Link Speed
+/** Kti Link Speed Per Port
+ Setup KTI Link Speed to be allocated for each port, 2:160GT, 2:200GT, 3:240GT, 0X7f:Max
+ KTI Link Speed
**/
UINT8 KtiLinkSpeedPerPort[48];
-/** Offset 0x00B5 - DfxL0p Enable
- Indicates the DfxL0p Enable to be allocated for each port - 0: Disable, <b>1: Enable(Default)</b>.
- 0:Disable, 1:Enable
+/** DfxL0p Enable
+ Indicates the DfxL0p Enable to be allocated for each port, 0:Disable, 1:Enable
**/
UINT8 DfxL0pEnable[48];
-/** Offset 0x00E5 - DfxL1 Enable
- Indicates the DfxL1 Enable to be allocated for each port - 0: Disable, <b>1: Enable(Default)</b>.
- 0:Disable, 1:Enable
+/** DfxL1 Enable
+ Indicates the DfxL1 Enable to be allocated for each port, 0:Disable, 1:Enable
**/
UINT8 DfxL1Enable[48];
-/** Offset 0x0115 - KTI Failover
- Enable or Disable KTI Failover - 0: Disable, 1: Enable, <b>2: Auto(Default)</b>.
- 0:Disable, 1:Enable, 2: Auto
+/** KTI Failover
+ Enable or Disable KTI Failover
+ 0:Disable, 1:Enable, 2:Auto
**/
UINT8 KtiFailoverEn;
-/** Offset 0x0116 - KTI LB Enable
- Enable or Disable KTI LB - <b>0:Disable(Default)</b>, 1:Enable.
- 0:Disable, 1:Enable
-**/
- UINT8 KtiLbEn;
-
-/** Offset 0x0117 - KTI CRC Mode
- Select KTI CRC Mode - <b>0: 16bit(Default)</b>, 1: 32bit, 2: Auto.
+/** KTI CRC Mode
+ Select KTI CRC Mode
0:16bit, 1:32bit, 2:Auto
**/
UINT8 KtiCrcMode;
-/** Offset 0x0118 - KTI CPU Socket Hotplug
- Enable or Disable KTI CPU Socket Hotplug - <b>0: Disable(Default)</b>, 1: Enable.
- 0:Disable, 1:Enable
+/** KTI CPU Socket Hotplug
+ Enable or Disable KTI CPU Socket Hotplug
+ $EN_DIS
**/
UINT8 KtiCpuSktHotPlugEn;
-/** Offset 0x0119 - KTI CPU Socket HotPlug Topology
- Select KTI CPU Socket HotPlug Topology - <b>0: 4Socket(Default)</b>, 1: 8Socket.
+/** KTI CPU Socket HotPlug Topology
+ Select KTI CPU Socket HotPlug Topology
0:4Socket, 1:8Socket
**/
UINT8 KtiCpuSktHotPlugTopology;
-/** Offset 0x011A - KTI SKU Mismatch Check
- Enable or Disable KTI SKU Mismatch Check - 0: Disable, <b>1 :Enable(Default)</b>.
- 0:Disable, 1:Enable
+/** KTI SKU Mismatch Check
+ Enable or Disable KTI SKU Mismatch Check
+ $EN_DIS
**/
UINT8 KtiSkuMismatchCheck;
-/** Offset 0x011B - TOR Threshold - Loctorem threshold Normal
- Select TOR Threshold - Loctorem threshold Normal - 0: Disable, <b>1: Auto(Default)</b>,
- 2: Low, 3: Medium, 4: High.
+/** Sdsi Contrl Ib Lock
+ Enable or Disable Sdsi Contrl Ib Lock
+ $EN_DIS
+**/
+ UINT8 SdsiCtrlIbLock;
+
+/** TOR Threshold - Loctorem threshold Normal
+ Select TOR Threshold - Loctorem threshold Normal
0:Disable, 1:Auto, 2:Low, 3:Medium, 4:High
**/
UINT8 TorThresLoctoremNorm;
-/** Offset 0x011C - TOR threshold - Loctorem threshold empty
- Select TOR threshold - Loctorem threshold empty - 0: Disable, <b>1: Auto(Default)</b>,
- 2: Low, 3: Medium, 4:High.
+/** TOR threshold - Loctorem threshold empty
+ Select TOR threshold - Loctorem threshold empty
0:Disable, 1:Auto, 2:Low, 3:Medium, 4:High
**/
UINT8 TorThresLoctoremEmpty;
-/** Offset 0x011D - TSC Sync in Sockets
- Enable or Disable TSC Sync in Sockets - 0: Disable, <b>1: Enable(Default)</b>, 2: Auto.
- 0:Disable, 1:Enable, 2:Auto
-**/
- UINT8 TscSyncEn;
-
-/** Offset 0x011E - HA A to S directory optimization
- Enable or Disable HA A to S directory optimization - 0: Disable, 1: Enable, <b>2:
- Auto(Default)</b>.
+/** HA A to S directory optimization
+ Enable or Disable HA A to S directory optimization
0:Disable, 1:Enable, 2:Auto
**/
UINT8 StaleAtoSOptEn;
-/** Offset 0x011F - LLC Deadline Allocation
- Enable or Disable LLC Deadline Allocation - 0: Disable, <b>1: Enable(Default)</b>, 2: Auto.
+/** LLC Deadline Allocation
+ Enable or Disable LLC Deadline Allocation
0:Disable, 1:Enable, 2:Auto
**/
UINT8 LLCDeadLineAlloc;
-/** Offset 0x0120 - MBA BW Calibration Profiles
- Choice of MBA BW throttling curve - 0: Linear BW shaping, 1: Biased BW shaping,
- 2: Legacy BW shaping, <b>3: Auto(Default)</b>.
+/** MBA BW Calibration Profiles
+ Choice of MBA BW throttling curve
0:Linear BW shaping, 1:Biased BW shaping, 2:Legacy BW shaping, 3:Auto
**/
UINT8 MbeBWCalChoice;
-/** Offset 0x0121 - Split Lock
- Enable or Disable Split Lock - <b>0: Disable(Default)</b>, 1: Enable, 2: Auto.
- 0:Disable, 1:Enable, 2:Auto
+/** PMM MBA BW downscale
+ PMM BW downscaling vs the baseline Total memory BW profile. Eg- picking 1/2x results
+ in scaling PMM BW throttling in a 2:1 ratio vs. DDR throttling.
+ 0:PMM BW throttling in a 1/1 ratio vs. DDR throttling, 1:2/1 ratio, 2:4/1 ratio,
+ 3:8/1 ratio
**/
- UINT8 SplitLock;
+ UINT8 PmmMbaBWDownscale;
-/** Offset 0x0122 - Affinitize M2Iosf to Upi for 2-Socket
- Affinitize M2IOSF traffic to proper UPI links to improve 2-Socket P2P perf - 0:
- Disable, 1: Enable, <b>2: Auto(Default)</b>.
- 0:Disable, 1:Enable, 2:Auto
+/** CXL (Type3) MBA BW downscale
+ CXL (Type3) BW downscaling vs the baseline Total memory BW profile. Eg- picking
+ 1/2x results in scaling CXL (Type3) BW throttling in a 2:1 ratio vs. DDR throttling.
+ 0:CXL BW throttling in a 1/1 ratio vs. DDR throttling, 1:2/1 ratio, 2:4/1 ratio,
+ 3:8/1 ratio
**/
- UINT8 M2iosfToUpiAffinity;
+ UINT8 CxlMbaBWDownscale;
-/** Offset 0x0123 - MMCFG Base Address
- Setup MMCFG Base Address - 0: 1G, 1: 1.5G, 2: 1.75G, 3: 2G, 4: 2.25G, 5: 3G, <b>6:
- Auto(Default)</b>.
- 0:1G, 1:1.5G, 2:1.75G, 3:2G, 4:2.25G, 5:3G, 6:Auto
+/** Remote Target MBA BW downscale
+ Remote Target BW downscaling vs the baseline Total memory BW profile. Eg- picking
+ 1/2x results in scaling Remote Target BW throttling in a 2:1 ratio vs. DDR throttling.
+ 0:Remote Target BW throttling in a 1/1 ratio vs. DDR throttling, 1:2/1 ratio, 2:4/1
+ ratio, 3:8/1 ratio
**/
- UINT8 mmCfgBase;
+ UINT8 RemoteTargetMbaBWDownscale;
-/** Offset 0x0124 - MMCFG Size
- Select MMCFG Size - 0: 64M, 1: 128M, 2: 256M, 3: 512M, 4: 1G, 5: 2G, <b>6: Auto(Default)</b>.
- 0:64M, 1:128M, 2:256M, 3:512M, 4:1G, 5:2G, 6:Auto
+/** Split Lock
+ Enable or Disable Split Lock
+ 0:Disable, 1:Enable, 2:Auto
**/
- UINT8 mmCfgSize;
+ UINT8 SplitLock;
-/** Offset 0x0125
+/** MMCFG Base Address
+ Setup MMCFG Base Address
+ 0:1G, 1:1.5G, 2:1.75G, 3:2G, 4:2.25G, 5:3G, 0xFF:Auto
**/
- UINT8 UnusedUpdSpace0[3];
+ UINT32 mmCfgBase;
-/** Offset 0x0128 - MMIO High Base Address
- MMIO High Base Address, a hex number for Bit[51:32]
+/** MMCFG Size
+ Select MMCFG Size
+ 0:64M, 1:128M, 2:256M, 3:512M, 4:1G, 5:2G, 0xFF:Auto
**/
- UINT32 mmiohBase;
+ UINT32 mmCfgSize;
-/** Offset 0x012C - CPU Physical Address Limit
- CPU Physical Address Limit - <b>0: Disable(Default)</b>, 1: Enable.
- 0:Disable, 1:Enable
+/** MMIO High Base Address
+ MMIO High Base Address
+ 0:56T, 1:40T, 2:32T, 3:24T, 4:16T, 5:4T, 6:2T, 7:1T, 8:512G, 9:3584T, 10:30T, 11:60T,
+ 12:88T, 13:120T, 14:248T, 255:AUTO
**/
- UINT8 CpuPaLimit;
+ UINT32 mmiohBase;
-/** Offset 0x012D
+/** CPU Physical Address Limit
+ CPU Physical Address Limit
+ $EN_DIS
**/
- UINT8 UnusedUpdSpace1;
+ UINT8 CpuPaLimit;
-/** Offset 0x012E - MMIO High Size
- MMIO High Size, Number of 1GB contiguous regions to be assigned for MMIOH space
- per CPU. Range 1-1024
+/** MMIO High Size
+ MMIO High Size, Number of 1GB contiguous regions to be assigned for MMIOH space per CPU.
+ 0:1GB, 1:4GB, 2:16GB, 3:64GB, 4:256GB, 5:1024GB, 6:32GB, 255:AUTO
**/
- UINT16 mmiohSize;
+ UINT32 mmiohSize;
-/** Offset 0x0130 - isocEn
- Enable or Disable isocEn - <b>0: Disable(Default)</b>, 1: Enable, 2: Auto.
- 0:Disable, 1:Enable, 2:Auto
-**/
- UINT8 isocEn;
-
-/** Offset 0x0131 - DCA
- Enable or Disable DCA - <b>0: Disable(Default)</b>, 1: Enable.
- 0:Disable, 1:Enable
+/** DCA
+ Enable or Disable DCA
+ $EN_DIS
**/
UINT8 dcaEn;
-/** Offset 0x0132
-**/
- UINT8 UnusedUpdSpace2[2];
-
-/** Offset 0x0134 - BoardTypeBitmask
+/** BoardTypeBitmask
BoardTypeBitmask
**/
UINT32 BoardTypeBitmask;
-/** Offset 0x0138 - AllLanesPtr
+/** S3mClkSetupPtr
+ Pointer to clk setup variable data
+**/
+ UINT64 S3mClkSetupPtr;
+
+/** AllLanesPtr
Pointer to array of ALL_LANES_EPARAM_LINK_INFO
**/
- UINT32 AllLanesPtr;
+ UINT64 AllLanesPtr;
-/** Offset 0x013C - PerLanePtr
+/** PerLanePtr
Pointer to array of PER_LANE_EPARAM_LINK_INFO
**/
- UINT32 PerLanePtr;
+ UINT64 PerLanePtr;
-/** Offset 0x0140 - AllLanesSizeOfTable
+/** AllLanesSizeOfTable
Number of elements in AllLanesPtr array.
**/
UINT32 AllLanesSizeOfTable;
-/** Offset 0x0144 - PerLaneSizeOfTable
+/** PerLaneSizeOfTable
Number of elements in PerLanePtr array.
**/
UINT32 PerLaneSizeOfTable;
-/** Offset 0x0148 - WaitTimeForPSBP
+/** WaitTimeForPSBP
Enable or Disable WaitTimeForPSBP
**/
UINT32 WaitTimeForPSBP;
-/** Offset 0x014C - WaSerializationEn
- Enable or Disable WaSerializationEn - <b>0: Disable(Default)</b>, 1: Enable.
- 0:Disable, 1:Enable
-**/
- UINT8 WaSerializationEn;
-
-/** Offset 0x014D - KtiInEnableMktme
- Enable or Disable KtiInEnableMktme - <b>0: Disable(Default)</b>, 1: Enable.
- 0:Disable, 1:Enable
+/** KtiInEnableMktme
+ Enable or Disable KtiInEnableMktme
+ $EN_DIS
**/
UINT8 KtiInEnableMktme;
-/** Offset 0x014E - HIOP STACK DISABLE
+/** HIOP STACK DISABLE
Enables/Disables given HIOP STACK. Default is AUTO no stack is disabled. 1 - The
stacks indicated by the bit locations are disabled. 0 - The stacks indicated by
the bit locations are not modified. The stack order is abstracted each bit 0 =
stack 0 ... bit n = stack n. The bit setting for each stack can be overriden by
- BIOS based on part-knob compatibility. The array size must be MAX_SOCKET x UINT32.
+ BIOS based on part-knob compatibility. The array size must be MAX_SOCKET(Maximum:8) x UINT32.
**/
- UINT8 StackDisableBitMap[32];
+ UINT32 StackDisableBitMap[8];
-/** Offset 0x016E - CFRS3mProvision
- Enable or Disable Provision S3M CFR - <b>0: Disable(Default)</b>, 1: Enable.
- 0:Disable, 1:Enable
+/** Processor VmxEnable Function
+ Enable(Default) or Disable Processor VmxEnable Function
+ $EN_DIS
**/
- UINT8 CFRS3mProvision;
+ UINT8 VmxEnable;
-/** Offset 0x016F - CFRS3mManualCommit
- Enable or Disable Manual Commit S3M FW CFR - <b>0:Disable(Default)</b>, 1:Enable.
- 0:Disable, 1:Enable
+/** Smm Relocation
+ Enable(Default)/Disable Smm Relocation
+ $EN_DIS
**/
- UINT8 CFRS3mManualCommit;
+ UINT8 SmmRelocationEnable;
-/** Offset 0x0170 - CFRPucodeProvision
- Enable or Disable Provision PUcode CFR - <b>0:Disable(Default)</b>, 1:Enable.
- 0:Disable, 1:Enable
+/** Processor HyperThreading Function
+ Enables Logical processor, 0- ALL LPs, 1- Single LP, 2- Two LPs
+ 0:ALL LPs, 1:Single LP, 2:Two LPs
**/
- UINT8 CFRPucodeProvision;
+ UINT8 ProcessorLpEnable;
-/** Offset 0x0171 - CFRPucodeManualCommit
- Enable or Disable Manual Commit PUcode CFR - <b>0:Disable(Default)</b>, 1:Enable.
- 0:Disable, 1:Enable
+/** Processor Safer Mode Extensions Function
+ Enable or Disable(Default) Processor Safer Mode Extensions Function
+ $EN_DIS
**/
- UINT8 CFRPucodeManualCommit;
+ UINT8 ProcessorSmxEnable;
-/** Offset 0x0172
+/** Uncore Freq Ratio Compute
+ 0: Set dynamic Uncore frequency range from max and min fused values. Otherwise Uncore
+ will run at a constant frequency ratio, the UFS algorithm will be disabled, but
+ physical limits may still reduce frequency. NOTE: The user input will be clipped
+ to the range accordingly during boot.
**/
- UINT8 UnusedUpdSpace3[2];
+ UINT8 UncoreFreqRatio;
-/** Offset 0x0174 - CFRImagePtr
- Pointer to array of CFR Image
+/** Uncore Freq Ratio IO
+ 0: Set dynamic Uncore frequency range from max and min fused values. Otherwise Uncore
+ will run at a constant frequency ratio, the UFS algorithm will be disabled, but
+ physical limits may still reduce frequency. NOTE: The user input will be clipped
+ to the range accordingly during boot.
**/
- UINT32 CFRImagePtr;
+ UINT8 UncoreFreqRatioIo;
-/** Offset 0x0178 - Processor VmxEnable Function
- Enable(Default) or Disable Processor VmxEnable Function - 0: Disable, <b>1: Enable(Default)</b>.
- 0:Disable, 1:Enable
+/** DDR frequency limit
+ Select DDR frequency limit, <b>0x00- Auto(Default)</b>, 0x01:DDR_3200, 0x03:DDR_3600,
+ 0x05:DDR_4000, 0x07:DDR_4400, 0x08:DDR_4800, 0x09:DDR_5200, 0x0A:DDR_5600, 0x0B:DDR_6000,
+ 0x0C:DDR_6400
**/
- UINT8 VmxEnable;
+ UINT8 HostDdrFreqLimit;
-/** Offset 0x0179 - Processor X2apic Function
- Enable(Default) or Disable Processor X2apic Function - 0: Disable, <b>1: Enable(Default)</b>.
+/** DDR Over Clock Enable
+ DDR Over Clock Enable, 0- Disable, 1- Enable
0:Disable, 1:Enable
**/
- UINT8 X2apic;
+ UINT8 DdrOverClockEnable;
-/** Offset 0x017A - Processor HyperThreading Function
- Enable(Default) or Disable Processor HyperThreading Function - 1: Disable, <b>0:
- Enable(Default)</b>.
- 1:Disable, 0:Enable
+/** Advanced Debug Function
+ Select Advanced Debug Function, 0- Disable, 1- Enable, 2- Auto
+ 0:Disable, 1:Enable, 2:Auto
**/
- UINT8 ProcessorHyperThreadingDisable;
+ UINT8 DfxAdvDebugJumper;
-/** Offset 0x017B - Processor Dynamic Intel Speed Select (ISS) Function
- Enable or Disable(Default) Processor Dynamic Intel Speed Select (ISS) Function -
- <b>0: Disable(Default)</b>, 1: Enable.
- 0:Disable, 1:Enable
+/** Memory Serial Debug Message Level
+ Select Memory Serial Debug Message Level, 0- Disable, 1- Minimum, 2- Normal, 3-
+ Maximum, <b>4- Auto(Default)</b>, 5- Fixed PCD
+ 0:Disable, 1:Minimum, 2:Normal, 3:Maximum, 4:Auto, 5:Fixed PCD
**/
- UINT8 ProcessorDynamicIssEnable;
+ UINT8 serialDebugMsgLvl;
-/** Offset 0x017C - Enables Intel(R) TXT
- Enable or Disable(Default) Enables Intel(R) TXT - <b>0: Disable(Default)</b>, 1: Enable.
- 0:Disable, 1:Enable
+/** IIO IioPE0Bifurcation
+ IioPE0Bifurcation[MAX_SOCKET]- MAX_SOCKET=8, 0x00:x4x4x4x4, 0x01:x4x4xxx8, 0x02:xxx8x4x4,
+ 0x03:xxx8xxx8, 0x04:xxxxxx16, <b>0xFF:AUTO(Default)</b>
**/
- UINT8 ProcessorLtsxEnable;
+ UINT8 IioPE0Bifurcation[8];
-/** Offset 0x017D - DDR frequency limit
- Select DDR frequency limit, <b>0x00: Auto(Default)</b>, 0x13:DDR_3200, 0x16:DDR_3600,
- 0x19:DDR_4000, 0x1C:DDR_4400, 0x1D:DDR_4800, 0x1E:DDR_5200, 0x1F:DDR_5600
+/** IIO IioPE1Bifurcation
+ IioPE1Bifurcation[MAX_SOCKET]- MAX_SOCKET=8, 0x00:x4x4x4x4, 0x01:x4x4xxx8, 0x02:xxx8x4x4,
+ 0x03:xxx8xxx8, 0x04:xxxxxx16, <b>0xFF:AUTO(Default)</b>
**/
- UINT8 DdrFreqLimit;
+ UINT8 IioPE1Bifurcation[8];
-/** Offset 0x017E - Memory Serial Debug Message Level
- Select Memory Serial Debug Message Level - 0: Disable, 1: Minimum, 2: Normal, <b>3:
- Maximum(Default)</b>, 4: Auto.
- 0:Disable, 1:Minimum, 2:Normal, 3:Maximum, 4:Auto
+/** IIO IioPE2Bifurcation
+ IioPE2Bifurcation[MAX_SOCKET]- MAX_SOCKET=8, 0x00:x4x4x4x4, 0x01:x4x4xxx8, 0x02:xxx8x4x4,
+ 0x03:xxx8xxx8, 0x04:xxxxxx16, <b>0xFF:AUTO(Default)</b>
**/
- UINT8 serialDebugMsgLvl;
+ UINT8 IioPE2Bifurcation[8];
-/** Offset 0x017F - IIO ConfigIOU0
- ConfigIOU[MAX_SOCKET][0]: MAX_SOCKET=8, 0x00:x4x4x4x4, 0x01:x4x4xxx8, 0x02:xxx8x4x4,
+/** IIO IioPE3Bifurcation
+ IioPE3Bifurcation[MAX_SOCKET]- MAX_SOCKET=8, 0x00:x4x4x4x4, 0x01:x4x4xxx8, 0x02:xxx8x4x4,
0x03:xxx8xxx8, 0x04:xxxxxx16, <b>0xFF:AUTO(Default)</b>
**/
- UINT8 IioConfigIOU0[8];
+ UINT8 IioPE3Bifurcation[8];
-/** Offset 0x0187 - IIO ConfigIOU1
- ConfigIOU[MAX_SOCKET][1]: MAX_SOCKET=8, 0x00:x4x4x4x4, 0x01:x4x4xxx8, 0x02:xxx8x4x4,
+/** IIO IioPE4Bifurcation
+ IioPE4Bifurcation[MAX_SOCKET]- MAX_SOCKET=8, 0x00:x4x4x4x4, 0x01:x4x4xxx8, 0x02:xxx8x4x4,
0x03:xxx8xxx8, 0x04:xxxxxx16, <b>0xFF:AUTO(Default)</b>
**/
- UINT8 IioConfigIOU1[8];
+ UINT8 IioPE4Bifurcation[8];
-/** Offset 0x018F - IIO ConfigIOU2
- ConfigIOU[MAX_SOCKET][2]: MAX_SOCKET=8, 0x00:x4x4x4x4, 0x01:x4x4xxx8, 0x02:xxx8x4x4,
+/** IIO IioPE5Bifurcation
+ IioPE5Bifurcation[MAX_SOCKET]- MAX_SOCKET=8, 0x00:x4x4x4x4, 0x01:x4x4xxx8, 0x02:xxx8x4x4,
0x03:xxx8xxx8, 0x04:xxxxxx16, <b>0xFF:AUTO(Default)</b>
**/
- UINT8 IioConfigIOU2[8];
+ UINT8 IioPE5Bifurcation[8];
-/** Offset 0x0197 - IIO ConfigIOU3
- ConfigIOU[MAX_SOCKET][3]: MAX_SOCKET=8, 0x00:x4x4x4x4, 0x01:x4x4xxx8, 0x02:xxx8x4x4,
+/** IIO IioPEaBifurcation
+ IioPEaBifurcation[MAX_SOCKET]- MAX_SOCKET=8, 0x00:x4x4x4x4, 0x01:x4x4xxx8, 0x02:xxx8x4x4,
0x03:xxx8xxx8, 0x04:xxxxxx16, <b>0xFF:AUTO(Default)</b>
**/
- UINT8 IioConfigIOU3[8];
+ UINT8 IioPEaBifurcation[8];
-/** Offset 0x019F - IIO ConfigIOU4
- ConfigIOU[MAX_SOCKET][4]: MAX_SOCKET=8, 0x00:x4x4x4x4, 0x01:x4x4xxx8, 0x02:xxx8x4x4,
+/** IIO IioPEbBifurcation
+ IioPEbBifurcation[MAX_SOCKET]- MAX_SOCKET=8, 0x00:x4x4x4x4, 0x01:x4x4xxx8, 0x02:xxx8x4x4,
0x03:xxx8xxx8, 0x04:xxxxxx16, <b>0xFF:AUTO(Default)</b>
**/
- UINT8 IioConfigIOU4[8];
+ UINT8 IioPEbBifurcation[8];
-/** Offset 0x01A7 - IIO ConfigIOU5
- ConfigIOU[MAX_SOCKET][5]: MAX_SOCKET=8, 0x00:x4x4x4x4, 0x01:x4x4xxx8, 0x02:xxx8x4x4,
+/** IIO IioPEcBifurcation
+ IioPEcBifurcation[MAX_SOCKET]- MAX_SOCKET=8, 0x00:x4x4x4x4, 0x01:x4x4xxx8, 0x02:xxx8x4x4,
0x03:xxx8xxx8, 0x04:xxxxxx16, <b>0xFF:AUTO(Default)</b>
**/
- UINT8 IioConfigIOU5[8];
+ UINT8 IioPEcBifurcation[8];
-/** Offset 0x01AF - IIO ConfigIOU6
- ConfigIOU[MAX_SOCKET][6]: MAX_SOCKET=8, 0x00:x4x4x4x4, 0x01:x4x4xxx8, 0x02:xxx8x4x4,
+/** IIO IioPEdBifurcation
+ IioPEdBifurcation[MAX_SOCKET]- MAX_SOCKET=8, 0x00:x4x4x4x4, 0x01:x4x4xxx8, 0x02:xxx8x4x4,
0x03:xxx8xxx8, 0x04:xxxxxx16, <b>0xFF:AUTO(Default)</b>
**/
- UINT8 IioConfigIOU6[8];
+ UINT8 IioPEdBifurcation[8];
+
+/** IIO PCIE MaxPayload Ptr
+ Pointer to array of PCIE MaxPayload settings Per Port
+**/
+ UINT32 IioPcieMaxPayloadPtr;
+
+/** IIO PCIE MaxPayload entry Number
+ Number of elements in PcieMaxPayloadPtr array, port number as unit.
+**/
+ UINT32 IioPcieMaxPayloadNumber;
+
+/** IIO Board settings Hob Ptr
+ Pointer to array of IIO_BOARD_SETTINGS_HOB
+**/
+ UINT32 IioBoardSettingsHobPtr;
+
+/** IIO Board Settings Hob length
+ The IIO Board Settings Hob Length.
+**/
+ UINT32 IioBoardSettingsHobLength;
+
+/** Iio Setup Knobs pointer
+ : Iio Setup Knobs pointer
+**/
+ UINT64 IioSetupKnobsPtr;
-/** Offset 0x01B7
+/** Iio Setup Knobs Size
+ : Iio Setup Knobs Size
**/
- UINT8 UnusedUpdSpace4;
+ UINT64 IioSetupKnobsSize;
-/** Offset 0x01B8 - IIO PCIE Config Table Ptr
- Pointer to array of UPD_IIO_PCIE_PORT_CONFIG
+/** Iio SocketConfig Setup Knobs pointer
+ : Iio SocketConfig Setup Knobs pointer
**/
- UINT32 IioPcieConfigTablePtr;
+ UINT64 IioSocketConfigSetupKnobsPtr;
-/** Offset 0x01BC - IIO PCIE Config Table Number
- Number of elements in IioPcieConfigTablePtr array, socket number as unit.
+/** Iio SocketConfig Setup Knobs Size
+ : Iio SocketConfig Setup Knobs Size
**/
- UINT32 IioPcieConfigTableNumber;
+ UINT64 IioSocketConfigSetupKnobsSize;
-/** Offset 0x01C0 - IIO DeEmphasis Array Ptr
+/** IIO DeEmphasis Array Ptr
Pointer to array of DeEmphasis
**/
UINT32 DeEmphasisPtr;
-/** Offset 0x01C4 - IIO DeEmphasis Array Number
+/** IIO DeEmphasis Array Number
Number of elements in DeEmphasis array.
**/
UINT32 DeEmphasisNumber;
-/** Offset 0x01C8 - IIO PCIe Common Clock Array Ptr
+/** IIO PCIe Common Clock Array Ptr
Pointer to array of PCIe Common Clock
**/
UINT32 PcieCommonClockPtr;
-/** Offset 0x01CC - IIO PCIe Common Clock Array Number
+/** IIO PCIe Common Clock Array Number
Number of elements in PCIe Common Clock array.
**/
UINT32 PcieCommonClockNumber;
-/** Offset 0x01D0 - VT-d Support
- Enable or Disable VT-d Support - 0: Disable, <b>1: Enable(Default)</b>.
+/** Gen5LinkDegradation
+ Enable or disable Gen5 link degradation.
0:Disable, 1:Enable
**/
- UINT8 VtdSupport;
+ UINT8 Gen5LinkDegradation;
-/** Offset 0x01D1 - PCIe ACSCTL
- Enable/Disable overwrite of PCI Access Control Services Control register in PCI
- root ports - 0: Disable, <b>1: Enable(Default)</b>.
+/** PcieHotPlugEnable
+ Enable or disable Pcie hot plug enable feature
0:Disable, 1:Enable
**/
- UINT8 VtdPciAcsCtlWaEn;
-
-/** Offset 0x01D2
-**/
- UINT8 UnusedUpdSpace5[2];
+ UINT8 PcieHotPlugEnable;
-/** Offset 0x01D4 - IIO PCIe Port Hide Array Ptr
- Pointer to array of Hide or visible for IIO Pcie Port.
+/** DelayAfterPCIeLinkTraining
+ Custom delay after PCI-E link training on IIO ports
**/
- UINT32 PEXPHIDEPtr;
+ UINT16 DelayAfterPCIeLinkTraining;
-/** Offset 0x01D8 - IIO PCIe Port Hide Array Number
- Number of elements in IIO PCIe Port Hide Array.
+/** MSR Lock Control
+ Enable - MSR 3Ah and CSR 80h will be locked in FSP. Power Good reset is needed to
+ remove lock bits
+ 0:Disable, 1:Enable
**/
- UINT32 PEXPHIDENumber;
+ UINT8 ProcessorMsrLockControl;
-/** Offset 0x01DC - PcieHotPlugEnable
- Enable or disable Pcie hot plug enable feature - <b>0: Disable(Default)</b>, 1: Enable.
+/** Lock Chipset
+ Lock or Unlock chipset in FSP
0:Disable, 1:Enable
**/
- UINT8 PcieHotPlugEnable;
+ UINT8 LockChipset;
-/** Offset 0x01DD
+/** DFX Ev Mode
+ When Enabled, Expose IIO DFX devices and other CPU devices like PMON in FSP
+ 0:Disable, 1:Enable, 2:Auto
**/
- UINT8 UnusedUpdSpace6;
+ UINT8 DfxEvMode;
-/** Offset 0x01DE - DelayAfterPCIeLinkTraining
- Custom delay after PCI-E link training on IIO ports
+/** DFX Disable Bios Done
+ When Enabled, suppresses notifying processor via MSR 151h that boot initialization
+ is finished in FSP
+ 0:Disable, 1:Enable
**/
- UINT16 DelayAfterPCIeLinkTraining;
+ UINT8 DfxDisableBiosDone;
-/** Offset 0x01E0 - IIO PCI bus resource Ptr
+/** PciBusResConfigPtr
Pointer to array of socket PCI bus resource.
**/
UINT32 PciBusResConfigPtr;
-/** Offset 0x01E4 - IIO PCI IO/MMIO base and limits resource Ptr
+/** PciBaseLimitsResConfigPtr
Pointer to array of socket PCI IO/MMIO resource.
**/
UINT32 PciBaseLimitsResConfigPtr;
-/** Offset 0x01E8 - PCH PCIE PLL Ssc
- Pointer to array of socket PCI IO/MMIO resource.
+/** PCH PCIE PLL Ssc
**/
UINT8 PchPciePllSsc;
-/** Offset 0x01E9 - MeUmaEnable
- Enable or disable ME UMA feature - <b>0: Disable(Default)</b>, 1: Enable.
+/** PchDciEn
+ Enable or <b>Disable(Default)</b> PCH DCI
0:Disable, 1:Enable
**/
- UINT8 MeUmaEnable;
+ UINT8 PchDciEn;
-/** Offset 0x01EA - SerialIoUartDebugEnable
- Enable or Disable SerialIo Uart debug library in FSP - 0: Disable, <b>1: Enable(Default)</b>.
+/** MeUmaEnable
+ Enable or disable ME UMA feature
0:Disable, 1:Enable
**/
- UINT8 SerialIoUartDebugEnable;
+ UINT8 MeUmaEnable;
-/** Offset 0x01EB
+/** SerialIoUartDebugEnable
+ <b>Enable(Default)</b> or Disable SerialIo Uart debug library in FSP.
+ 0:Disable, 1:Enable
**/
- UINT8 UnusedUpdSpace7;
+ UINT8 SerialIoUartDebugEnable;
-/** Offset 0x01EC - ISA Serial Base selection
- Select ISA Serial Base address could be initialized by boot loader - 0x2F8: 0x2F8,
- <b>0x3F8: 0x3F8(Default)</b>.
+/** ISA Serial Base selection
+ Select ISA Serial Base address could be initialized by boot loader. Default is 0x3F8
0x2F8:0x2F8, 0x3F8:0x3F8
**/
UINT16 SerialIoUartDebugIoBase;
-/** Offset 0x01EE - MemRefreshWaterMark
- Enable or Disable MemRefreshWaterMark in FSP - <b>0: Auto(Default)</b>, 1: Enable,
- 2: Disable.
- 0:Auto, 1:Enable, 2:Disable
-**/
- UINT8 PanicWm;
-
-/** Offset 0x01EF - promoteMrcWarnings
- Enable or Disable MRC promote warning in FSP - 0: Disable, <b>1: Enable(Default)</b>.
- 0:Disable, 1:Enable
+/** promoteMrcWarnings
+ Determines if MRC warnings are promoted to system level in FSP.
+ $EN_DIS
**/
UINT8 promoteMrcWarnings;
-/** Offset 0x01F0 - promoteWarnings
- <b>Enable(Default)</b> or Disable Promote warning in FSP - 0: Disable, <b>1: Enable(Default)</b>.
- 0:Disable, 1:Enable
+/** promoteWarnings
+ Determines if warnings are promoted to system level in FSP.
+ $EN_DIS
**/
UINT8 promoteWarnings;
-/** Offset 0x01F1 - serialDebugMsgLvlTrainResults
- Enable or Disable Promote warning in FSP - <b>0:Disable(Default)</b>, 8:Enable.
- 0:Disable, 8:Enable
+/** serialDebugMsgLvlTrainResults
+ Enabled = set to display the training results. Training results also get displayed
+ if debug messages is set to Maximum in FSP.
+ $EN_DIS
**/
UINT8 serialDebugMsgLvlTrainResults;
-/** Offset 0x01F2 - MemTest
- <b>Enable(Default)</b> or Disable memory test during normal boot in FSP - 0: Disable,
- <b>1: Enable(Default)</b>.
- 0:Disable, 1:Enable
+/** Enhanced Log Parsing
+ Enables additional output in debug log for easier machine parsing in FSP.
+ $EN_DIS
**/
- UINT8 HwMemTest;
+ UINT8 logParsing;
-/** Offset 0x01F3
+/** MemTest
+ Enable - Enables memory test during normal boot. Disable - Disables this feature in FSP.
+ $EN_DIS
**/
- UINT8 UnusedUpdSpace8;
+ UINT8 HwMemTest;
-/** Offset 0x01F4 - MemTest Loops
- Number of memory test loops during normal boot, set to 0 to run memtest infinitely
- in FSP - <b> 1 (Default)</b>.
- minimum = 0, maximum = 65535
+/** MemTest Loops
+ Number of memory test loops during normal boot, set to 0 to run memtest infinitely in FSP.
**/
UINT16 MemTestLoops;
-/** Offset 0x01F6
-**/
- UINT8 UnusedUpdSpace9[2];
-
-/** Offset 0x01F8 - Adv MemTest Options
- This option is a bit mask[19:0]: All 0 = disabled: bit-0=XMATS8, bit-1=XMATS16,
+/** Adv MemTest Options
+ This option is a bit mask[19:0]- All 0 = disabled- bit-0=XMATS8, bit-1=XMATS16,
bit-2=Reserved, bit-3=Reserved, bit-4=WCMATS8, bit-5=WCMCH8, bit-6=Reserved, bit-7=MARCHCM64,
bit-8=Reserved, bit-9=Reserved, bit-10=Reserved, bit-11=TWR, bit-12=DATARET, bit-13=MATS8TC1,
bit-14=MATS8TC2, bit-15=MATS8TC3, bit-16=SK-HYNIX, bit-17=SAMSUNG, bit-18=MICRON-RMW,
@@ -687,627 +668,1149 @@ typedef struct {
**/
UINT32 AdvMemTestOptions;
-/** Offset 0x01FC - SmartTestKey
+/** SmartTestKey
Number of SmartTest Key
**/
UINT32 SmartTestKey;
-/** Offset 0x0200 - Adv MemTest Pause
- Specify a pause delay between 0 to 256000 in units of usec. This is a time period
- where refresh is disabled between write and read sequences in FSP.
+/** Adv MemTest Pause
+ Specify a pause delay between 0 to 255 in units of msec. This is a time period where
+ refresh is disabled between write and read sequences in FSP.
**/
- UINT32 AdvMemTestCondPause;
+ UINT8 AdvMemTestCondPause;
-/** Offset 0x0204 - Adv MemTest tREFI
+/** Adv MemTest tREFI
Specify tREFI (refresh rate) timing between 1850 to 7800 in nsec.
**/
UINT16 AdvMemTestCondTrefi;
-/** Offset 0x0206 - Adv MemTest tWR
- Specify tWR timing between 48 to 96 in units of tCK in FSP.
+/** Adv MemTest tWR
+ Specify tWR timing between 48 to 96 in units of tCK in FSP.
**/
UINT8 AdvMemTestCondTwr;
-/** Offset 0x0207
-**/
- UINT8 UnusedUpdSpace10;
-
-/** Offset 0x0208 - Adv MemTest PMIC VDD Level
+/** Adv MemTest PMIC VDD Level
Specify PMIC VDD level in units of mV in FSP.
**/
UINT16 AdvMemTestCondPmicVdd;
-/** Offset 0x020A - Adv MemTest Conditions
+/** Adv MemTest Conditions
Auto = set test conditions based on test type; Manual = specify global test conditions;
- Disable = Do not apply test conditions in FSP - 0: Disable, <b>1: Auto(Default)</b>,
- 2: Manual.
+ Disable = Do not apply test conditions in FSP.
0:Disable, 1:Auto, 2:Manual
**/
UINT8 AdvMemTestCondition;
-/** Offset 0x020B - Adv MemTest Reset Failure Tracking List
+/** Adv MemTest Reset Failure Tracking List
Enable/disable Reset of the Row Failure Tracking List after each Adv MemTest option.
- Useful for testing performance of multiple options in FSP - <b>0: Disable(Default)</b>,
- 1: Enable.
- 0:Disable, 1:Enable
+ Useful for testing performance of multiple options in FSP.
+ $EN_DIS
**/
UINT8 AdvMemTestResetList;
-/** Offset 0x020C - MemTest On Cold Fast Boot
- Enable - Enables memory test during cold fast boot. Disable - Disables this feature.
- Auto - Sets it to the MRC default setting; current default is Disable in FSP -
- <b>0:Disable(Default)</b>, 1:Enable.
- 0:Disable, 1:Enable
+/** MemTest On Cold Fast Boot
+ Enable - Enables memory test during cold fast boot. Disable - Disables this feature in FSP.
+ $EN_DIS
**/
UINT8 MemTestOnColdFastBoot;
-/** Offset 0x020D - Attempt Fast Boot
+/** Attempt Fast Boot
Enable - Portions of memory reference code will be skipped when possible to increase
- boot speed on warm boots. Disable - Disables this feature. Auto - Sets it to the
- MRC default setting - 0:Disable, <b>1:Enable(Default)</b>.
- 0:Disable, 1:Enable
+ boot speed on warm boots. Disable - Disables this feature in FSP.
+ $EN_DIS
**/
UINT8 AttemptFastBoot;
-/** Offset 0x020E - MemTest On Cold Fast Boot
- Enable - Enables memory test during cold fast boot. Disable - Disables this feature.
- Auto - Sets it to the MRC default setting - 0:Disable, <b>1:Enable(Default)</b>.
- 0:Disable, 1:Enable
+/** MemTest On Cold Fast Boot
+ Enable - Enables memory test during cold fast boot. Disable - Disables this feature in FSP.
+ $EN_DIS
**/
UINT8 AttemptFastBootCold;
-/** Offset 0x020F - Multithreaded Memory Training
- Selects the number of processor sockets to train in parallel. - <b>0: All sockets
- operate in parallel(Default)</b>. 1: At any time only one socket is executing.
- 2: At any time only two socket are executing. 4: At any time only four socket are
- executing in FSP.
+/** Multithreaded Memory Training
+ Selects the number of processor sockets to train in parallel. 0 - All sockets operate
+ in parallel. 1 - At any time only one socket is executing. 2 - At any time only
+ two socket are executing. 4 - At any time only four socket are executing in FSP.
0:All Processor Sockets, 1:One Socket at a Time (No Multithreading), 2:Two Sockets
at a Time, 4:Four Sockets at a Time
**/
UINT8 AllowedSocketsInParallel;
-/** Offset 0x0210 - Auto-Reset on mem Training Error
- Enable/Disable Auto-Reset on mem Training Error in FSP - <b>0:Disable(Default)</b>,
- 1:Enable.
- 0:Disable, 1:Enable
+/** Auto-Reset on mem Training Error
+ Enable/Disable Auto-Reset on mem Training Error in FSP.
+ $EN_DIS
**/
UINT8 AutoResetOnMemErr;
-/** Offset 0x0211 - Rank Margin Tool
- Enable/Disable the Rank Margin Tool in FSP - <b>0:Disable(Default)</b>, 1:Enable.
- 0:Disable, 1:Enable
+/** Rank Margin Tool
+ Enable/Disable two types of rank margin in FSP.
+ 0:Normal RMT & Turnaround RMT Disabled, 1:Normal RMT Enabled, 2:Turnaround RMT Enabled,
+ 3:Normal RMT & Turnaround RMT Enabled, 4:Auto RMT Enable/Disabled
**/
UINT8 EnableRMT;
-/** Offset 0x0212 - RMT on Fast Cold Boot
- Enable/Disable the Rank Margin Tool on a Fast Cold Boot in FSP - <b>0:Disable(Default)</b>,
- 1:Enable.
- 0:Disable, 1:Enable
+/** RMT on Fast Cold Boot
+ Enable/Disable the Rank Margin Tool on a Fast Cold Boot in FSP.
+ $EN_DIS
**/
UINT8 EnableRMTonFCB;
-/** Offset 0x0213 - Execute Jedecinit before RMT
- Execute Jedecinit before Rank Margin Tool in FSP - <b>0:Disable(Default)</b>, 1:Enable.
- 0:Disable, 1:Enable
+/** Execute Jedecinit before RMT
+ Execute Jedecinit before Rank Margin Tool in FSP.
+ $EN_DIS
**/
UINT8 JedecInitBeforeRMT;
-/** Offset 0x0214 - Backside Margining
- Enable/Disable margin test on the register or buffer backside in FSP - <b>0:Disable(Default)</b>,
- 1:Enable.
- 0:Disable, 1:Enable
+/** Backside Margining
+ Enable/Disable margin test on the register or buffer backside in FSP.
+ $EN_DIS
**/
UINT8 RMTBacksideMargining;
-/** Offset 0x0215 - CmdAll
- Step size of CmdAll. Auto: 1. Supported values: 1,2,4,8 in FSP - <b>1:Auto(Default)</b>,
- 2:2, 4:4, 8:8.
- 1:Auto, 2:2, 4:4, 8:8
+/** CmdAll
+ Step size of CmdAll. Auto- 1. Supported values- 1,2,4,8 in FSP.
+ 1:1, 2:2, 4:4, 8:8
**/
UINT8 RMTCmdAll;
-/** Offset 0x0216 - RMT Debug Messages
- Enable/Disable the RMT debug messages in FSP - <b>2:Disable(Default)</b>, 5:Enable.
+/** RMT Debug Messages
+ Enable/Disable the RMT debug messages in FSP.
2:Disable, 5:Enable
**/
UINT8 RMTDebugMessages;
-/** Offset 0x0217 - RMT Display Tables
- Enable/Disable displaying results as tables in FSP - 0:Disable, <b>1:Enable(Default)</b>.
- 0:Disable, 1:Enable
+/** RMT Display Tables
+ Enable/Disable displaying results as tables in FSP.
+ $EN_DIS
**/
UINT8 RMTDisplayTables;
-/** Offset 0x0218 - RMT Loop Count
+/** RMT Loop Count
Exponential loop count for single rank test in FSP.
**/
UINT8 RMTLoopCount;
-/** Offset 0x0219
-**/
- UINT8 UnusedUpdSpace11[3];
-
-/** Offset 0x021C - Test Signal Bit Mask For RMT
+/** Test Signal Bit Mask For RMT
Test signal bit mask for RMT in FSP.
**/
UINT32 TestSignalBitMaskRMT;
-/** Offset 0x0220 - RMT Per Bit Margining
- Enable/Disable Per Bit Margining in FSP - 0:Disable, <b>1:Enable(Default)</b>.
- 0:Disable, 1:Enable
+/** RMT Per Bit Margining
+ Enable/Disable Per Bit Margining in FSP.
+ $EN_DIS
**/
UINT8 RMTPerBitMargining;
-/** Offset 0x0221 - RMT Per CA Lane Margining
- Enable/Disable Per CA Lane Margining in FSP - 0:Disable, <b>1:Enable(Default)</b>.
- 0:Disable, 1:Enable
+/** RMT Per CA Lane Margining
+ Enable/Disable Per CA Lane Margining in FSP.
+ $EN_DIS
**/
UINT8 RMTPerCaLaneMargining;
-/** Offset 0x0222 - RMT Display Plots
- Enable/Disable the display of per-bit results as plots in FSP - 0:Disable, <b>1:Enable(Default)</b>.
- 0:Disable, 1:Enable
+/** RMT Per CS Lane Margining
+ Enable/Disable Per CS Lane Margining in FSP.
+ $EN_DIS
+**/
+ UINT8 RMTPerCsLaneMargining;
+
+/** RMT Display Plots
+ Enable/Disable the display of per-bit results as plots in FSP.
+ $EN_DIS
**/
UINT8 RMTPerDisplayPlots;
-/** Offset 0x0223 - RMT RxDqs
- Step size of RxDqs. Auto: 1. Supported values: 1,2,4,8 in FSP - <b>1:Auto,(Default)</b>
- 2:2, 4:4, 8:8.
+/** RMT RxDqs
+ Step size of RxDqs. Auto- 1. Supported values- 1,2,4,8 in FSP.
1:Auto, 2:2, 4:4, 8:8
**/
UINT8 RMTRxDqs;
-/** Offset 0x0224 - RMT RxVref
- Step size of RxVref. Auto: 1. Supported values: 1,2,4,8 in FSP - <b>1:Auto,(Default)</b>
- 2:2, 4:4, 8:8.
+/** RMT RxVref
+ Step size of RxVref. Auto- 1. Supported values- 1,2,4,8 in FSP.
1:Auto, 2:2, 4:4, 8:8
**/
UINT8 RMTRxVref;
-/** Offset 0x0225 - RMT Scrambler
- Enable or Disable scrambler during RMT test in FSP - 0:Disable, <b>1:Enable(Default)</b>.
- 0:Disable, 1:Enable
+/** Dfx RMT Scrambler
+ Enable or Disable scrambler during RMT test in FSP.
+ $EN_DIS
**/
- UINT8 RMTScrambler;
+ UINT8 DfxScrambleEnRMT;
-/** Offset 0x0226 - RMT Step Size Override
- Enable or Disable overriding the default step sizes in FSP - <b>0:Disable(Default)</b>,
- 1:Enable.
- 0:Disable, 1:Enable
+/** RMT Step Size Override
+ Enable or Disable overriding the default step sizes in FSP.
+ $EN_DIS
**/
UINT8 RMTStepSizeOverride;
-/** Offset 0x0227 - RMT TxDq
- Step size of TxDq. Auto: 1. Supported values: 1,2,4,8 in FSP - <b>1:Auto(Default)</b>,
- 2:2, 4:4, 8:8.
+/** RMT TxDq
+ Step size of TxDq. Auto- 1. Supported values- 1,2,4,8 in FSP.
1:Auto, 2:2, 4:4, 8:8
**/
UINT8 RMTTxDq;
-/** Offset 0x0228 - RMT TxVref
- Step size of TxVref. Auto: 1. Supported values: 1,2,4,8 in FSP - <b>1:Auto(Default)</b>,
- 2:2, 4:4, 8:8.
+/** RMT TxVref
+ Step size of TxVref. Auto- 1. Supported values- 1,2,4,8 in FSP.
1:Auto, 2:2, 4:4, 8:8
**/
UINT8 RMTTxVref;
-/** Offset 0x0229 - DDR5 ECS
- Enable/Disable DDR5 Error Check and Scrub (ECS) in FSP - 0:Disable, <b>1:Enable(Default)</b>.
- 0:Disable, 1:Enable
+/** DDR5 ECS
+ Disable: Disable ECS/Result collection. Enable: Enable ECS without Result Collection.
+ Enable ECS with Result Collection: Enable ECS/Result Collection.
+ 0:Disable, 1:Enable, 2:Enable ECS with Result Collection
**/
UINT8 ErrorCheckScrub;
-/** Offset 0x022A - Enforce Memory POR
- 0:Enforce POR - Enforces Plan Of Record restrictions for DDR5 frequency and voltage
- programming. <b>2:Disable - Disables this feature and user is able to run at higher
- frequencies, specified in the DDR Frequency Limit field (limited by processor support)(Default)</b>.
- 0:Enforce POR, 2:Disabled
+/** Runtime PPR/Row Sparing
+ Enable/Disable Runtime PPR / Row Sparing.
+ $EN_DIS
+**/
+ UINT8 RtRowSparing;
+
+/** Mca Bank Warm Boot Clear Errors
+ Enable/Disable Mca Bank Warm Boot Clear Errors.
+ $EN_DIS
+**/
+ UINT8 McBankWarmBootClearError;
+
+/** RasStateVarPtr
+ Pointer to array of RAS_STATE_VARIABLE_DATA
+**/
+ UINT32 RasStateVarPtr;
+
+/** Enforce Memory POR
+ Enforce POR (0x0) - Enforces Plan Of Record restrictions for DDR5 frequency and
+ voltage programming. Enforce Stretch Goals (0x1) - Enforce DDR memory frequency
+ stretch goal. <b>Disable (0x2 - Default)</b> - Disables this feature and user is
+ able to run at higher frequencies, specified in the DDR Frequency Limit field (limited
+ by processor support).
+ 0:POR, 1:Enforce Stretch Goals, 2:Disabled
**/
UINT8 EnforceDdrMemoryFreqPor;
-/** Offset 0x022B - Enforce Population POR
+/** Enforce Population POR
Enable Memory Population POR Enforcement. Selecting Enforce Validated Populations
- will only allow populations that have been validated in FSP - <b>0:Disable(Default)</b>,
- 1:Enable.
- 0:Disable, 1:Enable
+ will only allow populations that have been validated in FSP.
+ $EN_DIS
**/
UINT8 EnforcePopulationPor;
-/** Offset 0x022C - DDR PPR Type
- Selects DDR Post Package Repair Type - 2: Hard PPR, <b>1: Soft PPR (Default)</b>,
- 0: Disabled.
+/** DDR PPR Type
+ Selects DDR Post Package Repair Type - 2- Hard PPR, <b>1- Soft PPR (Default)</b>,
+ 0- Disabled.
0:Disabled, 2:Hard PPR, 1:Soft PPR
**/
UINT8 pprType;
-/** Offset 0x022D - Force PPR On All Dram for UCE
- Force PPR on all dram for UCE in FSP - <b>0:Disable(Default)</b>, 1:Enable.
- 0:Disabled, 1:Enabled
-**/
- UINT8 ForcePprOnAllDramUce;
-
-/** Offset 0x022E
-**/
- UINT8 UnusedUpdSpace12[2];
-
-/** Offset 0x0230 - pprAddrVariablePtr
+/** pprAddrVariablePtr
Pointer to array of PPR_ADDR_VARIABLE
**/
UINT32 PprAddrVariablePtr;
-/** Offset 0x0234 - Allow Memory Test Correctable Error
+/** BDAT ACPI Table
+ Enable / Disable publishing BDAT ACPI Table in FSP.
+ $EN_DIS
+**/
+ UINT8 bdatEn;
+
+/** Allow Memory Test Correctable Error
Enable - Logs error and allows correctable errors during memory test(DIMM Rank not
removed). Disable - Logs error and removes DIMM Rank. Auto - Sets it to the MRC
- default setting; current default is Enable in FSP - 0:Disable, <b>1:Enable(Default)</b>.
- 0:Disable, 1:Enable
+ default setting; current default is Enable in FSP.
+ $EN_DIS
**/
UINT8 allowCorrectableMemTestError;
-/** Offset 0x0235 - Memory I/O Health Check
- Memory I/O Health Check - 0: Auto, 1: Manual, <b>2: Disable (Default)</b>. Select
- option Auto for default values. Manual for new values. Disable for disabling feature
- in FSP - 0:Auto, 1:Manual, <b>2:Disable(Default)</b>.
+/** SlotPerChannel
+ Slot number per channel, default value is 2
+ 1:Slot1, 2:Slot2
+**/
+ UINT8 SlotPerChannel;
+
+/** Memory I/O Health Check
+ Memory I/O Health Check - 0- Auto, 1- Manual, <b>2- Disable (Default)</b>. Select
+ option Auto for default values. Manual for new values. Disable for disabling feature in FSP.
0:Auto, 1:Manual, 2:Disable
**/
UINT8 MemIOHealthCheck;
-/** Offset 0x0236 - RxDqsDelay Left Edge
+/** Memory I/O Health Turnaround Test
+ Memory I/O Health Turnaround Test - 1- Enable, <b>0- Disable (Default)</b>. Select
+ Disable for disabling feature in FSP. Enable for enabling feature in FSP.
+ 0:Disable, 1:Enable
+**/
+ UINT8 MemIOHealthTurnaroundTest;
+
+/** Memory I/O Health Check Loop Count
+ CPGC Test Loop Count for Memory IO Health Test.
+**/
+ UINT8 MemIOLoopCount;
+
+/** RxDqsDelay Left Edge
Offset for RxDqsDelay Left Edge in FSP.
**/
UINT8 CriticalRxDqsDelayLeftEdge;
-/** Offset 0x0237 - RxDqsDelay Right Edge
+/** RxDqsDelay Right Edge
Offset for RxDqsDelay Right in FSP.
**/
UINT8 CriticalRxDqsDelayRightEdge;
-/** Offset 0x0238 - RxVref Left Edge
+/** RxVref Left Edge
Offset for RxVref Left Edge in FSP.
**/
UINT8 CriticalRxVrefLeftEdge;
-/** Offset 0x0239 - RxVref Right Edge
+/** RxVref Right Edge
Offset for RxVref Right Edge in FSP.
**/
UINT8 CriticalRxVrefRightEdge;
-/** Offset 0x023A - TxDqDelay Left Edge
+/** TxDqDelay Left Edge
Offset for TxDqDelay Left Edge in FSP.
**/
UINT8 CriticalTxDqDelayLeftEdge;
-/** Offset 0x023B - TxDqDelay Right Edge
+/** TxDqDelay Right Edge
Offset for TxDqDelay Right Edge in FSP.
**/
UINT8 CriticalTxDqDelayRightEdge;
-/** Offset 0x023C - TxVref Left Edge
+/** TxVref Left Edge
Offset for TxDqDelay Left Edge in FSP.
**/
UINT8 CriticalTxVrefLeftEdge;
-/** Offset 0x023D - TxVref Right Edge
+/** TxVref Right Edge
Offset for TxDqDelay Right Edge in FSP.
**/
UINT8 CriticalTxVrefRightEdge;
-/** Offset 0x023E - Reboot On Critical Failure
- Reboot System on Critical failure to do Memory Training in FSP - 0:Disable, <b>1:Enable(Default)</b>.
- 0:Disable, 1:Enable
+/** Reboot On Critical Failure
+ Reboot System on Critical failure to do Memory Training in FSP.
+ $EN_DIS
**/
UINT8 ResetOnCriticalError;
-/** Offset 0x023F - Number of Times to Reboot and Retrain
+/** Number of Times to Reboot and Retrain
Number of times to Reboot System on Critical failure to do Memory Training in FSP.
**/
UINT8 CriticalRetries;
-/** Offset 0x0240 - Memory I/O Health Check Loop Count
- CPGC Test Loop Count for Memory IO Health Test
-**/
- UINT8 MemIOHealthLoopCount;
-
-/** Offset 0x0241 - Telemetry RxDqsDelay Left Edge
+/** Telemetry RxDqsDelay Left Edge
Offset for Telemetry RxDqsDelay Left Edge in FSP.
**/
UINT8 TelemetryRxDqsDelayLeftEdge;
-/** Offset 0x0242 - Telemetry RxDqsDelay Right Edge
+/** Telemetry RxDqsDelay Right Edge
Offset for Telemetry RxDqsDelay Right Edge in FSP.
**/
UINT8 TelemetryRxDqsDelayRightEdge;
-/** Offset 0x0243 - Telemetry RxVref Left Edge
+/** Telemetry RxVref Left Edge
Offset for Telemetry RxDqsDelay Left Edge in FSP.
**/
UINT8 TelemetryRxVrefLeftEdge;
-/** Offset 0x0244 - Telemetry RxVref Right Edge
+/** Telemetry RxVref Right Edge
Offset for Telemetry RxDqsDelay Right Edge in FSP.
**/
UINT8 TelemetryRxVrefRightEdge;
-/** Offset 0x0245 - Telemetry TxDqDelay Left Edge
+/** Telemetry TxDqDelay Left Edge
Offset for Telemetry TxDqDelay Left Edge in FSP.
**/
UINT8 TelemetryTxDqDelayLeftEdge;
-/** Offset 0x0246 - Telemetry TxDqDelay Right Edge
+/** Telemetry TxDqDelay Right Edge
Offset for Telemetry TxDqDelay Right Edge in FSP.
**/
UINT8 TelemetryTxDqDelayRightEdge;
-/** Offset 0x0247 - Volatile Memory Mode
- Selects 1LM or 2LM mode for volatile memory. For 2LM memory mode, system will try
- to configure 2LM but if system is unable to configure 2LM, volatile memory mode
- will fall back to 1LM in FSP - <b>0: 1LM(Default)</b>, 1: 2LM, 2: MIX 1LM2LM.
- 0: 1LM, 1: 2LM, 2: MIX 1LM2LM
+/** Telemetry TxVref Left Edge
+ Offset for Telemetry TxDqDelay Left Edge in FSP.
+**/
+ UINT8 TelemetryTxVrefLeftEdge;
+
+/** Telemetry TxVref Right Edge
+ Offset for Telemetry TxDqDelay Right Edge in FSP.
+**/
+ UINT8 TelemetryTxVrefRightEdge;
+
+/** Telemetry CaTiming Left Edge
+ Offset for Telemetry CaTiming Left Edge in FSP.
+**/
+ UINT8 TelemetryCaTimingLeftEdge;
+
+/** Telemetry CaTiming Right Edge
+ Offset for Telemetry CaTiming Right Edge in FSP.
+**/
+ UINT8 TelemetryCaTimingRightEdge;
+
+/** Telemetry CtlTiming Left Edge
+ Offset for Telemetry CtlTiming Left Edge in FSP.
+**/
+ UINT8 TelemetryCtlTimingLeftEdge;
+
+/** Telemetry CtlTiming Right Edge
+ Offset for Telemetry CtlTiming Right Edge in FSP.
+**/
+ UINT8 TelemetryCtlTimingRightEdge;
+
+/** Telemetry CaVref Left Edge
+ Offset for Telemetry CaVref Left Edge in FSP.
+**/
+ UINT8 TelemetryCaVrefLeftEdge;
+
+/** Telemetry CaVref Right Edge
+ Offset for Telemetry CaVref Right Edge in FSP.
+**/
+ UINT8 TelemetryCaVrefRightEdge;
+
+/** Critical CaTiming Left Edge
+ Offset for Critical CaTiming Left Edge in FSP.
**/
- UINT8 volMemMode;
+ UINT8 CriticalCaTimingLeftEdge;
-/** Offset 0x0248 - Dynamic ECC Mode Selection
- Enable/Disable Dynamic ECC Mode Selection in FSP - 0:Disable, <b>1:Enable(Default)</b>,
- 2:Enable + Allow 128b ECC.
- 0:Disable, 1:Enable, 2:Enable + Allow 128b ECC
+/** Critical CaTiming Right Edge
+ Offset for Critical CaTiming Right Edge in FSP.
+**/
+ UINT8 CriticalCaTimingRightEdge;
+
+/** Critical CtlTiming Left Edge
+ Offset for Critical CtlTiming Left Edge in FSP.
+**/
+ UINT8 CriticalCtlTimingLeftEdge;
+
+/** Critical CtlTiming Right Edge
+ Offset for Critical CtlTiming Right Edge in FSP.
+**/
+ UINT8 CriticalCtlTimingRightEdge;
+
+/** Critical CaVref Left Edge
+ Offset for Critical CaVref Left Edge in FSP.
+**/
+ UINT8 CriticalCaVrefLeftEdge;
+
+/** Critical CaVref Right Edge
+ Offset for Critical CaVref Right Edge in FSP.
+**/
+ UINT8 CriticalCaVrefRightEdge;
+
+/** Intel(R) Flat Memory Mode Support
+ Enable or disable Intel(R) Flat Memory Mode support.
+ 0:Disable, 1:Enable
+**/
+ UINT8 Flat2lmSupport;
+
+/** Dynamic ECC Mode Selection
+ Enable/Disable Dynamic ECC Mode Selection in FSP.
+ $EN_DIS
**/
UINT8 DynamicEccModeSel;
-/** Offset 0x0249 - Memory Patrol Scrub
- Memory Patrol Scrub - 0:Disable, 1:Enable during FspMemoryInit(), <b>2:Enable during
- NotifyPhase(EnumInitPhaseReadyToBoot) (Default)</b>.
- 0:Disable, 1:Enable during FspMemoryInit(), 2:Enable during EnumInitPhaseReadyToBoot
+/** Leaky bucket high bit
+ Leaky bucket high bit" (0x1 - 0x29)
+**/
+ UINT8 leakyBktHi;
+
+/** Leaky bucket time window based interface Hour
+ Leaky bucket time window based interface Hour" (0 - 24)
+**/
+ UINT16 leakyBktHour;
+
+/** Leaky bucket low bit
+ Leaky bucket low bit" (0x1 - 0x29)
+**/
+ UINT8 leakyBktLo;
+
+/** Leaky bucket time window based interface Minute
+ Leaky bucket time window based interface Minute" (0 - 60)
+**/
+ UINT8 leakyBktMinute;
+
+/** Leaky bucket time window based interface
+ Enable/Disable leaky bucket time window based interface
+ 0:Disable, 1:Enable
+**/
+ UINT8 leakyBktTimeWindow;
+
+/** Memory Patrol Scrub
+ Enable/Disable Patrol Scrub
+ 0:Disable, 2:Enable at End of POST
**/
UINT8 PatrolScrub;
-/** Offset 0x024A - Memory Patrol Scrub
+/** Memory Patrol Scrub Notify
Memory Patrol Scrub - <b>0:Disable (Default)</b>, 1:Enable at ReadyToBootFsp().
- 0:Disable, 1:Enable Enable at ReadyToBootFsp()
+ 0:Disable, 1:Enable at ReadyToBootFsp()
**/
UINT8 PatrolScrubNotify;
-/** Offset 0x024B - Patrol Scrub Interval
+/** Patrol Scrub Interval
Patrol Scrub Interval in FSP.
**/
UINT8 PatrolScrubDuration;
-/** Offset 0x024C - Patrol Scrub Address Mode
- Selects the address mode between <b>1: System Physical Address (Default)</b>, 0:Reverse
- Address in FSP.
+/** Patrol Scrub Address Mode
+ Selects the address mode between <b>System Physical Address (0x1 - Default)</b>
+ or Reverse Address (0x0) in FSP.
0:Reverse Address, 1:System Physical Address
**/
UINT8 PatrolScrubAddrMode;
-/** Offset 0x024D - Memory Thermal Throttling Mode
- Memory Configure Memory Thermal Throttling Mode in FSP - 0:Disable, <b>2:CLTT_ENABLE(Default)</b>,
- 3:CLTT_PECI_ENABLE.
- 0:Disable, 2:CLTT_ENABLE, 3:CLTT_PECI_ENABLE
+/** Memory Thermal Throttling Mode
+ Memory Configure Memory Thermal Throttling Mode in FSP.
+ 0:Disable, 2:CLTT, 3:CLTT with PECI
**/
UINT8 thermalthrottlingsupport;
-/** Offset 0x024E - Memory Correctable Error Threshold
+/** Memory Correctable Error Threshold
Memory Correctable Error Threshold (1 - 32767) used for sparing and leaky bucket in FSP.
**/
UINT16 spareErrTh;
-/** Offset 0x0250 - WR CRC feature Control
- Enable/Disable Write CRC in FSP - <b>0:Disable(Default)</b>, 1:Enable.
- 0:Disable, 1:Enable
+/** WR CRC feature Control
+ Enable/Disable Write CRC in FSP.
+ $EN_DIS
**/
UINT8 WrCRC;
-/** Offset 0x0251 - Adaptive Refresh Management Level
+/** DDR 2x Refresh Enable
+ Enable/Disable 2x Refresh. Auto = dynamically selected.
+ 0:Disable, 1:Enable, 2:Auto
+**/
+ UINT8 RefreshMode;
+
+/** Adaptive Refresh Management Level
Selects Adaptive Refresh Management(ARFM) Level when refresh management(RFM) is
- required. <b>0:Default - RAAIMT, RAAMMT, RAADEC(Default)</b>; 1:Level A - RAAIMT-A,
- RAAMMT-A, RAADEC-A; 2:Level B - RAAIMT-B, RAAMMT-B, RAADEC-B; 3:Level C - RAAIMT-C,
- RAAMMT-C, RAADEC-C
- 0:Default - RAAIMT; RAAMMT; RAADEC, 1:Level A - RAAIMT-A; RAAMMT-A; RAADEC-A, 2:Level
- B - RAAIMT-B; RAAMMT-B; RAADEC-B, 3:Level C - RAAIMT-C; RAAMMT-C; RAADEC-C
+ required. 0:Default - RAAIMT, RAAMMT, RAADEC; 1:Level A - RAAIMT-A, RAAMMT-A, RAADEC-A;
+ 2:Level B - RAAIMT-B, RAAMMT-B, RAADEC-B; 3:Level C - RAAIMT-C, RAAMMT-C, RAADEC-C
+ 0:Default - RAAIMT or RAAMMT or RAADEC, 1:Level A - RAAIMT-A or RAAMMT-A or RAADEC-A,
+ 2:Level B - RAAIMT-B or RAAMMT-B or RAADEC-B, 3:Level C - RAAIMT-C or RAAMMT-C
+ or RAADEC-C
**/
UINT8 AdaptiveRefreshMgmtLevel;
-/** Offset 0x0252 - MEMHOT INPUT Control
- Enable/Disable MEMHOT INPUT in FSP - <b>0:Disable(Default)</b>, 1:Enable.
- 0:Disable, 1:Enable
+/** CXL Hetero Support
+ Enable/Disable (Default) DDR CXL Heterogeneous Interleave in FSP.
+ $EN_DIS
**/
- UINT8 MemHotIn;
+ UINT8 CxlHeteroSupport;
-/** Offset 0x0253 - MEMHOT OUTPUT Mode
- MEMHOT OUTPUT Mode in FSP - 0:Disable, <b>1:Enable only temphi(Default)</b>, 2:Enable
- temphi & mid, 3:Enable temphi & mid & low.
- 0:Disable, 1:Enable only temphi, 2:Enable temphi & mid, 3:Enable temphi & mid & low
+/** MEMHOT INPUT Control
+ Enable/Disable MEMHOT INPUT in FSP.
+ $EN_DIS
**/
- UINT8 MemhotOutputOnlyOpt;
+ UINT8 MemHotIn;
-/** Offset 0x0254 - CxlType3LegacyEn
- Enable or disable CXL type 3 device using CXL type 2 flow - <b>0:Disable(Default)</b>, 1:Enable.
- 0:Disable, 1:Enable
+/** MEMHOT OUTPUT Mode
+ MEMHOT OUTPUT Mode in FSP.
+ 0:Disable, 1:Enable only temphi, 2:Enable only temphi and mid, 3:Enable only temphi
+ mid and low
**/
- UINT8 DfxCxlType3LegacyEn;
+ UINT8 MemhotOutputOnlyOpt;
-/** Offset 0x0255 - DfxPmicSecureMode
- 0:Disable Pmic Secure Mode, 1:Enable Pmic Secure Mode, <b>2:Auto Pmic Secure Mode(Default)</b>.
+/** DfxPmicSecureMode
+ 0:Disable Pmic Secure Mode, 1:Enable Pmic Secure Mode, 2:Auto Pmic Secure Mode.
0:Disable Pmic Secure Mode, 1:Enable Pmic Secure Mode, 2:Auto Pmic Secure Mode
**/
UINT8 DfxPmicSecureMode;
-/** Offset 0x0256 - IIO PcieSubSystemMode0
- PcieSubSystemMode[MAX_SOCKET][0]: MAX_SOCKET=8, 0x00:IIO_MODE_GEN4_ONLY, 0x01:IIO_MODE_GEN5,
- 0x02:IIO_MODE_CXL, 0x03:IIO_MODE_FORCE_CXL, <b>0x01:IIO_MODE_GEN5(Default)</b>
-**/
- UINT8 IioPcieSubSystemMode0[8];
-
-/** Offset 0x025E - IIO PcieSubSystemMode1
- PcieSubSystemMode[MAX_SOCKET][0]: MAX_SOCKET=8, 0x00:IIO_MODE_GEN4_ONLY, 0x01:IIO_MODE_GEN5,
- 0x02:IIO_MODE_CXL, 0x03:IIO_MODE_FORCE_CXL, <b>0x01:IIO_MODE_GEN5(Default)</b>
-**/
- UINT8 IioPcieSubSystemMode1[8];
-
-/** Offset 0x0266 - IIO PcieSubSystemMode2
- PcieSubSystemMode[MAX_SOCKET][0]: MAX_SOCKET=8, 0x00:IIO_MODE_GEN4_ONLY, 0x01:IIO_MODE_GEN5,
- 0x02:IIO_MODE_CXL, 0x03:IIO_MODE_FORCE_CXL, <b>0x01:IIO_MODE_GEN5(Default)</b>
+/** SpdPrintEn
+ Enable/Disable SPD Print
+ $EN_DIS
**/
- UINT8 IioPcieSubSystemMode2[8];
+ UINT8 SpdPrintEn;
-/** Offset 0x026E - IIO PcieSubSystemMode3
- PcieSubSystemMode[MAX_SOCKET][0]: MAX_SOCKET=8, 0x00:IIO_MODE_GEN4_ONLY, 0x01:IIO_MODE_GEN5,
- 0x02:IIO_MODE_CXL, 0x03:IIO_MODE_FORCE_CXL, <b>0x01:IIO_MODE_GEN5(Default)</b>
-**/
- UINT8 IioPcieSubSystemMode3[8];
-
-/** Offset 0x0276 - IIO PcieSubSystemMode4
- PcieSubSystemMode[MAX_SOCKET][0]: MAX_SOCKET=8, 0x00:IIO_MODE_GEN4_ONLY, 0x01:IIO_MODE_GEN5,
- 0x02:IIO_MODE_CXL, 0x03:IIO_MODE_FORCE_CXL, <b>0x01:IIO_MODE_GEN5(Default)</b>
-**/
- UINT8 IioPcieSubSystemMode4[8];
-
-/** Offset 0x027E - IIO PcieSubSystemMode5
- PcieSubSystemMode[MAX_SOCKET][0]: MAX_SOCKET=8, 0x00:IIO_MODE_GEN4_ONLY, 0x01:IIO_MODE_GEN5,
- 0x02:IIO_MODE_CXL, 0x03:IIO_MODE_FORCE_CXL, <b>0x01:IIO_MODE_GEN5(Default)</b>
-**/
- UINT8 IioPcieSubSystemMode5[8];
-
-/** Offset 0x0286 - IIO PcieSubSystemMode6
- PcieSubSystemMode[MAX_SOCKET][0]: MAX_SOCKET=8, 0x00:IIO_MODE_GEN4_ONLY, 0x01:IIO_MODE_GEN5,
- 0x02:IIO_MODE_CXL, 0x03:IIO_MODE_FORCE_CXL, <b>0x01:IIO_MODE_GEN5(Default)</b>
+/** Force PPR On All Dram For UCE
+ Enable/Disable force PPR on all dram for UCE.
+ 0:Disable, 1:Enable
**/
- UINT8 IioPcieSubSystemMode6[8];
+ UINT8 ForcePprOnAllDramUce;
-/** Offset 0x028E - CXL Header Bypass
- Enable/Disable the CXL header bypass in FSP - <b>0:Disabled(Default)</b>, 1:Enabled.
+/** CXL Header Bypass
+ Enable/Disable the CXL header bypass in FSP.
0:Disable, 1:Enable
**/
UINT8 DfxCxlHeaderBypass;
-/** Offset 0x028F - CXL Security Level
+/** CXL Security Level
CXL Security Level<br>\n
- 0: Fully Trusted - CXL Device can get access on CXL.$ for host-attached and device
+ 0- Fully Trusted - CXL Device can get access on CXL.$ for host-attached and device
attached memory ranges in the WB address space.<br>\n
- 1: Partially Trusted - CXL Device can get access on CXL.$ for device attached memory
+ 1- Partially Trusted - CXL Device can get access on CXL.$ for device attached memory
ranges only;<br>\n
- 2: Untrusted - All requests on CXL.$ will be aborted by the Host.<br>\n
- <b>3: Auto - Currently identical to Fully Trusted. (Default)</b>
+ 2- Untrusted - All requests on CXL.$ will be aborted by the Host.<br>\n
+ <b>3- Auto - Currently identical to Fully Trusted. (Default)</b>
0:Fully Trusted, 1:Partially Trusted, 2:Untrusted, 3:Auto
**/
UINT8 DfxCxlSecLvl;
-/** Offset 0x0290
-**/
- UINT32 DfxCxlDebugModePtr;
-
-/** Offset 0x0294
-**/
- UINT32 DfxCxlDebugModeNumber;
-
-/** Offset 0x0298 - Lock Chipset
- Lock or Unlock chipset in FSP - <b>0:Disabled(Default)</b>, 1:Enabled.
- 0:Disable, 1:Enable
+/** CXL VID
+ CXL VID on SPR B0. Auto(Default) and Enable is 0x1E98. Disable is 0x8086
+ 0:Disable, 1:Enable, 2:Auto
**/
- UINT8 LockChipset;
+ UINT8 DfxCxlVid;
-/** Offset 0x0299 - MSR Lock Control
- Enable - MSR 3Ah and CSR 80h will be locked in FSP. Power Good reset is needed to
- remove lock bits - <b>0:Disabled(Default)</b>, 1:Enabled.
- 0:Disable, 1:Enable
+/** Warm-Reset Elimination
+ When enabled, BIOS will attempt to skip warm-reset on the cold-reset path. Auto:
+ platform or silicon RC policy determines feature status
+ 0:Disable, 1:Enable, 2:Auto
**/
- UINT8 ProcessorMsrLockControl;
+ UINT8 DfxWarmResetEliminationEn;
-/** Offset 0x029A - DFX Enable
- When Enabled, Expose IIO DFX devices and other CPU devices like PMON in FSP - <b>0:Disabled(Default)</b>,
- 1:Enabled.
- 0:Disable, 1:Enable
+/** IIO DFX CxlDebugMode Ptr
+ Pointer to array of CxlDebugMode settings Per Port, 0x00000000 indicates Dfx CXL
+ Debug mode Disable.
**/
- UINT8 DFXEnable;
+ UINT32 DfxCxlDebugModePtr;
-/** Offset 0x029B - DFX Disable Bios Done
- When Enabled, suppresses notifying processor via MSR 151h that boot initialization
- is finished in FSP - <b>0:Disabled(Default)</b>, 1:Enabled.
- 0:Disable, 1:Enable
+/** IIO DFX CxlDebugMode Number
+ Number of elements in DfxCxlDebugModePtr array, port number as unit, should be set
+ along with DfxCxlDebugModePtr.
**/
- UINT8 DfxDisableBiosDone;
+ UINT32 DfxCxlDebugModeNumber;
-/** Offset 0x029C - Processor Package C State
- Package C State - 0: C0/C1 state, 1: C2 state, 2: C6(non Retention) state, 3: C6(Retention)
+/** Processor Package C State
+ Package C State 0: C0/C1 state, 1: C2 state, 2: C6(non Retention) state, 3: C6(Retention)
state, 7: No Limit, <b>0xFF: Auto (Default)</b>
0: C0/C1 state, 1: C2 state, 2: C6(non Retention) state, 3: C6(Retention) state,
7: No Limit, 0xFF: Auto
**/
UINT8 CpuPmPackageCState;
-/** Offset 0x029D - Enhanced Intel SpeedStep(R) Tech
- Enhanced Intel SpeedStep(R) Tech - <b>1: Enable(Default)</b>, 0: Disable.
- 0:Disabled, 1:Enabled
+/** Enhanced Intel SpeedStep(R) Tech
+ Enable(Default)/Disable Enhanced Intel SpeedStep(R) Tech
+ $EN_DIS
**/
UINT8 CpuPmEistEnable;
-/** Offset 0x029E - C1E
- C1E - <b>1: Enable(Default)</b>, 0: Disable.
+/** C1E
+ Enable(Default)/Disable C1E
+ $EN_DIS
**/
UINT8 CpuPmC1eEnable;
-/** Offset 0x029F - Intel SST-PP
- Intel SST-PP Select allows user to choose level - <b>0xFF: Choose lowest level hardware
- supported(Default)</b>, 0: Level 0, 3: Level 3, 4: Level 4.
+/** Intel SST-PP
+ Intel SST-PP Select allows user to choose level.\n
+ AUTO: Choose lowest level hardware supported.
+ 0xFF: AUTO (default), 0: Level 0, 1: Level 1, 2: Level 2, 3: Level 3, 4: Level 4
**/
- UINT8 CpuPmIssTdpLevel;
+ UINT8 CpuPmSstPpLevel;
-/** Offset 0x02A0 - Activate SST-BF
+/** Intel SST-BF
SST-BF - <b>0: Disable (Default)</b>, 1: Enabled.
- 0:Disabled, 1:Enabled
+ $EN_DIS
+**/
+ UINT8 CpuPmProcessorSstBfSetting;
+
+/** Core Disable Bitmask for Socket 0 - Compute Die 0
+ Set bit(s) to Disable or clear bit(s) to Enable core(s) on Socket 0 - Compute Die
+ 0.\n
+ NOTE:\n
+ (1) Any core disabled by user will force static SST-PP.\n
+ (2) Please leave this UPD at default value if CPU SKU does not support the corresponding
+ number of compute die.
+**/
+ UINT64 CpuPmCoreDisableBitmaskSkt0Die0;
+
+/** Core Disable Bitmask for Socket 0 - Compute Die 1
+ Set bit(s) to Disable or clear bit(s) to Enable core(s) on Socket 0 - Compute Die
+ 1.\n
+ NOTE:\n
+ (1) Any core disabled by user will force static SST-PP.\n
+ (2) Please leave this UPD at default value if CPU SKU does not support the corresponding
+ number of compute die.
+**/
+ UINT64 CpuPmCoreDisableBitmaskSkt0Die1;
+
+/** Core Disable Bitmask for Socket 0 - Compute Die 2
+ Set bit(s) to Disable or clear bit(s) to Enable core(s) on Socket 0 - Compute Die
+ 2.\n
+ NOTE:\n
+ (1) Any core disabled by user will force static SST-PP.\n
+ (2) Please leave this UPD at default value if CPU SKU does not support the corresponding
+ number of compute die.
+**/
+ UINT64 CpuPmCoreDisableBitmaskSkt0Die2;
+
+/** Core Disable Bitmask for Socket 1 - Compute Die 0
+ Set bit(s) to Disable or clear bit(s) to Enable core(s) on Socket 1 - Compute Die
+ 0.\n
+ NOTE:\n
+ (1) Any core disabled by user will force static SST-PP.\n
+ (2) Please leave this UPD at default value if CPU SKU does not support the corresponding
+ number of compute die.
+**/
+ UINT64 CpuPmCoreDisableBitmaskSkt1Die0;
+
+/** Core Disable Bitmask for Socket 1 - Compute Die 1
+ Set bit(s) to Disable or clear bit(s) to Enable core(s) on Socket 1 - Compute Die
+ 1.\n
+ NOTE:\n
+ (1) Any core disabled by user will force static SST-PP.\n
+ (2) Please leave this UPD at default value if CPU SKU does not support the corresponding
+ number of compute die.
+**/
+ UINT64 CpuPmCoreDisableBitmaskSkt1Die1;
+
+/** Core Disable Bitmask for Socket 1 - Compute Die 2
+ Set bit(s) to Disable or clear bit(s) to Enable core(s) on Socket 1 - Compute Die
+ 2.\n
+ NOTE:\n
+ (1) Any core disabled by user will force static SST-PP.\n
+ (2) Please leave this UPD at default value if CPU SKU does not support the corresponding
+ number of compute die.
+**/
+ UINT64 CpuPmCoreDisableBitmaskSkt1Die2;
+
+/** Processor Dynamic Intel Speed Select (ISS) Function
+ Enable or Disable(Default) Processor Dynamic Intel Speed Select (ISS) Function
+ $EN_DIS
+**/
+ UINT8 CpuPmDynamicIss;
+
+/** BIOS Region Base
+ Pointer to the location of the BIOS Region
**/
- UINT8 CpuPmProcessorActivePbf;
+ UINT32 BiosRegionBase;
-/** Offset 0x02A1
+/** BIOS Region Size
+ The size of the BIOS Region in bytes
**/
- UINT8 UnusedUpdSpace13[7];
+ UINT32 BiosRegionSize;
-/** Offset 0x02A8 - Socket 0 Core Disable Bitmask
- Set bit(s) to Disable or clear bit(s) to Enable core(s) on Socket 0. NOTE: Any core
- disabled by user will force static SST-PP.
+/** Platform Data Area Base
+ Pointer to the location of the Platform Data Area
**/
- UINT64 CpuPmCoreDisableBitmask0;
+ UINT32 PlatformDataAreaBase;
-/** Offset 0x02B0 - Socket 1 Core Disable Bitmask
- Set bit(s) to Disable or clear bit(s) to Enable core(s) on Socket 1. NOTE: Any core
- disabled by user will force static SST-PP.
+/** Platform Data Area Size
+ The size of the Platform Data Area in bytes
**/
- UINT64 CpuPmCoreDisableBitmask1;
+ UINT32 PlatformDataAreaSize;
-/** Offset 0x02B8
+/** N/A
**/
UINT8 ReservedMemoryInitUpd[16];
-/** IIO Board settings Hob Ptr
- Pointer to array of IIO_BOARD_SETTINGS_HOB
+/** Enable TME
+ Enable TME
+ $EN_DIS
**/
- UINT32 IioBoardSettingsHobPtr;
+ UINT8 SecurityCctEnableTme;
-/** IIO Board Settings Hob length
- The IIO Board Settings Hob Length.
+/** Enable TME CR
+ Enable TME CR
+ $EN_DIS
**/
- UINT32 IioBoardSettingsHobLength;
+ UINT8 SecurityCctEnableTmeCR;
-/** BIOS Region Base
- Pointer to the location of the BIOS Region
+/** Enable MKTME
+ Enable MKTME
+ $EN_DIS
**/
- UINT32 BiosRegionBase;
-
-/** BIOS Region Size
- The size of the BIOS Region in bytes
+ UINT8 SecurityCctEnableMktme;
+
+/** Enable Global Integrity
+ Enable Global Integrity
+ $EN_DIS
**/
- UINT32 BiosRegionSize;
+ UINT8 SecurityCctEnableGlobalIntegrity;
+
+/** Select TME Crypto Algorithm
+ Enable Global Integrity
+ 0:Algo1,1:Algo2, 2:Algo3
+**/
+ UINT16 SecurityCctTmeCryptoAlg;
+
+/** Enable TDX
+ : Enable TDX
+**/
+ UINT8 SecurityCctEnableTdx;
+
+/** Enable TDX Connect
+ : Enable TDX Connect
+**/
+ UINT8 SecurityCctEnableTdxConnect;
+
+/** TDX Physical PCIe Port Disable Bitmap
+ TDX Physical PCIe Port Disable Bitmap
+**/
+ UINT16 SecurityCctTdxPhysicalPciePortDisableBitmap[8];
+
+/** Key Split
+ : Key Split
+**/
+ UINT8 SecurityCctKeySplit;
+
+/** Enable TDX SEAM Loader
+ : Enable TDX SEAM Loader
+ $EN_DIS
+**/
+ UINT8 SecurityCctEnableTdxSeamldr;
+
+/** Enabne SGX
+ : Enable SGX
+ $EN_DIS
+**/
+ UINT8 SecurityCctEnableSgx;
+
+/** Dfx Sgx CMCS Payload
+ Dfx Sgx CMCS Payload
+**/
+ UINT64 SecurityCctDfxSgxCmcsPayload[16];
+
+/** SGX QoS
+ : SGX QoS
+ $EN_DIS
+**/
+ UINT8 SecurityCctSgxQoS;
+
+/** SGX Auto Registration Agent
+ : SGX Auto Registration Agent
+ $EN_DIS
+**/
+ UINT8 SecurityCctSgxAutoRegistrationAgent;
+
+/** SGX Package Info In Band Access
+ : SGX Package Info In Band Access
+ $EN_DIS
+**/
+ UINT8 SecurityCctSgxPackageInfoInBandAccess;
+
+/** EPOCH Update
+ : EPOCH Update
+ 3:EpochDeactived, 0:EpochActived, 1:NewRandomEpoch, 2:ManualEpoch
+**/
+ UINT8 SecurityCctEpochUpdate;
+
+/** SGX EPOCH 0
+ : SGX EPOCH 0
+**/
+ UINT64 SecurityCctSgxEpoch0;
+
+/** SGX EPOCH 1
+ : SGX EPOCH 1
+**/
+ UINT64 SecurityCctSgxEpoch1;
+
+/** SGX LeWr
+ : SGX LeWr
+ $EN_DIS
+**/
+ UINT8 SecurityCctSgxLeWr;
+
+/** SGX Le Public Key Hash 0
+ : SGX Le Public Key Hash 0
+**/
+ UINT64 SecurityCctSgxLePubKeyHash0;
+
+/** SGX Le Public Key Hash 1
+ : SGX Le Public Key Hash 1
+**/
+ UINT64 SecurityCctSgxLePubKeyHash1;
+
+/** SGX Le Public Key Hash 2
+ : SGX Le Public Key Hash 2
+**/
+ UINT64 SecurityCctSgxLePubKeyHash2;
+
+/** SGX Le Public Key Hash 3
+ : SGX Le Public Key Hash 3
+**/
+ UINT64 SecurityCctSgxLePubKeyHash3;
+
+/** SGX Debug Mode
+ : SGX Debug Mode
+ $EN_DIS
+**/
+ UINT8 SecurityCctSgxDebugMode;
+
+/** SGX Factory Reset
+ : SGX Factory Reset
+ $EN_DIS
+**/
+ UINT8 SecurityCctSgxFactoryReset;
+
+/** Dfx Bios Param Header Override
+ : Dfx Bios Param Header Override
+ 2:Auto, 1:Enabled
+**/
+ UINT8 SecurityCctDfxBiosParamHeaderOverride;
+
+/** Dfx Bios Param Header Version
+ : Dfx Bios Param Header Version
+**/
+ UINT16 SecurityCctDfxBiosParamHeaderVersion;
+
+/** Dfx Disable Actm Launch
+ : Dfx Disable Actm Launch
+ 1:Enabled, 0:Disabled, 2:Auto
+**/
+ UINT8 SecurityCctDfxDisableActmLaunch;
+
+/** ACTM Flash Base
+ : ACTM Flash Base
+**/
+ UINT32 SecurityCctActmPcdFlash;
+
+/** Enable UPI FLE
+ : Enable UPI FLE
+ $EN_DIS
+**/
+ UINT8 SecurityCctEnableUpiFle;
+
+/** Enable SAF
+ : Enable SAF
+ $EN_DIS
+**/
+ UINT8 SecurityCctEnableSaf;
+
+/** Dfx TDX Disable 1MB CMR Exclude
+ : Dfx TDX Disable 1MB CMR Exclude
+ 1:Enabled, 0:Disabled, 2:Auto
+**/
+ UINT8 SecurityCctDfxTdxDisable1MbCmrExclude;
+
+/** Dfx Seamldr Source location
+ : Dfx Seamldr Source location
+ 2:Auto, 0:ESP, 1:IFWI
+**/
+ UINT8 SecurityCctDfxSeamldrSrc;
+
+/** Dfx Tdx module Source location
+ : Dfx Tdx module Source location
+ 2:Auto, 0:ESP, 1:IFWI
+**/
+ UINT8 SecurityCctDfxTdxModuleSrc;
+
+/** Dfx PRMRR SEAMRR Support
+ : Dfx PRMRR SEAMRR Support
+ 1:Enabled, 0:Disabled, 2:Auto
+**/
+ UINT8 SecurityCctDfxPrmrrSeamrrSupport;
+
+/** Dfx Simics Environment
+ : Dfx Simics Environment
+ 2:Auto, 1:Enabled
+**/
+ UINT8 SecurityCctDfxSimicsEnvironment;
+
+/** Dfx Force UPL Unsupported
+ : Dfx Force UPL Unsupported
+ 2:Auto, 1:Enabled
+**/
+ UINT8 SecurityCctDfxForceUplUnsupported;
+
+/** Dfx TME Key Restore
+ : Dfx TME Key Restore
+ $EN_DIS
+**/
+ UINT8 SecurityCctDfxTmeKeyRestore;
+
+/** Dfx TME Exclusion Base
+ : Dfx TME Exclusion Base
+**/
+ UINT64 SecurityCctDfxTmeExclusionBase;
+
+/** Dfx TME Exclusion Length
+ : Dfx TME Exclusion Length
+**/
+ UINT64 SecurityCctDfxTmeExclusionLength;
+
+/** Dfx MKTME KeyIdBits Override
+ : Dfx MKTME KeyIdBits Override
+ $EN_DIS
+**/
+ UINT8 SecurityCctDfxMkTmeKeyIdBitsOverride;
+
+/** Dfx MKTME KeyIdBits Override Value
+ : Dfx MKTME KeyIdBits Override Value
+**/
+ UINT8 SecurityCctDfxMkTmeKeyIdBitsOverrideValue;
+
+/** Dfx SGX Debug Print
+ : Dfx SGX Debug Print
+ $EN_DIS
+**/
+ UINT8 SecurityCctDfxSgxDebugPrint;
+
+/** Dfx SGX Registration Server Select
+ : Dfx SGX Registration Server Select
+ 1:PRX, 0:SBX, 3:LIV, 4:SoftwareDefined, 2:Auto
+**/
+ UINT8 SecurityCctDfxSgxRegistrationServerSelect;
+
+/** Dfx SGX Add Package Support
+ : Dfx SGX Add Package Support
+ 1:Enabled, 0:Disabled, 2:Auto
+**/
+ UINT8 SecurityCctDfxSgxAddPackageSupport;
+
+/** Dfx allow SGX non POR memory population
+ : Dfx SGX Add Package Support
+ 1:Enabled, 2:Auto
+**/
+ UINT8 SecurityCctDfxAllowSgxNonPorMemoryPopulation;
+
+/** Dfx SGX Hang Before ACTM
+ : Dfx SGX Hang Before ACTM
+ $EN_DIS
+**/
+ UINT8 SecurityCctDfxSgxHangBeforeActm;
+
+/** Dfx SGX Hang After ACTM
+ : Dfx SGX Hang After ACTM
+ $EN_DIS
+**/
+ UINT8 SecurityCctDfxSgxHangAfterActm;
+
+/** Dfx SGX Hang Before MCHECK
+ : Dfx SGX Hang Before MCHECK
+ $EN_DIS
+**/
+ UINT8 SecurityCctDfxSgxHangBeforeMcheck;
+
+/** Dfx SGX Hang After MCHECK
+ : Dfx SGX Hang After MCHECK
+ $EN_DIS
+**/
+ UINT8 SecurityCctDfxSgxHangAfterMcheck;
+
+/** Dfx SGX Hang Before MSR 7A
+ : Dfx SGX Hang Before MSR 7A
+ $EN_DIS
+**/
+ UINT8 SecurityCctDfxSgxHangBeforeMsr7a;
+
+/** Dfx SGX Hang After MSR 7A
+ : Dfx SGX Hang After MSR 7A
+ $EN_DIS
+**/
+ UINT8 SecurityCctDfxSgxHangAfterMsr7a;
+
+/** Dfx disable CCT MSR_BIOS_DONE
+ : Dfx disable CCT MSR_BIOS_DONE
+ $EN_DIS
+**/
+ UINT8 SecurityCctDfxDisableCctBiosDone;
+
+/** Dfx Mcheck MSR 72
+ : Dfx Mcheck MSR 72 programming
+ $EN_DIS
+**/
+ UINT8 SecurityCctDfxMcheckMsr72;
+
+/** Dfx Skip Warm Reset Promotion
+ : Dfx Skip Warm Reset Promotion
+ 2:Auto, 1:Enabled
+**/
+ UINT8 SecurityCctDfxSkipWarmResetPromotion;
+
+/** Enable SBFT
+ : Enable SBFT
+ 1:Enabled, 0:Disabled, 4:IfsSbftSgxEnabled
+**/
+ UINT8 SecurityCctEnableSbft;
+
+/** PRMRR SGX Size
+ : PRMRR SGX Size
+ 0x8000000:128MB, 0x10000000:256MB, 0x20000000:512MB, 0x40000000:1GB, 0x80000000:2GB,
+ 0x100000000:4GB, 0x200000000:8GB,0x400000000:16GB, 0x800000000:32GB, 0x1000000000:64GB,
+ 0x2000000000:128GB, 0x4000000000:256GB, 0x8000000000:512GB
+**/
+ UINT64 SecurityCctPrmrrSgxSize;
+
+/** PRMRR SAF Size
+ : PRMRR SAF Size
+ 0x0:Invalid, 0x800000:8MB, 0x2000000:32MB, 0x4000000:64MB, 0x8000000:128MB, 0x10000000:256MB
+**/
+ UINT64 SecurityCctPrmrrSafSize;
+
+/** PRMRR SBFT Size
+ : PRMRR SBFT Size
+ 0x0:Invalid, 0x10000000:256MB, 0x20000000:512MB
+**/
+ UINT64 SecurityCctPrmrrSbftSize;
+
+/** N/A
+ Pointer to node list which is used to initizalize security variables - CCT_VS_METADATA_NODE
+**/
+ EFI_PHYSICAL_ADDRESS SecurityCctVarStorageMetadataNodePtr;
+
+/** SINIT ACM SE SVN default
+ Default value of SINIT ACM SE SVN
+**/
+ UINT8 SecurityCctSinitAcmSeSvnFspDefault;
+
+/** SINIT ACM SE SVN override request
+ Override request for SINIT ACM SE SVN
+**/
+ UINT8 SecurityCctSinitAcmSeSvnOverrideRequest;
+
+/** SINIT ACM SE SVN value
+ Value of SINIT ACM SE SVN
+**/
+ UINT8 SecurityCctSinitAcmSeSvnValue;
+
+/** Setup data pointer
+ : Setup data pointer
+**/
+ UINT64 SetupDataPtr;
+
+/** Setup data Size
+ : Setup data Size
+**/
+ UINT64 SetupDataSize;
+
+/** Emulation Setting data pointer
+ : Emulation Setting data pointer
+**/
+ UINT64 EmulationSettingPtr;
+
+/** Emulation Setting data Size
+ : Emulation Setting data Size
+**/
+ UINT64 EmulationSettingSize;
+
+/** Platform info data pointer
+ : Platform info data pointer
+**/
+ UINT64 PlatformInfoPtr;
+
+/** Platform info data Size
+ : Platform info data Size
+**/
+ UINT64 PlatformInfoSize;
+
+/** FSPM Upd settings support
+ : FSPM Upd settings support
+ $EN_DIS
+**/
+ UINT8 FspmUpdSupport;
+
+/** Gen4 RCD Dimm support
+ Gen4 RCD Dimm support, 0- Disable, 1- Enable
+ 0:Disable, 1:Enable
+**/
+ UINT8 Gen4RcdDeviceSupport;
} FSPM_CONFIG;
+
typedef struct {
-
+
/** N/A
**/
FSP_UPD_HEADER FspUpdHeader;
-
+
/** N/A
**/
FSPM_ARCH2_UPD FspmArchUpd;
-
+
/** N/A
**/
FSPM_CONFIG FspmConfig;
diff --git a/src/vendorcode/intel/fsp/fsp2_0/graniterapids/ap/FspsUpd.h b/src/vendorcode/intel/fsp/fsp2_0/graniterapids/ap/FspsUpd.h
index 864a5a983f..11628ff7ee 100644
--- a/src/vendorcode/intel/fsp/fsp2_0/graniterapids/ap/FspsUpd.h
+++ b/src/vendorcode/intel/fsp/fsp2_0/graniterapids/ap/FspsUpd.h
@@ -1,6 +1,6 @@
/** @file
-Copyright (c) 2022, Intel Corporation. All rights reserved.<BR>
+Copyright (c) 2024, Intel Corporation. All rights reserved.<BR>
Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met:
@@ -30,261 +30,224 @@ are permitted provided that the following conditions are met:
**/
-#ifndef __FSPSUPD_H__
-#define __FSPSUPD_H__
+#ifndef __FSPS_UPD_H__
+#define __FSPS_UPD_H__
#include <FspUpd.h>
#pragma pack(1)
-
-/** FSP-S Configuration
-**/
typedef struct {
-/** Offset 0x0020 - Processor VmxEnable Function
- Processor VmxEnable Function - <b>1: Enable(Default)</b>, 0: Disable Processor VmxEnable Function.
- 0: Disable, 1: Enable
+/** PCIe Controller 0
+ Enable / Disable PCI Express controller 0
+ $EN_DIS
**/
- UINT8 VmxEnable;
+ UINT8 EnablePcie0;
-/** Offset 0x0021 - Processor TurboMode Function
- Processor TurboMode Function - <b>1: Enable(Default)</b>, 0: Disable Processor TurboMode Function.
- 0: Disable, 1: Enable
+/** PCIe Controller 1
+ Enable / Disable PCI Express controller 1
+ $EN_DIS
**/
- UINT8 TurboMode;
+ UINT8 EnablePcie1;
-/** Offset 0x0022 - Processor Safer Mode Extensions Function
- Processor Safer Mode Extensions Function - <b>0: Disable(Default)</b>, 1: Enable
- Processor Safer Mode Extensions Function.
- 0: Disable, 1: Enable
+/** Embedded Multi-Media Controller (eMMC)
+ Enable / Disable Embedded Multi-Media controller
+ $EN_DIS
**/
- UINT8 ProcessorSmxEnable;
+ UINT8 EnableEmmc;
-/** Offset 0x0023 - SstCp
- SstCp - 1: Enable, <b>0: Disable SstCp(Default)</b>.
- 0: Disable, 1: Enable
+/** LAN Controllers
+ Enable / Disable LAN controllers, refer to FSP Integration Guide for details.
+ 0:Disable LAN 0 & LAN 1, 1:Enable LAN 0 & LAN 1, 2:Disable LAN 1 only
**/
- UINT8 SstCpSetting;
+ UINT8 EnableGbE;
-/** Offset 0x0024 - SstCp Capable Status
- SST-CP Capable Status in system - <b>0: Disable(Default)</b>, 1: Enable.
- 0: Disable, 1: Enable
+/** PCIe Root Port 0 DeEmphasis
+ Desired DeEmphasis level for PCIE root port
+ 0:6dB, 1:3.5dB
**/
- UINT8 SstCpCapableSystem;
+ UINT8 PcieRootPort0DeEmphasis;
-/** Offset 0x0025
+/** PCIe Root Port 1 DeEmphasis
+ Desired DeEmphasis level for PCIE root port
+ 0:6dB, 1:3.5dB
**/
- UINT8 UnusedUpdSpace0[1];
+ UINT8 PcieRootPort1DeEmphasis;
-/** Offset 0x0026 - PCH Protect Range Limit
- Left shifted address by 12 bits with address bits 11:0 are assumed to be FFFh for
- limit comparison.
+/** PCIe Root Port 2 DeEmphasis
+ Desired DeEmphasis level for PCIE root port
+ 0:6dB, 1:3.5dB
**/
- UINT16 PchProtectedRangeLimit[5];
-
-/** Offset 0x0030 - PCH Protect Range Base
- Left shifted address by 12 bits with address bits 11:0 are assumed to be 0.
-**/
- UINT16 PchProtectedRangeBase[5];
+ UINT8 PcieRootPort2DeEmphasis;
-/** Offset 0x003A - PchAdrEn
- PchAdr - <b>0: PLATFORM POR(Default)</b>, 1: FORCE ENABLE, 2:FORCE DISABLE.
- 0: PLATFORM POR, 1: FORCE ENABLE, 2: FORCE DISABLE
+/** PCIe Root Port 3 DeEmphasis
+ Desired DeEmphasis level for PCIE root port
+ 0:6dB, 1:3.5dB
**/
- UINT8 PchAdrEn;
+ UINT8 PcieRootPort3DeEmphasis;
-/** FSP smm init enable
- Enable / Disable FSP smm init
- $EN_DIS
+/** PCIe Root Port 4 DeEmphasis
+ Desired DeEmphasis level for PCIE root port
+ 0:6dB, 1:3.5dB
**/
- UINT8 FspSmmInitEn;
+ UINT8 PcieRootPort4DeEmphasis;
-/** Offset 0x003B - EnableTme
- EnableTme - <b>0: Disabled(Default)</b>, 1: Enabled, 2:Software Controlled.
- 0: Disabled, 1: Enabled, 2:Software Controlled
+/** PCIe Root Port 5 DeEmphasis
+ Desired DeEmphasis level for PCIE root port
+ 0:6dB, 1:3.5dB
**/
- UINT8 EnableTme;
+ UINT8 PcieRootPort5DeEmphasis;
-/** Offset 0x003C - EnableTmeBypass
- EnableTmeBypass - <b>0: Disabled(Default)</b>, 1: Enabled.
- 0: Disabled, 1: Enabled
+/** PCIe Root Port 6 DeEmphasis
+ Desired DeEmphasis level for PCIE root port
+ 0:6dB, 1:3.5dB
**/
- UINT8 EnableTmeBypass;
+ UINT8 PcieRootPort6DeEmphasis;
-/** Offset 0x003D - SgxFactoryReset
- SgxFactoryReset - <b>0: Disabled(Default)</b>, 1: Enabled.
- 0: Disabled, 1: Enabled
+/** PCIe Root Port 7 DeEmphasis
+ Desired DeEmphasis level for PCIE root port
+ 0:6dB, 1:3.5dB
**/
- UINT8 SgxFactoryReset;
+ UINT8 PcieRootPort7DeEmphasis;
-/** Offset 0x003E - EnableSgx
- EnableSgx - <b>0: Disabled(Default)</b>, 1: Enabled.
- 0: Disabled, 1: Enabled
+/** eMMC DLL Configuration Data
+ Pointer to eMMC DLL Configuration Data
**/
- UINT8 EnableSgx;
+ UINT32 EMMCDLLConfigPtr;
-/** Offset 0x003F - SgxPackageInfoInBandAccess
- SgxPackageInfoInBandAccess - <b>0: Disabled(Default)</b>, 1: Enabled.
- 0: Disabled, 1: Enabled
+/** PCH Protect Range Limit
+ Left shifted address by 12 bits with address bits 11:0 are assumed to be FFFh for
+ limit comparison.
**/
- UINT8 SgxPackageInfoInBandAccess;
+ UINT16 PchProtectedRangeLimit[5];
-/** Offset 0x0040 - SgxQoS
- SgxQoS - 0: Disabled, <b>1: Enabled(Default)</b>.
- 0: Disabled, 1: Enabled
+/** PCH Protect Range Base
+ Left shifted address by 12 bits with address bits 11:0 are assumed to be 0.
**/
- UINT8 SgxQoS;
+ UINT16 PchProtectedRangeBase[5];
-/** Offset 0x0041 - EpochUpdate
- EpochUpdate - 1: Change to New Random Owner EPOCHs, <b>2: Manual User Defined Owner
- EPOCHs(Default)</b>.
- 1: Change to New Random Owner EPOCHs, 2: Manual User Defined Owner EPOCHs
+/** PchAdrEn
+ PchAdr 0:PLATFORM POR, <b>1:FORCE ENABLE(Default)</b>, 2:FORCE DISABLE
+ 0:PLATFORM POR, 1:FORCE ENABLE, 2:FORCE DISABLE
**/
- UINT8 EpochUpdate;
+ UINT8 PchAdrEn;
-/** Offset 0x0042 - SgxLeWr
- SgxLeWr - <b>0: Disabled(Default)</b>, 1: Enabled.
- 0: Disabled, 1: Enabled
+/** Enable Timed GPIO0
+ Enable/Disable Timed GPIO0. When disabled, it disables cross time stamp time-synchronization
+ as extension of Hammock Harbor time synchronization
+ $EN_DIS
**/
- UINT8 SgxLeWr;
+ UINT8 EnableTimedGpio0;
-/** Offset 0x0043 - SgxDebugMode
- SgxDebugMode - <b>0: Disabled(Default)</b>, 1: Enabled.
- 0: Disabled, 1: Enabled
+/** Enable Timed GPIO1
+ Enable/Disable Timed GPIO0. When disabled, it disables cross time stamp time-synchronization
+ as extension of Hammock Harbor time synchronization
+ $EN_DIS
**/
- UINT8 SgxDebugMode;
+ UINT8 EnableTimedGpio1;
-/** Offset 0x0044 - SgxAutoRegistrationAgent
- SgxAutoRegistrationAgent - <b>0: Disabled(Default)</b>, 1: Enabled.
- 0: Disabled, 1: Enabled
+/** FSP smm init enable
+ Enable / Disable FSP smm init
+ $EN_DIS
**/
- UINT8 SgxAutoRegistrationAgent;
+ UINT8 FspSmmInitEn;
-/** Offset 0x0045 - DfxSgxRegistrationServerSelect
- DfxSgxRegistrationServerSelect - <b>0: SBX(Default)</b>, 1: PRX, 2:AUTO, 3:LIV,
- 4:SW Defined Server.
- 0: SBX, 1: PRX, 2:AUTO, 3:LIV, 4:SW Defined Server
+/** C2C3TT
+ Default = 0, means [AUTO]. C2 to C3 Transition Timer, PPDN_INIT = C2C3TT CSR Bit[11:0]
+ 0: Default, Bit[11:0] : C2 to C3 Transition Timer
**/
- UINT8 DfxSgxRegistrationServerSelect;
+ UINT8 CpuPmC2c3tt;
-/** Offset 0x0046 - Processor Enable Monitor MWAIT
- Processor Enable Monitor MWAIT - <b>1: Enable(Default)</b>, 0: Disable Processor
- Monitor MWAIT.
- 0: Disabled, 1: Enabled
+/** Processor Enable Monitor MWAIT
+ Enable(Default) or Disable Processor Monitor MWAIT
+ $EN_DIS
**/
UINT8 CpuPmMonitorMWait;
-/** Offset 0x0047 - Processor C6
- Processor C6 - <b>1: Enable(Default)</b>, 0: Disable Processor C6 (ACPI C3) report to OS.
- 0: Disabled, 1: Enabled
+/** Processor TurboMode Function
+ Enable(Default) or Disable Processor TurboMode Function
+ $EN_DIS
**/
- UINT8 CpuPmC6Enable;
+ UINT8 CpuPmTurboMode;
-/** Offset 0x0048 - Hardware P-States
- Hardware P-States - 0: Disable: Hardware chooses a P-state based on OS Request
- (Legacy P-States), <b>1:Native Mode:Hardware chooses a P-state based on OS guidance(Default)</b>,
- 2:Out of Band Mode:Hardware autonomously chooses a P-state (no OS guidance), 3:Native
- Mode with No Legacy Support.
- 0: Disable, 1: Native Mode, 2: Out of Band Mode, 3: Native Mode with No Legacy Support
+/** Hardware P-States
+ Disable: Hardware chooses a P-state based on OS Request (Legacy P-States)\n
+ Native Mode:Hardware chooses a P-state based on OS guidance\n
+ Out of Band Mode:Hardware autonomously chooses a P-state (no OS guidance)
+ 0:Disable, 1:Native Mode (Default), 2:Out of Band Mode, 3:Native Mode with No Legacy Support
**/
UINT8 CpuPmProcessorHWPMEnable;
-/** Offset 0x0049 - Power Performance Tuning
- Power Performance Tuning - <b>0: OS Controls EPB (Default)</b>, 1: BIOS Controls
- EPB, 2: PECI Controls EPB.
- 0: OS Controls EPB, 1: BIOS Controls EPB, 2: PECI Controls EPB
-**/
- UINT8 CpuPmPwrPerfTuning;
-
-/** Offset 0x004A - Configure SST-BF
- Allow (Default)/Disallow BIOS to configure SST-BF High Priority Cores so that SW
- does not have to configure - 0:Disable, <b>1:Enable(Default)</b>.
- 0:Disable, 1:Enable
-**/
- UINT8 CpuPmProcessorConfigurePbf;
-
-/** Offset 0x004B - CF9 Global Reset Promotion
- CF9 Global Reset Promotion - 1: Enable promoting CF9 reset to global, <b>0: Disable
- promoting CF9 reset to global(Default)</b>.
- 0: Disabled, 1: Enabled
-**/
- UINT8 MeGrPromotionEnabled;
-
-/** Offset 0x004C - Global Reset Lock
- Global Reset Lock - <b>1: Enable locking the joint ME and host reset capability(Default)</b>,
- 0: Disable locking the joint ME and host reset capability.
- 0: Disabled, 1: Enabled
-**/
- UINT8 MeGrLockEnabled;
-
-/** Offset 0x004D - Delayed Authentication Mode
- Enable or disable Delayed Authentication Mode - <b>0: Disable(Default)</b>, 1: Enable.
- 0:Disable, 1:Enable
+/** HardwarePM Interrupt
+ Enable or Disable (Default) Hardware PM Interrupt
+ $EN_DIS
**/
- UINT8 DelayedAuthenticationMode;
+ UINT8 CpuPmProcessorHWPMInterrupt;
-/** Offset 0x004E - Delayed Authentication Mode Override
- Enable or disable Delayed Authentication Mode Override - <b>0: Disable(Default)</b>,
- 1: Enable.
- 0:Disable, 1:Enable
+/** EPP Profile
+ Choose an HWPM Profile, 0: Performance, 128: Balanced Performance, 192: Balanced
+ Power, 255: Power
+ 0: Performance, 128: Balanced Performance, 192: Balanced Power, 255: Power
**/
- UINT8 DelayedAuthenticationModeOverride;
+ UINT8 CpuPmProcessorEPPProfile;
-/** Offset 0x004F - Core Bios Done Message
- Enable or disable Core Bios Done message sent to ME - 0: Disable, <b>1: Enable(Default)</b>.
- 0:Disable, 1:Enable
+/** Boot Performance Mode
+ Select the performance state that the BIOS will set before OS hand off, 0: Max Performance,
+ 1: Max Efficiency
+ 0: Max Performance (Default), 1: Max Efficiency
**/
- UINT8 CoreBiosDoneEnabled;
+ UINT8 CpuPmBootPstate;
-/** Offset 0x0050 - End Of Post Message
- Enable or disable sending END_OF_POST message to ME - 0: Disable, 1: Send in PEI,
- <b>2: Send in DXE(Default)</b>.
- 0:Disable, 1:Send in PEI, 2:Send in DXE
+/** Power Performance Tuning
+ Power Performance Tuning <b>0: OS Controls EPB (Default)</b>, 1: BIOS Controls EPB,
+ 2: PECI Controls EPB
+ 0: OS Controls EPB, 1: BIOS Controls EPB, 2: PECI Controls EPB
**/
- UINT8 EndOfPostMessage;
+ UINT8 CpuPmPwrPerfTuning;
-/** Offset 0x0051 - HMRFPO_LOCK Message
- Enable or disable sending HMRFPO_LOCK message to ME - 0: Disable, <b>1: Enable(Default)</b>.
- 0:Disable, 1:Enable
+/** Enable or Disable Thermal Monitor
+ Enable or Disable Thermal Monitor, 0: Disable, 1: Enable
+ $EN_DIS
**/
- UINT8 MeHmrfpoLockEnabled;
+ UINT8 ThermalMonitor;
-/** Offset 0x0052 - HMRFPO_ENABLE Message
- Enable or disable sending HMRFPO_ENABLE message to ME - <b>0: Disable(Default)</b>,
- 1: Enable.
- 0:Disable, 1:Enable
+/** FSPS Upd settings support
+ : FSPS Upd settings support
+ $EN_DIS
**/
- UINT8 MeHmrfpoEnableEnabled;
+ UINT8 FspsUpdSupport;
-/** Offset 0x0053
+/** N/A
+ Pointer to node list which is used to initizalize security variables - CCT_VS_METADATA_NODE
**/
- UINT8 UnusedUpdSpace1[1];
+ EFI_PHYSICAL_ADDRESS SecurityCctVarStorageMetadataNodePtr;
-/** Offset 0x0054
+/** N/A
**/
UINT8 ReservedSiliconInitUpd[16];
+
} FSPS_CONFIG;
-/** Fsp S UPD Configuration
-**/
+
typedef struct {
-/** Offset 0x0000
+/** N/A
**/
FSP_UPD_HEADER FspUpdHeader;
-/** Offset 0x0020
+/** N/A
**/
- FSPS_CONFIG FspsConfig;
+ FSPS_ARCH2_UPD FspsArchUpd;
-/** Offset 0x0064
+/** N/A
**/
- UINT8 UnusedUpdSpace2[2];
+ FSPS_CONFIG FspsConfig;
-/** Offset 0x0066
+/** N/A
**/
UINT16 UpdTerminator;
+
} FSPS_UPD;
#pragma pack()
diff --git a/src/vendorcode/intel/fsp/fsp2_0/graniterapids/ap/FsptUpd.h b/src/vendorcode/intel/fsp/fsp2_0/graniterapids/ap/FsptUpd.h
index 77ed502735..2e7cfa164c 100644
--- a/src/vendorcode/intel/fsp/fsp2_0/graniterapids/ap/FsptUpd.h
+++ b/src/vendorcode/intel/fsp/fsp2_0/graniterapids/ap/FsptUpd.h
@@ -1,6 +1,6 @@
/** @file
-Copyright (c) 2022, Intel Corporation. All rights reserved.<BR>
+Copyright (c) 2024, Intel Corporation. All rights reserved.<BR>
Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met:
@@ -38,19 +38,19 @@ are permitted provided that the following conditions are met:
#pragma pack(1)
typedef struct {
-
+
/** N/A
**/
UINT64 MicrocodeRegionBase;
-
+
/** N/A
**/
UINT64 MicrocodeRegionLength;
-
+
/** N/A
**/
UINT64 CodeRegionBase;
-
+
/** N/A
**/
UINT64 CodeRegionLength;
@@ -60,13 +60,11 @@ typedef struct {
typedef struct {
-/** Offset 0x0040 - Disable Port80 output in FSP-T
- Select Port80 Control in FSP-T - 0:VPD-Style, <b>1:Enable Port80 Output (Default)</b>,
- 2:Disable Port80 Output, refer to FSP Integration Guide for details.
+/** Disable Port80 output in FSP-T
0:VPD-Style, 1:Enable Port80 Output[Default], 2:Disable Port80 Output
**/
UINT8 FsptPort80RouteDisable;
-
+
/** N/A
**/
UINT8 ReservedTempRamInitUpd[31];
@@ -75,23 +73,23 @@ typedef struct {
typedef struct {
-
+
/** N/A
**/
FSP_UPD_HEADER FspUpdHeader;
-
+
/** N/A
**/
FSPT_ARCH2_UPD FsptArchUpd;
-
+
/** N/A
**/
FSPT_CORE_UPD FsptCoreUpd;
-
+
/** N/A
**/
FSPT_CONFIG FsptConfig;
-
+
/** N/A
**/
UINT16 UpdTerminator;
diff --git a/src/vendorcode/intel/fsp/fsp2_0/graniterapids/ap/IioPcieConfigUpd.h b/src/vendorcode/intel/fsp/fsp2_0/graniterapids/ap/IioPcieConfigUpd.h
index f71bc04561..27633c7462 100644
--- a/src/vendorcode/intel/fsp/fsp2_0/graniterapids/ap/IioPcieConfigUpd.h
+++ b/src/vendorcode/intel/fsp/fsp2_0/graniterapids/ap/IioPcieConfigUpd.h
@@ -1,6 +1,6 @@
/** @file
-Copyright (c) 2019-2023, Intel Corporation. All rights reserved.<BR>
+Copyright (c) 2024, Intel Corporation. All rights reserved.<BR>
Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met:
@@ -26,35 +26,90 @@ are permitted provided that the following conditions are met:
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
THE POSSIBILITY OF SUCH DAMAGE.
+ This file is automatically generated. Please do NOT modify !!!
+
**/
#ifndef _IIO_PCIE_CONFIG_UPD_H_
#define _IIO_PCIE_CONFIG_UPD_H_
#ifndef MAX_SOCKET
-#define MAX_SOCKET 4
+#define MAX_SOCKET 2
#endif
#ifndef MAX_LOGIC_IIO_STACK
-#define MAX_LOGIC_IIO_STACK 14
+#define MAX_LOGIC_IIO_STACK 18
#endif
-#ifndef MAX_IIO_PORTS_PER_SOCKET
-#define MAX_IIO_PORTS_PER_SOCKET 57
+/**
+ * Maximum number of IIO ports per IIO stack.
+ */
+#ifndef MAX_IIO_PORTS_PER_STACK
+#define MAX_IIO_PORTS_PER_STACK 8
#endif
-#ifndef MAX_IOU_PER_SOCKET
-#define MAX_IOU_PER_SOCKET 7
-#endif
+#define MAX_IIO_STACK 16
+#define MAX_IIO_STACKS_PER_SOCKET MAX_IIO_STACK
+#define MAX_IIO_PORTS_PER_SOCKET (MAX_IIO_STACKS_PER_SOCKET * MAX_IIO_PORTS_PER_STACK)
-#ifndef MAX_IIO_PORTS_PER_STACK
-#define MAX_IIO_PORTS_PER_STACK 1
+#if MAX_SOCKET <= 4
+
+//
+// 10 PCIe stacks (PE) and 3 IO accelerator (IOAT) possible in Rich 1 Socket.
+// However, we share R1S image with 4 socket SP image, no separate build for R1S.
+// So use R1S definitions for 4 socket SP and 4 PE, 1 IOAT entry are just not used, never present.
+//
+#define MAX_IIO_PCIE_PER_SOCKET 10
+#else
+#define MAX_IIO_PCIE_PER_SOCKET 6
#endif
+#define MAX_IOU_PER_SOCKET MAX_IIO_PCIE_PER_SOCKET
+
+#define IIO_BIFURCATE_xxxxxxxx 0xFE
+#define IIO_BIFURCATE_x4x4x4x4 0x0
+#define IIO_BIFURCATE_x4x4xxx8 0x1
+#define IIO_BIFURCATE_xxx8x4x4 0x2
+#define IIO_BIFURCATE_xxx8xxx8 0x3
+#define IIO_BIFURCATE_xxxxxx16 0x4
+#define IIO_BIFURCATE_x2x2x4x8 0x5
+#define IIO_BIFURCATE_x4x2x2x8 0x6
+#define IIO_BIFURCATE_x8x2x2x4 0x7
+#define IIO_BIFURCATE_x8x4x2x2 0x8
+#define IIO_BIFURCATE_x2x2x4x4x4 0x9
+#define IIO_BIFURCATE_x4x2x2x4x4 0xA
+#define IIO_BIFURCATE_x4x4x2x2x4 0xB
+#define IIO_BIFURCATE_x4x4x4x2x2 0xC
+#define IIO_BIFURCATE_x2x2x2x2x8 0xD
+#define IIO_BIFURCATE_x8x2x2x2x2 0xE
+#define IIO_BIFURCATE_x2x2x2x2x4x4 0xF
+#define IIO_BIFURCATE_x2x2x4x2x2x4 0x10
+#define IIO_BIFURCATE_x2x2x4x4x2x2 0x11
+#define IIO_BIFURCATE_x4x2x2x2x2x4 0x12
+#define IIO_BIFURCATE_x4x2x2x4x2x2 0x13
+#define IIO_BIFURCATE_x4x4x2x2x2x2 0x14
+#define IIO_BIFURCATE_x2x2x2x2x2x2x4 0x15
+#define IIO_BIFURCATE_x2x2x2x2x4x2x2 0x16
+#define IIO_BIFURCATE_x2x2x4x2x2x2x2 0x17
+#define IIO_BIFURCATE_x4x2x2x2x2x2x2 0x18
+#define IIO_BIFURCATE_x2x2x2x2x2x2x2x2 0x19
+
+#define IIO_BIFURCATE_xxxxxxx4 0x40
+#define IIO_BIFURCATE_xxx2xxx2 0x41
+#define IIO_BIFURCATE_x1x1xxx2 0x42
+#define IIO_BIFURCATE_xxx2x1x1 0x43
+#define IIO_BIFURCATE_x1x1x1x1 0x44
+
+#define IIO_BIFURCATE_AUTO 0xFF
-#define MAX_IIO_PCIE_PER_SOCKET 1
+#define C1_UID 2
+#define C2_UID 3
-#define MAX_VMD_STACKS_PER_SOCKET 8 // Max number of stacks per socket supported by VMD
+/**
+ * VTBAR - Virtualization Technology BAR region size and alignment.
+ */
+#define IIO_VTBAR_LSB 16 // 64 kB
+#define IIO_VTBAR_SIZE (1 << IIO_VTBAR_LSB)
#pragma pack(1)
@@ -74,91 +129,6 @@ typedef enum {
} IIO_PACKAGE_PE;
typedef struct {
- UINT8 SLOTEIP[MAX_IIO_PORTS_PER_SOCKET]; // Electromechanical Interlock Present - Slot Capabilities (D0-10 / F0 / R0xA4 / B17)
- UINT8 SLOTHPCAP[MAX_IIO_PORTS_PER_SOCKET]; // Slot Hot Plug capable - Slot Capabilities (D0-10 / F0 / R0xA4 / B6)
- UINT8 SLOTHPSUP[MAX_IIO_PORTS_PER_SOCKET]; // Hot Plug surprise supported - Slot Capabilities (D0-10 / F0 / R0xA4 / B5)
- UINT8 SLOTPIP[MAX_IIO_PORTS_PER_SOCKET]; // Power Indicator Present - Slot Capabilities (D0-10 / F0 / R0xA4 / B4)
- UINT8 SLOTAIP[MAX_IIO_PORTS_PER_SOCKET]; // Attention Inductor Present - Slot Capabilities (D0-10 / F0 / R0xA4 / B3)
- UINT8 SLOTMRLSP[MAX_IIO_PORTS_PER_SOCKET]; // MRL Sensor Present - Slot Capabilities (D0-10 / F0 / R0xA4 / B2)
- UINT8 SLOTPCP[MAX_IIO_PORTS_PER_SOCKET]; // Power Controller Present - Slot Capabilities (D0-10 / F0 / R0xA4 /B1)
- UINT8 SLOTABP[MAX_IIO_PORTS_PER_SOCKET]; // Attention Button Present - Slot Capabilities (D0-10 / F0 / R0xA4 / B0)
- UINT8 SLOTIMP[MAX_IIO_PORTS_PER_SOCKET];
- UINT8 SLOTSPLS[MAX_IIO_PORTS_PER_SOCKET];
- UINT8 SLOTSPLV[MAX_IIO_PORTS_PER_SOCKET];
- UINT16 SLOTPSP[MAX_IIO_PORTS_PER_SOCKET];
- BOOLEAN VppEnabled[MAX_IIO_PORTS_PER_SOCKET]; // 00 -- Disable, 01 -- Enable //no setup option defined- aj
- UINT8 VppPort[MAX_IIO_PORTS_PER_SOCKET]; // 00 -- Port 0, 01 -- Port 1 //no setup option defined- aj
- UINT8 VppAddress[MAX_IIO_PORTS_PER_SOCKET]; // 01-07 for SMBUS address of Vpp //no setup option defined- aj
- UINT8 MuxAddress[MAX_IIO_PORTS_PER_SOCKET]; // SMBUS address of MUX //no setup option defined
- UINT8 ChannelID[MAX_IIO_PORTS_PER_SOCKET]; // 00 -- channel 0, 01 -- channel 1 //no setup option defined
-
- UINT8 PciePortEnable[MAX_IIO_PORTS_PER_SOCKET];
- UINT8 PEXPHIDE[MAX_IIO_PORTS_PER_SOCKET]; // Hide any of the DMI or PCIE devices - SKT 0,1,2,3; Device 0-10 PRD
- UINT8 HidePEXPMenu[MAX_IIO_PORTS_PER_SOCKET]; // to suppress /display the PCIe port menu
- UINT8 PciePortOwnership[MAX_IIO_PORTS_PER_SOCKET];
- UINT8 RetimerConnectCount[MAX_IIO_PORTS_PER_SOCKET];
- UINT8 ConfigIOU[MAX_IOU_PER_SOCKET]; // 00-x4x4x4x4, 01-x4x4x8NA, 02-x8NAx4x4, 03-x8NAx8NA, 04-x16 (P1p2p3p4)
- UINT8 PcieHotPlugOnPort[MAX_IIO_PORTS_PER_SOCKET]; // Manual override of hotplug for port
- UINT8 VMDEnabled[MAX_VMD_STACKS_PER_SOCKET];
- UINT8 VMDPortEnable[MAX_IIO_PORTS_PER_SOCKET];
- UINT8 VMDHotPlugEnable[MAX_VMD_STACKS_PER_SOCKET];
- UINT8 PcieMaxPayload[MAX_IIO_PORTS_PER_SOCKET];
- UINT8 PciePortLinkSpeed[MAX_IIO_PORTS_PER_SOCKET]; // auto - 0(default); gen1 -1; gen2 -2; ... gen5 -5.
- UINT8 DfxDnTxPresetGen3[MAX_IIO_PORTS_PER_SOCKET]; //auto - 0xFF(default); p0 - 0; p1 -1; ... p9 - 9.
- UINT8 PcieGlobalAspm;
- UINT8 PcieMaxReadRequestSize;
-} UPD_IIO_PCIE_PORT_CONFIG;
-
-typedef struct {
- UINT8 Address;
- UINT8 Port;
- UINT8 MuxAddress;
- UINT8 MuxChannel;
-} IIO_VPP_CFG;
-
-typedef struct {
- UINT8 Eip : 1; // Electromechanical Interlock Present - Slot Capabilities (D0-10 / F0 / R0xA4 / B17)
- UINT8 HotPlugSurprise : 1; // Hot Plug surprise supported - Slot Capabilities (D0-10 / F0 / R0xA4 / B5)
- UINT8 PowerInd : 1; // Power Indicator Present - Slot Capabilities (D0-10 / F0 / R0xA4 / B4)
- UINT8 AttentionInd : 1; // Attention Inductor Present - Slot Capabilities (D0-10 / F0 / R0xA4 / B3)
- UINT8 PowerCtrl : 1; // Power Controller Present - Slot Capabilities (D0-10 / F0 / R0xA4 / B1)
- UINT8 AttentionBtn : 1; // Attention Button Present - Slot Capabilities (D0-10 / F0 / R0xA4 / B0)
-
- UINT8 Reserved : 2;
-} IIO_SLOT_CFG;
-
-typedef struct {
- UINT8 Address; // SMBUS address of IO expander which provides NPEM
- UINT8 Bank; // Port or bank on IoExpander which provides NPEM
- UINT8 MuxAddress; // SMBUS address of MUX used to access NPEM
- UINT8 MuxChannel; // Channel of the MUX used to access NPEM
-} IIO_NPEM_CFG;
-
-typedef struct {
-
- IIO_VPP_CFG Vpp;
- IIO_NPEM_CFG Npem;
- IIO_SLOT_CFG Slot;
-
- UINT8 VppEnabled :1;
- UINT8 VppExpType :1;
- UINT8 NpemSupported :1;
-
- UINT8 SlotImplemented :1;
- UINT8 Retimer1Present :1;
- UINT8 Retimer2Present :1;
- UINT8 CommonClock :1;
- UINT8 SRIS :1;
-
- UINT16 HotPlug : 1; // If hotplug is supported on slot connected to this port
- UINT16 MrlSensorPresent : 1; // If MRL is present on slot connected to this port
- UINT16 SlotPowerLimitScale : 2; // Slot Power Scale for slot connected to this port
- UINT16 SlotPowerLimitValue : 12; // Slot Power Value for slot connected to this port
-
- UINT16 PhysicalSlotNumber; // Slot number for slot connected to this port
-} IIO_BOARD_SETTINGS_PER_PORT;
-
-typedef struct {
struct {
UINT8 Segment; ///< Remember segment, if it changes reset everything
UINT8 StackPciBusPoolSize[MAX_LOGIC_IIO_STACK]; ///< Number of bus numbers needed for IIO stack
@@ -182,7 +152,6 @@ typedef struct {
} PCI_BASE_LIMITS;
typedef struct {
- PCI_BASE_LIMITS SocketLimits; ///< Base and Limit of all PCIe resources for the socket
PCI_BASE_LIMITS StackLimits[MAX_LOGIC_IIO_STACK]; ///< Base and Limit of all PCIe resources for each stack of the socket
CXL11_LIMITS CxlStackReq[MAX_LOGIC_IIO_STACK]; ///< Base and Limit of CXL11 resources for each stack of the socket
} SOCKET_PCI_BASE_LIMITS;
@@ -211,37 +180,62 @@ typedef struct {
SOCKET_PCI_BASE_LIMITS Socket[MAX_SOCKET]; ///< Base and limit of all PCIe resources for each socket
} SYSTEM_PCI_BASE_LIMITS;
-#define IIO_BIFURCATE_xxxxxxxx 0xFE
-#define IIO_BIFURCATE_x4x4x4x4 0x0
-#define IIO_BIFURCATE_x4x4xxx8 0x1
-#define IIO_BIFURCATE_xxx8x4x4 0x2
-#define IIO_BIFURCATE_xxx8xxx8 0x3
-#define IIO_BIFURCATE_xxxxxx16 0x4
-#define IIO_BIFURCATE_x2x2x4x8 0x5
-#define IIO_BIFURCATE_x4x2x2x8 0x6
-#define IIO_BIFURCATE_x8x2x2x4 0x7
-#define IIO_BIFURCATE_x8x4x2x2 0x8
-#define IIO_BIFURCATE_x2x2x4x4x4 0x9
-#define IIO_BIFURCATE_x4x2x2x4x4 0xA
-#define IIO_BIFURCATE_x4x4x2x2x4 0xB
-#define IIO_BIFURCATE_x4x4x4x2x2 0xC
-#define IIO_BIFURCATE_x2x2x2x2x8 0xD
-#define IIO_BIFURCATE_x8x2x2x2x2 0xE
-#define IIO_BIFURCATE_x2x2x2x2x4x4 0xF
-#define IIO_BIFURCATE_x2x2x4x2x2x4 0x10
-#define IIO_BIFURCATE_x2x2x4x4x2x2 0x11
-#define IIO_BIFURCATE_x4x2x2x2x2x4 0x12
-#define IIO_BIFURCATE_x4x2x2x4x2x2 0x13
-#define IIO_BIFURCATE_x4x4x2x2x2x2 0x14
-#define IIO_BIFURCATE_x2x2x2x2x2x2x4 0x15
-#define IIO_BIFURCATE_x2x2x2x2x4x2x2 0x16
-#define IIO_BIFURCATE_x2x2x4x2x2x2x2 0x17
-#define IIO_BIFURCATE_x4x2x2x2x2x2x2 0x18
-#define IIO_BIFURCATE_x2x2x2x2x2x2x2x2 0x19
-#define IIO_BIFURCATE_AUTO 0xFF
+typedef struct {
+ UINT8 Address; // SMBUS address of IO expander which provides VPP register
+ UINT8 Port; // Port or bank on IoExpander which provides VPP register
+ UINT8 MuxAddress; // SMBUS address of MUX used to access VPP
+ UINT8 MuxChannel; // Channel of the MUX used to access VPP
+} IIO_VPP_CFG;
-#define C1_UID 2
-#define C2_UID 3
+typedef struct {
+ UINT8 Address; // SMBUS address of IO expander which provides NPEM
+ UINT8 Bank; // Port or bank on IoExpander which provides NPEM
+ UINT8 MuxAddress; // SMBUS address of MUX used to access NPEM
+ UINT8 MuxChannel; // Channel of the MUX used to access NPEM
+} IIO_NPEM_CFG;
+
+typedef struct {
+ UINT8 Eip : 1; // Electromechanical Interlock Present - Slot Capabilities (D0-10 / F0 / R0xA4 / B17)
+ UINT8 HotPlugSurprise : 1; // Hot Plug surprise supported - Slot Capabilities (D0-10 / F0 / R0xA4 / B5)
+ UINT8 PowerInd : 1; // Power Indicator Present - Slot Capabilities (D0-10 / F0 / R0xA4 / B4)
+ UINT8 AttentionInd : 1; // Attention Inductor Present - Slot Capabilities (D0-10 / F0 / R0xA4 / B3)
+ UINT8 PowerCtrl : 1; // Power Controller Present - Slot Capabilities (D0-10 / F0 / R0xA4 / B1)
+ UINT8 AttentionBtn : 1; // Attention Button Present - Slot Capabilities (D0-10 / F0 / R0xA4 / B0)
+
+ UINT8 Reserved : 2;
+} IIO_SLOT_CFG;
+
+typedef struct {
+ //
+ // Below is an excerpt from structure PCIE_PORT_ENTERPRISE_CONFIG
+ //
+ IIO_VPP_CFG Vpp;
+ IIO_NPEM_CFG Npem;
+ IIO_SLOT_CFG Slot;
+
+ UINT8 VppEnabled :1; // If VPP is supported on given port
+ UINT8 VppExpType :1; // IO Expander type used for VPP (see IIO_VPP_EXPANDER_TYPE for values definitions)
+ UINT8 NpemSupported :1; // If NPEM is supported on given port
+
+ //
+ // Below is an excerpt IIO_PCIE_PORT_CONFIG
+ //
+ UINT8 SlotImplemented :1;
+ UINT8 Retimer1Present :1;
+ UINT8 Retimer2Present :1;
+ UINT8 CommonClock :1;
+ UINT8 SRIS :1;
+
+ //
+ // Below is an excerpt from structure PCIE_PORT_COMMON_CONFIG
+ //
+ UINT16 HotPlug : 1; // If hotplug is supported on slot connected to this port
+ UINT16 MrlSensorPresent : 1; // If MRL is present on slot connected to this port
+ UINT16 SlotPowerLimitScale : 2; // Slot Power Scale for slot connected to this port
+ UINT16 SlotPowerLimitValue : 12; // Slot Power Value for slot connected to this port
+
+ UINT16 PhysicalSlotNumber; // Slot number for slot connected to this port
+} IIO_BOARD_SETTINGS_PER_PORT;
typedef enum {
IioBifurcation_UNKNOWN = IIO_BIFURCATE_xxxxxxxx,
@@ -271,6 +265,13 @@ typedef enum {
IioBifurcation_x2x2x4x2x2x2x2 = IIO_BIFURCATE_x2x2x4x2x2x2x2,
IioBifurcation_x4x2x2x2x2x2x2 = IIO_BIFURCATE_x4x2x2x2x2x2x2,
IioBifurcation_x2x2x2x2x2x2x2x2 = IIO_BIFURCATE_x2x2x2x2x2x2x2x2,
+
+ IioBifurcation_xxxxxxx4 = IIO_BIFURCATE_xxxxxxx4,
+ IioBifurcation_xxx2xxx2 = IIO_BIFURCATE_xxx2xxx2,
+ IioBifurcation_x1x1xxx2 = IIO_BIFURCATE_x1x1xxx2,
+ IioBifurcation_xxx2x1x1 = IIO_BIFURCATE_xxx2x1x1,
+ IioBifurcation_x1x1x1x1 = IIO_BIFURCATE_x1x1x1x1,
+
IioBifurcation_Auto = IIO_BIFURCATE_AUTO
} IIO_BIFURCATION;
@@ -286,6 +287,9 @@ typedef struct {
IIO_BOARD_SETTINGS_PER_PE Pe[MAX_IIO_PCIE_PER_SOCKET];
} IIO_BOARD_SETTINGS_PER_SOCKET;
+//
+// HOB to store board settings data created based on UBA data
+//
typedef struct {
IIO_BOARD_SETTINGS_PER_SOCKET Socket[MAX_SOCKET];
} IIO_BOARD_SETTINGS_HOB;
diff --git a/src/vendorcode/intel/fsp/fsp2_0/graniterapids/ap/IioUniversalDataHob.h b/src/vendorcode/intel/fsp/fsp2_0/graniterapids/ap/IioUniversalDataHob.h
index 6b4fa356d8..3921e38f56 100644
--- a/src/vendorcode/intel/fsp/fsp2_0/graniterapids/ap/IioUniversalDataHob.h
+++ b/src/vendorcode/intel/fsp/fsp2_0/graniterapids/ap/IioUniversalDataHob.h
@@ -1,6 +1,6 @@
/** @file
-Copyright (c) 2019-2023, Intel Corporation. All rights reserved.<BR>
+Copyright (c) 2024, Intel Corporation. All rights reserved.<BR>
Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met:
@@ -26,108 +26,69 @@ are permitted provided that the following conditions are met:
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
THE POSSIBILITY OF SUCH DAMAGE.
-**/
+ This file is automatically generated. Please do NOT modify !!!
+**/
#ifndef _IIO_UNIVERSAL_DATA_HOB_H_
#define _IIO_UNIVERSAL_DATA_HOB_H_
-#define DINO_UID 0
-#define PC_UID 1
-#define UB_UID 4
-#define CPM0_UID 5
-#define HQM0_UID 6
-
-#define IIO_UNIVERSAL_DATA_GUID { \
- 0xa1, 0x96, 0xf3, 0x7f, 0x7d, 0xee, 0x1e, 0x43, \
- 0xba, 0x53, 0x8f, 0xCa, 0x12, 0x7c, 0x44, 0xc0 \
-}
+#define IIO_UNIVERSAL_DATA_GUID { 0x7FF396A1, 0xEE7D, 0x431E, { 0xBA, 0x53, 0x8F, 0xCA, 0x12, 0x7C, 0x44, 0xC0 } }
#ifndef MAX_SOCKET
-#define MAX_SOCKET 4
+#define MAX_SOCKET 2
#endif
#if (MAX_SOCKET == 1)
- #define MAX_FW_KTI_PORTS 4 // Maximum KTI PORTS to be used in structure definition.
+ #define MAX_FW_KTI_PORTS 4 // Maximum KTI PORTS to be used in structure definition.
#else
- #define MAX_FW_KTI_PORTS 6 // Maximum KTI PORTS to be used in structure definition
+ #define MAX_FW_KTI_PORTS 6 // Maximum KTI PORTS to be used in structure definition
#endif //(MAX_SOCKET == 1)
-#ifndef MAX_IMC
-#define MAX_IMC 4 // Maximum memory controllers per socket
-#endif
-
-#ifndef MAX_MC_CH
-#define MAX_MC_CH 2 // Max number of channels per MC (3 for EP)
-#endif
-
-#ifndef MAX_CH
-#define MAX_CH ((MAX_IMC)*(MAX_MC_CH)) // Max channels per socket (worst case EP * EX combination = 16)
-#endif
-
-#define MC_MAX_NODE (MAX_SOCKET * MAX_IMC) // Max number of memory nodes
-
-#ifndef MAX_IIO_PORTS_PER_SOCKET
-#define MAX_IIO_PORTS_PER_SOCKET 57
-#endif
-
-#ifndef MAX_IIO_PORTS_PER_STACK
-#define MAX_IIO_PORTS_PER_STACK 8
-#endif
-
+#define MAX_LOGIC_IIO_STACK 18
#ifndef MAX_IIO_PCIROOTS_PER_STACK
-#define MAX_IIO_PCIROOTS_PER_STACK 1
-#endif
-
-#ifndef MAX_IIO_STACK
-#define MAX_IIO_STACK 12
+#define MAX_IIO_PCIROOTS_PER_STACK 3 // PCI roots that can be created for a stack
#endif
-#define MAX_LOGIC_IIO_STACK 14
-
-#define MAX_COMPUTE_DIE 1
-#define MAX_CHA_MAP (2 * MAX_COMPUTE_DIE) //for GNR & SRF only, each compute die has its own CAPID6 & CAPID7 (i.e. 2 CAPID registers)
-
-#pragma pack(1)
-
-typedef struct _UINT64_STRUCT {
- UINT32 lo;
- UINT32 hi;
-} UINT64_STRUCT, *PUINT64_STRUCT;
+#define MAX_COMPUTE_DIE 3
+#define MAX_CHA_MAP (2 * MAX_COMPUTE_DIE) //for GNR & SRF only, each compute die has its own CAPID6 & CAPID7 (i.e. 2 CAPID registers)
-#ifndef MMIO_BARS_ENUM
-#define MMIO_BARS_ENUM
-typedef enum {
- TYPE_SCF_BAR = 0,
- TYPE_PCU_BAR,
- TYPE_MEM_BAR0,
- TYPE_MEM_BAR1,
- TYPE_MEM_BAR2,
- TYPE_MEM_BAR3,
- TYPE_MEM_BAR4,
- TYPE_MEM_BAR5,
- TYPE_MEM_BAR6,
- TYPE_MEM_BAR7,
- TYPE_SBREG_BAR,
- TYPE_MAX_MMIO_BAR
-} MMIO_BARS;
+#ifndef MAX_MESSAGE_LENGTH
+#define MAX_MESSAGE_LENGTH 500
#endif
-typedef struct {
- UINT8 Device;
- UINT8 Function;
-} IIO_PORT_INFO;
+#define DINO_UID 0
+#define PC_UID 1
+#define UB_UID 4
+#define CPM0_UID 5
+#define HQM0_UID 6
-typedef struct {
- UINT8 Major;
- UINT8 Minor;
- UINT8 Revision;
- UINT16 BuildNumber;
-} RC_VERSION;
+typedef enum {
+ IioStack0 = 0,
+ IioStack1 = 1,
+ IioStack2 = 2,
+ IioStack3 = 3,
+ IioStack4 = 4,
+ IioStack5 = 5,
+ IioStack6 = 6,
+ IioStack7 = 7,
+ IioStack8 = 8,
+ IioStack9 = 9,
+ IioStack10 = 10,
+ IioStack11 = 11,
+ IioStack12 = 12,
+ IioStack13 = 13,
+ IioStack14 = 14,
+ IioStack15 = 15,
+ IioStack16 = 16,
+ IioStackUnknown = 0xFF
+} IIO_STACK;
//--------------------------------------------------------------------------------------//
// Structure definitions for Universal Data Store (UDS)
//--------------------------------------------------------------------------------------//
+#pragma pack(1)
+
typedef struct {
UINT8 Valid; // TRUE, if the link is valid (i.e reached normal operation)
UINT8 PeerSocId; // Socket ID
@@ -137,52 +98,16 @@ typedef struct {
typedef struct {
UINT8 Valid;
- UINT32 MmioBar[TYPE_MAX_MMIO_BAR];
UINT8 PcieSegment;
- UINT64_STRUCT SegMmcfgBase;
+ UINT64 SegMmcfgBase;
UINT32 StackPresentBitmap;
- UINT16 CxlPresentBitmap;
- UINT16 Cxl20CapableBitmap;
- UINT8 TotM3Kti;
+ UINT16 Cxl1p1PresentBitmap; // Bitmap of stacks where CXL 1p1 is connected
+ UINT16 CxlCapableBitmap; // Bitmap of stacks capable of CXL
UINT8 TotCha;
- UINT32 ChaList[MAX_CHA_MAP];
UINT32 SocId;
QPI_PEER_DATA PeerInfo[MAX_FW_KTI_PORTS]; // QPI LEP info
} QPI_CPU_DATA;
-typedef struct {
- UINT8 Valid;
- UINT8 SocId;
- QPI_PEER_DATA PeerInfo[MAX_SOCKET]; // QPI LEP info
-} QPI_IIO_DATA;
-
-typedef struct {
- IIO_PORT_INFO PortInfo[MAX_IIO_PORTS_PER_SOCKET];
-} IIO_DMI_PCIE_INFO;
-
-typedef struct _STACK_RES {
- UINT8 Personality;
- UINT8 BusBase; // Base of Bus configured for this stack
- UINT8 BusLimit; // Limit of Bus configured for this stack
- UINT16 IoBase; // Base of IO configured for this stack
- UINT16 IoLimit; // Limit of IO configured for this stack
- UINT32 IoApicBase;
- UINT32 IoApicLimit;
- UINT32 Mmio32Base; // Base of low MMIO configured for this stack in memory map
- UINT32 Mmio32Limit; // Limit of low MMIO configured for this stack in memory map
- UINT64 Mmio64Base; // Base of high MMIO configured for this stack in memory map
- UINT64 Mmio64Limit; // Limit of high MMIO configured for this stack in memory map
- UINT8 PciResourceBusBase; // Base of Bus resource available for PCI devices
- UINT8 PciResourceBusLimit; // Limit of Bus resource available for PCI devices
- UINT16 PciResourceIoBase; // Base of IO resource available for PCI devices
- UINT16 PciResourceIoLimit; // Limit of IO resource available for PCI devices
- UINT32 PciResourceMem32Base; // Base of low MMIO resource available for PCI devices
- UINT32 PciResourceMem32Limit; // Limit of low MMIO resource available for PCI devices
- UINT64 PciResourceMem64Base; // Base of high MMIO resource available for PCI devices
- UINT64 PciResourceMem64Limit; // Limit of high MMIO resource available for PCI devices
- UINT32 VtdBarAddress; // NOTE: Obsolete, not used in next gen platforms
-} STACK_RES;
-
/**
* PCI resources that establish one PCI hierarchy for PCI Enumerator.
*/
@@ -198,122 +123,87 @@ typedef struct {
UINT64 Mmio64Limit; // Limit of high MMIO resources available for PCI devices
} UDS_PCIROOT_RES;
+/**
+ * This structore keeps resources configured in Host I/O Processor (HIOP) for one stack.
+ * One HIOP may produce more than one PCI hierarchy, these are in PciRoot[] table.
+ */
typedef struct {
UINT8 Personality;
UINT8 PciRootBridgeNum; // Number of valid entries in PciRoot[] table
+ UINT8 Segment; // Segment for this stack
UINT8 BusBase; // Base of Bus configured for this stack
UINT8 BusLimit; // Limit of Bus configured for this stack
+ UINT8 Reserved[3]; // Reserved for alignment
UINT16 IoBase; // Base of IO configured for this stack
UINT16 IoLimit; // Limit of IO configured for this stack
- UINT32 IoApicBase;
- UINT32 IoApicLimit;
UINT32 Mmio32Base; // Base of low MMIO configured for this stack in memory map
UINT32 Mmio32Limit; // Limit of low MMIO configured for this stack in memory map
UINT32 Mmio32MinSize; // The size of MMIO32 needed in PEI that must be preserved in rebalance
UINT64 Mmio64Base; // Base of high MMIO configured for this stack in memory map
UINT64 Mmio64Limit; // Limit of high MMIO configured for this stack in memory map
- UDS_PCIROOT_RES PciRoot[MAX_IIO_PCIROOTS_PER_STACK];
UINT64 VtbarAddress; // VT-d Base Address
- UINT64 ChbcrBarAddress;
+ UINT64 ChbcrBarAddress; // CXL Host Bridge Component Registers (CHBCR) region
+ UDS_PCIROOT_RES PciRoot[MAX_IIO_PCIROOTS_PER_STACK];
} UDS_STACK_RES;
+/**
+ * This structore keeps resource ranges configured in one socket. It contains a table of IO stacks provided by
+ // the socket. The stacks are also groupded by IO dies, but dies are not reflected in UDS.
+ */
typedef struct {
UINT8 Valid;
- UINT8 SocketID; // Socket ID of the IIO (0..3)
- UINT8 BusBase;
- UINT8 BusLimit;
+ UINT8 SocketID; // Socket ID of the IIO (0..3)
UINT16 IoBase;
UINT16 IoLimit;
- UINT32 IoApicBase;
- UINT32 IoApicLimit;
- UINT32 Mmio32Base; // Base of low MMIO configured for this socket in memory map
- UINT32 Mmio32Limit; // Limit of low MMIO configured for this socket in memory map
- UINT64 Mmio64Base; // Base of high MMIO configured for this socket in memory map
- UINT64 Mmio64Limit; // Limit of high MMIO configured for this socket in memory map
+ UINT32 Mmio32Base; // Base of low MMIO configured for this socket in memory map
+ UINT32 Mmio32Limit; // Limit of low MMIO configured for this socket in memory map
+ UINT64 Mmio64Base; // Base of high MMIO configured for this socket in memory map
+ UINT64 Mmio64Limit; // Limit of high MMIO configured for this socket in memory map
UDS_STACK_RES StackRes[MAX_LOGIC_IIO_STACK];
} UDS_SOCKET_RES;
+/**
+ * This structore keeps resource ranges configured in whole system.
+ */
typedef struct {
- UINT8 Valid;
- UINT8 SocketID; // Socket ID of the IIO (0..3)
- UINT8 BusBase;
- UINT8 BusLimit;
- UINT16 PciResourceIoBase;
- UINT16 PciResourceIoLimit;
- UINT32 IoApicBase;
- UINT32 IoApicLimit;
- UINT32 Mmio32Base; // Base of low MMIO configured for this socket in memory map
- UINT32 Mmio32Limit; // Limit of low MMIO configured for this socket in memory map
- UINT64 Mmio64Base; // Base of high MMIO configured for this socket in memory map
- UINT64 Mmio64Limit; // Limit of high MMIO configured for this socket in memory map
- UDS_STACK_RES StackRes[MAX_LOGIC_IIO_STACK];
- IIO_DMI_PCIE_INFO PcieInfo; // NOTE: Obsolete, not used in next gen platforms
-} IIO_RESOURCE_INSTANCE;
+ UINT16 SystemIoBase; // System IO Base
+ UINT16 SystemIoLimit; // System IO Limit
+ UINT32 SystemIoApicBase; // Legacy IOAPIC base address, one in the system
+ UINT32 SystemIoApicLimit;
+ UINT32 SystemMmio32Base; // System low MMIO base
+ UINT32 SystemMmio32Limit; // System low MMIO limit
+ UINT64 SystemMmio64Base; // System high MMIO Base
+ UINT64 SystemMmio64Limit; // System high MMIO Limit
+ QPI_CPU_DATA CpuQpiInfo[MAX_SOCKET]; // QPI related info per CPU
+ UINT64 PciExpressBase; // PCI Config Space base address
+ UINT64 PciExpressSize; // PCI Config Space size
+ UDS_SOCKET_RES IIO_resource[MAX_SOCKET];
+ UINT32 packageBspApicID[MAX_SOCKET]; // This data array is valid only for SBSP, not for non-SBSP CPUs. <AS> for CpuSv
+ UINT16 IoGranularity;
+ UINT32 Mmio32Granularity;
+ UINT64 Mmio64Granularity;
+ UINT32 UboxMmioSize;
+ UINT32 MemTolm;
+ UINT32 MemTsegSize;
+ UINT32 MaxAddressBits;
+} PLATFORM_DATA;
typedef struct {
- UINT16 PlatGlobalIoBase; // Global IO Base
- UINT16 PlatGlobalIoLimit; // Global IO Limit
- UINT32 PlatGlobalMmio32Base; // Global Mmiol base
- UINT32 PlatGlobalMmio32Limit; // Global Mmiol limit
- UINT64 PlatGlobalMmio64Base; // Global Mmioh Base [43:0]
- UINT64 PlatGlobalMmio64Limit; // Global Mmioh Limit [43:0]
- QPI_CPU_DATA CpuQpiInfo[MAX_SOCKET]; // QPI related info per CPU
- QPI_IIO_DATA IioQpiInfo[MAX_SOCKET]; // QPI related info per IIO
- UINT16 SystemIoBase; // System IO Base
- UINT16 SystemIoLimit; // System IO Limit
- UINT32 SystemMmio32Base; // System low MMIO base
- UINT32 SystemMmio32Limit;
- UINT32 Mmio32Granularity;
- UINT64 SystemMmio64Base; // System high MMIO Base
- UINT64 SystemMmio64Limit; // System high MMIO Limit
- UINT64 Mmio64Granularity;
- UINT32 MemTsegSize;
- UINT64 PciExpressBase;
- UINT32 PciExpressSize;
- UINT32 MemTolm;
- UDS_SOCKET_RES IIO_resource[MAX_SOCKET];
- UINT8 numofIIO;
- UINT8 MaxBusNumber;
- UINT32 packageBspApicID[MAX_SOCKET]; // This data array is valid only for SBSP, not for non-SBSP CPUs. <AS> for CpuSv
- UINT8 EVMode;
- UINT8 SkuPersonality[MAX_SOCKET];
- UINT16 IoGranularity;
- UINT32 MmiolGranularity;
- UINT64_STRUCT MmiohGranularity;
- UINT8 RemoteRequestThreshold; //5370389
- UINT32 UboxMmioSize;
- UINT32 MaxAddressBits;
-} PLATFORM_DATA;
+ BOOLEAN FailFlag;
+ CHAR16 Message[MAX_MESSAGE_LENGTH];
+} REBALANCE_FAIL_INFO;
typedef struct {
- UINT8 CurrentUpiiLinkSpeed;// Current programmed UPI Link speed (Slow/Full speed mode)
+ UINT8 CurrentUpiiLinkSpeed; // Current programmed UPI Link speed (Slow/Full speed mode)
UINT8 CurrentUpiLinkFrequency; // Current requested UPI Link frequency (in GT)
UINT8 OutKtiCpuSktHotPlugEn; // 0 - Disabled, 1 - Enabled for PM X2APIC
- UINT32 OutKtiPerLinkL1En[MAX_SOCKET]; // output kti link enabled status for PM
- UINT8 IsocEnable;
- UINT32 meRequestedSize; // Size of the memory range requested by ME FW, in MB
- UINT8 DmiVc1;
- UINT8 DmiVcm;
- UINT32 CpuPCPSInfo;
- UINT8 cpuSubType;
+ UINT32 meRequestedSize; // Size of the memory range requested by ME FW, in MB
UINT8 SystemRasType;
- UINT8 numCpus; // 1,..4. Total number of CPU packages installed and detected (1..4)by QPI RC
- UINT16 tolmLimit;
- RC_VERSION RcVersion;
- BOOLEAN MsrTraceEnable;
- UINT8 DdrXoverMode; // DDR 2.2 Mode
- // For RAS
- UINT8 bootMode;
- UINT8 OutClusterOnDieEn; // Whether RC enabled COD support
+ UINT8 numCpus; // 1,..4. Total number of CPU packages installed and detected (1..4)by QPI RC
UINT8 OutSncEn;
UINT8 OutNumOfCluster;
- UINT8 imcEnabled[MAX_SOCKET][MAX_IMC];
- UINT16 LlcSizeReg;
- UINT8 chEnabled[MAX_SOCKET][MAX_CH];
- UINT8 memNode[MC_MAX_NODE];
- UINT8 IoDcMode;
- UINT8 DfxRstCplBitsEn;
UINT8 BitsUsed; //For 5 Level Paging
+ REBALANCE_FAIL_INFO RebalanceFailInfo;
} SYSTEM_STATUS;
typedef struct {
@@ -322,32 +212,7 @@ typedef struct {
UINT32 OemValue;
} IIO_UDS;
-typedef enum {
- //for ICX
- IioStack0 = 0, // DmiAsPcie
- IioStack1 = 1, // IOU0
- IioStack2 = 2, // IOU1
- IioStack3 = 3, // IOU2
- IioStack4 = 4, // IOU3
- IioStack5 = 5, // IOU4
- //for SPR
- IioStack6 = 6, // IOU5
- IioStack7 = 7,
- IioStack8 = 8,
- IioStack9 = 9,
- IioStack10 = 10,
- IioStack11 = 11,
- //for later SOC
- IioStack12 = 12,
- IioStack13 = 13,
- IioStack14 = 14,
- IioStack15 = 15,
- IioStack16 = 16,
- IioStack17 = 17,
- IioStack18 = 18,
- IioStackUnknown = 0xFF
-} IIO_STACK;
-
#pragma pack()
-#endif //#ifndef _IIO_UNIVERSAL_DATA_HOB_H_
+#endif // _IIO_UNIVERSAL_DATA_HOB_H_
+
diff --git a/src/vendorcode/intel/fsp/fsp2_0/graniterapids/ap/MemoryMapDataHob.h b/src/vendorcode/intel/fsp/fsp2_0/graniterapids/ap/MemoryMapDataHob.h
index ad3eec3b3d..9300793103 100644
--- a/src/vendorcode/intel/fsp/fsp2_0/graniterapids/ap/MemoryMapDataHob.h
+++ b/src/vendorcode/intel/fsp/fsp2_0/graniterapids/ap/MemoryMapDataHob.h
@@ -1,6 +1,6 @@
/** @file
-Copyright (c) 2019-2023, Intel Corporation. All rights reserved.<BR>
+Copyright (c) 2024, Intel Corporation. All rights reserved.<BR>
Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met:
@@ -26,6 +26,8 @@ are permitted provided that the following conditions are met:
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
THE POSSIBILITY OF SUCH DAMAGE.
+ This file is automatically generated. Please do NOT modify !!!
+
**/
#ifndef _MEMORY_MAP_DATA_HOB_H_
@@ -34,37 +36,51 @@ are permitted provided that the following conditions are met:
#define MEMORY_MAP_HOB_GUID { 0xf8870015, 0x6994, 0x4b98, { 0x95, 0xa2, 0xbd, 0x56, 0xda, 0x91, 0xc0, 0x7f } }
#ifndef MAX_SOCKET
-#define MAX_SOCKET 4
+#define MAX_SOCKET 2
#endif
#ifndef MAX_IMC
-#define MAX_IMC 4 // Maximum memory controllers per socket
+#define MAX_IMC 12 // Maximum memory controllers per socket
#endif
#ifndef MAX_MC_CH
-#define MAX_MC_CH 2 // Max number of channels per MC (3 for EP)
+#define MAX_MC_CH 1 // Max number of channels per MC (3 for EP)
#endif
#ifndef MAX_CH
-#define MAX_CH ((MAX_IMC)*(MAX_MC_CH)) // Max channels per socket (worst case EP * EX combination = 16)
+#define MAX_CH ((MAX_IMC)*(MAX_MC_CH)) // Max channels per socket (worst case EP * EX combination = 16)
+#endif
+
+#ifndef MAX_CXL_HOST_BRIDGES
+#define MAX_CXL_HOST_BRIDGES 0x6 // Maximum number of CXL host bridges per socket.
#endif
-#define MAX_CXL_AMT 0
+#ifndef MAX_CXL_HOST_BRIDGE_WAYS
+#define MAX_CXL_HOST_BRIDGE_WAYS 0x4 // Maximum interleave ways of CXL host bridges per socket.
+#endif
+
+//
+// Macro definitions for abstracted memory decoding target. The data structure is designed to
+// iterate iMC and CXL host bridge host decoded memory in an unified way.
+// definition for GNRSRF/GNRD/GRR
+//
+#define MAX_CXL_AMT MAX_CXL_HOST_BRIDGES // Max number of unique interleaves for NGN DIMM
+
#ifndef MAX_UNIQUE_NGN_DIMM_INTERLEAVE
-#define MAX_UNIQUE_NGN_DIMM_INTERLEAVE 2 // Max number of unique interleaves for NGN DIMM
+#define MAX_UNIQUE_NGN_DIMM_INTERLEAVE 2 // Max number of unique interleaves for NGN DIMM
#endif
#ifndef MAX_SPARE_RANK
-#define MAX_SPARE_RANK 2 // Max number of spare ranks in a channel
+#define MAX_SPARE_RANK 2 // Max number of spare ranks in a channel
#endif
#ifndef MAX_HBM_IO
-#define MAX_HBM_IO 4
+#define MAX_HBM_IO 4
#endif
#ifndef MAX_DIMM
-#define MAX_DIMM 2 // Max DIMM per channel
+#define MAX_DIMM 2 // Max DIMM per channel
#endif
#ifndef MAX_RANK_DIMM
@@ -72,7 +88,7 @@ are permitted provided that the following conditions are met:
#endif
#ifndef MAX_DRAM_CLUSTERS
-#define MAX_DRAM_CLUSTERS 4
+#define MAX_DRAM_CLUSTERS 6
#endif
#ifndef MAX_SAD_RULES
@@ -83,17 +99,17 @@ are permitted provided that the following conditions are met:
#define MAX_FPGA_REMOTE_SAD_RULES 2 // Maximum FPGA sockets exists on ICX platform
#endif
-#define MAX_SI_SOCKET 8 // Maximum silicon supported socket number
+#define MAX_SI_SOCKET 8 // Maximum silicon supported socket number
-#define MAX_AMT (MAX_IMC+MAX_CXL_AMT) // Max abstract memory target per socket
-#define AMT_MAX_NODE ((MAX_AMT)*(MAX_SOCKET)) // Max abstract memory target for all sockets
+#define MAX_AMT (MAX_IMC+MAX_CXL_AMT) // Max abstract memory target per socket
+#define AMT_MAX_NODE ((MAX_AMT)*(MAX_SOCKET)) // Max abstract memory target for all sockets
// NGN
-#define NGN_MAX_SERIALNUMBER_STRLEN 4
-#define NGN_MAX_PARTNUMBER_STRLEN 30
-#define NGN_FW_VER_LEN 4
-#define NGN_LOG_TYPE_NUM 2
-#define NGN_LOG_LEVEL_NUM 2
+#define NGN_MAX_SERIALNUMBER_STRLEN 4
+#define NGN_MAX_PARTNUMBER_STRLEN 30
+#define NGN_FW_VER_LEN 4
+#define NGN_LOG_TYPE_NUM 2
+#define NGN_LOG_LEVEL_NUM 2
/**
* Memory channel index conversion macros.
@@ -115,25 +131,14 @@ are permitted provided that the following conditions are met:
#define MEM_KBYTES_TO_64MB(SizeKB) ((SizeKB) >> 16)
#define MEM_MBYTES_TO_64MB(SizeMB) ((SizeMB) >> 6)
-typedef UINT8 CXL_INTLV_SET_KEY;
+typedef UINT8 INTLV_SET_KEY;
-#define FSP_RESERVED1_LEN 77
-#define FSP_RESERVED2_LEN 2174
-#define FSP_RESERVED3_LEN 21
-#define FSP_RESERVED4_LEN 130
-#define FSP_RESERVED5_LEN 10
-#define FSP_RESERVED6_LEN 800
+#define FSP_RESERVED1_LEN 5748
+#define FSP_RESERVED2_LEN 1
+#define FSP_RESERVED3_LEN 220
+#define FSP_RESERVED4_LEN 10
#pragma pack(1)
-typedef enum {
- DIMM_RANK_MAP_OUT_UNKNOWN = 0,
- DIMM_RANK_MAP_OUT_MEM_DECODE,
- DIMM_RANK_MAP_OUT_POP_POR_VIOLATION,
- DIMM_RANK_MAP_OUT_RANK_DISABLED,
- DIMM_RANK_MAP_OUT_ADVMEMTEST_FAILURE,
- DIMM_RANK_MAP_OUT_MAX
-} DIMM_RANK_MAP_OUT_REASON;
-
struct RankDevice {
UINT8 enabled; // 0 = disabled, 1 = enabled
UINT8 logicalRank; // Logical Rank number (0 - 7)
@@ -154,55 +159,58 @@ typedef struct firmwareRev {
} FIRMWARE_REV;
typedef struct DimmDevice {
- UINT8 Present;
- BOOLEAN Enabled;
- UINT8 DcpmmPresent; // 1 - This is a DCPMM
- UINT8 X4Present;
- UINT8 DramIoWidth; // Actual DRAM IO Width (4, 8, 16)
- UINT8 NumRanks;
- UINT8 keyByte;
- UINT8 actKeyByte2; // Actual module type reported by SPD
- UINT8 actSPDModuleOrg; // Actual number of DRAM ranks and device width
- UINT8 dimmTs; // Thermal sensor data.
- UINT16 VolCap; // Volatile capacity (AEP DIMM only)
- UINT16 nonVolCap; // Non-volatile capacity (AEP DIMM only)
- UINT16 DimmSize;
- UINT32 NVmemSize;
- UINT16 SPDMMfgId; // Module Mfg Id from SPD
- UINT16 VendorID;
- UINT16 DeviceID;
- UINT16 RevisionID;
- UINT32 perRegionDPA; // DPA of PMEM that Nfit needs
- struct PersisentDpaMap perDPAMap[MAX_UNIQUE_NGN_DIMM_INTERLEAVE]; // DPA map
- UINT8 serialNumber[NGN_MAX_SERIALNUMBER_STRLEN]; // Serial Number
- UINT8 PartNumber[NGN_MAX_PARTNUMBER_STRLEN]; // Part Number
- UINT8 FirmwareVersionStr[NGN_FW_VER_LEN]; // Used to update the SMBIOS TYPE 17
- struct firmwareRev FirmwareVersion; // Firmware revision
- struct RankDevice rankList[MAX_RANK_DIMM];
- UINT16 InterfaceFormatCode;
- UINT16 SubsystemVendorID;
- UINT16 SubsystemDeviceID;
- UINT16 SubsystemRevisionID;
- UINT16 FisVersion; // Firmware Interface Specification version
- UINT8 DimmSku; // Dimm SKU info
- UINT8 manufacturingLocation; // Manufacturing location for the NVDIMM
- UINT16 manufacturingDate; // Date the NVDIMM was manufactured
- INT32 commonTck;
- UINT8 EnergyType; // 0: 12V aux power; 1: dedicated backup energy source; 2: no backup energy source
- BOOLEAN NvDimmNPresent; // JEDEC NVDIMM-N Type Memory Present
- UINT8 CidBitMap; // SubRankPer CS for DIMM device
- UINT16 SPDRegVen; // Register Vendor ID in SPD
- DIMM_RANK_MAP_OUT_REASON MapOutReason;
+ UINT8 Present;
+ BOOLEAN Enabled;
+ UINT8 DcpmmPresent; // 1 - This is a DCPMM
+ UINT8 X4Present;
+ UINT8 DramIoWidth; // Actual DRAM IO Width (4, 8, 16)
+ UINT8 NumRanks; // Number of ranks on dimm
+ UINT8 NumPackageRanks; // Number of Package ranks on dimm
+ // For DDR5 NumRanks and NumPackageRanks same
+ // For MCR NumRanks and NumPackageRanks may differ
+ UINT8 keyByte;
+ UINT8 actKeyByte2; // Actual module type reported by SPD
+ UINT8 actSPDModuleOrg; // Actual number of DRAM ranks and device width
+ UINT8 dimmTs; // Thermal sensor data.
+ UINT16 VolCap; // Volatile capacity (AEP DIMM only)
+ UINT16 nonVolCap; // Non-volatile capacity (AEP DIMM only)
+ UINT16 DimmSize;
+ UINT16 SPDMMfgId; // Module Mfg Id from SPD
+ UINT16 VendorID;
+ UINT16 DeviceID;
+ UINT16 RevisionID;
+ UINT32 perRegionDPA; // DPA of PMEM that Nfit needs
+ struct PersisentDpaMap perDPAMap[MAX_UNIQUE_NGN_DIMM_INTERLEAVE]; // DPA map
+ UINT8 serialNumber[NGN_MAX_SERIALNUMBER_STRLEN]; // Serial Number
+ UINT8 PartNumber[NGN_MAX_PARTNUMBER_STRLEN]; // Part Number
+ UINT8 FirmwareVersionStr[NGN_FW_VER_LEN]; // Used to update the SMBIOS TYPE 17
+ struct firmwareRev FirmwareVersion; // Firmware revision
+ struct RankDevice rankList[MAX_RANK_DIMM];
+ UINT16 InterfaceFormatCode;
+ UINT16 SubsystemVendorID;
+ UINT16 SubsystemDeviceID;
+ UINT16 SubsystemRevisionID;
+ UINT16 FisVersion; // Firmware Interface Specification version
+ UINT8 DimmSku; // Dimm SKU info
+ UINT8 manufacturingLocation; // Manufacturing location for the NVDIMM
+ UINT16 manufacturingDate; // Date the NVDIMM was manufactured
+ INT32 commonTck;
+ UINT8 EnergyType; // 0: 12V aux power; 1: dedicated backup energy source; 2: no backup energy source
+ BOOLEAN NvDimmNPresent; // JEDEC NVDIMM-N Type Memory Present
+ UINT8 CidBitMap; // SubRankPer CS for DIMM device
+ UINT16 SPDRegVen; // Register Vendor ID in SPD
+ UINT8 SPDOtherOptFeatures; // SDRAM Other Optional features
+ BOOLEAN DimmChanged;
} MEMMAP_DIMM_DEVICE_INFO_STRUCT;
-struct ChannelDevice {
+typedef struct ChannelDevice {
UINT8 Enabled; // 0 = channel disabled, 1 = channel enabled
UINT8 Features; // Bit mask of features to enable or disable
UINT8 MaxDimm; // Number of DIMM
UINT8 NumRanks; // Number of ranks on this channel
UINT8 chFailed;
UINT8 ngnChFailed;
- UINT8 Is9x4DimmPresent; // 9x4 dimm present indicator
+ UINT8 Is4BitEccDimmPresent; // 4-bit Ecc dimm present indicator
UINT8 SpareLogicalRank[MAX_SPARE_RANK]; // Logical rank, selected as Spare
UINT8 SparePhysicalRank[MAX_SPARE_RANK]; // Physical rank, selected as spare
UINT16 SpareRankSize[MAX_SPARE_RANK]; // spare rank size
@@ -210,11 +218,11 @@ struct ChannelDevice {
UINT8 DdrPopulationMap; // Bitmap to indicate location of DDR DIMMs within the channel memory slots (BIT0: Ch.D0, BIT1: CH.D1)
UINT8 PmemPopulationMap; // Bitmap to indicate location of PMem modules within the channel memory slots (BIT0: Ch.D0, BIT1: CH.D1)
MEMMAP_DIMM_DEVICE_INFO_STRUCT DimmInfo[MAX_DIMM];
-};
+} CHANNEL_DEVICE;
-struct memcontroller {
+typedef struct memcontroller {
UINT32 MemSize;
-};
+} MEMCONTROLLER;
typedef enum {
MemTypeNone = 0,
@@ -251,8 +259,8 @@ typedef struct SADTable {
UINT8 FMchannelInterBitmap[MAX_AMT]; //Bit map to denote which FM channels are interleaved per IMC eg: 111b - Ch 2,1 & 0 are interleaved; 011b denotes Ch1 & 0 are interleaved
UINT8 NmChWays; // Channel Interleave ways for SAD. Represents channelInterBitmap ways for DDR4/NM.
UINT8 FmChWays; // Channel Interleave ways for SAD. Represents FMchannelInterBitmap ways for DDRT.
- UINT16 imcInterBitmap; // Bit map to denote which IMCs are interleaved from this socket.
- UINT16 NmImcInterBitmap; // Bit map to denote which IMCs are interleaved from this socket as NM.
+ UINT32 imcInterBitmap; // Bit map to denote which IMCs are interleaved from this socket.
+ UINT32 NmImcInterBitmap; // Bit map to denote which IMCs are interleaved from this socket as NM.
BOOLEAN local; // 0 - Remote 1- Local
UINT8 IotEnabled; // To indicate if IOT is enabled
UINT8 mirrored; // To Indicate the SAD is mirrored while enabling partial mirroring
@@ -260,8 +268,9 @@ typedef struct SADTable {
UINT8 tgtGranularity; // Interleave mode for target list
UINT8 Cluster; // SNC cluster, hemisphere, or quadrant index.
UINT8 HostBridgeGran; // Host bridge interleaving granularity.
+ UINT8 HostBridgeList[MAX_CXL_HOST_BRIDGE_WAYS]; // List of interleaved CXL host bridges.
UINT32 HotPlugPadSize; // Memory size padded for CXL hot plug. 0 if it is not a CXL hot plug SAD.
- CXL_INTLV_SET_KEY CxlIntlvSetKey; // The unique key of CXL interleave set. (7nm)
+ INTLV_SET_KEY CxlIntlvSetKey; // The unique key of CXL interleave set. (7nm)
} SAD_TABLE;
typedef struct socket {
@@ -271,10 +280,9 @@ typedef struct socket {
UINT8 imcEnabled[MAX_IMC];
UINT8 SadIntList[MAX_DRAM_CLUSTERS * MAX_SAD_RULES][AMT_MAX_NODE]; // SAD interleave list
UINT32 SktTotMemMapSPA; // Total memory mapped to SPA
- UINT32 SktMemSize2LM; // Total memory excluded from Limit
SAD_TABLE SAD[MAX_DRAM_CLUSTERS * MAX_SAD_RULES]; // SAD table
- struct memcontroller imc[MAX_IMC];
- struct ChannelDevice ChannelInfo[MAX_CH];
+ MEMCONTROLLER imc[MAX_IMC];
+ CHANNEL_DEVICE ChannelInfo[MAX_CH];
} MEMMAP_SOCKET;
typedef struct {
@@ -287,9 +295,10 @@ typedef struct SystemMemoryMapElement {
UINT16 Type; // Type of this memory element; Bit0: 1LM Bit1: 2LM Bit2: PMEM Bit3: PMEM-cache Bit4: BLK Window Bit5: CSR/Mailbox/Ctrl region
UINT8 NodeId; // Node ID of the HA Owning the memory
UINT8 SocketId; // Socket Id of socket that has his memory - ONLY IN NUMA
+ UINT8 ClusterId; // Logical cluster Id of SNC cluster - only 0 in UMA clustering and all2all
UINT8 SktInterBitmap; // Socket interleave bitmap, if more that on socket then ImcInterBitmap and ChInterBitmap are identical in all sockets
- UINT16 ImcInterBitmap; // IMC interleave bitmap for this memory
- UINT8 ChInterBitmap[MAX_IMC];//Bit map to denote which channels are interleaved per IMC eg: 111b - Ch 2,1 & 0 are interleaved; 011b denotes Ch1 & 0 are interleaved
+ UINT32 ImcInterBitmap; // IMC interleave bitmap for this memory
+ UINT8 ChInterBitmap[MAX_AMT];//Bit map to denote which channels are interleaved per IMC eg: 111b - Ch 2,1 & 0 are interleaved; 011b denotes Ch1 & 0 are interleaved
UINT32 BaseAddress; // Base Address of the element in 64MB chunks
UINT32 ElementSize; // Size of this memory element in 64MB chunks
} SYSTEM_MEMORY_MAP_ELEMENT;
@@ -300,8 +309,6 @@ typedef struct SystemMemoryMapHob {
// All2All/Quad/Hemi modes can be considered as having only one cluster (i.e SNC1).
//
UINT8 TotalClusters;
-
- UINT8 reserved1[FSP_RESERVED1_LEN]; // MEMORY_MAP_BLOCK_DECODER_DATA BlockDecoderData; // block decoder data structure
UINT32 lowMemBase; // Mem base in 64MB units for below 4GB mem.
UINT32 lowMemSize; // Mem size in 64MB units for below 4GB mem.
UINT32 highMemBase; // Mem base in 64MB units for above 4GB mem.
@@ -310,14 +317,9 @@ typedef struct SystemMemoryMapHob {
UINT16 memFreq; // Mem Frequency
UINT16 HbmFreq; // HBM Frequency in MHz.
UINT8 memMode; // 0 - Independent, 1 - Lockstep
- UINT8 volMemMode; // 0 - 1LM, 1 - 2LM
- UINT8 CacheMemType; // 0 - DDR$DDRT, 1 - HBM$DDR. Only valid if volMemMode is 2LM
+ UINT8 VolMemMode; // 0 - 1LM, 1 - 2LM
UINT16 DramType;
UINT8 DdrVoltage;
- BOOLEAN SupportedPMemPresent; // TRUE if at least one PMem is present and supported by BIOS
- BOOLEAN EkvPresent; // Set if EKV controller on system
- BOOLEAN BwvPresent; // Set if BWV controller on system
- BOOLEAN CwvPresent; // Set if CWV controller on system
UINT8 XMPProfilesSup;
UINT8 XMPCapability;
//
@@ -336,35 +338,20 @@ typedef struct SystemMemoryMapHob {
UINT8 NumChPerMC;
UINT8 numberEntries; // Number of Memory Map Elements
SYSTEM_MEMORY_MAP_ELEMENT Element[(MAX_SOCKET * MAX_DRAM_CLUSTERS * MAX_SAD_RULES) + MAX_FPGA_REMOTE_SAD_RULES];
- UINT8 reserved2[FSP_RESERVED2_LEN]; // struct memSetup MemSetup;
- UINT8 reserved3[FSP_RESERVED3_LEN]; // MEM_DFXMEMVARS DfxMemVar;
+ UINT8 reserved1[FSP_RESERVED1_LEN]; // struct memSetup MemSetup;
+ UINT8 reserved2[FSP_RESERVED2_LEN]; // MEM_DFXMEMVARS DfxMemVar;
MEMMAP_SOCKET Socket[MAX_SOCKET];
- UINT8 reserved4[FSP_RESERVED4_LEN]; // struct memTiming profileMemTime[XMP_MAX_PROFILES];
-
- UINT8 reserved5[FSP_RESERVED5_LEN]; // RASMEMORYINFO RasMeminfo;
- UINT8 LatchSystemShutdownState;
- BOOLEAN IsWpqFlushSupported;
- UINT8 EadrSupport;
- UINT8 EadrCacheFlushMode;
- UINT8 SetSecureEraseSktChHob[MAX_SOCKET][MAX_CH]; //MAX_CH * MAX_SOCKET * MAX_DCPMM_CH
- UINT8 reserved6[FSP_RESERVED6_LEN]; // HOST_DDRT_DIMM_DEVICE_INFO_STRUCT HostDdrtDimmInfo[MAX_SOCKET][MAX_CH];
+ UINT8 reserved3[FSP_RESERVED3_LEN]; // struct memTiming profileMemTime[XMP_MAX_PROFILES];
+
+ UINT8 reserved4[FSP_RESERVED4_LEN]; // RASMEMORYINFO RasMeminfo;
UINT32 DdrCacheSize[MAX_SOCKET][MAX_CH]; // Size of DDR memory reserved for 2LM cache (64MB granularity)
- BOOLEAN AdrStateForPmemModule[MAX_SOCKET][MAX_CH]; // ADR state for Intel PMEM Modules
UINT16 BiosFisVersion; // Firmware Interface Specification version currently supported by BIOS
- UINT16 MaxAveragePowerLimit; // Max Power limit in mW used for averaged power ( Valid range ends at 15000mW)
- UINT16 MinAveragePowerLimit; // Min Power limit in mW used for averaged power ( Valid range starts from 10000mW)
- UINT16 CurrAveragePowerLimit; // Current Power limit in mW used for average power
- UINT16 MaxMbbPowerLimit; // Max MBB power limit ( Valid range ends at 18000mW).
- UINT16 MinMbbPowerLimit; // Min MBB power limit ( Valid range starts from 15000mW).
- UINT16 CurrMbbPowerLimit; // Current Power limit in mW used for MBB power
- UINT32 MaxMbbAveragePowerTimeConstant; // Max MBB Average Power Time Constant
- UINT32 MinMbbAveragePowerTimeConstant; // Min MBB Average Power Time Constant
- UINT32 CurrMbbAveragePowerTimeConstant; // Current MBB Average Power Time Constant
UINT32 MmiohBase; // MMIOH base in 64MB granularity
- UINT8 MaxSadRules; // Maximum SAD entries supported by silicon (24 for 14nm silicon, 16 for 10nm silicon)
+ UINT8 MaxSadRules; // Maximum SAD entries supported by silicon (16 for 10nm silicon)
UINT8 NumberofChaDramClusters; // Number of CHA DRAM decoder clusters
BOOLEAN VirtualNumaEnable; // Enable or Disable Virtual NUMA
- UINT8 VirtualNumOfCluster; // Number of Virtual NUMA nodes in each physical NUMA node (Socket or SNC cluster)
+ UINT8 VirtualNumaNodes; // Number of virtual NUMA nodes per physical NUMA node (non-zero)
+ BOOLEAN McrMemFreqRangeEn; // MCR Memory Frequency range enabled.
} SYSTEM_MEMORY_MAP_HOB;
#pragma pack()
diff --git a/src/vendorcode/intel/fsp/fsp2_0/graniterapids/ap/PrevBootErrSrcHob.h b/src/vendorcode/intel/fsp/fsp2_0/graniterapids/ap/PrevBootErrSrcHob.h
index f1d55542c3..6eeabd3e1b 100644
--- a/src/vendorcode/intel/fsp/fsp2_0/graniterapids/ap/PrevBootErrSrcHob.h
+++ b/src/vendorcode/intel/fsp/fsp2_0/graniterapids/ap/PrevBootErrSrcHob.h
@@ -1,6 +1,6 @@
/** @file
-Copyright (c) 2019-2023, Intel Corporation. All rights reserved.<BR>
+Copyright (c) 2024, Intel Corporation. All rights reserved.<BR>
Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met:
@@ -26,13 +26,14 @@ are permitted provided that the following conditions are met:
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
THE POSSIBILITY OF SUCH DAMAGE.
+ This file is automatically generated. Please do NOT modify !!!
+
**/
#ifndef _PREV_BOOT_ERR_SRC_HOB_H_
#define _PREV_BOOT_ERR_SRC_HOB_H_
-#define FSP_PREV_BOOT_ERR_SRC_HOB_GUID \
-{ 0xc5, 0xb5, 0x38, 0x51, 0x69, 0x93, 0xec, 0x48, 0x5b, 0x97, 0x38, 0xa2, 0xf7, 0x09, 0x66, 0x75 }
+#define FSP_PREV_BOOT_ERR_SRC_HOB_GUID { 0x5138b5c5, 0x9369, 0x48ec, { 0x5b, 0x97, 0x38, 0xa2, 0xf7, 0x09, 0x66, 0x75 } }
#define PREV_BOOT_ERR_SRC_HOB_SIZE 1000
diff --git a/src/vendorcode/intel/fsp/fsp2_0/graniterapids/ap/SystemInfoHob.h b/src/vendorcode/intel/fsp/fsp2_0/graniterapids/ap/SystemInfoHob.h
index b6d88f5c30..6890066478 100644
--- a/src/vendorcode/intel/fsp/fsp2_0/graniterapids/ap/SystemInfoHob.h
+++ b/src/vendorcode/intel/fsp/fsp2_0/graniterapids/ap/SystemInfoHob.h
@@ -1,6 +1,6 @@
/** @file
-Copyright (c) 2019-2023, Intel Corporation. All rights reserved.<BR>
+Copyright (c) 2024, Intel Corporation. All rights reserved.<BR>
Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met:
@@ -26,42 +26,41 @@ are permitted provided that the following conditions are met:
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
THE POSSIBILITY OF SUCH DAMAGE.
+ This file is automatically generated. Please do NOT modify !!!
+
**/
#ifndef _SYSTEM_INFO_HOB_H_
#define _SYSTEM_INFO_HOB_H_
-#define SYSTEM_INFO_HOB_GUID { 0x7650A0F2, 0x0D91, 0x4B0C, { 0x92, 0x3B, 0xBD, 0xCF, 0x22, 0xD1, 0x64, 0x35 }}
+#define SYSTEM_INFO_HOB_GUID { 0x7650A0F2, 0x0D91, 0x4B0C, { 0x92, 0x3B, 0xBD, 0xCF, 0x22, 0xD1, 0x64, 0x35 } }
#ifndef MAX_SOCKET
-#define MAX_SOCKET 4
+#define MAX_SOCKET 2
#endif
#ifndef MAX_IIO_STACK
-#define MAX_IIO_STACK 12
+#define MAX_IIO_STACK 16
#endif
-#define MAX_LOGIC_IIO_STACK 14
+#define MAX_LOGIC_IIO_STACK 18
+#define MAX_HPM_PFS_ENTRY_NUM 15 // Number of entries in PFS structure
+#define HPM_PFS_ENTRY_SIZE 2 // Entry size of PFS structure in DWORD
#ifndef MAX_IMC
-#define MAX_IMC 4 // Maximum memory controllers per socket
+#define MAX_IMC 12 // Maximum memory controllers per socket
#endif
#ifndef MAX_MC_CH
-#define MAX_MC_CH 2 // Max number of channels per MC (3 for EP)
+#define MAX_MC_CH 1 // Max number of channels per MC (3 for EP)
#endif
#ifndef MAX_CH
#define MAX_CH ((MAX_IMC)*(MAX_MC_CH)) // Max channels per socket (worst case EP * EX combination = 16)
#endif
-#define MAX_HPM_PFS_ENTRY_NUM 15 // Number of entries in PFS structure
-#define HPM_PFS_ENTRY_SIZE 2 // Entry size of PFS structure in DWORD
-
#pragma pack(1)
-#ifndef MMIO_BARS_ENUM
-#define MMIO_BARS_ENUM
typedef enum {
TYPE_SCF_BAR = 0,
TYPE_PCU_BAR,
@@ -76,7 +75,6 @@ typedef enum {
TYPE_SBREG_BAR,
TYPE_MAX_MMIO_BAR
} MMIO_BARS;
-#endif
typedef enum {
ReservedMemSs,
@@ -95,7 +93,7 @@ typedef enum BootMode {
// in addition to the sub-boot type (WarmBoot, WarmBootFast, etc).
S3Resume = 1 // S3 flow through RC. Should do the bare minimum required for S3
// init and be optimized for speed.
-} BootMode;
+} BOOT_MODE;
//
// This is used to determine what type of die is connected to a UPI link
@@ -163,19 +161,6 @@ typedef struct {
} HPM_VSEC_RESOURCE;
-//
-// Stack id swap information, which includes stack swap flag and the new stack id swap array.
-//
-typedef struct {
- BOOLEAN StackSwapFlag;
- UINT8 StackIdSwapArray[MAX_IIO_STACK];
-} STACKID_SWAP_INFO;
-
-typedef struct {
- UINT64 Cxl1p1RcrbBase;
- BOOLEAN Cxl1p1RcrbValid;
-} CXL_1P1_RCRB;
-
typedef struct {
UINT32 StackPresentBitmap[MAX_SOCKET]; ///< bitmap of present stacks per socket
UINT8 StackBus[MAX_SOCKET][MAX_LOGIC_IIO_STACK];///< Bus of each stack
@@ -188,7 +173,6 @@ typedef struct {
UINT8 segmentSocket[MAX_SOCKET];
UINT8 KtiPortCnt;
UINT32 socketPresentBitMap;
- UINT32 SecondaryNodeBitMap;
UINT32 FpgaPresentBitMap;
UINT32 mmCfgBase;
UINT64 SocketMmCfgBase[MAX_SOCKET];
@@ -220,13 +204,17 @@ typedef struct {
BOOLEAN DataPopulated; // CPU_CSR_ACCESS_VAR is unavailable when FALSE
HPM_VSEC_RESOURCE SocketHpmVsecRes[MAX_SOCKET]; // HPM VSEC info for all sockets
BOOLEAN HbmSku;
- UINT8 HcxType[MAX_SOCKET];
- STACKID_SWAP_INFO StackIdSwapInfo[MAX_SOCKET]; //StackID sync after do StackId swap,including Stack swap table and whether do stack swap
- CXL_1P1_RCRB Cxl1p1Rcrb[MAX_SOCKET][MAX_IIO_STACK]; // CXL 1.1 RCRB, one per PI5 stack
+ UINT64 Cxl1p1Rcrb[MAX_SOCKET][MAX_IIO_STACK]; // CXL 1.1 RCRB, one per PI5 stack
+ UINT64 CxlRbBar[MAX_SOCKET][MAX_IIO_STACK]; // CXL RBBAR, one per PI5 stack
UINT32 DmiRcrb[MAX_SOCKET]; // DMI RCRB region, one per socket
UINT8 FabricType; //Compute die 10x6, 10x5, and 6x5 type is stored
UINT8 ChopType; //Compute Die Chop Type
UINT8 MdfInstCount;
+ UINT32 UboxMmioSize;
+ UINT32 UboxScfMmioSize;
+ UINT64 PpinValue[MAX_SOCKET]; // The Protected Processor Inventory Number from CPU MSRs
+ UINT32 OobMsmPciBaseAddress[MAX_SOCKET];
+ UINT32 S3mControlRegisterBaseAddress[MAX_SOCKET];
} CPU_CSR_ACCESS_VAR;
typedef struct {
@@ -261,7 +249,7 @@ typedef struct {
UINT32 CheckPoint;
UINT8 ResetRequired;
UINT8 Emulation;
- BootMode SysBootMode;
+ BOOT_MODE SysBootMode;
CPU_CSR_ACCESS_VAR CpuCsrAccessVarHost; // Common resource for CsrAccessRoutines
UINT64 CpuFreq;
UINT8 SocketId;
diff --git a/src/vendorcode/intel/fsp/fsp2_0/graniterapids/sp/CxlNodeHob.h b/src/vendorcode/intel/fsp/fsp2_0/graniterapids/sp/CxlNodeHob.h
index 42b5cc20d5..5f6afc2146 100644
--- a/src/vendorcode/intel/fsp/fsp2_0/graniterapids/sp/CxlNodeHob.h
+++ b/src/vendorcode/intel/fsp/fsp2_0/graniterapids/sp/CxlNodeHob.h
@@ -1,6 +1,6 @@
/** @file
-Copyright (c) 2019-2023, Intel Corporation. All rights reserved.<BR>
+Copyright (c) 2024, Intel Corporation. All rights reserved.<BR>
Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met:
@@ -26,25 +26,32 @@ are permitted provided that the following conditions are met:
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
THE POSSIBILITY OF SUCH DAMAGE.
+ This file is automatically generated. Please do NOT modify !!!
+
**/
#ifndef _CXL_NODE_HOB_
#define _CXL_NODE_HOB_
-#define CXL_NODE_HOB_GUID { 0xdd8ae009, 0xda5a, 0x44a3, { 0xbe, 0x18, 0xda, 0x0c, 0x16, 0xc5, 0xaf, 0x5c } }
+#define CXL_NODE_HOB_GUID { 0xdd8ae009, 0xda5a, 0x44a3, { 0xbe, 0x18, 0xda, 0x0c, 0x16, 0xc5, 0xaf, 0x5c } }
+
+#ifndef MAX_IIO_STACK
+#define MAX_IIO_STACK 16
+#endif
#ifndef MAX_CXL_HDM_RANGES
#define MAX_CXL_HDM_RANGES 0x2 // Maximum number of CXL HDM ranges per CXL end device.
#endif
#ifndef MAX_CXL_PER_SOCKET
-#define MAX_CXL_PER_SOCKET 8
+#define MAX_CXL_PER_SOCKET MAX_IIO_STACK
#endif
#define CXL_NODE_ATTR_MEM BIT0
#define CXL_NODE_ATTR_PERSISTENT BIT1
#define CXL_NODE_ATTR_MEM_HW_INIT BIT2
#define CXL_NODE_ATTR_ACCELERATOR BIT3
+#define CXL_NODE_ATTR_HOT_PLUGGABLE BIT4
typedef UINT32 CXL_NODE_ATTR;
@@ -75,6 +82,7 @@ typedef struct {
UINT32 Size;
UINT8 Ways;
UINT8 SocketBitmap;
+ BOOLEAN AcpiSratSpMemFlag;
CXL_EFI_MEM_TYPE EfiMemType;
CXL_PERF_DATA InitiatorPerfData; // Performance data between device egress and initiator.
CXL_PERF_DATA TargetPerfData; // Performance data of entire target memory region.
@@ -86,7 +94,7 @@ typedef struct {
//
// CXL node info for UEFI memory map and ACPI tables construction
//
- CXL_NODE_INFO CxlNodeInfo[MAX_CXL_PER_SOCKET * MAX_CXL_HDM_RANGES];
+ CXL_NODE_INFO CxlNodeInfo[MAX_IIO_STACK * MAX_CXL_HDM_RANGES];
} CXL_NODE_SOCKET;
#pragma pack()
diff --git a/src/vendorcode/intel/fsp/fsp2_0/graniterapids/sp/EnhancedWarningLogLib.h b/src/vendorcode/intel/fsp/fsp2_0/graniterapids/sp/EnhancedWarningLogLib.h
deleted file mode 100644
index 7c54749304..0000000000
--- a/src/vendorcode/intel/fsp/fsp2_0/graniterapids/sp/EnhancedWarningLogLib.h
+++ /dev/null
@@ -1,169 +0,0 @@
-/** @file
-
-Copyright (c) 2019-2023, Intel Corporation. All rights reserved.<BR>
-
-Redistribution and use in source and binary forms, with or without modification,
-are permitted provided that the following conditions are met:
-
-* Redistributions of source code must retain the above copyright notice, this
- list of conditions and the following disclaimer.
-* Redistributions in binary form must reproduce the above copyright notice, this
- list of conditions and the following disclaimer in the documentation and/or
- other materials provided with the distribution.
-* Neither the name of Intel Corporation nor the names of its contributors may
- be used to endorse or promote products derived from this software without
- specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
- LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
- THE POSSIBILITY OF SUCH DAMAGE.
-
-**/
-
-#ifndef _ENHANCED_WARNING_LOG_LIB_
-#define _ENHANCED_WARNING_LOG_LIB_
-
-#define FSP_RESERVED_LEN 12
-
-#pragma pack(1)
-
-///
-/// Enhanced Warning Log Header
-///
-typedef struct {
- EFI_GUID EwlGuid; /// GUID that uniquely identifies the EWL revision
- UINT32 Size; /// Total size in bytes including the header and buffer
- UINT32 FreeOffset; /// Offset of the beginning of the free space from byte 0
- /// of the buffer immediately following this structure
- /// Can be used to determine if buffer has sufficient space for next entry
- UINT32 Crc; /// 32-bit CRC generated over the whole size minus this crc field
- /// Note: UEFI 32-bit CRC implementation (CalculateCrc32) (References [7])
- /// Consumers can ignore CRC check if not needed.
- UINT32 Reserved; /// Reserved for future use, must be initialized to 0
-} EWL_HEADER;
-
-///
-/// List of all entry types supported by this revision of EWL
-///
-typedef enum {
- EwlType0 = 0,
- EwlType1 = 1,
- EwlType2 = 2,
- EwlType3 = 3,
- EwlType4 = 4,
- EwlType5 = 5,
- EwlType6 = 6,
- EwlType7 = 7,
- EwlType8 = 8,
- EwlType9 = 9,
- EwlType10 = 10,
- EwlType11 = 11,
- EwlType12 = 12,
- EwlType13 = 13,
- EwlType14 = 14,
- EwlType15 = 15,
- EwlType16 = 16,
- EwlType17 = 17,
- EwlType18 = 18,
- EwlType19 = 19,
- EwlType20 = 20,
- EwlType21 = 21,
- EwlType22 = 22,
- EwlType23 = 23,
- EwlType24 = 24,
- EwlType25 = 25,
- EwlType26 = 26,
- EwlType27 = 27,
- EwlType28 = 28,
- EwlType29 = 29,
- EwlType30 = 30,
- EwlType31 = 31,
- EwlType32 = 32,
- EwlTypeMax,
- EwlTypeOem = 0x8000,
- EwlTypeDelim = MAX_INT32
-} EWL_TYPE;
-
-///
-/// EWL severities
-///
-typedef enum {
- EwlSeverityInfo,
- EwlSeverityWarning,
- EwlSeverityFatal,
- EwlSeverityMax,
- EwlSeverityDelim = MAX_INT32
-} EWL_SEVERITY;
-
-
-///
-/// Generic entry header for parsing the log
-///
-typedef struct {
- EWL_TYPE Type;
- UINT16 Size; /// Entries will be packed by byte in contiguous space
- EWL_SEVERITY Severity; /// Warning, error, informational, this may be extended in the future
-} EWL_ENTRY_HEADER;
-
-///
-/// Legacy content provides context of the warning
-///
-typedef struct {
- UINT8 MajorCheckpoint; // EWL Spec - Appendix B
- UINT8 MinorCheckpoint;
- UINT8 MajorWarningCode; // EWL Spec - Appendix A
- UINT8 MinorWarningCode;
-} EWL_ENTRY_CONTEXT;
-
-///
-/// Legacy content to specify memory location
-///
-typedef struct {
- UINT8 Socket; /// 0xFF = n/a
- UINT8 Channel; /// 0xFF = n/a
- UINT8 PseudoChannel; /// 0xFF = n/a
- UINT8 Dimm; /// 0xFF = n/a
- UINT8 Rank; /// 0xFF = n/a
-} EWL_ENTRY_MEMORY_LOCATION;
-
-///
-/// Type 3 = Enhanced type for command, control IO errors
-///
-typedef struct {
- EWL_ENTRY_HEADER Header;
- EWL_ENTRY_CONTEXT Context;
- EWL_ENTRY_MEMORY_LOCATION MemoryLocation;
- UINT8 reserved1[FSP_RESERVED_LEN]; // MRC_LT Level; MRC_GT Group; GSM_CSN Signal;
- UINT8 EyeSize; // 0xFF = n/a
-} EWL_ENTRY_TYPE3;
-
-#pragma pack()
-
-///
-/// Enhanced Warning Log Spec defined data log structure
-///
-typedef struct {
- EWL_HEADER Header; /// The size will vary by implementation and should not be assumed
- UINT8 Buffer[4 * 1024]; /// The spec requirement is that the buffer follow the header
-} EWL_PUBLIC_DATA;
-
-///
-/// EWL private data structure. This is going to be implementation dependent
-/// When we separate OEM hooks via a PPI, we can remove this
-///
-typedef struct {
- UINT32 bufSizeOverflow; // Number of bytes that could not be added to buffer
- UINT32 numEntries; // Number of entries currently logged
- EWL_PUBLIC_DATA status; // Spec defined EWL
-} EWL_PRIVATE_DATA;
-
-
-#endif // #ifndef _ENHANCED_WARNING_LOG_LIB_
diff --git a/src/vendorcode/intel/fsp/fsp2_0/graniterapids/sp/FirmwareVersionInfoHob.h b/src/vendorcode/intel/fsp/fsp2_0/graniterapids/sp/FirmwareVersionInfoHob.h
deleted file mode 100644
index 5d09dd2d18..0000000000
--- a/src/vendorcode/intel/fsp/fsp2_0/graniterapids/sp/FirmwareVersionInfoHob.h
+++ /dev/null
@@ -1,59 +0,0 @@
-/** @file
- Header file for Firmware Version Information
- @copyright
- Copyright (c) 2015 - 2021, Intel Corporation. All rights reserved.<BR>
- SPDX-License-Identifier: BSD-2-Clause-Patent
-**/
-
-#ifndef _FIRMWARE_VERSION_INFO_HOB_H_
-#define _FIRMWARE_VERSION_INFO_HOB_H_
-
-#include <Uefi/UefiMultiPhase.h>
-#include <Pi/PiBootMode.h>
-#include <Pi/PiHob.h>
-
-#pragma pack(1)
-///
-/// Firmware Version Structure
-///
-typedef struct {
- UINT8 MajorVersion;
- UINT8 MinorVersion;
- UINT8 Revision;
- UINT16 BuildNumber;
-} FIRMWARE_VERSION;
-
-///
-/// Firmware Version Information Structure
-///
-typedef struct {
- UINT8 ComponentNameIndex; ///< Offset 0 Index of Component Name
- UINT8 VersionStringIndex; ///< Offset 1 Index of Version String
- FIRMWARE_VERSION Version; ///< Offset 2-6 Firmware version
-} FIRMWARE_VERSION_INFO;
-
-#ifndef __SMBIOS_STANDARD_H__
-///
-/// The Smbios structure header.
-///
-typedef struct {
- UINT8 Type;
- UINT8 Length;
- UINT16 Handle;
-} SMBIOS_STRUCTURE;
-#endif
-
-///
-/// Firmware Version Information HOB Structure
-///
-typedef struct {
- EFI_HOB_GUID_TYPE Header; ///< Offset 0-23 The header of FVI HOB
- SMBIOS_STRUCTURE SmbiosData; ///< Offset 24-27 The SMBIOS header of FVI HOB
- UINT8 Count; ///< Offset 28 Number of FVI elements included.
-///
-/// FIRMWARE_VERSION_INFO structures followed by the null terminated string buffer
-///
-} FIRMWARE_VERSION_INFO_HOB;
-#pragma pack()
-
-#endif // _FIRMWARE_VERSION_INFO_HOB_H_ \ No newline at end of file
diff --git a/src/vendorcode/intel/fsp/fsp2_0/graniterapids/sp/FspAcpiHobs.h b/src/vendorcode/intel/fsp/fsp2_0/graniterapids/sp/FspAcpiHobs.h
index 6d5ba0a37b..7150e5ed8e 100644
--- a/src/vendorcode/intel/fsp/fsp2_0/graniterapids/sp/FspAcpiHobs.h
+++ b/src/vendorcode/intel/fsp/fsp2_0/graniterapids/sp/FspAcpiHobs.h
@@ -1,6 +1,6 @@
/** @file
-Copyright (c) 2019-2023, Intel Corporation. All rights reserved.<BR>
+Copyright (c) 2024, Intel Corporation. All rights reserved.<BR>
Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met:
@@ -26,15 +26,28 @@ are permitted provided that the following conditions are met:
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
THE POSSIBILITY OF SUCH DAMAGE.
+ This file is automatically generated. Please do NOT modify !!!
+
**/
-#ifndef _FSP_ACPI_HOBS_H_
-#define _FSP_ACPI_HOBS_H_
+#ifndef __FSP_ACPI_HOBS__
+#define __FSP_ACPI_HOBS__
+
+//Typecast HOB pointer to APEI table structure of ACPI version 6.2
+#define FSP_RAS_ACPI_HOB_GUID { 0x826785ee, 0xa8e0, 0x4d8f, { 0x82, 0x6f, 0x54, 0x29, 0x2c, 0xe7, 0x6f, 0xe6 } }
//Typecast HOB pointer to ACPI CXL CEDT table structure
#define FSP_CXL_CEDT_ACPI_HOB_GUID { 0x5CB7A12A, 0x8B2D, 0x485A, { 0xB7, 0x04, 0xC0, 0x52, 0x49, 0x56, 0x81, 0xE7 } }
+// Typecast HOB pointer to MEM_TRAINING_DATA_HOB_HEADER.
+// User with NDA clearance should refer to RC code for latest structure definition.
+#define FSP_MEM_TRAINING_DATA_HOB_GUID { 0x7e8b89e2, 0x8b84, 0x4cb3, { 0x86, 0x8f, 0x10, 0xb6, 0x78, 0x71, 0xa2, 0xc0 }}
+
+// Typecast HOB pointer to EWL_PRIVATE_DATA.
+// User with NDA clearance should refer to RC code for latest structure definition.
+#define FSP_EWL_ID_HOB_GUID { 0xd8e05800, 0x5e, 0x4462, { 0xaa, 0x3d, 0x9c, 0x6b, 0x47, 0x4, 0x92, 0xb } };
+
//Typecast HOB pointer to RAS_ACPI_PARAM_HOB_DATA;
#define RAS_ACPI_PARAM_HOB_GUID {0x594dfe5c, 0x7a87, 0x49dc, { 0x8f, 0x33, 0xea, 0x83, 0x4d, 0x6f, 0x18, 0x90 } }
-#endif //#ifndef _FSP_ACPI_HOBS_H_
+#endif // __FSP_ACPI_HOBS__
diff --git a/src/vendorcode/intel/fsp/fsp2_0/graniterapids/sp/FspEas.h b/src/vendorcode/intel/fsp/fsp2_0/graniterapids/sp/FspEas.h
deleted file mode 100644
index f99c3bc36b..0000000000
--- a/src/vendorcode/intel/fsp/fsp2_0/graniterapids/sp/FspEas.h
+++ /dev/null
@@ -1,17 +0,0 @@
-/** @file
- Intel FSP definition from Intel Firmware Support Package External
- Architecture Specification v2.2.
- @copyright
- Copyright (c) 2015 - 2021, Intel Corporation. All rights reserved.<BR>
- SPDX-License-Identifier: BSD-2-Clause-Patent
-**/
-
-#ifndef _FSP_EAS_H_
-#define _FSP_EAS_H_
-
-#include <Uefi.h>
-#include <Guid/GuidHobFspEas.h>
-#include <Guid/FspHeaderFile.h>
-#include <FspEas/FspApi.h>
-
-#endif // _FSP_EAS_H_ \ No newline at end of file
diff --git a/src/vendorcode/intel/fsp/fsp2_0/graniterapids/sp/FspEdpcParam.h b/src/vendorcode/intel/fsp/fsp2_0/graniterapids/sp/FspEdpcParam.h
index af0dc5055e..ce694e9c91 100644
--- a/src/vendorcode/intel/fsp/fsp2_0/graniterapids/sp/FspEdpcParam.h
+++ b/src/vendorcode/intel/fsp/fsp2_0/graniterapids/sp/FspEdpcParam.h
@@ -1,6 +1,6 @@
/** @file
-Copyright (c) 2019-2023, Intel Corporation. All rights reserved.<BR>
+Copyright (c) 2024, Intel Corporation. All rights reserved.<BR>
Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met:
@@ -26,6 +26,8 @@ are permitted provided that the following conditions are met:
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
THE POSSIBILITY OF SUCH DAMAGE.
+ This file is automatically generated. Please do NOT modify !!!
+
**/
#ifndef __FSP_EDPC_PARAM__
diff --git a/src/vendorcode/intel/fsp/fsp2_0/graniterapids/sp/FspErrorInfoHob.h b/src/vendorcode/intel/fsp/fsp2_0/graniterapids/sp/FspErrorInfoHob.h
index ecc2d6fdf7..6b418c514c 100644
--- a/src/vendorcode/intel/fsp/fsp2_0/graniterapids/sp/FspErrorInfoHob.h
+++ b/src/vendorcode/intel/fsp/fsp2_0/graniterapids/sp/FspErrorInfoHob.h
@@ -1,6 +1,6 @@
/** @file
-Copyright (c) 2019-2023, Intel Corporation. All rights reserved.<BR>
+Copyright (c) 2024, Intel Corporation. All rights reserved.<BR>
Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met:
@@ -26,20 +26,23 @@ are permitted provided that the following conditions are met:
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
THE POSSIBILITY OF SUCH DAMAGE.
+ This file is automatically generated. Please do NOT modify !!!
+
**/
#ifndef _FSP_ERROR_INFO_HOB_H_
#define _FSP_ERROR_INFO_HOB_H_
-#include <Uefi/UefiMultiPhase.h>
-#include <Pi/PiBootMode.h>
-#include <Pi/PiHob.h>
-#include <Pi/PiStatusCode.h>
-
-#define FSP_ERROR_INFO_HOB_GUID { 0x611e6a88, 0xadb7, 0x4301, { 0x93, 0xff, 0xe4, 0x73, 0x04, 0xb4, 0x3d, 0xa6 }}
+///
+/// GUID value indicating the FSP error information.
+///
+#define FSP_ERROR_INFO_HOB_GUID { 0x611e6a88, 0xadb7, 0x4301, { 0x93, 0xff, 0xe4, 0x73, 0x04, 0xb4, 0x3d, 0xa6 } }
+#define FSP_ERROR_INFO_STATUS_CODE_TYPE (EFI_ERROR_CODE | EFI_ERROR_UNRECOVERED)
+///
+/// FSP Error Information Block.
+///
#pragma pack(1)
-
typedef struct {
///
/// GUID HOB header.
@@ -81,4 +84,4 @@ typedef struct {
#pragma pack()
-#endif //#ifndef _FSP_ERROR_INFO_HOB_H_
+#endif //_FSP_ERROR_INFO_H_
diff --git a/src/vendorcode/intel/fsp/fsp2_0/graniterapids/sp/FspExtMemoryPprHob.h b/src/vendorcode/intel/fsp/fsp2_0/graniterapids/sp/FspExtMemoryPprHob.h
new file mode 100644
index 0000000000..97e3710965
--- /dev/null
+++ b/src/vendorcode/intel/fsp/fsp2_0/graniterapids/sp/FspExtMemoryPprHob.h
@@ -0,0 +1,70 @@
+/** @file
+
+Copyright (c) 2024, Intel Corporation. All rights reserved.<BR>
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+* Redistributions of source code must retain the above copyright notice, this
+ list of conditions and the following disclaimer.
+* Redistributions in binary form must reproduce the above copyright notice, this
+ list of conditions and the following disclaimer in the documentation and/or
+ other materials provided with the distribution.
+* Neither the name of Intel Corporation nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ THE POSSIBILITY OF SUCH DAMAGE.
+
+ This file is automatically generated. Please do NOT modify !!!
+
+**/
+
+#ifndef _FSP_EXT_MEMORY_PPR_HOB_H_
+#define _FSP_EXT_MEMORY_PPR_HOB_H_
+
+#include "FspGlobals.h"
+
+#define FSP_EXT_MEMORY_PPR_HOB_GUID { 0x3956C6DA, 0x35B6, 0x4036, { 0x93, 0xE4, 0xB1, 0x51, 0x38, 0x60, 0x21, 0x1E } }
+
+#pragma pack(1)
+
+typedef struct FspExtPprAddr {
+ UINT8 Status;
+ UINT8 ErrorType;
+ UINT8 Socket;
+ UINT8 MemoryController;
+ UINT8 Channel;
+ UINT8 Dimm;
+ UINT8 Bank;
+ UINT32 Row;
+ UINT8 Rank;
+} FSP_EXT_PPR_ADDR;
+
+typedef struct FspExtPprDdrInfo {
+ UINT8 Count;
+ FSP_EXT_PPR_ADDR PprAddresses[FSP_MAX_PPR_ADDR_ENTRIES_DDR];
+} FSP_EXT_DDR_PPR_INFO;
+
+typedef struct FspExtMemoryPprData {
+ FSP_EXT_DDR_PPR_INFO DdrPprInfo;
+} FSP_EXT_MEMORY_PPR_DATA;
+
+typedef struct FspExtMemoryPprHob {
+ FSP_EXT_HEADER Header;
+ FSP_EXT_MEMORY_PPR_DATA Data;
+} FSP_EXT_MEMORY_PPR_HOB;
+
+#pragma pack()
+
+#endif // _FSP_EXT_MEMORY_PPR_HOB_H_
diff --git a/src/vendorcode/intel/fsp/fsp2_0/graniterapids/sp/FspExtSystemMemoryMapHob.h b/src/vendorcode/intel/fsp/fsp2_0/graniterapids/sp/FspExtSystemMemoryMapHob.h
new file mode 100644
index 0000000000..864d53ac45
--- /dev/null
+++ b/src/vendorcode/intel/fsp/fsp2_0/graniterapids/sp/FspExtSystemMemoryMapHob.h
@@ -0,0 +1,161 @@
+/** @file
+
+Copyright (c) 2024, Intel Corporation. All rights reserved.<BR>
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+* Redistributions of source code must retain the above copyright notice, this
+ list of conditions and the following disclaimer.
+* Redistributions in binary form must reproduce the above copyright notice, this
+ list of conditions and the following disclaimer in the documentation and/or
+ other materials provided with the distribution.
+* Neither the name of Intel Corporation nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ THE POSSIBILITY OF SUCH DAMAGE.
+
+ This file is automatically generated. Please do NOT modify !!!
+
+**/
+
+#ifndef _FSP_EXT_SYSTEM_MEMORY_MAP_HOB_H_
+#define _FSP_EXT_SYSTEM_MEMORY_MAP_HOB_H_
+
+#include "FspGlobals.h"
+
+#define FSP_EXT_SYSTEM_MEMORY_MAP_HOB_GUID { 0xDF310DE8, 0x579F, 0x419C, { 0xB6, 0xAB, 0x4D, 0x4B, 0xE7, 0xCA, 0xB0, 0x83 } }
+
+#pragma pack(1)
+
+typedef struct FspDimmDevice {
+ UINT8 Present;
+ BOOLEAN Enabled;
+ UINT8 DramIoWidth; // Actual DRAM IO Width (4, 8, 16)
+ UINT8 NumRanks; // Number of ranks on dimm
+ UINT8 NumPackageRanks; // Number of Package ranks on dimm
+ // For DDR5 NumRanks and NumPackageRanks same
+ // For MCR NumRanks and NumPackageRanks may differ
+ UINT8 ActKeyByte2; // Actual module type reported by SPD
+ UINT16 DimmSize;
+ UINT16 VendorID;
+ UINT16 DeviceID;
+ UINT16 RevisionID;
+ UINT8 SerialNumber[FSP_DIMM_MAX_SERIALNUMBER_LEN]; // Serial Number
+ UINT8 PartNumber[FSP_DIMM_MAX_PARTNUMBER_LEN]; // Part Number
+ UINT16 SubsystemVendorID;
+ UINT16 SubsystemDeviceID;
+ UINT16 SubsystemRevisionID;
+ UINT16 FisVersion; // Firmware Interface Specification version
+ INT32 CommonTck;
+ UINT16 SpdRegVen; // Register Vendor ID in SPD
+ UINT8 DataWidth;
+} FSP_EXT_DIMM_DEVICE;
+
+typedef struct FspExtMemoryDimmDeviceInfo {
+ UINT8 Count;
+ FSP_EXT_DIMM_DEVICE Dimms[FSP_MAX_DIMM];
+} FSP_EXT_DIMM_DEVICE_INFO;
+
+typedef struct FspMemoryChannelDevice {
+ UINT8 Enabled; // 0 = channel disabled, 1 = channel enabled
+ UINT8 Features; // Bit mask of features to enable or disable
+ UINT8 MaxDimm; // Number of DIMM
+ UINT8 ChFailed;
+ UINT8 NgnChFailed;
+ UINT8 Is4BitEccDimmPresent; // 4-bit Ecc dimm present indicator
+ UINT8 DdrPopulationMap; // Bitmap to indicate location of DDR DIMMs within the channel memory slots (BIT0: Ch.D0, BIT1: CH.D1)
+ UINT8 PmemPopulationMap; // Bitmap to indicate location of PMem modules within the channel memory slots (BIT0: Ch.D0, BIT1: CH.D1)
+ FSP_EXT_DIMM_DEVICE_INFO DimmInfo;
+} FSP_EXT_MEMORY_CHANNEL_DEVICE;
+
+typedef struct FspMemoryController {
+ UINT8 ImcEnabled;
+ UINT32 MemSize;
+} FSP_EXT_MEMORY_CONTROLLER;
+
+typedef struct FspExtMemoryChannelDeviceInfo {
+ UINT8 Count;
+ FSP_EXT_MEMORY_CHANNEL_DEVICE Devices[FSP_MAX_CH];
+} FSP_EXT_MEMORY_CHANNEL_DEVICE_INFO;
+
+typedef struct FspExtMemoryControllerInfo {
+ UINT8 Count;
+ UINT8 NumChPerMC;
+ FSP_EXT_MEMORY_CONTROLLER MemControllers[FSP_MAX_IMC];
+} FSP_EXT_MEMORY_CONTROLLER_INFO;
+
+typedef struct FspMemoryMapSocket {
+ UINT8 SocketEnabled;
+ UINT32 IioStackBitmap;
+ UINT32 SktTotMemMapSPA; // Total memory mapped to SPA
+ FSP_EXT_MEMORY_CONTROLLER_INFO MemoryControllerInfo;
+ FSP_EXT_MEMORY_CHANNEL_DEVICE_INFO MemoryChannelDeviceInfo;
+} FSP_EXT_MEMORY_MAP_SOCKET;
+
+typedef struct FspExtMemMapSocketInfo {
+ UINT8 Count;
+ FSP_EXT_MEMORY_MAP_SOCKET Sockets[FSP_MAX_SOCKET];
+} FSP_EXT_MEMORY_MAP_SOCKET_INFO;
+
+typedef struct FspMemoryMapElement {
+ UINT16 Type; // Type of this memory element; Bit0: 1LM Bit1: 2LM Bit2: PMEM Bit3: PMEM-cache Bit4: BLK Window Bit5: CSR/Mailbox/Ctrl region
+ UINT8 NodeId; // Node ID of the HA Owning the memory
+ UINT8 SocketId; // Socket Id of socket that has his memory - ONLY IN NUMA
+ UINT8 ClusterId; // Logical cluster Id of SNC cluster - only 0 in UMA clustering and all2all
+ UINT32 BaseAddress; // Base Address of the element in 64MB chunks
+ UINT32 ElementSize; // Size of this memory element in 64MB chunks
+} FSP_EXT_MEMORY_MAP_ELEMENT;
+
+typedef struct FspExtMemMapElementInfo {
+ UINT8 Count;
+ FSP_EXT_MEMORY_MAP_ELEMENT Elements[FSP_MAX_MEMORY_MAP_ELEMENTS];
+} FSP_EXT_MEMORY_MAP_ELEMENT_INFO;
+
+typedef struct FspExtRasInfo {
+ UINT8 SystemRasType;
+ UINT8 RasModesEnabled; // RAS modes that are enabled
+ UINT16 ExRasModesEnabled; // Extended RAS modes that are enabled
+} FSP_EXT_RAS_INFO;
+
+typedef struct FspExtMemoryConfigurationInfo {
+ UINT32 LowMemBase; // Mem base in 64MB units for below 4GB mem.
+ UINT32 LowMemSize; // Mem size in 64MB units for below 4GB mem.
+ UINT32 HighMemBase; // Mem base in 64MB units for above 4GB mem.
+ UINT32 HighMemSize; // Mem size in 64MB units for above 4GB mem.
+ UINT32 MmiohBase; // MMIOH base in 64MB granularity
+ UINT32 MemSize; // Total physical memory size
+ UINT16 MemFreq;
+ UINT8 MemMode; // 0 - Independent, 1 - Lockstep
+ UINT8 VolMemMode; // 0 - 1LM, 1 - 2LM
+ UINT16 DramType;
+ UINT8 DdrVoltage; // Mem Frequency
+ UINT8 ErrorCorrectionType;
+} FSP_EXT_MEMORY_CONFIGURATION_INFO;
+
+typedef struct FspExtSystemMemoryMapData {
+ FSP_EXT_MEMORY_CONFIGURATION_INFO MemoryConfigurationInfo;
+ FSP_EXT_RAS_INFO RasInfo;
+ FSP_EXT_MEMORY_MAP_ELEMENT_INFO MemoryMapElementInfo;
+ FSP_EXT_MEMORY_MAP_SOCKET_INFO MemoryMapSocketInfo;
+} FSP_EXT_SYSTEM_MEMORY_MAP_DATA;
+
+typedef struct FspExtSystemMemoryMapDataHob{
+ FSP_EXT_HEADER Header;
+ FSP_EXT_SYSTEM_MEMORY_MAP_DATA Data;
+} FSP_EXT_SYSTEM_MEMORY_MAP_HOB;
+
+#pragma pack()
+
+#endif // _FSP_EXT_SYSTEM_MEMORY_MAP_HOB_H_
diff --git a/src/vendorcode/intel/fsp/fsp2_0/graniterapids/sp/FspGlobals.h b/src/vendorcode/intel/fsp/fsp2_0/graniterapids/sp/FspGlobals.h
new file mode 100644
index 0000000000..c8df3acaef
--- /dev/null
+++ b/src/vendorcode/intel/fsp/fsp2_0/graniterapids/sp/FspGlobals.h
@@ -0,0 +1,61 @@
+/** @file
+
+Copyright (c) 2024, Intel Corporation. All rights reserved.<BR>
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+* Redistributions of source code must retain the above copyright notice, this
+ list of conditions and the following disclaimer.
+* Redistributions in binary form must reproduce the above copyright notice, this
+ list of conditions and the following disclaimer in the documentation and/or
+ other materials provided with the distribution.
+* Neither the name of Intel Corporation nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ THE POSSIBILITY OF SUCH DAMAGE.
+
+ This file is automatically generated. Please do NOT modify !!!
+
+**/
+
+#ifndef _FSP_EXT_GLOBALS_
+#define _FSP_EXT_GLOBALS_
+
+#define FSP_MAX_SOCKET MAX_SOCKET
+#define FSP_MAX_IMC MAX_IMC
+#define FSP_MAX_MC_CH MAX_MC_CH
+#define FSP_MAX_DIMM MAX_DIMM
+#define FSP_DIMM_MAX_SERIALNUMBER_LEN NGN_MAX_SERIALNUMBER_STRLEN
+#define FSP_DIMM_MAX_PARTNUMBER_LEN NGN_MAX_PARTNUMBER_STRLEN
+#define FSP_MAX_CH ((FSP_MAX_IMC)*(FSP_MAX_MC_CH))
+#define FSP_MAX_MEMORY_MAP_ELEMENTS 150
+
+#define MEM_64MB_TO_BYTES(Size64M) ((UINT64)(Size64M) << 26)
+#define MEM_64MB_TO_KBYTES(Size64M) ((UINT64)(Size64M) << 16)
+#define MEM_64MB_TO_MBYTES(Size64M) ((UINT64)(Size64M) << 6)
+#define MEM_64MB_TO_GBYTES(Size64M) ((Size64M) >> 4)
+#define MEM_BYTES_TO_64MB(SizeB) ((SizeB) >> 26)
+#define MEM_KBYTES_TO_64MB(SizeKB) ((SizeKB) >> 16)
+#define MEM_MBYTES_TO_64MB(SizeMB) ((SizeMB) >> 6)
+
+#define FSP_MAX_PPR_ADDR_ENTRIES_DDR MAX_PPR_ADDR_ENTRIES_DDR
+
+typedef struct FspExtHeader {
+ UINT64 Magic;
+ UINT32 DataLength;
+ UINT32 CheckSum;
+} FSP_EXT_HEADER;
+
+#endif // _FSP_EXT_GLOBALS_
diff --git a/src/vendorcode/intel/fsp/fsp2_0/graniterapids/sp/FspUpd.h b/src/vendorcode/intel/fsp/fsp2_0/graniterapids/sp/FspUpd.h
index d90f785578..cbee351279 100644
--- a/src/vendorcode/intel/fsp/fsp2_0/graniterapids/sp/FspUpd.h
+++ b/src/vendorcode/intel/fsp/fsp2_0/graniterapids/sp/FspUpd.h
@@ -1,6 +1,6 @@
/** @file
-Copyright (c) 2022, Intel Corporation. All rights reserved.<BR>
+Copyright (c) 2024, Intel Corporation. All rights reserved.<BR>
Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met:
@@ -37,11 +37,11 @@ are permitted provided that the following conditions are met:
#pragma pack(1)
-#define FSPT_UPD_SIGNATURE 0x545F445055525053 /* 'SPRUPD_T' */
+#define FSPT_UPD_SIGNATURE 0x545F445055524E47 /* 'GNRUPD_T' */
-#define FSPM_UPD_SIGNATURE 0x4D5F445055525053 /* 'SPRUPD_M' */
+#define FSPM_UPD_SIGNATURE 0x4D5F445055524E47 /* 'GNRUPD_M' */
-#define FSPS_UPD_SIGNATURE 0x535F445055525053 /* 'SPRUPD_S' */
+#define FSPS_UPD_SIGNATURE 0x535F445055524E47 /* 'GNRUPD_S' */
#define FSPI_UPD_SIGNATURE 0x495F445055524E47 /* 'GNRUPD_I' */
diff --git a/src/vendorcode/intel/fsp/fsp2_0/graniterapids/sp/FspiUpd.h b/src/vendorcode/intel/fsp/fsp2_0/graniterapids/sp/FspiUpd.h
index 5aa10ee72e..ba7767267f 100644
--- a/src/vendorcode/intel/fsp/fsp2_0/graniterapids/sp/FspiUpd.h
+++ b/src/vendorcode/intel/fsp/fsp2_0/graniterapids/sp/FspiUpd.h
@@ -1,6 +1,6 @@
/** @file
-Copyright (c) 2022, Intel Corporation. All rights reserved.<BR>
+Copyright (c) 2024, Intel Corporation. All rights reserved.<BR>
Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met:
@@ -35,12 +35,26 @@ are permitted provided that the following conditions are met:
#include <FspUpd.h>
-#define FSP_RAS_ACPI_HOB_GUID { 0x826785ee, 0xa8e0, 0x4d8f, { 0x82, 0x6f, 0x54, 0x29, 0x2c, 0xe7, 0x6f, 0xe6 } };
-
#pragma pack(1)
typedef struct {
+/** RAS Log Level.
+ RAS Log setup options.
+ 0:None, 1:MIN (BASIC_FLOW), 2:MID (BASIC_FLOW, FUNC_FLOW), 3:MAX (BASIC_FLOW, FUNC_FLOW, REG)
+**/
+ UINT8 RasLogLevel;
+
+/** WHEA FV Base Address
+ The physical memory-mapped base address of the WHEA (FV).
+**/
+ UINT64 WheaFvBase;
+
+/** WHEA FV Base Size
+ The size of the WHEA FV region in bytes
+**/
+ UINT64 WheaFvBaseSize;
+
/** WHEA Support
Enable/Disable WHEA support.
0:Disable, 1:Enable
@@ -69,15 +83,216 @@ typedef struct {
**/
UINT8 PcieErrInjActionTable;
+/** SGX Memory Error Injection Support
+ Enable/Disable Error Injection Support in SGX Memory.
+ 0:6dB, 1:3.5dB
+**/
+ UINT8 SgxErrorInjEn;
+
+/** Os Native AER Support
+ Select FFM or OS native for AER error handling. If select OS native, BIOS also initialize
+ FFM first until handshake, which depends on OS capability in FSP.
+ 0:Disable, 1:Enable
+**/
+ UINT8 OsNativeAerSupport;
+
+/** IIO MCA Support.
+ Enable/Disable IIO MCA Support.
+ 0:Disable, 1:Enable
+**/
+ UINT8 IoMcaEn;
+
+/** System Errors
+ System Error Enable/Disable setup options.
+ 0:Disabled, 1:Enabled
+**/
+ UINT8 SystemErrorEn;
+
+/** CPU CrashLog Feature
+ The feature helps collecting crash data from OOBMSM SSRAM
+ 0:Disabled, 1:Enabled,2:Auto
+**/
+ UINT8 CpuCrashLogFeature;
+
+/** MCERR Trigger CrashLog Disable
+ The feature helps to disable MCERR to trigger crash log
+ 0:No, 1:Yes
+**/
+ UINT8 McerrTriggerDisable;
+
+/** Smbus Error Recovery
+ Enable or Disable(Default) Smbus Error Recovery
+ 0:Disabled, 1:SMI, 2:Error Pin
+**/
+ UINT8 SmbusErrorRecovery;
+
+/** EMCA Error Support
+ Enable/Disable EMCA Error support
+ 0:Disable, 1:Enable
+**/
+ UINT8 EmcaEn;
+
+/** EMCA Logging Support
+ Enable/Disable EMCA Logging
+ 0:Disable, 1:Enable
+**/
+ UINT8 ElogEn;
+
+/** LMCE Support
+ Enable/Disable Local MCE firmware support
+ 0:Disable, 1:Enable
+**/
+ UINT8 LmceEn;
+
+/** EMCA MCE-SMI Enable
+ Enable/Disable EMCA Uncorrected SMI for gen2
+ 0:Disable, 2:EMCA gen2 MSMI
+**/
+ UINT8 EmcaMsmiEn;
+
+/** EMCA CMCI-SMI Morphing
+ Enable/Disable EMCA CSMI
+ 0:Disable, 2:EMCA gen2 CSMI
+**/
+ UINT8 EmcaCsmiEn;
+
+/** EMCA CMCI-SMI Threshold
+ Set the threshold of CSMI
+**/
+ UINT16 EmcaCsmiThreshold;
+
+/** CSMI Dynamic Disable
+ Enable/Disable CSMI when error threshold reached
+ 0:Disable, 1:Enable
+**/
+ UINT8 CsmiDynamicDisable;
+
+/** Ignore OS ELOG Opt-in
+ Enable/Disable Ignore OS ELOG Opt-in and log
+ 0:Disable, 1:Enable
+**/
+ UINT8 ElogIgnOptin;
+
+/** Corrected Error eLog
+ Enable/Disable Corrected Error eLog
+ 0:Disable, 1:Enable
+**/
+ UINT8 ElogCorrErrEn;
+
+/** Memory Error eLog
+ Enable/Disable Memory Error eLog
+ 0:Disable, 1:Enable
+**/
+ UINT8 ElogMemErrEn;
+
+/** Processor Error eLog
+ Enable/Disable Processor Error eLog
+ 0:Disable, 1:Enable
+**/
+ UINT8 ElogProcErrEn;
+
+/** Ubox Error Mask
+ Mask SMI generation for Ubox Error
+ 0:Disable, 1:Enable
+**/
+ UINT8 UboxErrorMask;
+
+/** Corrected Error Cloaking
+ Mask Corrected errors from OS/SW visibility only when EMCA is enabled
+ 0:Disable, 1:Enable
+**/
+ UINT8 CeCloakingEn;
+
+/** Memory Corrected Error
+ Enable/Disable Memory Corrected Error
+ 0:Disable, 1:Enable, 2:Auto
+**/
+ UINT8 CorrMemErrEn;
+
+/** Mca Bank Error Injection Support
+ Enable/Disable Mca Bank Error Injection Support.
+ $EN_DIS
+**/
+ UINT8 McaBankErrInjEn;
+
+/** Whea Log Memory Error
+ Enable/Disable Whea Log Memory Error
+ 0:Disabled, 1:Enabled
+**/
+ UINT8 WheaLogMemoryEn;
+
+/** Whea Log Processor Error
+ Enable/Disable Whea Log Processor Error
+ 0:Disabled, 1:Enabled
+**/
+ UINT8 WheaLogProcEn;
+
+/** Whea Log PCI Error
+ Enable/Disable Whea Log PCI Error
+ 0:Disabled, 1:Enabled
+**/
+ UINT8 WheaLogPciEn;
+
+/** Viral Status
+ Enable/Disable Viral
+ $EN_DIS
+**/
+ UINT8 ViralEn;
+
+/** System Memory Poison
+ Enable/Disable System Memory Poison.
+ $EN_DIS
+**/
+ UINT8 DfxPoisonEn;
+
+/** Clear Shadow Registers
+ Enable/Disable clearing shadow registers.
+ $EN_DIS
+**/
+ UINT8 ClearShadowRegisters;
+
+/** PCIE Corrected Error Threshold Counter
+ Enable/Disable PCIE Corrected Error Counter.
+ $EN_DIS
+**/
+ UINT8 PcieCorErrCntr;
+
+/** PCIE Corrected Error Threshold Counter
+ 0x00000001 - 0x0000ffff.
+**/
+ UINT32 PcieCorErrThres;
+
/** IIO eDPC Support
Enable/Disable IIO eDPC Support.
0:Disabled, 1:On Fatal Error, 2:On Fatal and Non-Fatal Errors
**/
UINT8 EdpcEn;
+/** IIO eDPC Interrupt
+ Enable/Disable IIO eDPC Interrupt.
+ 0:Disabled, 1:Enabled
+**/
+ UINT8 EdpcInterrupt;
+
+/** IpmiIoBase
+ Address of IpmiIoBase
+**/
+ UINT16 IpmiIoBase;
+
+/** Trigger SW Error Threshold
+ Enable or Disable Sparing trigger SW Error Match Threshold.
+ 0:Disable, 1:Enable
+**/
+ UINT8 TriggerSWErrThEn;
+
+/** SW Per Row Threshold
+ SW Per Row Correctable Error Threshold (1 - 0x7FFF) used for row level error.
+**/
+ UINT16 SparePerRowTh;
+
/** N/A
**/
- UINT8 ReservedSiliconInitUpd[16];
+ UINT8 ReservedSmmInitUpd[16];
} FSPI_CONFIG;
@@ -87,11 +302,15 @@ typedef struct {
/** N/A
**/
FSP_UPD_HEADER FspUpdHeader;
-
+
+/** N/A
+**/
+ FSPI_ARCH_UPD FspiArchUpd;
+
/** N/A
**/
FSPI_CONFIG FspiConfig;
-
+
/** N/A
**/
UINT16 UpdTerminator;
diff --git a/src/vendorcode/intel/fsp/fsp2_0/graniterapids/sp/FspmUpd.h b/src/vendorcode/intel/fsp/fsp2_0/graniterapids/sp/FspmUpd.h
index c0f09df54d..74df875686 100644
--- a/src/vendorcode/intel/fsp/fsp2_0/graniterapids/sp/FspmUpd.h
+++ b/src/vendorcode/intel/fsp/fsp2_0/graniterapids/sp/FspmUpd.h
@@ -1,6 +1,6 @@
/** @file
-Copyright (c) 2022, Intel Corporation. All rights reserved.<BR>
+Copyright (c) 2024, Intel Corporation. All rights reserved.<BR>
Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met:
@@ -30,656 +30,637 @@ are permitted provided that the following conditions are met:
**/
-#ifndef __FSPMUPD_H__
-#define __FSPMUPD_H__
+#ifndef __FSPM_UPD_H__
+#define __FSPM_UPD_H__
#include <FspUpd.h>
#pragma pack(1)
-
-/** FSP-M Configuration
-**/
typedef struct {
-/** Offset 0x0040 - Customer Revision
+/** Customer Revision
The Customer can set this revision string for their own purpose.
**/
UINT8 CustomerRevision[32];
-/** Offset 0x0060 - Bus Ratio
+/** Bus Ratio
Indicates the ratio of Bus/MMIOL/IO resource to be allocated for each CPU's IIO
**/
UINT8 BusRatio[8];
-/** Offset 0x0068 - D2K Credit Config
- Set the D2K Credit Config - 1: Min, <b>2: Med(Default)</b>, 3: Max.
- 1:Min, 2:Med, 3:Max
-**/
- UINT8 D2KCreditConfig;
-
-/** Offset 0x0069 - Snoop Throttle Config
- Set the Snoop Throttle Config - <b>0: DIS(Default)</b>, 1: Min, 2: Med, 3: Max.
- 0:DIS, 1:Min, 2:Med, 3:Max
-**/
- UINT8 SnoopThrottleConfig;
-
-/** Offset 0x006A - Legacy VGA Soc
+/** Legacy VGA Soc
Socket that claims the legacy VGA range
**/
UINT8 LegacyVgaSoc;
-/** Offset 0x006B - Legacy VGA Stack
+/** Legacy VGA Stack
Stack that claims the legacy VGA range
**/
UINT8 LegacyVgaStack;
-/** Offset 0x006C - Pcie P2P Performance Mode
- Determine if to enable PCIe P2P Performance Mode - <b>0: Disable(Default)</b>, 1: Enable.
- 0:Disable, 1:Enable
+/** Pcie P2P Performance Mode
+ Determine if to enable PCIe P2P Performance Mode
+ $EN_DIS
**/
UINT8 P2pRelaxedOrdering;
-/** Offset 0x006D - UPI Debug Print Level
- UPI Debug Print Level Bitmask - 0: Disable, 1: Fatal, 2: Warning, 4: Summary, 8:
- Detail, <b>0x0F: All(Default)</b>.
+/** UPI Debug Print Level
+ UPI Debug Print Level Bitmask. 0- Disable, 1- Fatal, 2- Warning, 4- Summary, 8-
+ Detail, <b>0xF- All(Default)</b>
1:Fatal, 2:Warning, 4:Summary, 8:Detail, 0x0F:All
**/
UINT8 DebugPrintLevel;
-/** Offset 0x006E - NumaEn
- NumaEn - <b>1: Enable Numa(Default)</b>, 0: Disable Numa.
- 0:Disable, 1:Enable
+/** NumaEn
+ Enable or Disable Numa
+ $EN_DIS
**/
UINT8 NumaEn;
-/** Offset 0x006F - SNC
- Enable or Disable SNC - 0: Disable, 2: Snc2, 4: Snc4, <b>0x0F: Auto(Default)</b>.
- 0: Disable, 2: Snc2, 4: Snc4, 0x0F: Auto
+/** SNC Enable
+ Enable or Disable SNC
+ 0x0:Disable, 0x1:Enable, 0x0F:Auto
**/
UINT8 SncEn;
-/** Offset 0x0070 - UMA Clustering
- Set UMA Clusters - 0: Disable, 2: Two Clusters, <b>4: Four Clusters(Default)</b>.
- 0:Disable, 2:Two Clusters, 4:Four Clusters
-**/
- UINT8 UmaClustering;
-
-/** Offset 0x0071 - IODC Mode
- IODC Mode - 0: Disable, <b>1: Auto(Default)</b>, 2: Push, 3: AllocFlow, 4: NonAlloc,
- 5: WCILF.
+/** IODC Mode
+ IODC Mode. 0- Disable, <b>1- Auto(Default)</b>, 2- Push, 3- AllocFlow, 4- NonAlloc, 5- WCILF
0:Disable, 1:Auto, 2:Push, 3:AllocFlow, 4:NonAlloc, 5:WCILF
**/
UINT8 IoDcMode;
-/** Offset 0x0072 - Degrade Precedence
- Setup Degrade Precedence - <b>0: Topology(Default)</b>, 1: Feature.
+/** Degrade Precedence
+ Setup Degrade Precedence
0:Topology, 1:Feature
**/
UINT8 DegradePrecedence;
-/** Offset 0x0073 - Degrade 4 Socket Preference
- Setup Degrade 4 Socket Preference - <b>0: Fully Connect(Default)</b>, 1: Dual Link Ring.
+/** Degrade 4 Socket Preference
+ Setup Degrade 4 Socket Preference
0:Fully Connect, 1:Dual Link Ring
**/
UINT8 Degrade4SPreference;
-/** Offset 0x0074 - Directory Mode
- Enable or Disable Directory Mode - 0: Disable, 1: Enable, <b>2: Auto(Default)</b>.
+/** Directory Mode
+ Enable or Disable Directory Mode
0:Disable, 1:Enable, 2:Auto
**/
UINT8 DirectoryModeEn;
-/** Offset 0x0075 - XPT Prefetch Enable
- Enable or Disable XPT Prefetch - 0: Disable, 1: Enable, <b>2: Auto(Default)</b>.
+/** XPT Prefetch Enable
+ Enable or Disable XPT Prefetch
0:Disable, 1:Enable, 2:Auto
**/
UINT8 XptPrefetchEn;
-/** Offset 0x0076 - KTI Prefetch Enable
- Enable or Disable KTI Prefetch - 0: Disable, 1: Enable, <b>2: Auto(Default)</b>.
+/** KTI Prefetch Enable
+ Enable or Disable KTI Prefetch
0:Disable, 1:Enable, 2:Auto
**/
UINT8 KtiPrefetchEn;
-/** Offset 0x0077 - XPT Remote Prefetch Enable
- Enable or Disable XPT Remote Prefetch Enable - 0: Disable, 1: Enable, <b>2: Auto(Default)</b>.
+/** XPT Remote Prefetch Enable
+ Enable or Disable XPT Remote Prefetch Enable
0:Disable, 1:Enable, 2:Auto
**/
UINT8 XptRemotePrefetchEn;
-/** Offset 0x0078 - KTI FPGA
- Enable or Disable KTI FPGA
+/** Distress QoS Mode
+ Distress QoS. <b>0- Mode 0(Default)</b>, 2- Mode 2
+ 0:Mode 0, 2:Mode 2
**/
- UINT8 KtiFpgaEnable[8];
+ UINT8 DistressQoS;
-/** Offset 0x0080 - DDRT QoS Mode
- DDRT QoS - <b>0: Mode 0(Default)</b>, 1: Mode 1, 2: Mode 2.
- 0:Mode 0, 1:Mode 1, 2:Mode 2
-**/
- UINT8 DdrtQosMode;
-
-/** Offset 0x0081 - KTI Link Speed Mode
- Choose KTI Link Speed Mode - 0: Slow, <b>1: Full(Default)</b>.
+/** KTI Link Speed Mode
+ Choose KTI Link Speed Mode
0:Slow, 1:Full
**/
UINT8 KtiLinkSpeedMode;
-/** Offset 0x0082 - KTI Link Speed
- Setup KTI Link Speed - 0: 128GT, 1: 144GT, 2: 160GT, 3: 200GT, <b>0x7F: Max KTI
- Link Speed (Default)</b>, 0x8F: Frequency Per Link.
- 0:128GT, 1:144GT, 2:160GT, 3:200GT, 0x7F:Max KTI Link Speed, 0x8F:Frequency Per Link
+/** KTI Link Speed
+ Setup KTI Link Speed - 2- 160GT, 3- 200GT, 4- 240GT, <b>0x7F- Max KTI Link Speed
+ (Default)</b>, 0x8F- Frequency Per Link
+ 2:160GT, 3:200GT, 4:240GT, 0x7F:Max KTI Link Speed, 0x8F:Frequency Per Link
**/
UINT8 KtiLinkSpeed;
-/** Offset 0x0083 - KTI Link L0p
- Enable or Disable KTI Link L0p - 0: Disable, 1: Enable, <b>2: Auto(Default)</b>.
- 0:Disable, 1:Enable, 2: Auto
+/** KTI Link L0p
+ Enable or Disable KTI Link L0p
+ 0:Disable, 1:Enable, 2:Auto
**/
UINT8 KtiLinkL0pEn;
-/** Offset 0x0084 - KTI Link L1
- Enable or Disable KTI Link L1 - 0: Disable, 1: Enable, <b>2: Auto(Default)</b>.
- 0:Disable, 1:Enable, 2: Auto
+/** KTI Link L1
+ Enable or Disable KTI Link L1
+ 0:Disable, 1:Enable, 2:Auto
**/
UINT8 KtiLinkL1En;
-/** Offset 0x0085 - Kti Link Speed Per Port
- Setup KTI Link Speed to be allocated for each port - 0: 128GT, 1: 144GT, 2: 160GT,
- 3: 200GT, <b>0x7f: Max KTI Link Speed(Default)</b>.
- 0:128GT, 1:144GT, 2:160GT, 3:200GT, 0x7f:Max KTI Link Speed
+/** Kti Link Speed Per Port
+ Setup KTI Link Speed to be allocated for each port, 2:160GT, 2:200GT, 3:240GT, 0X7f:Max
+ KTI Link Speed
**/
UINT8 KtiLinkSpeedPerPort[48];
-/** Offset 0x00B5 - DfxL0p Enable
- Indicates the DfxL0p Enable to be allocated for each port - 0: Disable, <b>1: Enable(Default)</b>.
- 0:Disable, 1:Enable
+/** DfxL0p Enable
+ Indicates the DfxL0p Enable to be allocated for each port, 0:Disable, 1:Enable
**/
UINT8 DfxL0pEnable[48];
-/** Offset 0x00E5 - DfxL1 Enable
- Indicates the DfxL1 Enable to be allocated for each port - 0: Disable, <b>1: Enable(Default)</b>.
- 0:Disable, 1:Enable
+/** DfxL1 Enable
+ Indicates the DfxL1 Enable to be allocated for each port, 0:Disable, 1:Enable
**/
UINT8 DfxL1Enable[48];
-/** Offset 0x0115 - KTI Failover
- Enable or Disable KTI Failover - 0: Disable, 1: Enable, <b>2: Auto(Default)</b>.
- 0:Disable, 1:Enable, 2: Auto
+/** KTI Failover
+ Enable or Disable KTI Failover
+ 0:Disable, 1:Enable, 2:Auto
**/
UINT8 KtiFailoverEn;
-/** Offset 0x0116 - KTI LB Enable
- Enable or Disable KTI LB - <b>0:Disable(Default)</b>, 1:Enable.
- 0:Disable, 1:Enable
-**/
- UINT8 KtiLbEn;
-
-/** Offset 0x0117 - KTI CRC Mode
- Select KTI CRC Mode - <b>0: 16bit(Default)</b>, 1: 32bit, 2: Auto.
+/** KTI CRC Mode
+ Select KTI CRC Mode
0:16bit, 1:32bit, 2:Auto
**/
UINT8 KtiCrcMode;
-/** Offset 0x0118 - KTI CPU Socket Hotplug
- Enable or Disable KTI CPU Socket Hotplug - <b>0: Disable(Default)</b>, 1: Enable.
- 0:Disable, 1:Enable
+/** KTI CPU Socket Hotplug
+ Enable or Disable KTI CPU Socket Hotplug
+ $EN_DIS
**/
UINT8 KtiCpuSktHotPlugEn;
-/** Offset 0x0119 - KTI CPU Socket HotPlug Topology
- Select KTI CPU Socket HotPlug Topology - <b>0: 4Socket(Default)</b>, 1: 8Socket.
+/** KTI CPU Socket HotPlug Topology
+ Select KTI CPU Socket HotPlug Topology
0:4Socket, 1:8Socket
**/
UINT8 KtiCpuSktHotPlugTopology;
-/** Offset 0x011A - KTI SKU Mismatch Check
- Enable or Disable KTI SKU Mismatch Check - 0: Disable, <b>1 :Enable(Default)</b>.
- 0:Disable, 1:Enable
+/** KTI SKU Mismatch Check
+ Enable or Disable KTI SKU Mismatch Check
+ $EN_DIS
**/
UINT8 KtiSkuMismatchCheck;
-/** Offset 0x011B - TOR Threshold - Loctorem threshold Normal
- Select TOR Threshold - Loctorem threshold Normal - 0: Disable, <b>1: Auto(Default)</b>,
- 2: Low, 3: Medium, 4: High.
+/** Sdsi Contrl Ib Lock
+ Enable or Disable Sdsi Contrl Ib Lock
+ $EN_DIS
+**/
+ UINT8 SdsiCtrlIbLock;
+
+/** TOR Threshold - Loctorem threshold Normal
+ Select TOR Threshold - Loctorem threshold Normal
0:Disable, 1:Auto, 2:Low, 3:Medium, 4:High
**/
UINT8 TorThresLoctoremNorm;
-/** Offset 0x011C - TOR threshold - Loctorem threshold empty
- Select TOR threshold - Loctorem threshold empty - 0: Disable, <b>1: Auto(Default)</b>,
- 2: Low, 3: Medium, 4:High.
+/** TOR threshold - Loctorem threshold empty
+ Select TOR threshold - Loctorem threshold empty
0:Disable, 1:Auto, 2:Low, 3:Medium, 4:High
**/
UINT8 TorThresLoctoremEmpty;
-/** Offset 0x011D - TSC Sync in Sockets
- Enable or Disable TSC Sync in Sockets - 0: Disable, <b>1: Enable(Default)</b>, 2: Auto.
- 0:Disable, 1:Enable, 2:Auto
-**/
- UINT8 TscSyncEn;
-
-/** Offset 0x011E - HA A to S directory optimization
- Enable or Disable HA A to S directory optimization - 0: Disable, 1: Enable, <b>2:
- Auto(Default)</b>.
+/** HA A to S directory optimization
+ Enable or Disable HA A to S directory optimization
0:Disable, 1:Enable, 2:Auto
**/
UINT8 StaleAtoSOptEn;
-/** Offset 0x011F - LLC Deadline Allocation
- Enable or Disable LLC Deadline Allocation - 0: Disable, <b>1: Enable(Default)</b>, 2: Auto.
+/** LLC Deadline Allocation
+ Enable or Disable LLC Deadline Allocation
0:Disable, 1:Enable, 2:Auto
**/
UINT8 LLCDeadLineAlloc;
-/** Offset 0x0120 - MBA BW Calibration Profiles
- Choice of MBA BW throttling curve - 0: Linear BW shaping, 1: Biased BW shaping,
- 2: Legacy BW shaping, <b>3: Auto(Default)</b>.
+/** MBA BW Calibration Profiles
+ Choice of MBA BW throttling curve
0:Linear BW shaping, 1:Biased BW shaping, 2:Legacy BW shaping, 3:Auto
**/
UINT8 MbeBWCalChoice;
-/** Offset 0x0121 - Split Lock
- Enable or Disable Split Lock - <b>0: Disable(Default)</b>, 1: Enable, 2: Auto.
- 0:Disable, 1:Enable, 2:Auto
+/** PMM MBA BW downscale
+ PMM BW downscaling vs the baseline Total memory BW profile. Eg- picking 1/2x results
+ in scaling PMM BW throttling in a 2:1 ratio vs. DDR throttling.
+ 0:PMM BW throttling in a 1/1 ratio vs. DDR throttling, 1:2/1 ratio, 2:4/1 ratio,
+ 3:8/1 ratio
**/
- UINT8 SplitLock;
+ UINT8 PmmMbaBWDownscale;
-/** Offset 0x0122 - Affinitize M2Iosf to Upi for 2-Socket
- Affinitize M2IOSF traffic to proper UPI links to improve 2-Socket P2P perf - 0:
- Disable, 1: Enable, <b>2: Auto(Default)</b>.
- 0:Disable, 1:Enable, 2:Auto
+/** CXL (Type3) MBA BW downscale
+ CXL (Type3) BW downscaling vs the baseline Total memory BW profile. Eg- picking
+ 1/2x results in scaling CXL (Type3) BW throttling in a 2:1 ratio vs. DDR throttling.
+ 0:CXL BW throttling in a 1/1 ratio vs. DDR throttling, 1:2/1 ratio, 2:4/1 ratio,
+ 3:8/1 ratio
**/
- UINT8 M2iosfToUpiAffinity;
+ UINT8 CxlMbaBWDownscale;
-/** Offset 0x0123 - MMCFG Base Address
- Setup MMCFG Base Address - 0: 1G, 1: 1.5G, 2: 1.75G, 3: 2G, 4: 2.25G, 5: 3G, <b>6:
- Auto(Default)</b>.
- 0:1G, 1:1.5G, 2:1.75G, 3:2G, 4:2.25G, 5:3G, 6:Auto
+/** Remote Target MBA BW downscale
+ Remote Target BW downscaling vs the baseline Total memory BW profile. Eg- picking
+ 1/2x results in scaling Remote Target BW throttling in a 2:1 ratio vs. DDR throttling.
+ 0:Remote Target BW throttling in a 1/1 ratio vs. DDR throttling, 1:2/1 ratio, 2:4/1
+ ratio, 3:8/1 ratio
**/
- UINT8 mmCfgBase;
+ UINT8 RemoteTargetMbaBWDownscale;
-/** Offset 0x0124 - MMCFG Size
- Select MMCFG Size - 0: 64M, 1: 128M, 2: 256M, 3: 512M, 4: 1G, 5: 2G, <b>6: Auto(Default)</b>.
- 0:64M, 1:128M, 2:256M, 3:512M, 4:1G, 5:2G, 6:Auto
+/** Split Lock
+ Enable or Disable Split Lock
+ 0:Disable, 1:Enable, 2:Auto
**/
- UINT8 mmCfgSize;
+ UINT8 SplitLock;
-/** Offset 0x0125
+/** MMCFG Base Address
+ Setup MMCFG Base Address
+ 0:1G, 1:1.5G, 2:1.75G, 3:2G, 4:2.25G, 5:3G, 0xFF:Auto
**/
- UINT8 UnusedUpdSpace0[3];
+ UINT32 mmCfgBase;
-/** Offset 0x0128 - MMIO High Base Address
- MMIO High Base Address, a hex number for Bit[51:32]
+/** MMCFG Size
+ Select MMCFG Size
+ 0:64M, 1:128M, 2:256M, 3:512M, 4:1G, 5:2G, 0xFF:Auto
**/
- UINT32 mmiohBase;
+ UINT32 mmCfgSize;
-/** Offset 0x012C - CPU Physical Address Limit
- CPU Physical Address Limit - <b>0: Disable(Default)</b>, 1: Enable.
- 0:Disable, 1:Enable
+/** MMIO High Base Address
+ MMIO High Base Address
+ 0:56T, 1:40T, 2:32T, 3:24T, 4:16T, 5:4T, 6:2T, 7:1T, 8:512G, 9:3584T, 10:30T, 11:60T,
+ 12:88T, 13:120T, 14:248T, 255:AUTO
**/
- UINT8 CpuPaLimit;
+ UINT32 mmiohBase;
-/** Offset 0x012D
+/** CPU Physical Address Limit
+ CPU Physical Address Limit
+ $EN_DIS
**/
- UINT8 UnusedUpdSpace1;
+ UINT8 CpuPaLimit;
-/** Offset 0x012E - MMIO High Size
- MMIO High Size, Number of 1GB contiguous regions to be assigned for MMIOH space
- per CPU. Range 1-1024
+/** MMIO High Size
+ MMIO High Size, Number of 1GB contiguous regions to be assigned for MMIOH space per CPU.
+ 0:1GB, 1:4GB, 2:16GB, 3:64GB, 4:256GB, 5:1024GB, 6:32GB, 255:AUTO
**/
- UINT16 mmiohSize;
+ UINT32 mmiohSize;
-/** Offset 0x0130 - isocEn
- Enable or Disable isocEn - <b>0: Disable(Default)</b>, 1: Enable, 2: Auto.
- 0:Disable, 1:Enable, 2:Auto
-**/
- UINT8 isocEn;
-
-/** Offset 0x0131 - DCA
- Enable or Disable DCA - <b>0: Disable(Default)</b>, 1: Enable.
- 0:Disable, 1:Enable
+/** DCA
+ Enable or Disable DCA
+ $EN_DIS
**/
UINT8 dcaEn;
-/** Offset 0x0132
-**/
- UINT8 UnusedUpdSpace2[2];
-
-/** Offset 0x0134 - BoardTypeBitmask
+/** BoardTypeBitmask
BoardTypeBitmask
**/
UINT32 BoardTypeBitmask;
-/** Offset 0x0138 - AllLanesPtr
+/** S3mClkSetupPtr
+ Pointer to clk setup variable data
+**/
+ UINT64 S3mClkSetupPtr;
+
+/** AllLanesPtr
Pointer to array of ALL_LANES_EPARAM_LINK_INFO
**/
- UINT32 AllLanesPtr;
+ UINT64 AllLanesPtr;
-/** Offset 0x013C - PerLanePtr
+/** PerLanePtr
Pointer to array of PER_LANE_EPARAM_LINK_INFO
**/
- UINT32 PerLanePtr;
+ UINT64 PerLanePtr;
-/** Offset 0x0140 - AllLanesSizeOfTable
+/** AllLanesSizeOfTable
Number of elements in AllLanesPtr array.
**/
UINT32 AllLanesSizeOfTable;
-/** Offset 0x0144 - PerLaneSizeOfTable
+/** PerLaneSizeOfTable
Number of elements in PerLanePtr array.
**/
UINT32 PerLaneSizeOfTable;
-/** Offset 0x0148 - WaitTimeForPSBP
+/** WaitTimeForPSBP
Enable or Disable WaitTimeForPSBP
**/
UINT32 WaitTimeForPSBP;
-/** Offset 0x014C - WaSerializationEn
- Enable or Disable WaSerializationEn - <b>0: Disable(Default)</b>, 1: Enable.
- 0:Disable, 1:Enable
-**/
- UINT8 WaSerializationEn;
-
-/** Offset 0x014D - KtiInEnableMktme
- Enable or Disable KtiInEnableMktme - <b>0: Disable(Default)</b>, 1: Enable.
- 0:Disable, 1:Enable
+/** KtiInEnableMktme
+ Enable or Disable KtiInEnableMktme
+ $EN_DIS
**/
UINT8 KtiInEnableMktme;
-/** Offset 0x014E - HIOP STACK DISABLE
+/** HIOP STACK DISABLE
Enables/Disables given HIOP STACK. Default is AUTO no stack is disabled. 1 - The
stacks indicated by the bit locations are disabled. 0 - The stacks indicated by
the bit locations are not modified. The stack order is abstracted each bit 0 =
stack 0 ... bit n = stack n. The bit setting for each stack can be overriden by
- BIOS based on part-knob compatibility. The array size must be MAX_SOCKET x UINT32.
+ BIOS based on part-knob compatibility. The array size must be MAX_SOCKET(Maximum:8) x UINT32.
**/
- UINT8 StackDisableBitMap[32];
+ UINT32 StackDisableBitMap[8];
-/** Offset 0x016E - CFRS3mProvision
- Enable or Disable Provision S3M CFR - <b>0: Disable(Default)</b>, 1: Enable.
- 0:Disable, 1:Enable
+/** Processor VmxEnable Function
+ Enable(Default) or Disable Processor VmxEnable Function
+ $EN_DIS
**/
- UINT8 CFRS3mProvision;
+ UINT8 VmxEnable;
-/** Offset 0x016F - CFRS3mManualCommit
- Enable or Disable Manual Commit S3M FW CFR - <b>0:Disable(Default)</b>, 1:Enable.
- 0:Disable, 1:Enable
+/** Smm Relocation
+ Enable(Default)/Disable Smm Relocation
+ $EN_DIS
**/
- UINT8 CFRS3mManualCommit;
+ UINT8 SmmRelocationEnable;
-/** Offset 0x0170 - CFRPucodeProvision
- Enable or Disable Provision PUcode CFR - <b>0:Disable(Default)</b>, 1:Enable.
- 0:Disable, 1:Enable
+/** Processor HyperThreading Function
+ Enables Logical processor, 0- ALL LPs, 1- Single LP, 2- Two LPs
+ 0:ALL LPs, 1:Single LP, 2:Two LPs
**/
- UINT8 CFRPucodeProvision;
+ UINT8 ProcessorLpEnable;
-/** Offset 0x0171 - CFRPucodeManualCommit
- Enable or Disable Manual Commit PUcode CFR - <b>0:Disable(Default)</b>, 1:Enable.
- 0:Disable, 1:Enable
+/** Processor Safer Mode Extensions Function
+ Enable or Disable(Default) Processor Safer Mode Extensions Function
+ $EN_DIS
**/
- UINT8 CFRPucodeManualCommit;
+ UINT8 ProcessorSmxEnable;
-/** Offset 0x0172
+/** Uncore Freq Ratio Compute
+ 0: Set dynamic Uncore frequency range from max and min fused values. Otherwise Uncore
+ will run at a constant frequency ratio, the UFS algorithm will be disabled, but
+ physical limits may still reduce frequency. NOTE: The user input will be clipped
+ to the range accordingly during boot.
**/
- UINT8 UnusedUpdSpace3[2];
+ UINT8 UncoreFreqRatio;
-/** Offset 0x0174 - CFRImagePtr
- Pointer to array of CFR Image
+/** Uncore Freq Ratio IO
+ 0: Set dynamic Uncore frequency range from max and min fused values. Otherwise Uncore
+ will run at a constant frequency ratio, the UFS algorithm will be disabled, but
+ physical limits may still reduce frequency. NOTE: The user input will be clipped
+ to the range accordingly during boot.
**/
- UINT32 CFRImagePtr;
+ UINT8 UncoreFreqRatioIo;
-/** Offset 0x0178 - Processor VmxEnable Function
- Enable(Default) or Disable Processor VmxEnable Function - 0: Disable, <b>1: Enable(Default)</b>.
- 0:Disable, 1:Enable
+/** DDR frequency limit
+ Select DDR frequency limit, <b>0x00- Auto(Default)</b>, 0x01:DDR_3200, 0x03:DDR_3600,
+ 0x05:DDR_4000, 0x07:DDR_4400, 0x08:DDR_4800, 0x09:DDR_5200, 0x0A:DDR_5600, 0x0B:DDR_6000,
+ 0x0C:DDR_6400
**/
- UINT8 VmxEnable;
+ UINT8 HostDdrFreqLimit;
-/** Offset 0x0179 - Processor X2apic Function
- Enable(Default) or Disable Processor X2apic Function - 0: Disable, <b>1: Enable(Default)</b>.
+/** DDR Over Clock Enable
+ DDR Over Clock Enable, 0- Disable, 1- Enable
0:Disable, 1:Enable
**/
- UINT8 X2apic;
+ UINT8 DdrOverClockEnable;
-/** Offset 0x017A - Processor HyperThreading Function
- Enable(Default) or Disable Processor HyperThreading Function - 1: Disable, <b>0:
- Enable(Default)</b>.
- 1:Disable, 0:Enable
+/** Advanced Debug Function
+ Select Advanced Debug Function, 0- Disable, 1- Enable, 2- Auto
+ 0:Disable, 1:Enable, 2:Auto
**/
- UINT8 ProcessorHyperThreadingDisable;
+ UINT8 DfxAdvDebugJumper;
-/** Offset 0x017B - Processor Dynamic Intel Speed Select (ISS) Function
- Enable or Disable(Default) Processor Dynamic Intel Speed Select (ISS) Function -
- <b>0: Disable(Default)</b>, 1: Enable.
- 0:Disable, 1:Enable
+/** Memory Serial Debug Message Level
+ Select Memory Serial Debug Message Level, 0- Disable, 1- Minimum, 2- Normal, 3-
+ Maximum, <b>4- Auto(Default)</b>, 5- Fixed PCD
+ 0:Disable, 1:Minimum, 2:Normal, 3:Maximum, 4:Auto, 5:Fixed PCD
**/
- UINT8 ProcessorDynamicIssEnable;
+ UINT8 serialDebugMsgLvl;
-/** Offset 0x017C - Enables Intel(R) TXT
- Enable or Disable(Default) Enables Intel(R) TXT - <b>0: Disable(Default)</b>, 1: Enable.
- 0:Disable, 1:Enable
+/** IIO IioPE0Bifurcation
+ IioPE0Bifurcation[MAX_SOCKET]- MAX_SOCKET=8, 0x00:x4x4x4x4, 0x01:x4x4xxx8, 0x02:xxx8x4x4,
+ 0x03:xxx8xxx8, 0x04:xxxxxx16, <b>0xFF:AUTO(Default)</b>
**/
- UINT8 ProcessorLtsxEnable;
+ UINT8 IioPE0Bifurcation[8];
-/** Offset 0x017D - DDR frequency limit
- Select DDR frequency limit, <b>0x00: Auto(Default)</b>, 0x13:DDR_3200, 0x16:DDR_3600,
- 0x19:DDR_4000, 0x1C:DDR_4400, 0x1D:DDR_4800, 0x1E:DDR_5200, 0x1F:DDR_5600
+/** IIO IioPE1Bifurcation
+ IioPE1Bifurcation[MAX_SOCKET]- MAX_SOCKET=8, 0x00:x4x4x4x4, 0x01:x4x4xxx8, 0x02:xxx8x4x4,
+ 0x03:xxx8xxx8, 0x04:xxxxxx16, <b>0xFF:AUTO(Default)</b>
**/
- UINT8 DdrFreqLimit;
+ UINT8 IioPE1Bifurcation[8];
-/** Offset 0x017E - Memory Serial Debug Message Level
- Select Memory Serial Debug Message Level - 0: Disable, 1: Minimum, 2: Normal, <b>3:
- Maximum(Default)</b>, 4: Auto.
- 0:Disable, 1:Minimum, 2:Normal, 3:Maximum, 4:Auto
+/** IIO IioPE2Bifurcation
+ IioPE2Bifurcation[MAX_SOCKET]- MAX_SOCKET=8, 0x00:x4x4x4x4, 0x01:x4x4xxx8, 0x02:xxx8x4x4,
+ 0x03:xxx8xxx8, 0x04:xxxxxx16, <b>0xFF:AUTO(Default)</b>
**/
- UINT8 serialDebugMsgLvl;
+ UINT8 IioPE2Bifurcation[8];
-/** Offset 0x017F - IIO ConfigIOU0
- ConfigIOU[MAX_SOCKET][0]: MAX_SOCKET=8, 0x00:x4x4x4x4, 0x01:x4x4xxx8, 0x02:xxx8x4x4,
+/** IIO IioPE3Bifurcation
+ IioPE3Bifurcation[MAX_SOCKET]- MAX_SOCKET=8, 0x00:x4x4x4x4, 0x01:x4x4xxx8, 0x02:xxx8x4x4,
0x03:xxx8xxx8, 0x04:xxxxxx16, <b>0xFF:AUTO(Default)</b>
**/
- UINT8 IioConfigIOU0[8];
+ UINT8 IioPE3Bifurcation[8];
-/** Offset 0x0187 - IIO ConfigIOU1
- ConfigIOU[MAX_SOCKET][1]: MAX_SOCKET=8, 0x00:x4x4x4x4, 0x01:x4x4xxx8, 0x02:xxx8x4x4,
+/** IIO IioPE4Bifurcation
+ IioPE4Bifurcation[MAX_SOCKET]- MAX_SOCKET=8, 0x00:x4x4x4x4, 0x01:x4x4xxx8, 0x02:xxx8x4x4,
0x03:xxx8xxx8, 0x04:xxxxxx16, <b>0xFF:AUTO(Default)</b>
**/
- UINT8 IioConfigIOU1[8];
+ UINT8 IioPE4Bifurcation[8];
-/** Offset 0x018F - IIO ConfigIOU2
- ConfigIOU[MAX_SOCKET][2]: MAX_SOCKET=8, 0x00:x4x4x4x4, 0x01:x4x4xxx8, 0x02:xxx8x4x4,
+/** IIO IioPE5Bifurcation
+ IioPE5Bifurcation[MAX_SOCKET]- MAX_SOCKET=8, 0x00:x4x4x4x4, 0x01:x4x4xxx8, 0x02:xxx8x4x4,
0x03:xxx8xxx8, 0x04:xxxxxx16, <b>0xFF:AUTO(Default)</b>
**/
- UINT8 IioConfigIOU2[8];
+ UINT8 IioPE5Bifurcation[8];
-/** Offset 0x0197 - IIO ConfigIOU3
- ConfigIOU[MAX_SOCKET][3]: MAX_SOCKET=8, 0x00:x4x4x4x4, 0x01:x4x4xxx8, 0x02:xxx8x4x4,
+/** IIO IioPEaBifurcation
+ IioPEaBifurcation[MAX_SOCKET]- MAX_SOCKET=8, 0x00:x4x4x4x4, 0x01:x4x4xxx8, 0x02:xxx8x4x4,
0x03:xxx8xxx8, 0x04:xxxxxx16, <b>0xFF:AUTO(Default)</b>
**/
- UINT8 IioConfigIOU3[8];
+ UINT8 IioPEaBifurcation[8];
-/** Offset 0x019F - IIO ConfigIOU4
- ConfigIOU[MAX_SOCKET][4]: MAX_SOCKET=8, 0x00:x4x4x4x4, 0x01:x4x4xxx8, 0x02:xxx8x4x4,
+/** IIO IioPEbBifurcation
+ IioPEbBifurcation[MAX_SOCKET]- MAX_SOCKET=8, 0x00:x4x4x4x4, 0x01:x4x4xxx8, 0x02:xxx8x4x4,
0x03:xxx8xxx8, 0x04:xxxxxx16, <b>0xFF:AUTO(Default)</b>
**/
- UINT8 IioConfigIOU4[8];
+ UINT8 IioPEbBifurcation[8];
-/** Offset 0x01A7 - IIO ConfigIOU5
- ConfigIOU[MAX_SOCKET][5]: MAX_SOCKET=8, 0x00:x4x4x4x4, 0x01:x4x4xxx8, 0x02:xxx8x4x4,
+/** IIO IioPEcBifurcation
+ IioPEcBifurcation[MAX_SOCKET]- MAX_SOCKET=8, 0x00:x4x4x4x4, 0x01:x4x4xxx8, 0x02:xxx8x4x4,
0x03:xxx8xxx8, 0x04:xxxxxx16, <b>0xFF:AUTO(Default)</b>
**/
- UINT8 IioConfigIOU5[8];
+ UINT8 IioPEcBifurcation[8];
-/** Offset 0x01AF - IIO ConfigIOU6
- ConfigIOU[MAX_SOCKET][6]: MAX_SOCKET=8, 0x00:x4x4x4x4, 0x01:x4x4xxx8, 0x02:xxx8x4x4,
+/** IIO IioPEdBifurcation
+ IioPEdBifurcation[MAX_SOCKET]- MAX_SOCKET=8, 0x00:x4x4x4x4, 0x01:x4x4xxx8, 0x02:xxx8x4x4,
0x03:xxx8xxx8, 0x04:xxxxxx16, <b>0xFF:AUTO(Default)</b>
**/
- UINT8 IioConfigIOU6[8];
+ UINT8 IioPEdBifurcation[8];
+
+/** IIO PCIE MaxPayload Ptr
+ Pointer to array of PCIE MaxPayload settings Per Port
+**/
+ UINT32 IioPcieMaxPayloadPtr;
+
+/** IIO PCIE MaxPayload entry Number
+ Number of elements in PcieMaxPayloadPtr array, port number as unit.
+**/
+ UINT32 IioPcieMaxPayloadNumber;
+
+/** IIO Board settings Hob Ptr
+ Pointer to array of IIO_BOARD_SETTINGS_HOB
+**/
+ UINT32 IioBoardSettingsHobPtr;
+
+/** IIO Board Settings Hob length
+ The IIO Board Settings Hob Length.
+**/
+ UINT32 IioBoardSettingsHobLength;
+
+/** Iio Setup Knobs pointer
+ : Iio Setup Knobs pointer
+**/
+ UINT64 IioSetupKnobsPtr;
-/** Offset 0x01B7
+/** Iio Setup Knobs Size
+ : Iio Setup Knobs Size
**/
- UINT8 UnusedUpdSpace4;
+ UINT64 IioSetupKnobsSize;
-/** Offset 0x01B8 - IIO PCIE Config Table Ptr
- Pointer to array of UPD_IIO_PCIE_PORT_CONFIG
+/** Iio SocketConfig Setup Knobs pointer
+ : Iio SocketConfig Setup Knobs pointer
**/
- UINT32 IioPcieConfigTablePtr;
+ UINT64 IioSocketConfigSetupKnobsPtr;
-/** Offset 0x01BC - IIO PCIE Config Table Number
- Number of elements in IioPcieConfigTablePtr array, socket number as unit.
+/** Iio SocketConfig Setup Knobs Size
+ : Iio SocketConfig Setup Knobs Size
**/
- UINT32 IioPcieConfigTableNumber;
+ UINT64 IioSocketConfigSetupKnobsSize;
-/** Offset 0x01C0 - IIO DeEmphasis Array Ptr
+/** IIO DeEmphasis Array Ptr
Pointer to array of DeEmphasis
**/
UINT32 DeEmphasisPtr;
-/** Offset 0x01C4 - IIO DeEmphasis Array Number
+/** IIO DeEmphasis Array Number
Number of elements in DeEmphasis array.
**/
UINT32 DeEmphasisNumber;
-/** Offset 0x01C8 - IIO PCIe Common Clock Array Ptr
+/** IIO PCIe Common Clock Array Ptr
Pointer to array of PCIe Common Clock
**/
UINT32 PcieCommonClockPtr;
-/** Offset 0x01CC - IIO PCIe Common Clock Array Number
+/** IIO PCIe Common Clock Array Number
Number of elements in PCIe Common Clock array.
**/
UINT32 PcieCommonClockNumber;
-/** Offset 0x01D0 - VT-d Support
- Enable or Disable VT-d Support - 0: Disable, <b>1: Enable(Default)</b>.
+/** Gen5LinkDegradation
+ Enable or disable Gen5 link degradation.
0:Disable, 1:Enable
**/
- UINT8 VtdSupport;
+ UINT8 Gen5LinkDegradation;
-/** Offset 0x01D1 - PCIe ACSCTL
- Enable/Disable overwrite of PCI Access Control Services Control register in PCI
- root ports - 0: Disable, <b>1: Enable(Default)</b>.
+/** PcieHotPlugEnable
+ Enable or disable Pcie hot plug enable feature
0:Disable, 1:Enable
**/
- UINT8 VtdPciAcsCtlWaEn;
-
-/** Offset 0x01D2
-**/
- UINT8 UnusedUpdSpace5[2];
+ UINT8 PcieHotPlugEnable;
-/** Offset 0x01D4 - IIO PCIe Port Hide Array Ptr
- Pointer to array of Hide or visible for IIO Pcie Port.
+/** DelayAfterPCIeLinkTraining
+ Custom delay after PCI-E link training on IIO ports
**/
- UINT32 PEXPHIDEPtr;
+ UINT16 DelayAfterPCIeLinkTraining;
-/** Offset 0x01D8 - IIO PCIe Port Hide Array Number
- Number of elements in IIO PCIe Port Hide Array.
+/** MSR Lock Control
+ Enable - MSR 3Ah and CSR 80h will be locked in FSP. Power Good reset is needed to
+ remove lock bits
+ 0:Disable, 1:Enable
**/
- UINT32 PEXPHIDENumber;
+ UINT8 ProcessorMsrLockControl;
-/** Offset 0x01DC - PcieHotPlugEnable
- Enable or disable Pcie hot plug enable feature - <b>0: Disable(Default)</b>, 1: Enable.
+/** Lock Chipset
+ Lock or Unlock chipset in FSP
0:Disable, 1:Enable
**/
- UINT8 PcieHotPlugEnable;
+ UINT8 LockChipset;
-/** Offset 0x01DD
+/** DFX Ev Mode
+ When Enabled, Expose IIO DFX devices and other CPU devices like PMON in FSP
+ 0:Disable, 1:Enable, 2:Auto
**/
- UINT8 UnusedUpdSpace6;
+ UINT8 DfxEvMode;
-/** Offset 0x01DE - DelayAfterPCIeLinkTraining
- Custom delay after PCI-E link training on IIO ports
+/** DFX Disable Bios Done
+ When Enabled, suppresses notifying processor via MSR 151h that boot initialization
+ is finished in FSP
+ 0:Disable, 1:Enable
**/
- UINT16 DelayAfterPCIeLinkTraining;
+ UINT8 DfxDisableBiosDone;
-/** Offset 0x01E0 - IIO PCI bus resource Ptr
+/** PciBusResConfigPtr
Pointer to array of socket PCI bus resource.
**/
UINT32 PciBusResConfigPtr;
-/** Offset 0x01E4 - IIO PCI IO/MMIO base and limits resource Ptr
+/** PciBaseLimitsResConfigPtr
Pointer to array of socket PCI IO/MMIO resource.
**/
UINT32 PciBaseLimitsResConfigPtr;
-/** Offset 0x01E8 - PCH PCIE PLL Ssc
- Pointer to array of socket PCI IO/MMIO resource.
+/** PCH PCIE PLL Ssc
**/
UINT8 PchPciePllSsc;
-/** Offset 0x01E9 - MeUmaEnable
- Enable or disable ME UMA feature - <b>0: Disable(Default)</b>, 1: Enable.
+/** PchDciEn
+ Enable or <b>Disable(Default)</b> PCH DCI
0:Disable, 1:Enable
**/
- UINT8 MeUmaEnable;
+ UINT8 PchDciEn;
-/** Offset 0x01EA - SerialIoUartDebugEnable
- Enable or Disable SerialIo Uart debug library in FSP - 0: Disable, <b>1: Enable(Default)</b>.
+/** MeUmaEnable
+ Enable or disable ME UMA feature
0:Disable, 1:Enable
**/
- UINT8 SerialIoUartDebugEnable;
+ UINT8 MeUmaEnable;
-/** Offset 0x01EB
+/** SerialIoUartDebugEnable
+ <b>Enable(Default)</b> or Disable SerialIo Uart debug library in FSP.
+ 0:Disable, 1:Enable
**/
- UINT8 UnusedUpdSpace7;
+ UINT8 SerialIoUartDebugEnable;
-/** Offset 0x01EC - ISA Serial Base selection
- Select ISA Serial Base address could be initialized by boot loader - 0x2F8: 0x2F8,
- <b>0x3F8: 0x3F8(Default)</b>.
+/** ISA Serial Base selection
+ Select ISA Serial Base address could be initialized by boot loader. Default is 0x3F8
0x2F8:0x2F8, 0x3F8:0x3F8
**/
UINT16 SerialIoUartDebugIoBase;
-/** Offset 0x01EE - MemRefreshWaterMark
- Enable or Disable MemRefreshWaterMark in FSP - <b>0: Auto(Default)</b>, 1: Enable,
- 2: Disable.
- 0:Auto, 1:Enable, 2:Disable
-**/
- UINT8 PanicWm;
-
-/** Offset 0x01EF - promoteMrcWarnings
- Enable or Disable MRC promote warning in FSP - 0: Disable, <b>1: Enable(Default)</b>.
- 0:Disable, 1:Enable
+/** promoteMrcWarnings
+ Determines if MRC warnings are promoted to system level in FSP.
+ $EN_DIS
**/
UINT8 promoteMrcWarnings;
-/** Offset 0x01F0 - promoteWarnings
- <b>Enable(Default)</b> or Disable Promote warning in FSP - 0: Disable, <b>1: Enable(Default)</b>.
- 0:Disable, 1:Enable
+/** promoteWarnings
+ Determines if warnings are promoted to system level in FSP.
+ $EN_DIS
**/
UINT8 promoteWarnings;
-/** Offset 0x01F1 - serialDebugMsgLvlTrainResults
- Enable or Disable Promote warning in FSP - <b>0:Disable(Default)</b>, 8:Enable.
- 0:Disable, 8:Enable
+/** serialDebugMsgLvlTrainResults
+ Enabled = set to display the training results. Training results also get displayed
+ if debug messages is set to Maximum in FSP.
+ $EN_DIS
**/
UINT8 serialDebugMsgLvlTrainResults;
-/** Offset 0x01F2 - MemTest
- <b>Enable(Default)</b> or Disable memory test during normal boot in FSP - 0: Disable,
- <b>1: Enable(Default)</b>.
- 0:Disable, 1:Enable
+/** Enhanced Log Parsing
+ Enables additional output in debug log for easier machine parsing in FSP.
+ $EN_DIS
**/
- UINT8 HwMemTest;
+ UINT8 logParsing;
-/** Offset 0x01F3
+/** MemTest
+ Enable - Enables memory test during normal boot. Disable - Disables this feature in FSP.
+ $EN_DIS
**/
- UINT8 UnusedUpdSpace8;
+ UINT8 HwMemTest;
-/** Offset 0x01F4 - MemTest Loops
- Number of memory test loops during normal boot, set to 0 to run memtest infinitely
- in FSP - <b> 1 (Default)</b>.
- minimum = 0, maximum = 65535
+/** MemTest Loops
+ Number of memory test loops during normal boot, set to 0 to run memtest infinitely in FSP.
**/
UINT16 MemTestLoops;
-/** Offset 0x01F6
-**/
- UINT8 UnusedUpdSpace9[2];
-
-/** Offset 0x01F8 - Adv MemTest Options
- This option is a bit mask[19:0]: All 0 = disabled: bit-0=XMATS8, bit-1=XMATS16,
+/** Adv MemTest Options
+ This option is a bit mask[19:0]- All 0 = disabled- bit-0=XMATS8, bit-1=XMATS16,
bit-2=Reserved, bit-3=Reserved, bit-4=WCMATS8, bit-5=WCMCH8, bit-6=Reserved, bit-7=MARCHCM64,
bit-8=Reserved, bit-9=Reserved, bit-10=Reserved, bit-11=TWR, bit-12=DATARET, bit-13=MATS8TC1,
bit-14=MATS8TC2, bit-15=MATS8TC3, bit-16=SK-HYNIX, bit-17=SAMSUNG, bit-18=MICRON-RMW,
@@ -687,627 +668,1149 @@ typedef struct {
**/
UINT32 AdvMemTestOptions;
-/** Offset 0x01FC - SmartTestKey
+/** SmartTestKey
Number of SmartTest Key
**/
UINT32 SmartTestKey;
-/** Offset 0x0200 - Adv MemTest Pause
- Specify a pause delay between 0 to 256000 in units of usec. This is a time period
- where refresh is disabled between write and read sequences in FSP.
+/** Adv MemTest Pause
+ Specify a pause delay between 0 to 255 in units of msec. This is a time period where
+ refresh is disabled between write and read sequences in FSP.
**/
- UINT32 AdvMemTestCondPause;
+ UINT8 AdvMemTestCondPause;
-/** Offset 0x0204 - Adv MemTest tREFI
+/** Adv MemTest tREFI
Specify tREFI (refresh rate) timing between 1850 to 7800 in nsec.
**/
UINT16 AdvMemTestCondTrefi;
-/** Offset 0x0206 - Adv MemTest tWR
- Specify tWR timing between 48 to 96 in units of tCK in FSP.
+/** Adv MemTest tWR
+ Specify tWR timing between 48 to 96 in units of tCK in FSP.
**/
UINT8 AdvMemTestCondTwr;
-/** Offset 0x0207
-**/
- UINT8 UnusedUpdSpace10;
-
-/** Offset 0x0208 - Adv MemTest PMIC VDD Level
+/** Adv MemTest PMIC VDD Level
Specify PMIC VDD level in units of mV in FSP.
**/
UINT16 AdvMemTestCondPmicVdd;
-/** Offset 0x020A - Adv MemTest Conditions
+/** Adv MemTest Conditions
Auto = set test conditions based on test type; Manual = specify global test conditions;
- Disable = Do not apply test conditions in FSP - 0: Disable, <b>1: Auto(Default)</b>,
- 2: Manual.
+ Disable = Do not apply test conditions in FSP.
0:Disable, 1:Auto, 2:Manual
**/
UINT8 AdvMemTestCondition;
-/** Offset 0x020B - Adv MemTest Reset Failure Tracking List
+/** Adv MemTest Reset Failure Tracking List
Enable/disable Reset of the Row Failure Tracking List after each Adv MemTest option.
- Useful for testing performance of multiple options in FSP - <b>0: Disable(Default)</b>,
- 1: Enable.
- 0:Disable, 1:Enable
+ Useful for testing performance of multiple options in FSP.
+ $EN_DIS
**/
UINT8 AdvMemTestResetList;
-/** Offset 0x020C - MemTest On Cold Fast Boot
- Enable - Enables memory test during cold fast boot. Disable - Disables this feature.
- Auto - Sets it to the MRC default setting; current default is Disable in FSP -
- <b>0:Disable(Default)</b>, 1:Enable.
- 0:Disable, 1:Enable
+/** MemTest On Cold Fast Boot
+ Enable - Enables memory test during cold fast boot. Disable - Disables this feature in FSP.
+ $EN_DIS
**/
UINT8 MemTestOnColdFastBoot;
-/** Offset 0x020D - Attempt Fast Boot
+/** Attempt Fast Boot
Enable - Portions of memory reference code will be skipped when possible to increase
- boot speed on warm boots. Disable - Disables this feature. Auto - Sets it to the
- MRC default setting - 0:Disable, <b>1:Enable(Default)</b>.
- 0:Disable, 1:Enable
+ boot speed on warm boots. Disable - Disables this feature in FSP.
+ $EN_DIS
**/
UINT8 AttemptFastBoot;
-/** Offset 0x020E - MemTest On Cold Fast Boot
- Enable - Enables memory test during cold fast boot. Disable - Disables this feature.
- Auto - Sets it to the MRC default setting - 0:Disable, <b>1:Enable(Default)</b>.
- 0:Disable, 1:Enable
+/** MemTest On Cold Fast Boot
+ Enable - Enables memory test during cold fast boot. Disable - Disables this feature in FSP.
+ $EN_DIS
**/
UINT8 AttemptFastBootCold;
-/** Offset 0x020F - Multithreaded Memory Training
- Selects the number of processor sockets to train in parallel. - <b>0: All sockets
- operate in parallel(Default)</b>. 1: At any time only one socket is executing.
- 2: At any time only two socket are executing. 4: At any time only four socket are
- executing in FSP.
+/** Multithreaded Memory Training
+ Selects the number of processor sockets to train in parallel. 0 - All sockets operate
+ in parallel. 1 - At any time only one socket is executing. 2 - At any time only
+ two socket are executing. 4 - At any time only four socket are executing in FSP.
0:All Processor Sockets, 1:One Socket at a Time (No Multithreading), 2:Two Sockets
at a Time, 4:Four Sockets at a Time
**/
UINT8 AllowedSocketsInParallel;
-/** Offset 0x0210 - Auto-Reset on mem Training Error
- Enable/Disable Auto-Reset on mem Training Error in FSP - <b>0:Disable(Default)</b>,
- 1:Enable.
- 0:Disable, 1:Enable
+/** Auto-Reset on mem Training Error
+ Enable/Disable Auto-Reset on mem Training Error in FSP.
+ $EN_DIS
**/
UINT8 AutoResetOnMemErr;
-/** Offset 0x0211 - Rank Margin Tool
- Enable/Disable the Rank Margin Tool in FSP - <b>0:Disable(Default)</b>, 1:Enable.
- 0:Disable, 1:Enable
+/** Rank Margin Tool
+ Enable/Disable two types of rank margin in FSP.
+ 0:Normal RMT & Turnaround RMT Disabled, 1:Normal RMT Enabled, 2:Turnaround RMT Enabled,
+ 3:Normal RMT & Turnaround RMT Enabled, 4:Auto RMT Enable/Disabled
**/
UINT8 EnableRMT;
-/** Offset 0x0212 - RMT on Fast Cold Boot
- Enable/Disable the Rank Margin Tool on a Fast Cold Boot in FSP - <b>0:Disable(Default)</b>,
- 1:Enable.
- 0:Disable, 1:Enable
+/** RMT on Fast Cold Boot
+ Enable/Disable the Rank Margin Tool on a Fast Cold Boot in FSP.
+ $EN_DIS
**/
UINT8 EnableRMTonFCB;
-/** Offset 0x0213 - Execute Jedecinit before RMT
- Execute Jedecinit before Rank Margin Tool in FSP - <b>0:Disable(Default)</b>, 1:Enable.
- 0:Disable, 1:Enable
+/** Execute Jedecinit before RMT
+ Execute Jedecinit before Rank Margin Tool in FSP.
+ $EN_DIS
**/
UINT8 JedecInitBeforeRMT;
-/** Offset 0x0214 - Backside Margining
- Enable/Disable margin test on the register or buffer backside in FSP - <b>0:Disable(Default)</b>,
- 1:Enable.
- 0:Disable, 1:Enable
+/** Backside Margining
+ Enable/Disable margin test on the register or buffer backside in FSP.
+ $EN_DIS
**/
UINT8 RMTBacksideMargining;
-/** Offset 0x0215 - CmdAll
- Step size of CmdAll. Auto: 1. Supported values: 1,2,4,8 in FSP - <b>1:Auto(Default)</b>,
- 2:2, 4:4, 8:8.
- 1:Auto, 2:2, 4:4, 8:8
+/** CmdAll
+ Step size of CmdAll. Auto- 1. Supported values- 1,2,4,8 in FSP.
+ 1:1, 2:2, 4:4, 8:8
**/
UINT8 RMTCmdAll;
-/** Offset 0x0216 - RMT Debug Messages
- Enable/Disable the RMT debug messages in FSP - <b>2:Disable(Default)</b>, 5:Enable.
+/** RMT Debug Messages
+ Enable/Disable the RMT debug messages in FSP.
2:Disable, 5:Enable
**/
UINT8 RMTDebugMessages;
-/** Offset 0x0217 - RMT Display Tables
- Enable/Disable displaying results as tables in FSP - 0:Disable, <b>1:Enable(Default)</b>.
- 0:Disable, 1:Enable
+/** RMT Display Tables
+ Enable/Disable displaying results as tables in FSP.
+ $EN_DIS
**/
UINT8 RMTDisplayTables;
-/** Offset 0x0218 - RMT Loop Count
+/** RMT Loop Count
Exponential loop count for single rank test in FSP.
**/
UINT8 RMTLoopCount;
-/** Offset 0x0219
-**/
- UINT8 UnusedUpdSpace11[3];
-
-/** Offset 0x021C - Test Signal Bit Mask For RMT
+/** Test Signal Bit Mask For RMT
Test signal bit mask for RMT in FSP.
**/
UINT32 TestSignalBitMaskRMT;
-/** Offset 0x0220 - RMT Per Bit Margining
- Enable/Disable Per Bit Margining in FSP - 0:Disable, <b>1:Enable(Default)</b>.
- 0:Disable, 1:Enable
+/** RMT Per Bit Margining
+ Enable/Disable Per Bit Margining in FSP.
+ $EN_DIS
**/
UINT8 RMTPerBitMargining;
-/** Offset 0x0221 - RMT Per CA Lane Margining
- Enable/Disable Per CA Lane Margining in FSP - 0:Disable, <b>1:Enable(Default)</b>.
- 0:Disable, 1:Enable
+/** RMT Per CA Lane Margining
+ Enable/Disable Per CA Lane Margining in FSP.
+ $EN_DIS
**/
UINT8 RMTPerCaLaneMargining;
-/** Offset 0x0222 - RMT Display Plots
- Enable/Disable the display of per-bit results as plots in FSP - 0:Disable, <b>1:Enable(Default)</b>.
- 0:Disable, 1:Enable
+/** RMT Per CS Lane Margining
+ Enable/Disable Per CS Lane Margining in FSP.
+ $EN_DIS
+**/
+ UINT8 RMTPerCsLaneMargining;
+
+/** RMT Display Plots
+ Enable/Disable the display of per-bit results as plots in FSP.
+ $EN_DIS
**/
UINT8 RMTPerDisplayPlots;
-/** Offset 0x0223 - RMT RxDqs
- Step size of RxDqs. Auto: 1. Supported values: 1,2,4,8 in FSP - <b>1:Auto,(Default)</b>
- 2:2, 4:4, 8:8.
+/** RMT RxDqs
+ Step size of RxDqs. Auto- 1. Supported values- 1,2,4,8 in FSP.
1:Auto, 2:2, 4:4, 8:8
**/
UINT8 RMTRxDqs;
-/** Offset 0x0224 - RMT RxVref
- Step size of RxVref. Auto: 1. Supported values: 1,2,4,8 in FSP - <b>1:Auto,(Default)</b>
- 2:2, 4:4, 8:8.
+/** RMT RxVref
+ Step size of RxVref. Auto- 1. Supported values- 1,2,4,8 in FSP.
1:Auto, 2:2, 4:4, 8:8
**/
UINT8 RMTRxVref;
-/** Offset 0x0225 - RMT Scrambler
- Enable or Disable scrambler during RMT test in FSP - 0:Disable, <b>1:Enable(Default)</b>.
- 0:Disable, 1:Enable
+/** Dfx RMT Scrambler
+ Enable or Disable scrambler during RMT test in FSP.
+ $EN_DIS
**/
- UINT8 RMTScrambler;
+ UINT8 DfxScrambleEnRMT;
-/** Offset 0x0226 - RMT Step Size Override
- Enable or Disable overriding the default step sizes in FSP - <b>0:Disable(Default)</b>,
- 1:Enable.
- 0:Disable, 1:Enable
+/** RMT Step Size Override
+ Enable or Disable overriding the default step sizes in FSP.
+ $EN_DIS
**/
UINT8 RMTStepSizeOverride;
-/** Offset 0x0227 - RMT TxDq
- Step size of TxDq. Auto: 1. Supported values: 1,2,4,8 in FSP - <b>1:Auto(Default)</b>,
- 2:2, 4:4, 8:8.
+/** RMT TxDq
+ Step size of TxDq. Auto- 1. Supported values- 1,2,4,8 in FSP.
1:Auto, 2:2, 4:4, 8:8
**/
UINT8 RMTTxDq;
-/** Offset 0x0228 - RMT TxVref
- Step size of TxVref. Auto: 1. Supported values: 1,2,4,8 in FSP - <b>1:Auto(Default)</b>,
- 2:2, 4:4, 8:8.
+/** RMT TxVref
+ Step size of TxVref. Auto- 1. Supported values- 1,2,4,8 in FSP.
1:Auto, 2:2, 4:4, 8:8
**/
UINT8 RMTTxVref;
-/** Offset 0x0229 - DDR5 ECS
- Enable/Disable DDR5 Error Check and Scrub (ECS) in FSP - 0:Disable, <b>1:Enable(Default)</b>.
- 0:Disable, 1:Enable
+/** DDR5 ECS
+ Disable: Disable ECS/Result collection. Enable: Enable ECS without Result Collection.
+ Enable ECS with Result Collection: Enable ECS/Result Collection.
+ 0:Disable, 1:Enable, 2:Enable ECS with Result Collection
**/
UINT8 ErrorCheckScrub;
-/** Offset 0x022A - Enforce Memory POR
- 0:Enforce POR - Enforces Plan Of Record restrictions for DDR5 frequency and voltage
- programming. <b>2:Disable - Disables this feature and user is able to run at higher
- frequencies, specified in the DDR Frequency Limit field (limited by processor support)(Default)</b>.
- 0:Enforce POR, 2:Disabled
+/** Runtime PPR/Row Sparing
+ Enable/Disable Runtime PPR / Row Sparing.
+ $EN_DIS
+**/
+ UINT8 RtRowSparing;
+
+/** Mca Bank Warm Boot Clear Errors
+ Enable/Disable Mca Bank Warm Boot Clear Errors.
+ $EN_DIS
+**/
+ UINT8 McBankWarmBootClearError;
+
+/** RasStateVarPtr
+ Pointer to array of RAS_STATE_VARIABLE_DATA
+**/
+ UINT32 RasStateVarPtr;
+
+/** Enforce Memory POR
+ Enforce POR (0x0) - Enforces Plan Of Record restrictions for DDR5 frequency and
+ voltage programming. Enforce Stretch Goals (0x1) - Enforce DDR memory frequency
+ stretch goal. <b>Disable (0x2 - Default)</b> - Disables this feature and user is
+ able to run at higher frequencies, specified in the DDR Frequency Limit field (limited
+ by processor support).
+ 0:POR, 1:Enforce Stretch Goals, 2:Disabled
**/
UINT8 EnforceDdrMemoryFreqPor;
-/** Offset 0x022B - Enforce Population POR
+/** Enforce Population POR
Enable Memory Population POR Enforcement. Selecting Enforce Validated Populations
- will only allow populations that have been validated in FSP - <b>0:Disable(Default)</b>,
- 1:Enable.
- 0:Disable, 1:Enable
+ will only allow populations that have been validated in FSP.
+ $EN_DIS
**/
UINT8 EnforcePopulationPor;
-/** Offset 0x022C - DDR PPR Type
- Selects DDR Post Package Repair Type - 2: Hard PPR, <b>1: Soft PPR (Default)</b>,
- 0: Disabled.
+/** DDR PPR Type
+ Selects DDR Post Package Repair Type - 2- Hard PPR, <b>1- Soft PPR (Default)</b>,
+ 0- Disabled.
0:Disabled, 2:Hard PPR, 1:Soft PPR
**/
UINT8 pprType;
-/** Offset 0x022D - Force PPR On All Dram for UCE
- Force PPR on all dram for UCE in FSP - <b>0:Disable(Default)</b>, 1:Enable.
- 0:Disabled, 1:Enabled
-**/
- UINT8 ForcePprOnAllDramUce;
-
-/** Offset 0x022E
-**/
- UINT8 UnusedUpdSpace12[2];
-
-/** Offset 0x0230 - pprAddrVariablePtr
+/** pprAddrVariablePtr
Pointer to array of PPR_ADDR_VARIABLE
**/
UINT32 PprAddrVariablePtr;
-/** Offset 0x0234 - Allow Memory Test Correctable Error
+/** BDAT ACPI Table
+ Enable / Disable publishing BDAT ACPI Table in FSP.
+ $EN_DIS
+**/
+ UINT8 bdatEn;
+
+/** Allow Memory Test Correctable Error
Enable - Logs error and allows correctable errors during memory test(DIMM Rank not
removed). Disable - Logs error and removes DIMM Rank. Auto - Sets it to the MRC
- default setting; current default is Enable in FSP - 0:Disable, <b>1:Enable(Default)</b>.
- 0:Disable, 1:Enable
+ default setting; current default is Enable in FSP.
+ $EN_DIS
**/
UINT8 allowCorrectableMemTestError;
-/** Offset 0x0235 - Memory I/O Health Check
- Memory I/O Health Check - 0: Auto, 1: Manual, <b>2: Disable (Default)</b>. Select
- option Auto for default values. Manual for new values. Disable for disabling feature
- in FSP - 0:Auto, 1:Manual, <b>2:Disable(Default)</b>.
+/** SlotPerChannel
+ Slot number per channel, default value is 2
+ 1:Slot1, 2:Slot2
+**/
+ UINT8 SlotPerChannel;
+
+/** Memory I/O Health Check
+ Memory I/O Health Check - 0- Auto, 1- Manual, <b>2- Disable (Default)</b>. Select
+ option Auto for default values. Manual for new values. Disable for disabling feature in FSP.
0:Auto, 1:Manual, 2:Disable
**/
UINT8 MemIOHealthCheck;
-/** Offset 0x0236 - RxDqsDelay Left Edge
+/** Memory I/O Health Turnaround Test
+ Memory I/O Health Turnaround Test - 1- Enable, <b>0- Disable (Default)</b>. Select
+ Disable for disabling feature in FSP. Enable for enabling feature in FSP.
+ 0:Disable, 1:Enable
+**/
+ UINT8 MemIOHealthTurnaroundTest;
+
+/** Memory I/O Health Check Loop Count
+ CPGC Test Loop Count for Memory IO Health Test.
+**/
+ UINT8 MemIOLoopCount;
+
+/** RxDqsDelay Left Edge
Offset for RxDqsDelay Left Edge in FSP.
**/
UINT8 CriticalRxDqsDelayLeftEdge;
-/** Offset 0x0237 - RxDqsDelay Right Edge
+/** RxDqsDelay Right Edge
Offset for RxDqsDelay Right in FSP.
**/
UINT8 CriticalRxDqsDelayRightEdge;
-/** Offset 0x0238 - RxVref Left Edge
+/** RxVref Left Edge
Offset for RxVref Left Edge in FSP.
**/
UINT8 CriticalRxVrefLeftEdge;
-/** Offset 0x0239 - RxVref Right Edge
+/** RxVref Right Edge
Offset for RxVref Right Edge in FSP.
**/
UINT8 CriticalRxVrefRightEdge;
-/** Offset 0x023A - TxDqDelay Left Edge
+/** TxDqDelay Left Edge
Offset for TxDqDelay Left Edge in FSP.
**/
UINT8 CriticalTxDqDelayLeftEdge;
-/** Offset 0x023B - TxDqDelay Right Edge
+/** TxDqDelay Right Edge
Offset for TxDqDelay Right Edge in FSP.
**/
UINT8 CriticalTxDqDelayRightEdge;
-/** Offset 0x023C - TxVref Left Edge
+/** TxVref Left Edge
Offset for TxDqDelay Left Edge in FSP.
**/
UINT8 CriticalTxVrefLeftEdge;
-/** Offset 0x023D - TxVref Right Edge
+/** TxVref Right Edge
Offset for TxDqDelay Right Edge in FSP.
**/
UINT8 CriticalTxVrefRightEdge;
-/** Offset 0x023E - Reboot On Critical Failure
- Reboot System on Critical failure to do Memory Training in FSP - 0:Disable, <b>1:Enable(Default)</b>.
- 0:Disable, 1:Enable
+/** Reboot On Critical Failure
+ Reboot System on Critical failure to do Memory Training in FSP.
+ $EN_DIS
**/
UINT8 ResetOnCriticalError;
-/** Offset 0x023F - Number of Times to Reboot and Retrain
+/** Number of Times to Reboot and Retrain
Number of times to Reboot System on Critical failure to do Memory Training in FSP.
**/
UINT8 CriticalRetries;
-/** Offset 0x0240 - Memory I/O Health Check Loop Count
- CPGC Test Loop Count for Memory IO Health Test
-**/
- UINT8 MemIOHealthLoopCount;
-
-/** Offset 0x0241 - Telemetry RxDqsDelay Left Edge
+/** Telemetry RxDqsDelay Left Edge
Offset for Telemetry RxDqsDelay Left Edge in FSP.
**/
UINT8 TelemetryRxDqsDelayLeftEdge;
-/** Offset 0x0242 - Telemetry RxDqsDelay Right Edge
+/** Telemetry RxDqsDelay Right Edge
Offset for Telemetry RxDqsDelay Right Edge in FSP.
**/
UINT8 TelemetryRxDqsDelayRightEdge;
-/** Offset 0x0243 - Telemetry RxVref Left Edge
+/** Telemetry RxVref Left Edge
Offset for Telemetry RxDqsDelay Left Edge in FSP.
**/
UINT8 TelemetryRxVrefLeftEdge;
-/** Offset 0x0244 - Telemetry RxVref Right Edge
+/** Telemetry RxVref Right Edge
Offset for Telemetry RxDqsDelay Right Edge in FSP.
**/
UINT8 TelemetryRxVrefRightEdge;
-/** Offset 0x0245 - Telemetry TxDqDelay Left Edge
+/** Telemetry TxDqDelay Left Edge
Offset for Telemetry TxDqDelay Left Edge in FSP.
**/
UINT8 TelemetryTxDqDelayLeftEdge;
-/** Offset 0x0246 - Telemetry TxDqDelay Right Edge
+/** Telemetry TxDqDelay Right Edge
Offset for Telemetry TxDqDelay Right Edge in FSP.
**/
UINT8 TelemetryTxDqDelayRightEdge;
-/** Offset 0x0247 - Volatile Memory Mode
- Selects 1LM or 2LM mode for volatile memory. For 2LM memory mode, system will try
- to configure 2LM but if system is unable to configure 2LM, volatile memory mode
- will fall back to 1LM in FSP - <b>0: 1LM(Default)</b>, 1: 2LM, 2: MIX 1LM2LM.
- 0: 1LM, 1: 2LM, 2: MIX 1LM2LM
+/** Telemetry TxVref Left Edge
+ Offset for Telemetry TxDqDelay Left Edge in FSP.
+**/
+ UINT8 TelemetryTxVrefLeftEdge;
+
+/** Telemetry TxVref Right Edge
+ Offset for Telemetry TxDqDelay Right Edge in FSP.
+**/
+ UINT8 TelemetryTxVrefRightEdge;
+
+/** Telemetry CaTiming Left Edge
+ Offset for Telemetry CaTiming Left Edge in FSP.
+**/
+ UINT8 TelemetryCaTimingLeftEdge;
+
+/** Telemetry CaTiming Right Edge
+ Offset for Telemetry CaTiming Right Edge in FSP.
+**/
+ UINT8 TelemetryCaTimingRightEdge;
+
+/** Telemetry CtlTiming Left Edge
+ Offset for Telemetry CtlTiming Left Edge in FSP.
+**/
+ UINT8 TelemetryCtlTimingLeftEdge;
+
+/** Telemetry CtlTiming Right Edge
+ Offset for Telemetry CtlTiming Right Edge in FSP.
+**/
+ UINT8 TelemetryCtlTimingRightEdge;
+
+/** Telemetry CaVref Left Edge
+ Offset for Telemetry CaVref Left Edge in FSP.
+**/
+ UINT8 TelemetryCaVrefLeftEdge;
+
+/** Telemetry CaVref Right Edge
+ Offset for Telemetry CaVref Right Edge in FSP.
+**/
+ UINT8 TelemetryCaVrefRightEdge;
+
+/** Critical CaTiming Left Edge
+ Offset for Critical CaTiming Left Edge in FSP.
**/
- UINT8 volMemMode;
+ UINT8 CriticalCaTimingLeftEdge;
-/** Offset 0x0248 - Dynamic ECC Mode Selection
- Enable/Disable Dynamic ECC Mode Selection in FSP - 0:Disable, <b>1:Enable(Default)</b>,
- 2:Enable + Allow 128b ECC.
- 0:Disable, 1:Enable, 2:Enable + Allow 128b ECC
+/** Critical CaTiming Right Edge
+ Offset for Critical CaTiming Right Edge in FSP.
+**/
+ UINT8 CriticalCaTimingRightEdge;
+
+/** Critical CtlTiming Left Edge
+ Offset for Critical CtlTiming Left Edge in FSP.
+**/
+ UINT8 CriticalCtlTimingLeftEdge;
+
+/** Critical CtlTiming Right Edge
+ Offset for Critical CtlTiming Right Edge in FSP.
+**/
+ UINT8 CriticalCtlTimingRightEdge;
+
+/** Critical CaVref Left Edge
+ Offset for Critical CaVref Left Edge in FSP.
+**/
+ UINT8 CriticalCaVrefLeftEdge;
+
+/** Critical CaVref Right Edge
+ Offset for Critical CaVref Right Edge in FSP.
+**/
+ UINT8 CriticalCaVrefRightEdge;
+
+/** Intel(R) Flat Memory Mode Support
+ Enable or disable Intel(R) Flat Memory Mode support.
+ 0:Disable, 1:Enable
+**/
+ UINT8 Flat2lmSupport;
+
+/** Dynamic ECC Mode Selection
+ Enable/Disable Dynamic ECC Mode Selection in FSP.
+ $EN_DIS
**/
UINT8 DynamicEccModeSel;
-/** Offset 0x0249 - Memory Patrol Scrub
- Memory Patrol Scrub - 0:Disable, 1:Enable during FspMemoryInit(), <b>2:Enable during
- NotifyPhase(EnumInitPhaseReadyToBoot) (Default)</b>.
- 0:Disable, 1:Enable during FspMemoryInit(), 2:Enable during EnumInitPhaseReadyToBoot
+/** Leaky bucket high bit
+ Leaky bucket high bit" (0x1 - 0x29)
+**/
+ UINT8 leakyBktHi;
+
+/** Leaky bucket time window based interface Hour
+ Leaky bucket time window based interface Hour" (0 - 24)
+**/
+ UINT16 leakyBktHour;
+
+/** Leaky bucket low bit
+ Leaky bucket low bit" (0x1 - 0x29)
+**/
+ UINT8 leakyBktLo;
+
+/** Leaky bucket time window based interface Minute
+ Leaky bucket time window based interface Minute" (0 - 60)
+**/
+ UINT8 leakyBktMinute;
+
+/** Leaky bucket time window based interface
+ Enable/Disable leaky bucket time window based interface
+ 0:Disable, 1:Enable
+**/
+ UINT8 leakyBktTimeWindow;
+
+/** Memory Patrol Scrub
+ Enable/Disable Patrol Scrub
+ 0:Disable, 2:Enable at End of POST
**/
UINT8 PatrolScrub;
-/** Offset 0x024A - Memory Patrol Scrub
+/** Memory Patrol Scrub Notify
Memory Patrol Scrub - <b>0:Disable (Default)</b>, 1:Enable at ReadyToBootFsp().
- 0:Disable, 1:Enable Enable at ReadyToBootFsp()
+ 0:Disable, 1:Enable at ReadyToBootFsp()
**/
UINT8 PatrolScrubNotify;
-/** Offset 0x024B - Patrol Scrub Interval
+/** Patrol Scrub Interval
Patrol Scrub Interval in FSP.
**/
UINT8 PatrolScrubDuration;
-/** Offset 0x024C - Patrol Scrub Address Mode
- Selects the address mode between <b>1: System Physical Address (Default)</b>, 0:Reverse
- Address in FSP.
+/** Patrol Scrub Address Mode
+ Selects the address mode between <b>System Physical Address (0x1 - Default)</b>
+ or Reverse Address (0x0) in FSP.
0:Reverse Address, 1:System Physical Address
**/
UINT8 PatrolScrubAddrMode;
-/** Offset 0x024D - Memory Thermal Throttling Mode
- Memory Configure Memory Thermal Throttling Mode in FSP - 0:Disable, <b>2:CLTT_ENABLE(Default)</b>,
- 3:CLTT_PECI_ENABLE.
- 0:Disable, 2:CLTT_ENABLE, 3:CLTT_PECI_ENABLE
+/** Memory Thermal Throttling Mode
+ Memory Configure Memory Thermal Throttling Mode in FSP.
+ 0:Disable, 2:CLTT, 3:CLTT with PECI
**/
UINT8 thermalthrottlingsupport;
-/** Offset 0x024E - Memory Correctable Error Threshold
+/** Memory Correctable Error Threshold
Memory Correctable Error Threshold (1 - 32767) used for sparing and leaky bucket in FSP.
**/
UINT16 spareErrTh;
-/** Offset 0x0250 - WR CRC feature Control
- Enable/Disable Write CRC in FSP - <b>0:Disable(Default)</b>, 1:Enable.
- 0:Disable, 1:Enable
+/** WR CRC feature Control
+ Enable/Disable Write CRC in FSP.
+ $EN_DIS
**/
UINT8 WrCRC;
-/** Offset 0x0251 - Adaptive Refresh Management Level
+/** DDR 2x Refresh Enable
+ Enable/Disable 2x Refresh. Auto = dynamically selected.
+ 0:Disable, 1:Enable, 2:Auto
+**/
+ UINT8 RefreshMode;
+
+/** Adaptive Refresh Management Level
Selects Adaptive Refresh Management(ARFM) Level when refresh management(RFM) is
- required. <b>0:Default - RAAIMT, RAAMMT, RAADEC(Default)</b>; 1:Level A - RAAIMT-A,
- RAAMMT-A, RAADEC-A; 2:Level B - RAAIMT-B, RAAMMT-B, RAADEC-B; 3:Level C - RAAIMT-C,
- RAAMMT-C, RAADEC-C
- 0:Default - RAAIMT; RAAMMT; RAADEC, 1:Level A - RAAIMT-A; RAAMMT-A; RAADEC-A, 2:Level
- B - RAAIMT-B; RAAMMT-B; RAADEC-B, 3:Level C - RAAIMT-C; RAAMMT-C; RAADEC-C
+ required. 0:Default - RAAIMT, RAAMMT, RAADEC; 1:Level A - RAAIMT-A, RAAMMT-A, RAADEC-A;
+ 2:Level B - RAAIMT-B, RAAMMT-B, RAADEC-B; 3:Level C - RAAIMT-C, RAAMMT-C, RAADEC-C
+ 0:Default - RAAIMT or RAAMMT or RAADEC, 1:Level A - RAAIMT-A or RAAMMT-A or RAADEC-A,
+ 2:Level B - RAAIMT-B or RAAMMT-B or RAADEC-B, 3:Level C - RAAIMT-C or RAAMMT-C
+ or RAADEC-C
**/
UINT8 AdaptiveRefreshMgmtLevel;
-/** Offset 0x0252 - MEMHOT INPUT Control
- Enable/Disable MEMHOT INPUT in FSP - <b>0:Disable(Default)</b>, 1:Enable.
- 0:Disable, 1:Enable
+/** CXL Hetero Support
+ Enable/Disable (Default) DDR CXL Heterogeneous Interleave in FSP.
+ $EN_DIS
**/
- UINT8 MemHotIn;
+ UINT8 CxlHeteroSupport;
-/** Offset 0x0253 - MEMHOT OUTPUT Mode
- MEMHOT OUTPUT Mode in FSP - 0:Disable, <b>1:Enable only temphi(Default)</b>, 2:Enable
- temphi & mid, 3:Enable temphi & mid & low.
- 0:Disable, 1:Enable only temphi, 2:Enable temphi & mid, 3:Enable temphi & mid & low
+/** MEMHOT INPUT Control
+ Enable/Disable MEMHOT INPUT in FSP.
+ $EN_DIS
**/
- UINT8 MemhotOutputOnlyOpt;
+ UINT8 MemHotIn;
-/** Offset 0x0254 - CxlType3LegacyEn
- Enable or disable CXL type 3 device using CXL type 2 flow - <b>0:Disable(Default)</b>, 1:Enable.
- 0:Disable, 1:Enable
+/** MEMHOT OUTPUT Mode
+ MEMHOT OUTPUT Mode in FSP.
+ 0:Disable, 1:Enable only temphi, 2:Enable only temphi and mid, 3:Enable only temphi
+ mid and low
**/
- UINT8 DfxCxlType3LegacyEn;
+ UINT8 MemhotOutputOnlyOpt;
-/** Offset 0x0255 - DfxPmicSecureMode
- 0:Disable Pmic Secure Mode, 1:Enable Pmic Secure Mode, <b>2:Auto Pmic Secure Mode(Default)</b>.
+/** DfxPmicSecureMode
+ 0:Disable Pmic Secure Mode, 1:Enable Pmic Secure Mode, 2:Auto Pmic Secure Mode.
0:Disable Pmic Secure Mode, 1:Enable Pmic Secure Mode, 2:Auto Pmic Secure Mode
**/
UINT8 DfxPmicSecureMode;
-/** Offset 0x0256 - IIO PcieSubSystemMode0
- PcieSubSystemMode[MAX_SOCKET][0]: MAX_SOCKET=8, 0x00:IIO_MODE_GEN4_ONLY, 0x01:IIO_MODE_GEN5,
- 0x02:IIO_MODE_CXL, 0x03:IIO_MODE_FORCE_CXL, <b>0x01:IIO_MODE_GEN5(Default)</b>
-**/
- UINT8 IioPcieSubSystemMode0[8];
-
-/** Offset 0x025E - IIO PcieSubSystemMode1
- PcieSubSystemMode[MAX_SOCKET][0]: MAX_SOCKET=8, 0x00:IIO_MODE_GEN4_ONLY, 0x01:IIO_MODE_GEN5,
- 0x02:IIO_MODE_CXL, 0x03:IIO_MODE_FORCE_CXL, <b>0x01:IIO_MODE_GEN5(Default)</b>
-**/
- UINT8 IioPcieSubSystemMode1[8];
-
-/** Offset 0x0266 - IIO PcieSubSystemMode2
- PcieSubSystemMode[MAX_SOCKET][0]: MAX_SOCKET=8, 0x00:IIO_MODE_GEN4_ONLY, 0x01:IIO_MODE_GEN5,
- 0x02:IIO_MODE_CXL, 0x03:IIO_MODE_FORCE_CXL, <b>0x01:IIO_MODE_GEN5(Default)</b>
+/** SpdPrintEn
+ Enable/Disable SPD Print
+ $EN_DIS
**/
- UINT8 IioPcieSubSystemMode2[8];
+ UINT8 SpdPrintEn;
-/** Offset 0x026E - IIO PcieSubSystemMode3
- PcieSubSystemMode[MAX_SOCKET][0]: MAX_SOCKET=8, 0x00:IIO_MODE_GEN4_ONLY, 0x01:IIO_MODE_GEN5,
- 0x02:IIO_MODE_CXL, 0x03:IIO_MODE_FORCE_CXL, <b>0x01:IIO_MODE_GEN5(Default)</b>
-**/
- UINT8 IioPcieSubSystemMode3[8];
-
-/** Offset 0x0276 - IIO PcieSubSystemMode4
- PcieSubSystemMode[MAX_SOCKET][0]: MAX_SOCKET=8, 0x00:IIO_MODE_GEN4_ONLY, 0x01:IIO_MODE_GEN5,
- 0x02:IIO_MODE_CXL, 0x03:IIO_MODE_FORCE_CXL, <b>0x01:IIO_MODE_GEN5(Default)</b>
-**/
- UINT8 IioPcieSubSystemMode4[8];
-
-/** Offset 0x027E - IIO PcieSubSystemMode5
- PcieSubSystemMode[MAX_SOCKET][0]: MAX_SOCKET=8, 0x00:IIO_MODE_GEN4_ONLY, 0x01:IIO_MODE_GEN5,
- 0x02:IIO_MODE_CXL, 0x03:IIO_MODE_FORCE_CXL, <b>0x01:IIO_MODE_GEN5(Default)</b>
-**/
- UINT8 IioPcieSubSystemMode5[8];
-
-/** Offset 0x0286 - IIO PcieSubSystemMode6
- PcieSubSystemMode[MAX_SOCKET][0]: MAX_SOCKET=8, 0x00:IIO_MODE_GEN4_ONLY, 0x01:IIO_MODE_GEN5,
- 0x02:IIO_MODE_CXL, 0x03:IIO_MODE_FORCE_CXL, <b>0x01:IIO_MODE_GEN5(Default)</b>
+/** Force PPR On All Dram For UCE
+ Enable/Disable force PPR on all dram for UCE.
+ 0:Disable, 1:Enable
**/
- UINT8 IioPcieSubSystemMode6[8];
+ UINT8 ForcePprOnAllDramUce;
-/** Offset 0x028E - CXL Header Bypass
- Enable/Disable the CXL header bypass in FSP - <b>0:Disabled(Default)</b>, 1:Enabled.
+/** CXL Header Bypass
+ Enable/Disable the CXL header bypass in FSP.
0:Disable, 1:Enable
**/
UINT8 DfxCxlHeaderBypass;
-/** Offset 0x028F - CXL Security Level
+/** CXL Security Level
CXL Security Level<br>\n
- 0: Fully Trusted - CXL Device can get access on CXL.$ for host-attached and device
+ 0- Fully Trusted - CXL Device can get access on CXL.$ for host-attached and device
attached memory ranges in the WB address space.<br>\n
- 1: Partially Trusted - CXL Device can get access on CXL.$ for device attached memory
+ 1- Partially Trusted - CXL Device can get access on CXL.$ for device attached memory
ranges only;<br>\n
- 2: Untrusted - All requests on CXL.$ will be aborted by the Host.<br>\n
- <b>3: Auto - Currently identical to Fully Trusted. (Default)</b>
+ 2- Untrusted - All requests on CXL.$ will be aborted by the Host.<br>\n
+ <b>3- Auto - Currently identical to Fully Trusted. (Default)</b>
0:Fully Trusted, 1:Partially Trusted, 2:Untrusted, 3:Auto
**/
UINT8 DfxCxlSecLvl;
-/** Offset 0x0290
-**/
- UINT32 DfxCxlDebugModePtr;
-
-/** Offset 0x0294
-**/
- UINT32 DfxCxlDebugModeNumber;
-
-/** Offset 0x0298 - Lock Chipset
- Lock or Unlock chipset in FSP - <b>0:Disabled(Default)</b>, 1:Enabled.
- 0:Disable, 1:Enable
+/** CXL VID
+ CXL VID on SPR B0. Auto(Default) and Enable is 0x1E98. Disable is 0x8086
+ 0:Disable, 1:Enable, 2:Auto
**/
- UINT8 LockChipset;
+ UINT8 DfxCxlVid;
-/** Offset 0x0299 - MSR Lock Control
- Enable - MSR 3Ah and CSR 80h will be locked in FSP. Power Good reset is needed to
- remove lock bits - <b>0:Disabled(Default)</b>, 1:Enabled.
- 0:Disable, 1:Enable
+/** Warm-Reset Elimination
+ When enabled, BIOS will attempt to skip warm-reset on the cold-reset path. Auto:
+ platform or silicon RC policy determines feature status
+ 0:Disable, 1:Enable, 2:Auto
**/
- UINT8 ProcessorMsrLockControl;
+ UINT8 DfxWarmResetEliminationEn;
-/** Offset 0x029A - DFX Enable
- When Enabled, Expose IIO DFX devices and other CPU devices like PMON in FSP - <b>0:Disabled(Default)</b>,
- 1:Enabled.
- 0:Disable, 1:Enable
+/** IIO DFX CxlDebugMode Ptr
+ Pointer to array of CxlDebugMode settings Per Port, 0x00000000 indicates Dfx CXL
+ Debug mode Disable.
**/
- UINT8 DFXEnable;
+ UINT32 DfxCxlDebugModePtr;
-/** Offset 0x029B - DFX Disable Bios Done
- When Enabled, suppresses notifying processor via MSR 151h that boot initialization
- is finished in FSP - <b>0:Disabled(Default)</b>, 1:Enabled.
- 0:Disable, 1:Enable
+/** IIO DFX CxlDebugMode Number
+ Number of elements in DfxCxlDebugModePtr array, port number as unit, should be set
+ along with DfxCxlDebugModePtr.
**/
- UINT8 DfxDisableBiosDone;
+ UINT32 DfxCxlDebugModeNumber;
-/** Offset 0x029C - Processor Package C State
- Package C State - 0: C0/C1 state, 1: C2 state, 2: C6(non Retention) state, 3: C6(Retention)
+/** Processor Package C State
+ Package C State 0: C0/C1 state, 1: C2 state, 2: C6(non Retention) state, 3: C6(Retention)
state, 7: No Limit, <b>0xFF: Auto (Default)</b>
0: C0/C1 state, 1: C2 state, 2: C6(non Retention) state, 3: C6(Retention) state,
7: No Limit, 0xFF: Auto
**/
UINT8 CpuPmPackageCState;
-/** Offset 0x029D - Enhanced Intel SpeedStep(R) Tech
- Enhanced Intel SpeedStep(R) Tech - <b>1: Enable(Default)</b>, 0: Disable.
- 0:Disabled, 1:Enabled
+/** Enhanced Intel SpeedStep(R) Tech
+ Enable(Default)/Disable Enhanced Intel SpeedStep(R) Tech
+ $EN_DIS
**/
UINT8 CpuPmEistEnable;
-/** Offset 0x029E - C1E
- C1E - <b>1: Enable(Default)</b>, 0: Disable.
+/** C1E
+ Enable(Default)/Disable C1E
+ $EN_DIS
**/
UINT8 CpuPmC1eEnable;
-/** Offset 0x029F - Intel SST-PP
- Intel SST-PP Select allows user to choose level - <b>0xFF: Choose lowest level hardware
- supported(Default)</b>, 0: Level 0, 3: Level 3, 4: Level 4.
+/** Intel SST-PP
+ Intel SST-PP Select allows user to choose level.\n
+ AUTO: Choose lowest level hardware supported.
+ 0xFF: AUTO (default), 0: Level 0, 1: Level 1, 2: Level 2, 3: Level 3, 4: Level 4
**/
- UINT8 CpuPmIssTdpLevel;
+ UINT8 CpuPmSstPpLevel;
-/** Offset 0x02A0 - Activate SST-BF
+/** Intel SST-BF
SST-BF - <b>0: Disable (Default)</b>, 1: Enabled.
- 0:Disabled, 1:Enabled
+ $EN_DIS
+**/
+ UINT8 CpuPmProcessorSstBfSetting;
+
+/** Core Disable Bitmask for Socket 0 - Compute Die 0
+ Set bit(s) to Disable or clear bit(s) to Enable core(s) on Socket 0 - Compute Die
+ 0.\n
+ NOTE:\n
+ (1) Any core disabled by user will force static SST-PP.\n
+ (2) Please leave this UPD at default value if CPU SKU does not support the corresponding
+ number of compute die.
+**/
+ UINT64 CpuPmCoreDisableBitmaskSkt0Die0;
+
+/** Core Disable Bitmask for Socket 0 - Compute Die 1
+ Set bit(s) to Disable or clear bit(s) to Enable core(s) on Socket 0 - Compute Die
+ 1.\n
+ NOTE:\n
+ (1) Any core disabled by user will force static SST-PP.\n
+ (2) Please leave this UPD at default value if CPU SKU does not support the corresponding
+ number of compute die.
+**/
+ UINT64 CpuPmCoreDisableBitmaskSkt0Die1;
+
+/** Core Disable Bitmask for Socket 0 - Compute Die 2
+ Set bit(s) to Disable or clear bit(s) to Enable core(s) on Socket 0 - Compute Die
+ 2.\n
+ NOTE:\n
+ (1) Any core disabled by user will force static SST-PP.\n
+ (2) Please leave this UPD at default value if CPU SKU does not support the corresponding
+ number of compute die.
+**/
+ UINT64 CpuPmCoreDisableBitmaskSkt0Die2;
+
+/** Core Disable Bitmask for Socket 1 - Compute Die 0
+ Set bit(s) to Disable or clear bit(s) to Enable core(s) on Socket 1 - Compute Die
+ 0.\n
+ NOTE:\n
+ (1) Any core disabled by user will force static SST-PP.\n
+ (2) Please leave this UPD at default value if CPU SKU does not support the corresponding
+ number of compute die.
+**/
+ UINT64 CpuPmCoreDisableBitmaskSkt1Die0;
+
+/** Core Disable Bitmask for Socket 1 - Compute Die 1
+ Set bit(s) to Disable or clear bit(s) to Enable core(s) on Socket 1 - Compute Die
+ 1.\n
+ NOTE:\n
+ (1) Any core disabled by user will force static SST-PP.\n
+ (2) Please leave this UPD at default value if CPU SKU does not support the corresponding
+ number of compute die.
+**/
+ UINT64 CpuPmCoreDisableBitmaskSkt1Die1;
+
+/** Core Disable Bitmask for Socket 1 - Compute Die 2
+ Set bit(s) to Disable or clear bit(s) to Enable core(s) on Socket 1 - Compute Die
+ 2.\n
+ NOTE:\n
+ (1) Any core disabled by user will force static SST-PP.\n
+ (2) Please leave this UPD at default value if CPU SKU does not support the corresponding
+ number of compute die.
+**/
+ UINT64 CpuPmCoreDisableBitmaskSkt1Die2;
+
+/** Processor Dynamic Intel Speed Select (ISS) Function
+ Enable or Disable(Default) Processor Dynamic Intel Speed Select (ISS) Function
+ $EN_DIS
+**/
+ UINT8 CpuPmDynamicIss;
+
+/** BIOS Region Base
+ Pointer to the location of the BIOS Region
**/
- UINT8 CpuPmProcessorActivePbf;
+ UINT32 BiosRegionBase;
-/** Offset 0x02A1
+/** BIOS Region Size
+ The size of the BIOS Region in bytes
**/
- UINT8 UnusedUpdSpace13[7];
+ UINT32 BiosRegionSize;
-/** Offset 0x02A8 - Socket 0 Core Disable Bitmask
- Set bit(s) to Disable or clear bit(s) to Enable core(s) on Socket 0. NOTE: Any core
- disabled by user will force static SST-PP.
+/** Platform Data Area Base
+ Pointer to the location of the Platform Data Area
**/
- UINT64 CpuPmCoreDisableBitmask0;
+ UINT32 PlatformDataAreaBase;
-/** Offset 0x02B0 - Socket 1 Core Disable Bitmask
- Set bit(s) to Disable or clear bit(s) to Enable core(s) on Socket 1. NOTE: Any core
- disabled by user will force static SST-PP.
+/** Platform Data Area Size
+ The size of the Platform Data Area in bytes
**/
- UINT64 CpuPmCoreDisableBitmask1;
+ UINT32 PlatformDataAreaSize;
-/** Offset 0x02B8
+/** N/A
**/
UINT8 ReservedMemoryInitUpd[16];
-/** IIO Board settings Hob Ptr
- Pointer to array of IIO_BOARD_SETTINGS_HOB
+/** Enable TME
+ Enable TME
+ $EN_DIS
**/
- UINT32 IioBoardSettingsHobPtr;
+ UINT8 SecurityCctEnableTme;
-/** IIO Board Settings Hob length
- The IIO Board Settings Hob Length.
+/** Enable TME CR
+ Enable TME CR
+ $EN_DIS
**/
- UINT32 IioBoardSettingsHobLength;
+ UINT8 SecurityCctEnableTmeCR;
-/** BIOS Region Base
- Pointer to the location of the BIOS Region
+/** Enable MKTME
+ Enable MKTME
+ $EN_DIS
**/
- UINT32 BiosRegionBase;
-
-/** BIOS Region Size
- The size of the BIOS Region in bytes
+ UINT8 SecurityCctEnableMktme;
+
+/** Enable Global Integrity
+ Enable Global Integrity
+ $EN_DIS
**/
- UINT32 BiosRegionSize;
+ UINT8 SecurityCctEnableGlobalIntegrity;
+
+/** Select TME Crypto Algorithm
+ Enable Global Integrity
+ 0:Algo1,1:Algo2, 2:Algo3
+**/
+ UINT16 SecurityCctTmeCryptoAlg;
+
+/** Enable TDX
+ : Enable TDX
+**/
+ UINT8 SecurityCctEnableTdx;
+
+/** Enable TDX Connect
+ : Enable TDX Connect
+**/
+ UINT8 SecurityCctEnableTdxConnect;
+
+/** TDX Physical PCIe Port Disable Bitmap
+ TDX Physical PCIe Port Disable Bitmap
+**/
+ UINT16 SecurityCctTdxPhysicalPciePortDisableBitmap[8];
+
+/** Key Split
+ : Key Split
+**/
+ UINT8 SecurityCctKeySplit;
+
+/** Enable TDX SEAM Loader
+ : Enable TDX SEAM Loader
+ $EN_DIS
+**/
+ UINT8 SecurityCctEnableTdxSeamldr;
+
+/** Enabne SGX
+ : Enable SGX
+ $EN_DIS
+**/
+ UINT8 SecurityCctEnableSgx;
+
+/** Dfx Sgx CMCS Payload
+ Dfx Sgx CMCS Payload
+**/
+ UINT64 SecurityCctDfxSgxCmcsPayload[16];
+
+/** SGX QoS
+ : SGX QoS
+ $EN_DIS
+**/
+ UINT8 SecurityCctSgxQoS;
+
+/** SGX Auto Registration Agent
+ : SGX Auto Registration Agent
+ $EN_DIS
+**/
+ UINT8 SecurityCctSgxAutoRegistrationAgent;
+
+/** SGX Package Info In Band Access
+ : SGX Package Info In Band Access
+ $EN_DIS
+**/
+ UINT8 SecurityCctSgxPackageInfoInBandAccess;
+
+/** EPOCH Update
+ : EPOCH Update
+ 3:EpochDeactived, 0:EpochActived, 1:NewRandomEpoch, 2:ManualEpoch
+**/
+ UINT8 SecurityCctEpochUpdate;
+
+/** SGX EPOCH 0
+ : SGX EPOCH 0
+**/
+ UINT64 SecurityCctSgxEpoch0;
+
+/** SGX EPOCH 1
+ : SGX EPOCH 1
+**/
+ UINT64 SecurityCctSgxEpoch1;
+
+/** SGX LeWr
+ : SGX LeWr
+ $EN_DIS
+**/
+ UINT8 SecurityCctSgxLeWr;
+
+/** SGX Le Public Key Hash 0
+ : SGX Le Public Key Hash 0
+**/
+ UINT64 SecurityCctSgxLePubKeyHash0;
+
+/** SGX Le Public Key Hash 1
+ : SGX Le Public Key Hash 1
+**/
+ UINT64 SecurityCctSgxLePubKeyHash1;
+
+/** SGX Le Public Key Hash 2
+ : SGX Le Public Key Hash 2
+**/
+ UINT64 SecurityCctSgxLePubKeyHash2;
+
+/** SGX Le Public Key Hash 3
+ : SGX Le Public Key Hash 3
+**/
+ UINT64 SecurityCctSgxLePubKeyHash3;
+
+/** SGX Debug Mode
+ : SGX Debug Mode
+ $EN_DIS
+**/
+ UINT8 SecurityCctSgxDebugMode;
+
+/** SGX Factory Reset
+ : SGX Factory Reset
+ $EN_DIS
+**/
+ UINT8 SecurityCctSgxFactoryReset;
+
+/** Dfx Bios Param Header Override
+ : Dfx Bios Param Header Override
+ 2:Auto, 1:Enabled
+**/
+ UINT8 SecurityCctDfxBiosParamHeaderOverride;
+
+/** Dfx Bios Param Header Version
+ : Dfx Bios Param Header Version
+**/
+ UINT16 SecurityCctDfxBiosParamHeaderVersion;
+
+/** Dfx Disable Actm Launch
+ : Dfx Disable Actm Launch
+ 1:Enabled, 0:Disabled, 2:Auto
+**/
+ UINT8 SecurityCctDfxDisableActmLaunch;
+
+/** ACTM Flash Base
+ : ACTM Flash Base
+**/
+ UINT32 SecurityCctActmPcdFlash;
+
+/** Enable UPI FLE
+ : Enable UPI FLE
+ $EN_DIS
+**/
+ UINT8 SecurityCctEnableUpiFle;
+
+/** Enable SAF
+ : Enable SAF
+ $EN_DIS
+**/
+ UINT8 SecurityCctEnableSaf;
+
+/** Dfx TDX Disable 1MB CMR Exclude
+ : Dfx TDX Disable 1MB CMR Exclude
+ 1:Enabled, 0:Disabled, 2:Auto
+**/
+ UINT8 SecurityCctDfxTdxDisable1MbCmrExclude;
+
+/** Dfx Seamldr Source location
+ : Dfx Seamldr Source location
+ 2:Auto, 0:ESP, 1:IFWI
+**/
+ UINT8 SecurityCctDfxSeamldrSrc;
+
+/** Dfx Tdx module Source location
+ : Dfx Tdx module Source location
+ 2:Auto, 0:ESP, 1:IFWI
+**/
+ UINT8 SecurityCctDfxTdxModuleSrc;
+
+/** Dfx PRMRR SEAMRR Support
+ : Dfx PRMRR SEAMRR Support
+ 1:Enabled, 0:Disabled, 2:Auto
+**/
+ UINT8 SecurityCctDfxPrmrrSeamrrSupport;
+
+/** Dfx Simics Environment
+ : Dfx Simics Environment
+ 2:Auto, 1:Enabled
+**/
+ UINT8 SecurityCctDfxSimicsEnvironment;
+
+/** Dfx Force UPL Unsupported
+ : Dfx Force UPL Unsupported
+ 2:Auto, 1:Enabled
+**/
+ UINT8 SecurityCctDfxForceUplUnsupported;
+
+/** Dfx TME Key Restore
+ : Dfx TME Key Restore
+ $EN_DIS
+**/
+ UINT8 SecurityCctDfxTmeKeyRestore;
+
+/** Dfx TME Exclusion Base
+ : Dfx TME Exclusion Base
+**/
+ UINT64 SecurityCctDfxTmeExclusionBase;
+
+/** Dfx TME Exclusion Length
+ : Dfx TME Exclusion Length
+**/
+ UINT64 SecurityCctDfxTmeExclusionLength;
+
+/** Dfx MKTME KeyIdBits Override
+ : Dfx MKTME KeyIdBits Override
+ $EN_DIS
+**/
+ UINT8 SecurityCctDfxMkTmeKeyIdBitsOverride;
+
+/** Dfx MKTME KeyIdBits Override Value
+ : Dfx MKTME KeyIdBits Override Value
+**/
+ UINT8 SecurityCctDfxMkTmeKeyIdBitsOverrideValue;
+
+/** Dfx SGX Debug Print
+ : Dfx SGX Debug Print
+ $EN_DIS
+**/
+ UINT8 SecurityCctDfxSgxDebugPrint;
+
+/** Dfx SGX Registration Server Select
+ : Dfx SGX Registration Server Select
+ 1:PRX, 0:SBX, 3:LIV, 4:SoftwareDefined, 2:Auto
+**/
+ UINT8 SecurityCctDfxSgxRegistrationServerSelect;
+
+/** Dfx SGX Add Package Support
+ : Dfx SGX Add Package Support
+ 1:Enabled, 0:Disabled, 2:Auto
+**/
+ UINT8 SecurityCctDfxSgxAddPackageSupport;
+
+/** Dfx allow SGX non POR memory population
+ : Dfx SGX Add Package Support
+ 1:Enabled, 2:Auto
+**/
+ UINT8 SecurityCctDfxAllowSgxNonPorMemoryPopulation;
+
+/** Dfx SGX Hang Before ACTM
+ : Dfx SGX Hang Before ACTM
+ $EN_DIS
+**/
+ UINT8 SecurityCctDfxSgxHangBeforeActm;
+
+/** Dfx SGX Hang After ACTM
+ : Dfx SGX Hang After ACTM
+ $EN_DIS
+**/
+ UINT8 SecurityCctDfxSgxHangAfterActm;
+
+/** Dfx SGX Hang Before MCHECK
+ : Dfx SGX Hang Before MCHECK
+ $EN_DIS
+**/
+ UINT8 SecurityCctDfxSgxHangBeforeMcheck;
+
+/** Dfx SGX Hang After MCHECK
+ : Dfx SGX Hang After MCHECK
+ $EN_DIS
+**/
+ UINT8 SecurityCctDfxSgxHangAfterMcheck;
+
+/** Dfx SGX Hang Before MSR 7A
+ : Dfx SGX Hang Before MSR 7A
+ $EN_DIS
+**/
+ UINT8 SecurityCctDfxSgxHangBeforeMsr7a;
+
+/** Dfx SGX Hang After MSR 7A
+ : Dfx SGX Hang After MSR 7A
+ $EN_DIS
+**/
+ UINT8 SecurityCctDfxSgxHangAfterMsr7a;
+
+/** Dfx disable CCT MSR_BIOS_DONE
+ : Dfx disable CCT MSR_BIOS_DONE
+ $EN_DIS
+**/
+ UINT8 SecurityCctDfxDisableCctBiosDone;
+
+/** Dfx Mcheck MSR 72
+ : Dfx Mcheck MSR 72 programming
+ $EN_DIS
+**/
+ UINT8 SecurityCctDfxMcheckMsr72;
+
+/** Dfx Skip Warm Reset Promotion
+ : Dfx Skip Warm Reset Promotion
+ 2:Auto, 1:Enabled
+**/
+ UINT8 SecurityCctDfxSkipWarmResetPromotion;
+
+/** Enable SBFT
+ : Enable SBFT
+ 1:Enabled, 0:Disabled, 4:IfsSbftSgxEnabled
+**/
+ UINT8 SecurityCctEnableSbft;
+
+/** PRMRR SGX Size
+ : PRMRR SGX Size
+ 0x8000000:128MB, 0x10000000:256MB, 0x20000000:512MB, 0x40000000:1GB, 0x80000000:2GB,
+ 0x100000000:4GB, 0x200000000:8GB,0x400000000:16GB, 0x800000000:32GB, 0x1000000000:64GB,
+ 0x2000000000:128GB, 0x4000000000:256GB, 0x8000000000:512GB
+**/
+ UINT64 SecurityCctPrmrrSgxSize;
+
+/** PRMRR SAF Size
+ : PRMRR SAF Size
+ 0x0:Invalid, 0x800000:8MB, 0x2000000:32MB, 0x4000000:64MB, 0x8000000:128MB, 0x10000000:256MB
+**/
+ UINT64 SecurityCctPrmrrSafSize;
+
+/** PRMRR SBFT Size
+ : PRMRR SBFT Size
+ 0x0:Invalid, 0x10000000:256MB, 0x20000000:512MB
+**/
+ UINT64 SecurityCctPrmrrSbftSize;
+
+/** N/A
+ Pointer to node list which is used to initizalize security variables - CCT_VS_METADATA_NODE
+**/
+ EFI_PHYSICAL_ADDRESS SecurityCctVarStorageMetadataNodePtr;
+
+/** SINIT ACM SE SVN default
+ Default value of SINIT ACM SE SVN
+**/
+ UINT8 SecurityCctSinitAcmSeSvnFspDefault;
+
+/** SINIT ACM SE SVN override request
+ Override request for SINIT ACM SE SVN
+**/
+ UINT8 SecurityCctSinitAcmSeSvnOverrideRequest;
+
+/** SINIT ACM SE SVN value
+ Value of SINIT ACM SE SVN
+**/
+ UINT8 SecurityCctSinitAcmSeSvnValue;
+
+/** Setup data pointer
+ : Setup data pointer
+**/
+ UINT64 SetupDataPtr;
+
+/** Setup data Size
+ : Setup data Size
+**/
+ UINT64 SetupDataSize;
+
+/** Emulation Setting data pointer
+ : Emulation Setting data pointer
+**/
+ UINT64 EmulationSettingPtr;
+
+/** Emulation Setting data Size
+ : Emulation Setting data Size
+**/
+ UINT64 EmulationSettingSize;
+
+/** Platform info data pointer
+ : Platform info data pointer
+**/
+ UINT64 PlatformInfoPtr;
+
+/** Platform info data Size
+ : Platform info data Size
+**/
+ UINT64 PlatformInfoSize;
+
+/** FSPM Upd settings support
+ : FSPM Upd settings support
+ $EN_DIS
+**/
+ UINT8 FspmUpdSupport;
+
+/** Gen4 RCD Dimm support
+ Gen4 RCD Dimm support, 0- Disable, 1- Enable
+ 0:Disable, 1:Enable
+**/
+ UINT8 Gen4RcdDeviceSupport;
} FSPM_CONFIG;
+
typedef struct {
-
+
/** N/A
**/
FSP_UPD_HEADER FspUpdHeader;
-
+
/** N/A
**/
FSPM_ARCH2_UPD FspmArchUpd;
-
+
/** N/A
**/
FSPM_CONFIG FspmConfig;
diff --git a/src/vendorcode/intel/fsp/fsp2_0/graniterapids/sp/FspsUpd.h b/src/vendorcode/intel/fsp/fsp2_0/graniterapids/sp/FspsUpd.h
index 864a5a983f..11628ff7ee 100644
--- a/src/vendorcode/intel/fsp/fsp2_0/graniterapids/sp/FspsUpd.h
+++ b/src/vendorcode/intel/fsp/fsp2_0/graniterapids/sp/FspsUpd.h
@@ -1,6 +1,6 @@
/** @file
-Copyright (c) 2022, Intel Corporation. All rights reserved.<BR>
+Copyright (c) 2024, Intel Corporation. All rights reserved.<BR>
Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met:
@@ -30,261 +30,224 @@ are permitted provided that the following conditions are met:
**/
-#ifndef __FSPSUPD_H__
-#define __FSPSUPD_H__
+#ifndef __FSPS_UPD_H__
+#define __FSPS_UPD_H__
#include <FspUpd.h>
#pragma pack(1)
-
-/** FSP-S Configuration
-**/
typedef struct {
-/** Offset 0x0020 - Processor VmxEnable Function
- Processor VmxEnable Function - <b>1: Enable(Default)</b>, 0: Disable Processor VmxEnable Function.
- 0: Disable, 1: Enable
+/** PCIe Controller 0
+ Enable / Disable PCI Express controller 0
+ $EN_DIS
**/
- UINT8 VmxEnable;
+ UINT8 EnablePcie0;
-/** Offset 0x0021 - Processor TurboMode Function
- Processor TurboMode Function - <b>1: Enable(Default)</b>, 0: Disable Processor TurboMode Function.
- 0: Disable, 1: Enable
+/** PCIe Controller 1
+ Enable / Disable PCI Express controller 1
+ $EN_DIS
**/
- UINT8 TurboMode;
+ UINT8 EnablePcie1;
-/** Offset 0x0022 - Processor Safer Mode Extensions Function
- Processor Safer Mode Extensions Function - <b>0: Disable(Default)</b>, 1: Enable
- Processor Safer Mode Extensions Function.
- 0: Disable, 1: Enable
+/** Embedded Multi-Media Controller (eMMC)
+ Enable / Disable Embedded Multi-Media controller
+ $EN_DIS
**/
- UINT8 ProcessorSmxEnable;
+ UINT8 EnableEmmc;
-/** Offset 0x0023 - SstCp
- SstCp - 1: Enable, <b>0: Disable SstCp(Default)</b>.
- 0: Disable, 1: Enable
+/** LAN Controllers
+ Enable / Disable LAN controllers, refer to FSP Integration Guide for details.
+ 0:Disable LAN 0 & LAN 1, 1:Enable LAN 0 & LAN 1, 2:Disable LAN 1 only
**/
- UINT8 SstCpSetting;
+ UINT8 EnableGbE;
-/** Offset 0x0024 - SstCp Capable Status
- SST-CP Capable Status in system - <b>0: Disable(Default)</b>, 1: Enable.
- 0: Disable, 1: Enable
+/** PCIe Root Port 0 DeEmphasis
+ Desired DeEmphasis level for PCIE root port
+ 0:6dB, 1:3.5dB
**/
- UINT8 SstCpCapableSystem;
+ UINT8 PcieRootPort0DeEmphasis;
-/** Offset 0x0025
+/** PCIe Root Port 1 DeEmphasis
+ Desired DeEmphasis level for PCIE root port
+ 0:6dB, 1:3.5dB
**/
- UINT8 UnusedUpdSpace0[1];
+ UINT8 PcieRootPort1DeEmphasis;
-/** Offset 0x0026 - PCH Protect Range Limit
- Left shifted address by 12 bits with address bits 11:0 are assumed to be FFFh for
- limit comparison.
+/** PCIe Root Port 2 DeEmphasis
+ Desired DeEmphasis level for PCIE root port
+ 0:6dB, 1:3.5dB
**/
- UINT16 PchProtectedRangeLimit[5];
-
-/** Offset 0x0030 - PCH Protect Range Base
- Left shifted address by 12 bits with address bits 11:0 are assumed to be 0.
-**/
- UINT16 PchProtectedRangeBase[5];
+ UINT8 PcieRootPort2DeEmphasis;
-/** Offset 0x003A - PchAdrEn
- PchAdr - <b>0: PLATFORM POR(Default)</b>, 1: FORCE ENABLE, 2:FORCE DISABLE.
- 0: PLATFORM POR, 1: FORCE ENABLE, 2: FORCE DISABLE
+/** PCIe Root Port 3 DeEmphasis
+ Desired DeEmphasis level for PCIE root port
+ 0:6dB, 1:3.5dB
**/
- UINT8 PchAdrEn;
+ UINT8 PcieRootPort3DeEmphasis;
-/** FSP smm init enable
- Enable / Disable FSP smm init
- $EN_DIS
+/** PCIe Root Port 4 DeEmphasis
+ Desired DeEmphasis level for PCIE root port
+ 0:6dB, 1:3.5dB
**/
- UINT8 FspSmmInitEn;
+ UINT8 PcieRootPort4DeEmphasis;
-/** Offset 0x003B - EnableTme
- EnableTme - <b>0: Disabled(Default)</b>, 1: Enabled, 2:Software Controlled.
- 0: Disabled, 1: Enabled, 2:Software Controlled
+/** PCIe Root Port 5 DeEmphasis
+ Desired DeEmphasis level for PCIE root port
+ 0:6dB, 1:3.5dB
**/
- UINT8 EnableTme;
+ UINT8 PcieRootPort5DeEmphasis;
-/** Offset 0x003C - EnableTmeBypass
- EnableTmeBypass - <b>0: Disabled(Default)</b>, 1: Enabled.
- 0: Disabled, 1: Enabled
+/** PCIe Root Port 6 DeEmphasis
+ Desired DeEmphasis level for PCIE root port
+ 0:6dB, 1:3.5dB
**/
- UINT8 EnableTmeBypass;
+ UINT8 PcieRootPort6DeEmphasis;
-/** Offset 0x003D - SgxFactoryReset
- SgxFactoryReset - <b>0: Disabled(Default)</b>, 1: Enabled.
- 0: Disabled, 1: Enabled
+/** PCIe Root Port 7 DeEmphasis
+ Desired DeEmphasis level for PCIE root port
+ 0:6dB, 1:3.5dB
**/
- UINT8 SgxFactoryReset;
+ UINT8 PcieRootPort7DeEmphasis;
-/** Offset 0x003E - EnableSgx
- EnableSgx - <b>0: Disabled(Default)</b>, 1: Enabled.
- 0: Disabled, 1: Enabled
+/** eMMC DLL Configuration Data
+ Pointer to eMMC DLL Configuration Data
**/
- UINT8 EnableSgx;
+ UINT32 EMMCDLLConfigPtr;
-/** Offset 0x003F - SgxPackageInfoInBandAccess
- SgxPackageInfoInBandAccess - <b>0: Disabled(Default)</b>, 1: Enabled.
- 0: Disabled, 1: Enabled
+/** PCH Protect Range Limit
+ Left shifted address by 12 bits with address bits 11:0 are assumed to be FFFh for
+ limit comparison.
**/
- UINT8 SgxPackageInfoInBandAccess;
+ UINT16 PchProtectedRangeLimit[5];
-/** Offset 0x0040 - SgxQoS
- SgxQoS - 0: Disabled, <b>1: Enabled(Default)</b>.
- 0: Disabled, 1: Enabled
+/** PCH Protect Range Base
+ Left shifted address by 12 bits with address bits 11:0 are assumed to be 0.
**/
- UINT8 SgxQoS;
+ UINT16 PchProtectedRangeBase[5];
-/** Offset 0x0041 - EpochUpdate
- EpochUpdate - 1: Change to New Random Owner EPOCHs, <b>2: Manual User Defined Owner
- EPOCHs(Default)</b>.
- 1: Change to New Random Owner EPOCHs, 2: Manual User Defined Owner EPOCHs
+/** PchAdrEn
+ PchAdr 0:PLATFORM POR, <b>1:FORCE ENABLE(Default)</b>, 2:FORCE DISABLE
+ 0:PLATFORM POR, 1:FORCE ENABLE, 2:FORCE DISABLE
**/
- UINT8 EpochUpdate;
+ UINT8 PchAdrEn;
-/** Offset 0x0042 - SgxLeWr
- SgxLeWr - <b>0: Disabled(Default)</b>, 1: Enabled.
- 0: Disabled, 1: Enabled
+/** Enable Timed GPIO0
+ Enable/Disable Timed GPIO0. When disabled, it disables cross time stamp time-synchronization
+ as extension of Hammock Harbor time synchronization
+ $EN_DIS
**/
- UINT8 SgxLeWr;
+ UINT8 EnableTimedGpio0;
-/** Offset 0x0043 - SgxDebugMode
- SgxDebugMode - <b>0: Disabled(Default)</b>, 1: Enabled.
- 0: Disabled, 1: Enabled
+/** Enable Timed GPIO1
+ Enable/Disable Timed GPIO0. When disabled, it disables cross time stamp time-synchronization
+ as extension of Hammock Harbor time synchronization
+ $EN_DIS
**/
- UINT8 SgxDebugMode;
+ UINT8 EnableTimedGpio1;
-/** Offset 0x0044 - SgxAutoRegistrationAgent
- SgxAutoRegistrationAgent - <b>0: Disabled(Default)</b>, 1: Enabled.
- 0: Disabled, 1: Enabled
+/** FSP smm init enable
+ Enable / Disable FSP smm init
+ $EN_DIS
**/
- UINT8 SgxAutoRegistrationAgent;
+ UINT8 FspSmmInitEn;
-/** Offset 0x0045 - DfxSgxRegistrationServerSelect
- DfxSgxRegistrationServerSelect - <b>0: SBX(Default)</b>, 1: PRX, 2:AUTO, 3:LIV,
- 4:SW Defined Server.
- 0: SBX, 1: PRX, 2:AUTO, 3:LIV, 4:SW Defined Server
+/** C2C3TT
+ Default = 0, means [AUTO]. C2 to C3 Transition Timer, PPDN_INIT = C2C3TT CSR Bit[11:0]
+ 0: Default, Bit[11:0] : C2 to C3 Transition Timer
**/
- UINT8 DfxSgxRegistrationServerSelect;
+ UINT8 CpuPmC2c3tt;
-/** Offset 0x0046 - Processor Enable Monitor MWAIT
- Processor Enable Monitor MWAIT - <b>1: Enable(Default)</b>, 0: Disable Processor
- Monitor MWAIT.
- 0: Disabled, 1: Enabled
+/** Processor Enable Monitor MWAIT
+ Enable(Default) or Disable Processor Monitor MWAIT
+ $EN_DIS
**/
UINT8 CpuPmMonitorMWait;
-/** Offset 0x0047 - Processor C6
- Processor C6 - <b>1: Enable(Default)</b>, 0: Disable Processor C6 (ACPI C3) report to OS.
- 0: Disabled, 1: Enabled
+/** Processor TurboMode Function
+ Enable(Default) or Disable Processor TurboMode Function
+ $EN_DIS
**/
- UINT8 CpuPmC6Enable;
+ UINT8 CpuPmTurboMode;
-/** Offset 0x0048 - Hardware P-States
- Hardware P-States - 0: Disable: Hardware chooses a P-state based on OS Request
- (Legacy P-States), <b>1:Native Mode:Hardware chooses a P-state based on OS guidance(Default)</b>,
- 2:Out of Band Mode:Hardware autonomously chooses a P-state (no OS guidance), 3:Native
- Mode with No Legacy Support.
- 0: Disable, 1: Native Mode, 2: Out of Band Mode, 3: Native Mode with No Legacy Support
+/** Hardware P-States
+ Disable: Hardware chooses a P-state based on OS Request (Legacy P-States)\n
+ Native Mode:Hardware chooses a P-state based on OS guidance\n
+ Out of Band Mode:Hardware autonomously chooses a P-state (no OS guidance)
+ 0:Disable, 1:Native Mode (Default), 2:Out of Band Mode, 3:Native Mode with No Legacy Support
**/
UINT8 CpuPmProcessorHWPMEnable;
-/** Offset 0x0049 - Power Performance Tuning
- Power Performance Tuning - <b>0: OS Controls EPB (Default)</b>, 1: BIOS Controls
- EPB, 2: PECI Controls EPB.
- 0: OS Controls EPB, 1: BIOS Controls EPB, 2: PECI Controls EPB
-**/
- UINT8 CpuPmPwrPerfTuning;
-
-/** Offset 0x004A - Configure SST-BF
- Allow (Default)/Disallow BIOS to configure SST-BF High Priority Cores so that SW
- does not have to configure - 0:Disable, <b>1:Enable(Default)</b>.
- 0:Disable, 1:Enable
-**/
- UINT8 CpuPmProcessorConfigurePbf;
-
-/** Offset 0x004B - CF9 Global Reset Promotion
- CF9 Global Reset Promotion - 1: Enable promoting CF9 reset to global, <b>0: Disable
- promoting CF9 reset to global(Default)</b>.
- 0: Disabled, 1: Enabled
-**/
- UINT8 MeGrPromotionEnabled;
-
-/** Offset 0x004C - Global Reset Lock
- Global Reset Lock - <b>1: Enable locking the joint ME and host reset capability(Default)</b>,
- 0: Disable locking the joint ME and host reset capability.
- 0: Disabled, 1: Enabled
-**/
- UINT8 MeGrLockEnabled;
-
-/** Offset 0x004D - Delayed Authentication Mode
- Enable or disable Delayed Authentication Mode - <b>0: Disable(Default)</b>, 1: Enable.
- 0:Disable, 1:Enable
+/** HardwarePM Interrupt
+ Enable or Disable (Default) Hardware PM Interrupt
+ $EN_DIS
**/
- UINT8 DelayedAuthenticationMode;
+ UINT8 CpuPmProcessorHWPMInterrupt;
-/** Offset 0x004E - Delayed Authentication Mode Override
- Enable or disable Delayed Authentication Mode Override - <b>0: Disable(Default)</b>,
- 1: Enable.
- 0:Disable, 1:Enable
+/** EPP Profile
+ Choose an HWPM Profile, 0: Performance, 128: Balanced Performance, 192: Balanced
+ Power, 255: Power
+ 0: Performance, 128: Balanced Performance, 192: Balanced Power, 255: Power
**/
- UINT8 DelayedAuthenticationModeOverride;
+ UINT8 CpuPmProcessorEPPProfile;
-/** Offset 0x004F - Core Bios Done Message
- Enable or disable Core Bios Done message sent to ME - 0: Disable, <b>1: Enable(Default)</b>.
- 0:Disable, 1:Enable
+/** Boot Performance Mode
+ Select the performance state that the BIOS will set before OS hand off, 0: Max Performance,
+ 1: Max Efficiency
+ 0: Max Performance (Default), 1: Max Efficiency
**/
- UINT8 CoreBiosDoneEnabled;
+ UINT8 CpuPmBootPstate;
-/** Offset 0x0050 - End Of Post Message
- Enable or disable sending END_OF_POST message to ME - 0: Disable, 1: Send in PEI,
- <b>2: Send in DXE(Default)</b>.
- 0:Disable, 1:Send in PEI, 2:Send in DXE
+/** Power Performance Tuning
+ Power Performance Tuning <b>0: OS Controls EPB (Default)</b>, 1: BIOS Controls EPB,
+ 2: PECI Controls EPB
+ 0: OS Controls EPB, 1: BIOS Controls EPB, 2: PECI Controls EPB
**/
- UINT8 EndOfPostMessage;
+ UINT8 CpuPmPwrPerfTuning;
-/** Offset 0x0051 - HMRFPO_LOCK Message
- Enable or disable sending HMRFPO_LOCK message to ME - 0: Disable, <b>1: Enable(Default)</b>.
- 0:Disable, 1:Enable
+/** Enable or Disable Thermal Monitor
+ Enable or Disable Thermal Monitor, 0: Disable, 1: Enable
+ $EN_DIS
**/
- UINT8 MeHmrfpoLockEnabled;
+ UINT8 ThermalMonitor;
-/** Offset 0x0052 - HMRFPO_ENABLE Message
- Enable or disable sending HMRFPO_ENABLE message to ME - <b>0: Disable(Default)</b>,
- 1: Enable.
- 0:Disable, 1:Enable
+/** FSPS Upd settings support
+ : FSPS Upd settings support
+ $EN_DIS
**/
- UINT8 MeHmrfpoEnableEnabled;
+ UINT8 FspsUpdSupport;
-/** Offset 0x0053
+/** N/A
+ Pointer to node list which is used to initizalize security variables - CCT_VS_METADATA_NODE
**/
- UINT8 UnusedUpdSpace1[1];
+ EFI_PHYSICAL_ADDRESS SecurityCctVarStorageMetadataNodePtr;
-/** Offset 0x0054
+/** N/A
**/
UINT8 ReservedSiliconInitUpd[16];
+
} FSPS_CONFIG;
-/** Fsp S UPD Configuration
-**/
+
typedef struct {
-/** Offset 0x0000
+/** N/A
**/
FSP_UPD_HEADER FspUpdHeader;
-/** Offset 0x0020
+/** N/A
**/
- FSPS_CONFIG FspsConfig;
+ FSPS_ARCH2_UPD FspsArchUpd;
-/** Offset 0x0064
+/** N/A
**/
- UINT8 UnusedUpdSpace2[2];
+ FSPS_CONFIG FspsConfig;
-/** Offset 0x0066
+/** N/A
**/
UINT16 UpdTerminator;
+
} FSPS_UPD;
#pragma pack()
diff --git a/src/vendorcode/intel/fsp/fsp2_0/graniterapids/sp/FsptUpd.h b/src/vendorcode/intel/fsp/fsp2_0/graniterapids/sp/FsptUpd.h
index 77ed502735..2e7cfa164c 100644
--- a/src/vendorcode/intel/fsp/fsp2_0/graniterapids/sp/FsptUpd.h
+++ b/src/vendorcode/intel/fsp/fsp2_0/graniterapids/sp/FsptUpd.h
@@ -1,6 +1,6 @@
/** @file
-Copyright (c) 2022, Intel Corporation. All rights reserved.<BR>
+Copyright (c) 2024, Intel Corporation. All rights reserved.<BR>
Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met:
@@ -38,19 +38,19 @@ are permitted provided that the following conditions are met:
#pragma pack(1)
typedef struct {
-
+
/** N/A
**/
UINT64 MicrocodeRegionBase;
-
+
/** N/A
**/
UINT64 MicrocodeRegionLength;
-
+
/** N/A
**/
UINT64 CodeRegionBase;
-
+
/** N/A
**/
UINT64 CodeRegionLength;
@@ -60,13 +60,11 @@ typedef struct {
typedef struct {
-/** Offset 0x0040 - Disable Port80 output in FSP-T
- Select Port80 Control in FSP-T - 0:VPD-Style, <b>1:Enable Port80 Output (Default)</b>,
- 2:Disable Port80 Output, refer to FSP Integration Guide for details.
+/** Disable Port80 output in FSP-T
0:VPD-Style, 1:Enable Port80 Output[Default], 2:Disable Port80 Output
**/
UINT8 FsptPort80RouteDisable;
-
+
/** N/A
**/
UINT8 ReservedTempRamInitUpd[31];
@@ -75,23 +73,23 @@ typedef struct {
typedef struct {
-
+
/** N/A
**/
FSP_UPD_HEADER FspUpdHeader;
-
+
/** N/A
**/
FSPT_ARCH2_UPD FsptArchUpd;
-
+
/** N/A
**/
FSPT_CORE_UPD FsptCoreUpd;
-
+
/** N/A
**/
FSPT_CONFIG FsptConfig;
-
+
/** N/A
**/
UINT16 UpdTerminator;
diff --git a/src/vendorcode/intel/fsp/fsp2_0/graniterapids/sp/IioPcieConfigUpd.h b/src/vendorcode/intel/fsp/fsp2_0/graniterapids/sp/IioPcieConfigUpd.h
index 53dd0ea75b..27633c7462 100644
--- a/src/vendorcode/intel/fsp/fsp2_0/graniterapids/sp/IioPcieConfigUpd.h
+++ b/src/vendorcode/intel/fsp/fsp2_0/graniterapids/sp/IioPcieConfigUpd.h
@@ -1,6 +1,6 @@
/** @file
-Copyright (c) 2019-2023, Intel Corporation. All rights reserved.<BR>
+Copyright (c) 2024, Intel Corporation. All rights reserved.<BR>
Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met:
@@ -26,35 +26,90 @@ are permitted provided that the following conditions are met:
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
THE POSSIBILITY OF SUCH DAMAGE.
+ This file is automatically generated. Please do NOT modify !!!
+
**/
#ifndef _IIO_PCIE_CONFIG_UPD_H_
#define _IIO_PCIE_CONFIG_UPD_H_
#ifndef MAX_SOCKET
-#define MAX_SOCKET 4
+#define MAX_SOCKET 2
#endif
#ifndef MAX_LOGIC_IIO_STACK
-#define MAX_LOGIC_IIO_STACK 14
+#define MAX_LOGIC_IIO_STACK 18
#endif
-#ifndef MAX_IIO_PORTS_PER_SOCKET
-#define MAX_IIO_PORTS_PER_SOCKET 57
+/**
+ * Maximum number of IIO ports per IIO stack.
+ */
+#ifndef MAX_IIO_PORTS_PER_STACK
+#define MAX_IIO_PORTS_PER_STACK 8
#endif
-#ifndef MAX_IOU_PER_SOCKET
-#define MAX_IOU_PER_SOCKET 7
-#endif
+#define MAX_IIO_STACK 16
+#define MAX_IIO_STACKS_PER_SOCKET MAX_IIO_STACK
+#define MAX_IIO_PORTS_PER_SOCKET (MAX_IIO_STACKS_PER_SOCKET * MAX_IIO_PORTS_PER_STACK)
-#ifndef MAX_IIO_PORTS_PER_STACK
-#define MAX_IIO_PORTS_PER_STACK 1
+#if MAX_SOCKET <= 4
+
+//
+// 10 PCIe stacks (PE) and 3 IO accelerator (IOAT) possible in Rich 1 Socket.
+// However, we share R1S image with 4 socket SP image, no separate build for R1S.
+// So use R1S definitions for 4 socket SP and 4 PE, 1 IOAT entry are just not used, never present.
+//
+#define MAX_IIO_PCIE_PER_SOCKET 10
+#else
+#define MAX_IIO_PCIE_PER_SOCKET 6
#endif
+#define MAX_IOU_PER_SOCKET MAX_IIO_PCIE_PER_SOCKET
+
+#define IIO_BIFURCATE_xxxxxxxx 0xFE
+#define IIO_BIFURCATE_x4x4x4x4 0x0
+#define IIO_BIFURCATE_x4x4xxx8 0x1
+#define IIO_BIFURCATE_xxx8x4x4 0x2
+#define IIO_BIFURCATE_xxx8xxx8 0x3
+#define IIO_BIFURCATE_xxxxxx16 0x4
+#define IIO_BIFURCATE_x2x2x4x8 0x5
+#define IIO_BIFURCATE_x4x2x2x8 0x6
+#define IIO_BIFURCATE_x8x2x2x4 0x7
+#define IIO_BIFURCATE_x8x4x2x2 0x8
+#define IIO_BIFURCATE_x2x2x4x4x4 0x9
+#define IIO_BIFURCATE_x4x2x2x4x4 0xA
+#define IIO_BIFURCATE_x4x4x2x2x4 0xB
+#define IIO_BIFURCATE_x4x4x4x2x2 0xC
+#define IIO_BIFURCATE_x2x2x2x2x8 0xD
+#define IIO_BIFURCATE_x8x2x2x2x2 0xE
+#define IIO_BIFURCATE_x2x2x2x2x4x4 0xF
+#define IIO_BIFURCATE_x2x2x4x2x2x4 0x10
+#define IIO_BIFURCATE_x2x2x4x4x2x2 0x11
+#define IIO_BIFURCATE_x4x2x2x2x2x4 0x12
+#define IIO_BIFURCATE_x4x2x2x4x2x2 0x13
+#define IIO_BIFURCATE_x4x4x2x2x2x2 0x14
+#define IIO_BIFURCATE_x2x2x2x2x2x2x4 0x15
+#define IIO_BIFURCATE_x2x2x2x2x4x2x2 0x16
+#define IIO_BIFURCATE_x2x2x4x2x2x2x2 0x17
+#define IIO_BIFURCATE_x4x2x2x2x2x2x2 0x18
+#define IIO_BIFURCATE_x2x2x2x2x2x2x2x2 0x19
+
+#define IIO_BIFURCATE_xxxxxxx4 0x40
+#define IIO_BIFURCATE_xxx2xxx2 0x41
+#define IIO_BIFURCATE_x1x1xxx2 0x42
+#define IIO_BIFURCATE_xxx2x1x1 0x43
+#define IIO_BIFURCATE_x1x1x1x1 0x44
+
+#define IIO_BIFURCATE_AUTO 0xFF
-#define MAX_IIO_PCIE_PER_SOCKET 1
+#define C1_UID 2
+#define C2_UID 3
-#define MAX_VMD_STACKS_PER_SOCKET 8 // Max number of stacks per socket supported by VMD
+/**
+ * VTBAR - Virtualization Technology BAR region size and alignment.
+ */
+#define IIO_VTBAR_LSB 16 // 64 kB
+#define IIO_VTBAR_SIZE (1 << IIO_VTBAR_LSB)
#pragma pack(1)
@@ -74,91 +129,6 @@ typedef enum {
} IIO_PACKAGE_PE;
typedef struct {
- UINT8 Address; // SMBUS address of IO expander which provides NPEM
- UINT8 Bank; // Port or bank on IoExpander which provides NPEM
- UINT8 MuxAddress; // SMBUS address of MUX used to access NPEM
- UINT8 MuxChannel; // Channel of the MUX used to access NPEM
-} IIO_NPEM_CFG;
-
-typedef struct {
- UINT8 SLOTEIP[MAX_IIO_PORTS_PER_SOCKET]; // Electromechanical Interlock Present - Slot Capabilities (D0-10 / F0 / R0xA4 / B17)
- UINT8 SLOTHPCAP[MAX_IIO_PORTS_PER_SOCKET]; // Slot Hot Plug capable - Slot Capabilities (D0-10 / F0 / R0xA4 / B6)
- UINT8 SLOTHPSUP[MAX_IIO_PORTS_PER_SOCKET]; // Hot Plug surprise supported - Slot Capabilities (D0-10 / F0 / R0xA4 / B5)
- UINT8 SLOTPIP[MAX_IIO_PORTS_PER_SOCKET]; // Power Indicator Present - Slot Capabilities (D0-10 / F0 / R0xA4 / B4)
- UINT8 SLOTAIP[MAX_IIO_PORTS_PER_SOCKET]; // Attention Inductor Present - Slot Capabilities (D0-10 / F0 / R0xA4 / B3)
- UINT8 SLOTMRLSP[MAX_IIO_PORTS_PER_SOCKET]; // MRL Sensor Present - Slot Capabilities (D0-10 / F0 / R0xA4 / B2)
- UINT8 SLOTPCP[MAX_IIO_PORTS_PER_SOCKET]; // Power Controller Present - Slot Capabilities (D0-10 / F0 / R0xA4 /B1)
- UINT8 SLOTABP[MAX_IIO_PORTS_PER_SOCKET]; // Attention Button Present - Slot Capabilities (D0-10 / F0 / R0xA4 / B0)
- UINT8 SLOTIMP[MAX_IIO_PORTS_PER_SOCKET];
- UINT8 SLOTSPLS[MAX_IIO_PORTS_PER_SOCKET];
- UINT8 SLOTSPLV[MAX_IIO_PORTS_PER_SOCKET];
- UINT16 SLOTPSP[MAX_IIO_PORTS_PER_SOCKET];
- BOOLEAN VppEnabled[MAX_IIO_PORTS_PER_SOCKET]; // 00 -- Disable, 01 -- Enable //no setup option defined- aj
- UINT8 VppPort[MAX_IIO_PORTS_PER_SOCKET]; // 00 -- Port 0, 01 -- Port 1 //no setup option defined- aj
- UINT8 VppAddress[MAX_IIO_PORTS_PER_SOCKET]; // 01-07 for SMBUS address of Vpp //no setup option defined- aj
- UINT8 MuxAddress[MAX_IIO_PORTS_PER_SOCKET]; // SMBUS address of MUX //no setup option defined
- UINT8 ChannelID[MAX_IIO_PORTS_PER_SOCKET]; // 00 -- channel 0, 01 -- channel 1 //no setup option defined
-
- UINT8 PciePortEnable[MAX_IIO_PORTS_PER_SOCKET];
- UINT8 PEXPHIDE[MAX_IIO_PORTS_PER_SOCKET]; // Hide any of the DMI or PCIE devices - SKT 0,1,2,3; Device 0-10 PRD
- UINT8 HidePEXPMenu[MAX_IIO_PORTS_PER_SOCKET]; // to suppress /display the PCIe port menu
- UINT8 PciePortOwnership[MAX_IIO_PORTS_PER_SOCKET];
- UINT8 RetimerConnectCount[MAX_IIO_PORTS_PER_SOCKET];
- UINT8 ConfigIOU[MAX_IOU_PER_SOCKET]; // 00-x4x4x4x4, 01-x4x4x8NA, 02-x8NAx4x4, 03-x8NAx8NA, 04-x16 (P1p2p3p4)
- UINT8 PcieHotPlugOnPort[MAX_IIO_PORTS_PER_SOCKET]; // Manual override of hotplug for port
- UINT8 VMDEnabled[MAX_VMD_STACKS_PER_SOCKET];
- UINT8 VMDPortEnable[MAX_IIO_PORTS_PER_SOCKET];
- UINT8 VMDHotPlugEnable[MAX_VMD_STACKS_PER_SOCKET];
- UINT8 PcieMaxPayload[MAX_IIO_PORTS_PER_SOCKET];
- UINT8 PciePortLinkSpeed[MAX_IIO_PORTS_PER_SOCKET]; // auto - 0(default); gen1 -1; gen2 -2; ... gen5 -5.
- UINT8 DfxDnTxPresetGen3[MAX_IIO_PORTS_PER_SOCKET]; //auto - 0xFF(default); p0 - 0; p1 -1; ... p9 - 9.
- UINT8 PcieGlobalAspm;
- UINT8 PcieMaxReadRequestSize;
-} UPD_IIO_PCIE_PORT_CONFIG;
-
-typedef struct {
- UINT8 Address;
- UINT8 Port;
- UINT8 MuxAddress;
- UINT8 MuxChannel;
-} IIO_VPP_CFG;
-
-typedef struct {
- UINT8 Eip : 1; // Electromechanical Interlock Present - Slot Capabilities (D0-10 / F0 / R0xA4 / B17)
- UINT8 HotPlugSurprise : 1; // Hot Plug surprise supported - Slot Capabilities (D0-10 / F0 / R0xA4 / B5)
- UINT8 PowerInd : 1; // Power Indicator Present - Slot Capabilities (D0-10 / F0 / R0xA4 / B4)
- UINT8 AttentionInd : 1; // Attention Inductor Present - Slot Capabilities (D0-10 / F0 / R0xA4 / B3)
- UINT8 PowerCtrl : 1; // Power Controller Present - Slot Capabilities (D0-10 / F0 / R0xA4 / B1)
- UINT8 AttentionBtn : 1; // Attention Button Present - Slot Capabilities (D0-10 / F0 / R0xA4 / B0)
-
- UINT8 Reserved : 2;
-} IIO_SLOT_CFG;
-
-typedef struct {
-
- IIO_VPP_CFG Vpp;
- IIO_NPEM_CFG Npem;
- IIO_SLOT_CFG Slot;
-
- UINT8 VppEnabled :1;
- UINT8 VppExpType :1;
- UINT8 NpemSupported :1;
-
- UINT8 SlotImplemented :1;
- UINT8 Retimer1Present :1;
- UINT8 Retimer2Present :1;
- UINT8 CommonClock :1;
- UINT8 SRIS :1;
-
- UINT16 HotPlug : 1; // If hotplug is supported on slot connected to this port
- UINT16 MrlSensorPresent : 1; // If MRL is present on slot connected to this port
- UINT16 SlotPowerLimitScale : 2; // Slot Power Scale for slot connected to this port
- UINT16 SlotPowerLimitValue : 12; // Slot Power Value for slot connected to this port
-
- UINT16 PhysicalSlotNumber; // Slot number for slot connected to this port
-} IIO_BOARD_SETTINGS_PER_PORT;
-
-typedef struct {
struct {
UINT8 Segment; ///< Remember segment, if it changes reset everything
UINT8 StackPciBusPoolSize[MAX_LOGIC_IIO_STACK]; ///< Number of bus numbers needed for IIO stack
@@ -182,7 +152,6 @@ typedef struct {
} PCI_BASE_LIMITS;
typedef struct {
- PCI_BASE_LIMITS SocketLimits; ///< Base and Limit of all PCIe resources for the socket
PCI_BASE_LIMITS StackLimits[MAX_LOGIC_IIO_STACK]; ///< Base and Limit of all PCIe resources for each stack of the socket
CXL11_LIMITS CxlStackReq[MAX_LOGIC_IIO_STACK]; ///< Base and Limit of CXL11 resources for each stack of the socket
} SOCKET_PCI_BASE_LIMITS;
@@ -211,37 +180,62 @@ typedef struct {
SOCKET_PCI_BASE_LIMITS Socket[MAX_SOCKET]; ///< Base and limit of all PCIe resources for each socket
} SYSTEM_PCI_BASE_LIMITS;
-#define IIO_BIFURCATE_xxxxxxxx 0xFE
-#define IIO_BIFURCATE_x4x4x4x4 0x0
-#define IIO_BIFURCATE_x4x4xxx8 0x1
-#define IIO_BIFURCATE_xxx8x4x4 0x2
-#define IIO_BIFURCATE_xxx8xxx8 0x3
-#define IIO_BIFURCATE_xxxxxx16 0x4
-#define IIO_BIFURCATE_x2x2x4x8 0x5
-#define IIO_BIFURCATE_x4x2x2x8 0x6
-#define IIO_BIFURCATE_x8x2x2x4 0x7
-#define IIO_BIFURCATE_x8x4x2x2 0x8
-#define IIO_BIFURCATE_x2x2x4x4x4 0x9
-#define IIO_BIFURCATE_x4x2x2x4x4 0xA
-#define IIO_BIFURCATE_x4x4x2x2x4 0xB
-#define IIO_BIFURCATE_x4x4x4x2x2 0xC
-#define IIO_BIFURCATE_x2x2x2x2x8 0xD
-#define IIO_BIFURCATE_x8x2x2x2x2 0xE
-#define IIO_BIFURCATE_x2x2x2x2x4x4 0xF
-#define IIO_BIFURCATE_x2x2x4x2x2x4 0x10
-#define IIO_BIFURCATE_x2x2x4x4x2x2 0x11
-#define IIO_BIFURCATE_x4x2x2x2x2x4 0x12
-#define IIO_BIFURCATE_x4x2x2x4x2x2 0x13
-#define IIO_BIFURCATE_x4x4x2x2x2x2 0x14
-#define IIO_BIFURCATE_x2x2x2x2x2x2x4 0x15
-#define IIO_BIFURCATE_x2x2x2x2x4x2x2 0x16
-#define IIO_BIFURCATE_x2x2x4x2x2x2x2 0x17
-#define IIO_BIFURCATE_x4x2x2x2x2x2x2 0x18
-#define IIO_BIFURCATE_x2x2x2x2x2x2x2x2 0x19
-#define IIO_BIFURCATE_AUTO 0xFF
+typedef struct {
+ UINT8 Address; // SMBUS address of IO expander which provides VPP register
+ UINT8 Port; // Port or bank on IoExpander which provides VPP register
+ UINT8 MuxAddress; // SMBUS address of MUX used to access VPP
+ UINT8 MuxChannel; // Channel of the MUX used to access VPP
+} IIO_VPP_CFG;
-#define C1_UID 2
-#define C2_UID 3
+typedef struct {
+ UINT8 Address; // SMBUS address of IO expander which provides NPEM
+ UINT8 Bank; // Port or bank on IoExpander which provides NPEM
+ UINT8 MuxAddress; // SMBUS address of MUX used to access NPEM
+ UINT8 MuxChannel; // Channel of the MUX used to access NPEM
+} IIO_NPEM_CFG;
+
+typedef struct {
+ UINT8 Eip : 1; // Electromechanical Interlock Present - Slot Capabilities (D0-10 / F0 / R0xA4 / B17)
+ UINT8 HotPlugSurprise : 1; // Hot Plug surprise supported - Slot Capabilities (D0-10 / F0 / R0xA4 / B5)
+ UINT8 PowerInd : 1; // Power Indicator Present - Slot Capabilities (D0-10 / F0 / R0xA4 / B4)
+ UINT8 AttentionInd : 1; // Attention Inductor Present - Slot Capabilities (D0-10 / F0 / R0xA4 / B3)
+ UINT8 PowerCtrl : 1; // Power Controller Present - Slot Capabilities (D0-10 / F0 / R0xA4 / B1)
+ UINT8 AttentionBtn : 1; // Attention Button Present - Slot Capabilities (D0-10 / F0 / R0xA4 / B0)
+
+ UINT8 Reserved : 2;
+} IIO_SLOT_CFG;
+
+typedef struct {
+ //
+ // Below is an excerpt from structure PCIE_PORT_ENTERPRISE_CONFIG
+ //
+ IIO_VPP_CFG Vpp;
+ IIO_NPEM_CFG Npem;
+ IIO_SLOT_CFG Slot;
+
+ UINT8 VppEnabled :1; // If VPP is supported on given port
+ UINT8 VppExpType :1; // IO Expander type used for VPP (see IIO_VPP_EXPANDER_TYPE for values definitions)
+ UINT8 NpemSupported :1; // If NPEM is supported on given port
+
+ //
+ // Below is an excerpt IIO_PCIE_PORT_CONFIG
+ //
+ UINT8 SlotImplemented :1;
+ UINT8 Retimer1Present :1;
+ UINT8 Retimer2Present :1;
+ UINT8 CommonClock :1;
+ UINT8 SRIS :1;
+
+ //
+ // Below is an excerpt from structure PCIE_PORT_COMMON_CONFIG
+ //
+ UINT16 HotPlug : 1; // If hotplug is supported on slot connected to this port
+ UINT16 MrlSensorPresent : 1; // If MRL is present on slot connected to this port
+ UINT16 SlotPowerLimitScale : 2; // Slot Power Scale for slot connected to this port
+ UINT16 SlotPowerLimitValue : 12; // Slot Power Value for slot connected to this port
+
+ UINT16 PhysicalSlotNumber; // Slot number for slot connected to this port
+} IIO_BOARD_SETTINGS_PER_PORT;
typedef enum {
IioBifurcation_UNKNOWN = IIO_BIFURCATE_xxxxxxxx,
@@ -271,6 +265,13 @@ typedef enum {
IioBifurcation_x2x2x4x2x2x2x2 = IIO_BIFURCATE_x2x2x4x2x2x2x2,
IioBifurcation_x4x2x2x2x2x2x2 = IIO_BIFURCATE_x4x2x2x2x2x2x2,
IioBifurcation_x2x2x2x2x2x2x2x2 = IIO_BIFURCATE_x2x2x2x2x2x2x2x2,
+
+ IioBifurcation_xxxxxxx4 = IIO_BIFURCATE_xxxxxxx4,
+ IioBifurcation_xxx2xxx2 = IIO_BIFURCATE_xxx2xxx2,
+ IioBifurcation_x1x1xxx2 = IIO_BIFURCATE_x1x1xxx2,
+ IioBifurcation_xxx2x1x1 = IIO_BIFURCATE_xxx2x1x1,
+ IioBifurcation_x1x1x1x1 = IIO_BIFURCATE_x1x1x1x1,
+
IioBifurcation_Auto = IIO_BIFURCATE_AUTO
} IIO_BIFURCATION;
@@ -286,6 +287,9 @@ typedef struct {
IIO_BOARD_SETTINGS_PER_PE Pe[MAX_IIO_PCIE_PER_SOCKET];
} IIO_BOARD_SETTINGS_PER_SOCKET;
+//
+// HOB to store board settings data created based on UBA data
+//
typedef struct {
IIO_BOARD_SETTINGS_PER_SOCKET Socket[MAX_SOCKET];
} IIO_BOARD_SETTINGS_HOB;
diff --git a/src/vendorcode/intel/fsp/fsp2_0/graniterapids/sp/IioUniversalDataHob.h b/src/vendorcode/intel/fsp/fsp2_0/graniterapids/sp/IioUniversalDataHob.h
index 6631a39452..cc82d24482 100644
--- a/src/vendorcode/intel/fsp/fsp2_0/graniterapids/sp/IioUniversalDataHob.h
+++ b/src/vendorcode/intel/fsp/fsp2_0/graniterapids/sp/IioUniversalDataHob.h
@@ -1,6 +1,6 @@
/** @file
-Copyright (c) 2019-2023, Intel Corporation. All rights reserved.<BR>
+Copyright (c) 2024, Intel Corporation. All rights reserved.<BR>
Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met:
@@ -26,107 +26,70 @@ are permitted provided that the following conditions are met:
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
THE POSSIBILITY OF SUCH DAMAGE.
+ This file is automatically generated. Please do NOT modify !!!
+
**/
#ifndef _IIO_UNIVERSAL_DATA_HOB_H_
#define _IIO_UNIVERSAL_DATA_HOB_H_
-#define DINO_UID 0
-#define PC_UID 1
-#define UB_UID 4
-#define CPM0_UID 5
-#define HQM0_UID 6
-
-#define IIO_UNIVERSAL_DATA_GUID { \
- 0xa1, 0x96, 0xf3, 0x7f, 0x7d, 0xee, 0x1e, 0x43, \
- 0xba, 0x53, 0x8f, 0xCa, 0x12, 0x7c, 0x44, 0xc0 \
-}
+#define IIO_UNIVERSAL_DATA_GUID { 0x7FF396A1, 0xEE7D, 0x431E, { 0xBA, 0x53, 0x8F, 0xCA, 0x12, 0x7C, 0x44, 0xC0 } }
#ifndef MAX_SOCKET
-#define MAX_SOCKET 4
+#define MAX_SOCKET 2
#endif
#if (MAX_SOCKET == 1)
- #define MAX_FW_KTI_PORTS 4 // Maximum KTI PORTS to be used in structure definition.
+ #define MAX_FW_KTI_PORTS 4 // Maximum KTI PORTS to be used in structure definition.
#else
- #define MAX_FW_KTI_PORTS 6 // Maximum KTI PORTS to be used in structure definition
+ #define MAX_FW_KTI_PORTS 6 // Maximum KTI PORTS to be used in structure definition
#endif //(MAX_SOCKET == 1)
-#ifndef MAX_IMC
-#define MAX_IMC 4 // Maximum memory controllers per socket
-#endif
-
-#ifndef MAX_MC_CH
-#define MAX_MC_CH 2 // Max number of channels per MC (3 for EP)
-#endif
-
-#ifndef MAX_CH
-#define MAX_CH ((MAX_IMC)*(MAX_MC_CH)) // Max channels per socket (worst case EP * EX combination = 16)
-#endif
-
-#define MC_MAX_NODE (MAX_SOCKET * MAX_IMC) // Max number of memory nodes
-
-#ifndef MAX_IIO_PORTS_PER_SOCKET
-#define MAX_IIO_PORTS_PER_SOCKET 57
-#endif
-
-#ifndef MAX_IIO_PORTS_PER_STACK
-#define MAX_IIO_PORTS_PER_STACK 8
-#endif
+#define MAX_LOGIC_IIO_STACK 18
#ifndef MAX_IIO_PCIROOTS_PER_STACK
-#define MAX_IIO_PCIROOTS_PER_STACK 1
+#define MAX_IIO_PCIROOTS_PER_STACK 3 // PCI roots that can be created for a stack
#endif
-#ifndef MAX_IIO_STACK
-#define MAX_IIO_STACK 12
-#endif
-
-#define MAX_LOGIC_IIO_STACK 14
-
-#define MAX_COMPUTE_DIE 1
-#define MAX_CHA_MAP (2 * MAX_COMPUTE_DIE) //for GNR & SRF only, each compute die has its own CAPID6 & CAPID7 (i.e. 2 CAPID registers)
+#define MAX_COMPUTE_DIE 3
+#define MAX_CHA_MAP (2 * MAX_COMPUTE_DIE) //for GNR & SRF only, each compute die has its own CAPID6 & CAPID7 (i.e. 2 CAPID registers)
-#pragma pack(1)
-
-typedef struct _UINT64_STRUCT {
- UINT32 lo;
- UINT32 hi;
-} UINT64_STRUCT, *PUINT64_STRUCT;
-
-#ifndef MMIO_BARS_ENUM
-#define MMIO_BARS_ENUM
-typedef enum {
- TYPE_SCF_BAR = 0,
- TYPE_PCU_BAR,
- TYPE_MEM_BAR0,
- TYPE_MEM_BAR1,
- TYPE_MEM_BAR2,
- TYPE_MEM_BAR3,
- TYPE_MEM_BAR4,
- TYPE_MEM_BAR5,
- TYPE_MEM_BAR6,
- TYPE_MEM_BAR7,
- TYPE_SBREG_BAR,
- TYPE_MAX_MMIO_BAR
-} MMIO_BARS;
+#ifndef MAX_MESSAGE_LENGTH
+#define MAX_MESSAGE_LENGTH 500
#endif
-typedef struct {
- UINT8 Device;
- UINT8 Function;
-} IIO_PORT_INFO;
+#define DINO_UID 0
+#define PC_UID 1
+#define UB_UID 4
+#define CPM0_UID 5
+#define HQM0_UID 6
-typedef struct {
- UINT8 Major;
- UINT8 Minor;
- UINT8 Revision;
- UINT16 BuildNumber;
-} RC_VERSION;
+typedef enum {
+ IioStack0 = 0,
+ IioStack1 = 1,
+ IioStack2 = 2,
+ IioStack3 = 3,
+ IioStack4 = 4,
+ IioStack5 = 5,
+ IioStack6 = 6,
+ IioStack7 = 7,
+ IioStack8 = 8,
+ IioStack9 = 9,
+ IioStack10 = 10,
+ IioStack11 = 11,
+ IioStack12 = 12,
+ IioStack13 = 13,
+ IioStack14 = 14,
+ IioStack15 = 15,
+ IioStack16 = 16,
+ IioStackUnknown = 0xFF
+} IIO_STACK;
//--------------------------------------------------------------------------------------//
// Structure definitions for Universal Data Store (UDS)
//--------------------------------------------------------------------------------------//
+#pragma pack(1)
+
typedef struct {
UINT8 Valid; // TRUE, if the link is valid (i.e reached normal operation)
UINT8 PeerSocId; // Socket ID
@@ -136,52 +99,16 @@ typedef struct {
typedef struct {
UINT8 Valid;
- UINT32 MmioBar[TYPE_MAX_MMIO_BAR];
UINT8 PcieSegment;
- UINT64_STRUCT SegMmcfgBase;
+ UINT64 SegMmcfgBase;
UINT32 StackPresentBitmap;
- UINT16 CxlPresentBitmap;
- UINT16 Cxl20CapableBitmap;
- UINT8 TotM3Kti;
+ UINT16 Cxl1p1PresentBitmap; // Bitmap of stacks where CXL 1p1 is connected
+ UINT16 CxlCapableBitmap; // Bitmap of stacks capable of CXL
UINT8 TotCha;
- UINT32 ChaList[MAX_CHA_MAP];
UINT32 SocId;
QPI_PEER_DATA PeerInfo[MAX_FW_KTI_PORTS]; // QPI LEP info
} QPI_CPU_DATA;
-typedef struct {
- UINT8 Valid;
- UINT8 SocId;
- QPI_PEER_DATA PeerInfo[MAX_SOCKET]; // QPI LEP info
-} QPI_IIO_DATA;
-
-typedef struct {
- IIO_PORT_INFO PortInfo[MAX_IIO_PORTS_PER_SOCKET];
-} IIO_DMI_PCIE_INFO;
-
-typedef struct _STACK_RES {
- UINT8 Personality;
- UINT8 BusBase; // Base of Bus configured for this stack
- UINT8 BusLimit; // Limit of Bus configured for this stack
- UINT16 IoBase; // Base of IO configured for this stack
- UINT16 IoLimit; // Limit of IO configured for this stack
- UINT32 IoApicBase;
- UINT32 IoApicLimit;
- UINT32 Mmio32Base; // Base of low MMIO configured for this stack in memory map
- UINT32 Mmio32Limit; // Limit of low MMIO configured for this stack in memory map
- UINT64 Mmio64Base; // Base of high MMIO configured for this stack in memory map
- UINT64 Mmio64Limit; // Limit of high MMIO configured for this stack in memory map
- UINT8 PciResourceBusBase; // Base of Bus resource available for PCI devices
- UINT8 PciResourceBusLimit; // Limit of Bus resource available for PCI devices
- UINT16 PciResourceIoBase; // Base of IO resource available for PCI devices
- UINT16 PciResourceIoLimit; // Limit of IO resource available for PCI devices
- UINT32 PciResourceMem32Base; // Base of low MMIO resource available for PCI devices
- UINT32 PciResourceMem32Limit; // Limit of low MMIO resource available for PCI devices
- UINT64 PciResourceMem64Base; // Base of high MMIO resource available for PCI devices
- UINT64 PciResourceMem64Limit; // Limit of high MMIO resource available for PCI devices
- UINT32 VtdBarAddress; // NOTE: Obsolete, not used in next gen platforms
-} STACK_RES;
-
/**
* PCI resources that establish one PCI hierarchy for PCI Enumerator.
*/
@@ -197,122 +124,87 @@ typedef struct {
UINT64 Mmio64Limit; // Limit of high MMIO resources available for PCI devices
} UDS_PCIROOT_RES;
+/**
+ * This structore keeps resources configured in Host I/O Processor (HIOP) for one stack.
+ * One HIOP may produce more than one PCI hierarchy, these are in PciRoot[] table.
+ */
typedef struct {
UINT8 Personality;
UINT8 PciRootBridgeNum; // Number of valid entries in PciRoot[] table
+ UINT8 Segment; // Segment for this stack
UINT8 BusBase; // Base of Bus configured for this stack
UINT8 BusLimit; // Limit of Bus configured for this stack
+ UINT8 Reserved[3]; // Reserved for alignment
UINT16 IoBase; // Base of IO configured for this stack
UINT16 IoLimit; // Limit of IO configured for this stack
- UINT32 IoApicBase;
- UINT32 IoApicLimit;
UINT32 Mmio32Base; // Base of low MMIO configured for this stack in memory map
UINT32 Mmio32Limit; // Limit of low MMIO configured for this stack in memory map
UINT32 Mmio32MinSize; // The size of MMIO32 needed in PEI that must be preserved in rebalance
UINT64 Mmio64Base; // Base of high MMIO configured for this stack in memory map
UINT64 Mmio64Limit; // Limit of high MMIO configured for this stack in memory map
- UDS_PCIROOT_RES PciRoot[MAX_IIO_PCIROOTS_PER_STACK];
UINT64 VtbarAddress; // VT-d Base Address
- UINT64 ChbcrBarAddress;
+ UINT64 ChbcrBarAddress; // CXL Host Bridge Component Registers (CHBCR) region
+ UDS_PCIROOT_RES PciRoot[MAX_IIO_PCIROOTS_PER_STACK];
} UDS_STACK_RES;
+/**
+ * This structore keeps resource ranges configured in one socket. It contains a table of IO stacks provided by
+ // the socket. The stacks are also groupded by IO dies, but dies are not reflected in UDS.
+ */
typedef struct {
UINT8 Valid;
- UINT8 SocketID; // Socket ID of the IIO (0..3)
- UINT8 BusBase;
- UINT8 BusLimit;
+ UINT8 SocketID; // Socket ID of the IIO (0..3)
UINT16 IoBase;
UINT16 IoLimit;
- UINT32 IoApicBase;
- UINT32 IoApicLimit;
- UINT32 Mmio32Base; // Base of low MMIO configured for this socket in memory map
- UINT32 Mmio32Limit; // Limit of low MMIO configured for this socket in memory map
- UINT64 Mmio64Base; // Base of high MMIO configured for this socket in memory map
- UINT64 Mmio64Limit; // Limit of high MMIO configured for this socket in memory map
+ UINT32 Mmio32Base; // Base of low MMIO configured for this socket in memory map
+ UINT32 Mmio32Limit; // Limit of low MMIO configured for this socket in memory map
+ UINT64 Mmio64Base; // Base of high MMIO configured for this socket in memory map
+ UINT64 Mmio64Limit; // Limit of high MMIO configured for this socket in memory map
UDS_STACK_RES StackRes[MAX_LOGIC_IIO_STACK];
} UDS_SOCKET_RES;
+/**
+ * This structore keeps resource ranges configured in whole system.
+ */
typedef struct {
- UINT8 Valid;
- UINT8 SocketID; // Socket ID of the IIO (0..3)
- UINT8 BusBase;
- UINT8 BusLimit;
- UINT16 PciResourceIoBase;
- UINT16 PciResourceIoLimit;
- UINT32 IoApicBase;
- UINT32 IoApicLimit;
- UINT32 Mmio32Base; // Base of low MMIO configured for this socket in memory map
- UINT32 Mmio32Limit; // Limit of low MMIO configured for this socket in memory map
- UINT64 Mmio64Base; // Base of high MMIO configured for this socket in memory map
- UINT64 Mmio64Limit; // Limit of high MMIO configured for this socket in memory map
- UDS_STACK_RES StackRes[MAX_LOGIC_IIO_STACK];
- IIO_DMI_PCIE_INFO PcieInfo; // NOTE: Obsolete, not used in next gen platforms
-} IIO_RESOURCE_INSTANCE;
+ UINT16 SystemIoBase; // System IO Base
+ UINT16 SystemIoLimit; // System IO Limit
+ UINT32 SystemIoApicBase; // Legacy IOAPIC base address, one in the system
+ UINT32 SystemIoApicLimit;
+ UINT32 SystemMmio32Base; // System low MMIO base
+ UINT32 SystemMmio32Limit; // System low MMIO limit
+ UINT64 SystemMmio64Base; // System high MMIO Base
+ UINT64 SystemMmio64Limit; // System high MMIO Limit
+ QPI_CPU_DATA CpuQpiInfo[MAX_SOCKET]; // QPI related info per CPU
+ UINT64 PciExpressBase; // PCI Config Space base address
+ UINT64 PciExpressSize; // PCI Config Space size
+ UDS_SOCKET_RES IIO_resource[MAX_SOCKET];
+ UINT32 packageBspApicID[MAX_SOCKET]; // This data array is valid only for SBSP, not for non-SBSP CPUs. <AS> for CpuSv
+ UINT16 IoGranularity;
+ UINT32 Mmio32Granularity;
+ UINT64 Mmio64Granularity;
+ UINT32 UboxMmioSize;
+ UINT32 MemTolm;
+ UINT32 MemTsegSize;
+ UINT32 MaxAddressBits;
+} PLATFORM_DATA;
typedef struct {
- UINT16 PlatGlobalIoBase; // Global IO Base
- UINT16 PlatGlobalIoLimit; // Global IO Limit
- UINT32 PlatGlobalMmio32Base; // Global Mmiol base
- UINT32 PlatGlobalMmio32Limit; // Global Mmiol limit
- UINT64 PlatGlobalMmio64Base; // Global Mmioh Base [43:0]
- UINT64 PlatGlobalMmio64Limit; // Global Mmioh Limit [43:0]
- QPI_CPU_DATA CpuQpiInfo[MAX_SOCKET]; // QPI related info per CPU
- QPI_IIO_DATA IioQpiInfo[MAX_SOCKET]; // QPI related info per IIO
- UINT16 SystemIoBase; // System IO Base
- UINT16 SystemIoLimit; // System IO Limit
- UINT32 SystemMmio32Base; // System low MMIO base
- UINT32 SystemMmio32Limit;
- UINT32 Mmio32Granularity;
- UINT64 SystemMmio64Base; // System high MMIO Base
- UINT64 SystemMmio64Limit; // System high MMIO Limit
- UINT64 Mmio64Granularity;
- UINT32 MemTsegSize;
- UINT64 PciExpressBase;
- UINT32 PciExpressSize;
- UINT32 MemTolm;
- UDS_SOCKET_RES IIO_resource[MAX_SOCKET];
- UINT8 numofIIO;
- UINT8 MaxBusNumber;
- UINT32 packageBspApicID[MAX_SOCKET]; // This data array is valid only for SBSP, not for non-SBSP CPUs. <AS> for CpuSv
- UINT8 EVMode;
- UINT8 SkuPersonality[MAX_SOCKET];
- UINT16 IoGranularity;
- UINT32 MmiolGranularity;
- UINT64_STRUCT MmiohGranularity;
- UINT8 RemoteRequestThreshold; //5370389
- UINT32 UboxMmioSize;
- UINT32 MaxAddressBits;
-} PLATFORM_DATA;
+ BOOLEAN FailFlag;
+ CHAR16 Message[MAX_MESSAGE_LENGTH];
+} REBALANCE_FAIL_INFO;
typedef struct {
- UINT8 CurrentUpiiLinkSpeed;// Current programmed UPI Link speed (Slow/Full speed mode)
+ UINT8 CurrentUpiiLinkSpeed; // Current programmed UPI Link speed (Slow/Full speed mode)
UINT8 CurrentUpiLinkFrequency; // Current requested UPI Link frequency (in GT)
UINT8 OutKtiCpuSktHotPlugEn; // 0 - Disabled, 1 - Enabled for PM X2APIC
- UINT32 OutKtiPerLinkL1En[MAX_SOCKET]; // output kti link enabled status for PM
- UINT8 IsocEnable;
- UINT32 meRequestedSize; // Size of the memory range requested by ME FW, in MB
- UINT8 DmiVc1;
- UINT8 DmiVcm;
- UINT32 CpuPCPSInfo;
- UINT8 cpuSubType;
+ UINT32 meRequestedSize; // Size of the memory range requested by ME FW, in MB
UINT8 SystemRasType;
- UINT8 numCpus; // 1,..4. Total number of CPU packages installed and detected (1..4)by QPI RC
- UINT16 tolmLimit;
- RC_VERSION RcVersion;
- BOOLEAN MsrTraceEnable;
- UINT8 DdrXoverMode; // DDR 2.2 Mode
- // For RAS
- UINT8 bootMode;
- UINT8 OutClusterOnDieEn; // Whether RC enabled COD support
+ UINT8 numCpus; // 1,..4. Total number of CPU packages installed and detected (1..4)by QPI RC
UINT8 OutSncEn;
UINT8 OutNumOfCluster;
- UINT8 imcEnabled[MAX_SOCKET][MAX_IMC];
- UINT16 LlcSizeReg;
- UINT8 chEnabled[MAX_SOCKET][MAX_CH];
- UINT8 memNode[MC_MAX_NODE];
- UINT8 IoDcMode;
- UINT8 DfxRstCplBitsEn;
UINT8 BitsUsed; //For 5 Level Paging
+ REBALANCE_FAIL_INFO RebalanceFailInfo;
} SYSTEM_STATUS;
typedef struct {
@@ -321,32 +213,7 @@ typedef struct {
UINT32 OemValue;
} IIO_UDS;
-typedef enum {
- //for ICX
- IioStack0 = 0, // DmiAsPcie
- IioStack1 = 1, // IOU0
- IioStack2 = 2, // IOU1
- IioStack3 = 3, // IOU2
- IioStack4 = 4, // IOU3
- IioStack5 = 5, // IOU4
- //for SPR
- IioStack6 = 6, // IOU5
- IioStack7 = 7,
- IioStack8 = 8,
- IioStack9 = 9,
- IioStack10 = 10,
- IioStack11 = 11,
- //for later SOC
- IioStack12 = 12,
- IioStack13 = 13,
- IioStack14 = 14,
- IioStack15 = 15,
- IioStack16 = 16,
- IioStack17 = 17,
- IioStack18 = 18,
- IioStackUnknown = 0xFF
-} IIO_STACK;
-
#pragma pack()
-#endif //#ifndef _IIO_UNIVERSAL_DATA_HOB_H_
+#endif // _IIO_UNIVERSAL_DATA_HOB_H_
+
diff --git a/src/vendorcode/intel/fsp/fsp2_0/graniterapids/sp/MemoryMapDataHob.h b/src/vendorcode/intel/fsp/fsp2_0/graniterapids/sp/MemoryMapDataHob.h
index ad3eec3b3d..94a85409cf 100644
--- a/src/vendorcode/intel/fsp/fsp2_0/graniterapids/sp/MemoryMapDataHob.h
+++ b/src/vendorcode/intel/fsp/fsp2_0/graniterapids/sp/MemoryMapDataHob.h
@@ -1,6 +1,6 @@
/** @file
-Copyright (c) 2019-2023, Intel Corporation. All rights reserved.<BR>
+Copyright (c) 2024, Intel Corporation. All rights reserved.<BR>
Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met:
@@ -26,6 +26,8 @@ are permitted provided that the following conditions are met:
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
THE POSSIBILITY OF SUCH DAMAGE.
+ This file is automatically generated. Please do NOT modify !!!
+
**/
#ifndef _MEMORY_MAP_DATA_HOB_H_
@@ -34,37 +36,51 @@ are permitted provided that the following conditions are met:
#define MEMORY_MAP_HOB_GUID { 0xf8870015, 0x6994, 0x4b98, { 0x95, 0xa2, 0xbd, 0x56, 0xda, 0x91, 0xc0, 0x7f } }
#ifndef MAX_SOCKET
-#define MAX_SOCKET 4
+#define MAX_SOCKET 2
#endif
#ifndef MAX_IMC
-#define MAX_IMC 4 // Maximum memory controllers per socket
+#define MAX_IMC 8 // Maximum memory controllers per socket
#endif
#ifndef MAX_MC_CH
-#define MAX_MC_CH 2 // Max number of channels per MC (3 for EP)
+#define MAX_MC_CH 1 // Max number of channels per MC (3 for EP)
#endif
#ifndef MAX_CH
-#define MAX_CH ((MAX_IMC)*(MAX_MC_CH)) // Max channels per socket (worst case EP * EX combination = 16)
+#define MAX_CH ((MAX_IMC)*(MAX_MC_CH)) // Max channels per socket (worst case EP * EX combination = 16)
+#endif
+
+#ifndef MAX_CXL_HOST_BRIDGES
+#define MAX_CXL_HOST_BRIDGES 0x6 // Maximum number of CXL host bridges per socket.
#endif
-#define MAX_CXL_AMT 0
+#ifndef MAX_CXL_HOST_BRIDGE_WAYS
+#define MAX_CXL_HOST_BRIDGE_WAYS 0x4 // Maximum interleave ways of CXL host bridges per socket.
+#endif
+
+//
+// Macro definitions for abstracted memory decoding target. The data structure is designed to
+// iterate iMC and CXL host bridge host decoded memory in an unified way.
+// definition for GNRSRF/GNRD/GRR
+//
+#define MAX_CXL_AMT MAX_CXL_HOST_BRIDGES // Max number of unique interleaves for NGN DIMM
+
#ifndef MAX_UNIQUE_NGN_DIMM_INTERLEAVE
-#define MAX_UNIQUE_NGN_DIMM_INTERLEAVE 2 // Max number of unique interleaves for NGN DIMM
+#define MAX_UNIQUE_NGN_DIMM_INTERLEAVE 2 // Max number of unique interleaves for NGN DIMM
#endif
#ifndef MAX_SPARE_RANK
-#define MAX_SPARE_RANK 2 // Max number of spare ranks in a channel
+#define MAX_SPARE_RANK 2 // Max number of spare ranks in a channel
#endif
#ifndef MAX_HBM_IO
-#define MAX_HBM_IO 4
+#define MAX_HBM_IO 4
#endif
#ifndef MAX_DIMM
-#define MAX_DIMM 2 // Max DIMM per channel
+#define MAX_DIMM 2 // Max DIMM per channel
#endif
#ifndef MAX_RANK_DIMM
@@ -72,7 +88,7 @@ are permitted provided that the following conditions are met:
#endif
#ifndef MAX_DRAM_CLUSTERS
-#define MAX_DRAM_CLUSTERS 4
+#define MAX_DRAM_CLUSTERS 6
#endif
#ifndef MAX_SAD_RULES
@@ -83,17 +99,17 @@ are permitted provided that the following conditions are met:
#define MAX_FPGA_REMOTE_SAD_RULES 2 // Maximum FPGA sockets exists on ICX platform
#endif
-#define MAX_SI_SOCKET 8 // Maximum silicon supported socket number
+#define MAX_SI_SOCKET 8 // Maximum silicon supported socket number
-#define MAX_AMT (MAX_IMC+MAX_CXL_AMT) // Max abstract memory target per socket
-#define AMT_MAX_NODE ((MAX_AMT)*(MAX_SOCKET)) // Max abstract memory target for all sockets
+#define MAX_AMT (MAX_IMC+MAX_CXL_AMT) // Max abstract memory target per socket
+#define AMT_MAX_NODE ((MAX_AMT)*(MAX_SOCKET)) // Max abstract memory target for all sockets
// NGN
-#define NGN_MAX_SERIALNUMBER_STRLEN 4
-#define NGN_MAX_PARTNUMBER_STRLEN 30
-#define NGN_FW_VER_LEN 4
-#define NGN_LOG_TYPE_NUM 2
-#define NGN_LOG_LEVEL_NUM 2
+#define NGN_MAX_SERIALNUMBER_STRLEN 4
+#define NGN_MAX_PARTNUMBER_STRLEN 30
+#define NGN_FW_VER_LEN 4
+#define NGN_LOG_TYPE_NUM 2
+#define NGN_LOG_LEVEL_NUM 2
/**
* Memory channel index conversion macros.
@@ -115,25 +131,14 @@ are permitted provided that the following conditions are met:
#define MEM_KBYTES_TO_64MB(SizeKB) ((SizeKB) >> 16)
#define MEM_MBYTES_TO_64MB(SizeMB) ((SizeMB) >> 6)
-typedef UINT8 CXL_INTLV_SET_KEY;
+typedef UINT8 INTLV_SET_KEY;
-#define FSP_RESERVED1_LEN 77
-#define FSP_RESERVED2_LEN 2174
-#define FSP_RESERVED3_LEN 21
-#define FSP_RESERVED4_LEN 130
-#define FSP_RESERVED5_LEN 10
-#define FSP_RESERVED6_LEN 800
+#define FSP_RESERVED1_LEN 5476
+#define FSP_RESERVED2_LEN 1
+#define FSP_RESERVED3_LEN 220
+#define FSP_RESERVED4_LEN 10
#pragma pack(1)
-typedef enum {
- DIMM_RANK_MAP_OUT_UNKNOWN = 0,
- DIMM_RANK_MAP_OUT_MEM_DECODE,
- DIMM_RANK_MAP_OUT_POP_POR_VIOLATION,
- DIMM_RANK_MAP_OUT_RANK_DISABLED,
- DIMM_RANK_MAP_OUT_ADVMEMTEST_FAILURE,
- DIMM_RANK_MAP_OUT_MAX
-} DIMM_RANK_MAP_OUT_REASON;
-
struct RankDevice {
UINT8 enabled; // 0 = disabled, 1 = enabled
UINT8 logicalRank; // Logical Rank number (0 - 7)
@@ -154,55 +159,58 @@ typedef struct firmwareRev {
} FIRMWARE_REV;
typedef struct DimmDevice {
- UINT8 Present;
- BOOLEAN Enabled;
- UINT8 DcpmmPresent; // 1 - This is a DCPMM
- UINT8 X4Present;
- UINT8 DramIoWidth; // Actual DRAM IO Width (4, 8, 16)
- UINT8 NumRanks;
- UINT8 keyByte;
- UINT8 actKeyByte2; // Actual module type reported by SPD
- UINT8 actSPDModuleOrg; // Actual number of DRAM ranks and device width
- UINT8 dimmTs; // Thermal sensor data.
- UINT16 VolCap; // Volatile capacity (AEP DIMM only)
- UINT16 nonVolCap; // Non-volatile capacity (AEP DIMM only)
- UINT16 DimmSize;
- UINT32 NVmemSize;
- UINT16 SPDMMfgId; // Module Mfg Id from SPD
- UINT16 VendorID;
- UINT16 DeviceID;
- UINT16 RevisionID;
- UINT32 perRegionDPA; // DPA of PMEM that Nfit needs
- struct PersisentDpaMap perDPAMap[MAX_UNIQUE_NGN_DIMM_INTERLEAVE]; // DPA map
- UINT8 serialNumber[NGN_MAX_SERIALNUMBER_STRLEN]; // Serial Number
- UINT8 PartNumber[NGN_MAX_PARTNUMBER_STRLEN]; // Part Number
- UINT8 FirmwareVersionStr[NGN_FW_VER_LEN]; // Used to update the SMBIOS TYPE 17
- struct firmwareRev FirmwareVersion; // Firmware revision
- struct RankDevice rankList[MAX_RANK_DIMM];
- UINT16 InterfaceFormatCode;
- UINT16 SubsystemVendorID;
- UINT16 SubsystemDeviceID;
- UINT16 SubsystemRevisionID;
- UINT16 FisVersion; // Firmware Interface Specification version
- UINT8 DimmSku; // Dimm SKU info
- UINT8 manufacturingLocation; // Manufacturing location for the NVDIMM
- UINT16 manufacturingDate; // Date the NVDIMM was manufactured
- INT32 commonTck;
- UINT8 EnergyType; // 0: 12V aux power; 1: dedicated backup energy source; 2: no backup energy source
- BOOLEAN NvDimmNPresent; // JEDEC NVDIMM-N Type Memory Present
- UINT8 CidBitMap; // SubRankPer CS for DIMM device
- UINT16 SPDRegVen; // Register Vendor ID in SPD
- DIMM_RANK_MAP_OUT_REASON MapOutReason;
+ UINT8 Present;
+ BOOLEAN Enabled;
+ UINT8 DcpmmPresent; // 1 - This is a DCPMM
+ UINT8 X4Present;
+ UINT8 DramIoWidth; // Actual DRAM IO Width (4, 8, 16)
+ UINT8 NumRanks; // Number of ranks on dimm
+ UINT8 NumPackageRanks; // Number of Package ranks on dimm
+ // For DDR5 NumRanks and NumPackageRanks same
+ // For MCR NumRanks and NumPackageRanks may differ
+ UINT8 keyByte;
+ UINT8 actKeyByte2; // Actual module type reported by SPD
+ UINT8 actSPDModuleOrg; // Actual number of DRAM ranks and device width
+ UINT8 dimmTs; // Thermal sensor data.
+ UINT16 VolCap; // Volatile capacity (AEP DIMM only)
+ UINT16 nonVolCap; // Non-volatile capacity (AEP DIMM only)
+ UINT16 DimmSize;
+ UINT16 SPDMMfgId; // Module Mfg Id from SPD
+ UINT16 VendorID;
+ UINT16 DeviceID;
+ UINT16 RevisionID;
+ UINT32 perRegionDPA; // DPA of PMEM that Nfit needs
+ struct PersisentDpaMap perDPAMap[MAX_UNIQUE_NGN_DIMM_INTERLEAVE]; // DPA map
+ UINT8 serialNumber[NGN_MAX_SERIALNUMBER_STRLEN]; // Serial Number
+ UINT8 PartNumber[NGN_MAX_PARTNUMBER_STRLEN]; // Part Number
+ UINT8 FirmwareVersionStr[NGN_FW_VER_LEN]; // Used to update the SMBIOS TYPE 17
+ struct firmwareRev FirmwareVersion; // Firmware revision
+ struct RankDevice rankList[MAX_RANK_DIMM];
+ UINT16 InterfaceFormatCode;
+ UINT16 SubsystemVendorID;
+ UINT16 SubsystemDeviceID;
+ UINT16 SubsystemRevisionID;
+ UINT16 FisVersion; // Firmware Interface Specification version
+ UINT8 DimmSku; // Dimm SKU info
+ UINT8 manufacturingLocation; // Manufacturing location for the NVDIMM
+ UINT16 manufacturingDate; // Date the NVDIMM was manufactured
+ INT32 commonTck;
+ UINT8 EnergyType; // 0: 12V aux power; 1: dedicated backup energy source; 2: no backup energy source
+ BOOLEAN NvDimmNPresent; // JEDEC NVDIMM-N Type Memory Present
+ UINT8 CidBitMap; // SubRankPer CS for DIMM device
+ UINT16 SPDRegVen; // Register Vendor ID in SPD
+ UINT8 SPDOtherOptFeatures; // SDRAM Other Optional features
+ BOOLEAN DimmChanged;
} MEMMAP_DIMM_DEVICE_INFO_STRUCT;
-struct ChannelDevice {
+typedef struct ChannelDevice {
UINT8 Enabled; // 0 = channel disabled, 1 = channel enabled
UINT8 Features; // Bit mask of features to enable or disable
UINT8 MaxDimm; // Number of DIMM
UINT8 NumRanks; // Number of ranks on this channel
UINT8 chFailed;
UINT8 ngnChFailed;
- UINT8 Is9x4DimmPresent; // 9x4 dimm present indicator
+ UINT8 Is4BitEccDimmPresent; // 4-bit Ecc dimm present indicator
UINT8 SpareLogicalRank[MAX_SPARE_RANK]; // Logical rank, selected as Spare
UINT8 SparePhysicalRank[MAX_SPARE_RANK]; // Physical rank, selected as spare
UINT16 SpareRankSize[MAX_SPARE_RANK]; // spare rank size
@@ -210,11 +218,11 @@ struct ChannelDevice {
UINT8 DdrPopulationMap; // Bitmap to indicate location of DDR DIMMs within the channel memory slots (BIT0: Ch.D0, BIT1: CH.D1)
UINT8 PmemPopulationMap; // Bitmap to indicate location of PMem modules within the channel memory slots (BIT0: Ch.D0, BIT1: CH.D1)
MEMMAP_DIMM_DEVICE_INFO_STRUCT DimmInfo[MAX_DIMM];
-};
+} CHANNEL_DEVICE;
-struct memcontroller {
+typedef struct memcontroller {
UINT32 MemSize;
-};
+} MEMCONTROLLER;
typedef enum {
MemTypeNone = 0,
@@ -251,8 +259,8 @@ typedef struct SADTable {
UINT8 FMchannelInterBitmap[MAX_AMT]; //Bit map to denote which FM channels are interleaved per IMC eg: 111b - Ch 2,1 & 0 are interleaved; 011b denotes Ch1 & 0 are interleaved
UINT8 NmChWays; // Channel Interleave ways for SAD. Represents channelInterBitmap ways for DDR4/NM.
UINT8 FmChWays; // Channel Interleave ways for SAD. Represents FMchannelInterBitmap ways for DDRT.
- UINT16 imcInterBitmap; // Bit map to denote which IMCs are interleaved from this socket.
- UINT16 NmImcInterBitmap; // Bit map to denote which IMCs are interleaved from this socket as NM.
+ UINT32 imcInterBitmap; // Bit map to denote which IMCs are interleaved from this socket.
+ UINT32 NmImcInterBitmap; // Bit map to denote which IMCs are interleaved from this socket as NM.
BOOLEAN local; // 0 - Remote 1- Local
UINT8 IotEnabled; // To indicate if IOT is enabled
UINT8 mirrored; // To Indicate the SAD is mirrored while enabling partial mirroring
@@ -260,8 +268,9 @@ typedef struct SADTable {
UINT8 tgtGranularity; // Interleave mode for target list
UINT8 Cluster; // SNC cluster, hemisphere, or quadrant index.
UINT8 HostBridgeGran; // Host bridge interleaving granularity.
+ UINT8 HostBridgeList[MAX_CXL_HOST_BRIDGE_WAYS]; // List of interleaved CXL host bridges.
UINT32 HotPlugPadSize; // Memory size padded for CXL hot plug. 0 if it is not a CXL hot plug SAD.
- CXL_INTLV_SET_KEY CxlIntlvSetKey; // The unique key of CXL interleave set. (7nm)
+ INTLV_SET_KEY CxlIntlvSetKey; // The unique key of CXL interleave set. (7nm)
} SAD_TABLE;
typedef struct socket {
@@ -271,10 +280,9 @@ typedef struct socket {
UINT8 imcEnabled[MAX_IMC];
UINT8 SadIntList[MAX_DRAM_CLUSTERS * MAX_SAD_RULES][AMT_MAX_NODE]; // SAD interleave list
UINT32 SktTotMemMapSPA; // Total memory mapped to SPA
- UINT32 SktMemSize2LM; // Total memory excluded from Limit
SAD_TABLE SAD[MAX_DRAM_CLUSTERS * MAX_SAD_RULES]; // SAD table
- struct memcontroller imc[MAX_IMC];
- struct ChannelDevice ChannelInfo[MAX_CH];
+ MEMCONTROLLER imc[MAX_IMC];
+ CHANNEL_DEVICE ChannelInfo[MAX_CH];
} MEMMAP_SOCKET;
typedef struct {
@@ -287,9 +295,10 @@ typedef struct SystemMemoryMapElement {
UINT16 Type; // Type of this memory element; Bit0: 1LM Bit1: 2LM Bit2: PMEM Bit3: PMEM-cache Bit4: BLK Window Bit5: CSR/Mailbox/Ctrl region
UINT8 NodeId; // Node ID of the HA Owning the memory
UINT8 SocketId; // Socket Id of socket that has his memory - ONLY IN NUMA
+ UINT8 ClusterId; // Logical cluster Id of SNC cluster - only 0 in UMA clustering and all2all
UINT8 SktInterBitmap; // Socket interleave bitmap, if more that on socket then ImcInterBitmap and ChInterBitmap are identical in all sockets
- UINT16 ImcInterBitmap; // IMC interleave bitmap for this memory
- UINT8 ChInterBitmap[MAX_IMC];//Bit map to denote which channels are interleaved per IMC eg: 111b - Ch 2,1 & 0 are interleaved; 011b denotes Ch1 & 0 are interleaved
+ UINT32 ImcInterBitmap; // IMC interleave bitmap for this memory
+ UINT8 ChInterBitmap[MAX_AMT];//Bit map to denote which channels are interleaved per IMC eg: 111b - Ch 2,1 & 0 are interleaved; 011b denotes Ch1 & 0 are interleaved
UINT32 BaseAddress; // Base Address of the element in 64MB chunks
UINT32 ElementSize; // Size of this memory element in 64MB chunks
} SYSTEM_MEMORY_MAP_ELEMENT;
@@ -300,8 +309,6 @@ typedef struct SystemMemoryMapHob {
// All2All/Quad/Hemi modes can be considered as having only one cluster (i.e SNC1).
//
UINT8 TotalClusters;
-
- UINT8 reserved1[FSP_RESERVED1_LEN]; // MEMORY_MAP_BLOCK_DECODER_DATA BlockDecoderData; // block decoder data structure
UINT32 lowMemBase; // Mem base in 64MB units for below 4GB mem.
UINT32 lowMemSize; // Mem size in 64MB units for below 4GB mem.
UINT32 highMemBase; // Mem base in 64MB units for above 4GB mem.
@@ -310,14 +317,9 @@ typedef struct SystemMemoryMapHob {
UINT16 memFreq; // Mem Frequency
UINT16 HbmFreq; // HBM Frequency in MHz.
UINT8 memMode; // 0 - Independent, 1 - Lockstep
- UINT8 volMemMode; // 0 - 1LM, 1 - 2LM
- UINT8 CacheMemType; // 0 - DDR$DDRT, 1 - HBM$DDR. Only valid if volMemMode is 2LM
+ UINT8 VolMemMode; // 0 - 1LM, 1 - 2LM
UINT16 DramType;
UINT8 DdrVoltage;
- BOOLEAN SupportedPMemPresent; // TRUE if at least one PMem is present and supported by BIOS
- BOOLEAN EkvPresent; // Set if EKV controller on system
- BOOLEAN BwvPresent; // Set if BWV controller on system
- BOOLEAN CwvPresent; // Set if CWV controller on system
UINT8 XMPProfilesSup;
UINT8 XMPCapability;
//
@@ -336,35 +338,20 @@ typedef struct SystemMemoryMapHob {
UINT8 NumChPerMC;
UINT8 numberEntries; // Number of Memory Map Elements
SYSTEM_MEMORY_MAP_ELEMENT Element[(MAX_SOCKET * MAX_DRAM_CLUSTERS * MAX_SAD_RULES) + MAX_FPGA_REMOTE_SAD_RULES];
- UINT8 reserved2[FSP_RESERVED2_LEN]; // struct memSetup MemSetup;
- UINT8 reserved3[FSP_RESERVED3_LEN]; // MEM_DFXMEMVARS DfxMemVar;
+ UINT8 reserved1[FSP_RESERVED1_LEN]; // struct memSetup MemSetup;
+ UINT8 reserved2[FSP_RESERVED2_LEN]; // MEM_DFXMEMVARS DfxMemVar;
MEMMAP_SOCKET Socket[MAX_SOCKET];
- UINT8 reserved4[FSP_RESERVED4_LEN]; // struct memTiming profileMemTime[XMP_MAX_PROFILES];
-
- UINT8 reserved5[FSP_RESERVED5_LEN]; // RASMEMORYINFO RasMeminfo;
- UINT8 LatchSystemShutdownState;
- BOOLEAN IsWpqFlushSupported;
- UINT8 EadrSupport;
- UINT8 EadrCacheFlushMode;
- UINT8 SetSecureEraseSktChHob[MAX_SOCKET][MAX_CH]; //MAX_CH * MAX_SOCKET * MAX_DCPMM_CH
- UINT8 reserved6[FSP_RESERVED6_LEN]; // HOST_DDRT_DIMM_DEVICE_INFO_STRUCT HostDdrtDimmInfo[MAX_SOCKET][MAX_CH];
+ UINT8 reserved3[FSP_RESERVED3_LEN]; // struct memTiming profileMemTime[XMP_MAX_PROFILES];
+
+ UINT8 reserved4[FSP_RESERVED4_LEN]; // RASMEMORYINFO RasMeminfo;
UINT32 DdrCacheSize[MAX_SOCKET][MAX_CH]; // Size of DDR memory reserved for 2LM cache (64MB granularity)
- BOOLEAN AdrStateForPmemModule[MAX_SOCKET][MAX_CH]; // ADR state for Intel PMEM Modules
UINT16 BiosFisVersion; // Firmware Interface Specification version currently supported by BIOS
- UINT16 MaxAveragePowerLimit; // Max Power limit in mW used for averaged power ( Valid range ends at 15000mW)
- UINT16 MinAveragePowerLimit; // Min Power limit in mW used for averaged power ( Valid range starts from 10000mW)
- UINT16 CurrAveragePowerLimit; // Current Power limit in mW used for average power
- UINT16 MaxMbbPowerLimit; // Max MBB power limit ( Valid range ends at 18000mW).
- UINT16 MinMbbPowerLimit; // Min MBB power limit ( Valid range starts from 15000mW).
- UINT16 CurrMbbPowerLimit; // Current Power limit in mW used for MBB power
- UINT32 MaxMbbAveragePowerTimeConstant; // Max MBB Average Power Time Constant
- UINT32 MinMbbAveragePowerTimeConstant; // Min MBB Average Power Time Constant
- UINT32 CurrMbbAveragePowerTimeConstant; // Current MBB Average Power Time Constant
UINT32 MmiohBase; // MMIOH base in 64MB granularity
- UINT8 MaxSadRules; // Maximum SAD entries supported by silicon (24 for 14nm silicon, 16 for 10nm silicon)
+ UINT8 MaxSadRules; // Maximum SAD entries supported by silicon (16 for 10nm silicon)
UINT8 NumberofChaDramClusters; // Number of CHA DRAM decoder clusters
BOOLEAN VirtualNumaEnable; // Enable or Disable Virtual NUMA
- UINT8 VirtualNumOfCluster; // Number of Virtual NUMA nodes in each physical NUMA node (Socket or SNC cluster)
+ UINT8 VirtualNumaNodes; // Number of virtual NUMA nodes per physical NUMA node (non-zero)
+ BOOLEAN McrMemFreqRangeEn; // MCR Memory Frequency range enabled.
} SYSTEM_MEMORY_MAP_HOB;
#pragma pack()
diff --git a/src/vendorcode/intel/fsp/fsp2_0/graniterapids/sp/PrevBootErrSrcHob.h b/src/vendorcode/intel/fsp/fsp2_0/graniterapids/sp/PrevBootErrSrcHob.h
index f1d55542c3..6eeabd3e1b 100644
--- a/src/vendorcode/intel/fsp/fsp2_0/graniterapids/sp/PrevBootErrSrcHob.h
+++ b/src/vendorcode/intel/fsp/fsp2_0/graniterapids/sp/PrevBootErrSrcHob.h
@@ -1,6 +1,6 @@
/** @file
-Copyright (c) 2019-2023, Intel Corporation. All rights reserved.<BR>
+Copyright (c) 2024, Intel Corporation. All rights reserved.<BR>
Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met:
@@ -26,13 +26,14 @@ are permitted provided that the following conditions are met:
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
THE POSSIBILITY OF SUCH DAMAGE.
+ This file is automatically generated. Please do NOT modify !!!
+
**/
#ifndef _PREV_BOOT_ERR_SRC_HOB_H_
#define _PREV_BOOT_ERR_SRC_HOB_H_
-#define FSP_PREV_BOOT_ERR_SRC_HOB_GUID \
-{ 0xc5, 0xb5, 0x38, 0x51, 0x69, 0x93, 0xec, 0x48, 0x5b, 0x97, 0x38, 0xa2, 0xf7, 0x09, 0x66, 0x75 }
+#define FSP_PREV_BOOT_ERR_SRC_HOB_GUID { 0x5138b5c5, 0x9369, 0x48ec, { 0x5b, 0x97, 0x38, 0xa2, 0xf7, 0x09, 0x66, 0x75 } }
#define PREV_BOOT_ERR_SRC_HOB_SIZE 1000
diff --git a/src/vendorcode/intel/fsp/fsp2_0/graniterapids/sp/SystemInfoHob.h b/src/vendorcode/intel/fsp/fsp2_0/graniterapids/sp/SystemInfoHob.h
index b6d88f5c30..9f0987a681 100644
--- a/src/vendorcode/intel/fsp/fsp2_0/graniterapids/sp/SystemInfoHob.h
+++ b/src/vendorcode/intel/fsp/fsp2_0/graniterapids/sp/SystemInfoHob.h
@@ -1,6 +1,6 @@
/** @file
-Copyright (c) 2019-2023, Intel Corporation. All rights reserved.<BR>
+Copyright (c) 2024, Intel Corporation. All rights reserved.<BR>
Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met:
@@ -26,42 +26,41 @@ are permitted provided that the following conditions are met:
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
THE POSSIBILITY OF SUCH DAMAGE.
+ This file is automatically generated. Please do NOT modify !!!
+
**/
#ifndef _SYSTEM_INFO_HOB_H_
#define _SYSTEM_INFO_HOB_H_
-#define SYSTEM_INFO_HOB_GUID { 0x7650A0F2, 0x0D91, 0x4B0C, { 0x92, 0x3B, 0xBD, 0xCF, 0x22, 0xD1, 0x64, 0x35 }}
+#define SYSTEM_INFO_HOB_GUID { 0x7650A0F2, 0x0D91, 0x4B0C, { 0x92, 0x3B, 0xBD, 0xCF, 0x22, 0xD1, 0x64, 0x35 } }
#ifndef MAX_SOCKET
-#define MAX_SOCKET 4
+#define MAX_SOCKET 2
#endif
#ifndef MAX_IIO_STACK
-#define MAX_IIO_STACK 12
+#define MAX_IIO_STACK 16
#endif
-#define MAX_LOGIC_IIO_STACK 14
+#define MAX_LOGIC_IIO_STACK 18
+#define MAX_HPM_PFS_ENTRY_NUM 15 // Number of entries in PFS structure
+#define HPM_PFS_ENTRY_SIZE 2 // Entry size of PFS structure in DWORD
#ifndef MAX_IMC
-#define MAX_IMC 4 // Maximum memory controllers per socket
+#define MAX_IMC 8 // Maximum memory controllers per socket
#endif
#ifndef MAX_MC_CH
-#define MAX_MC_CH 2 // Max number of channels per MC (3 for EP)
+#define MAX_MC_CH 1 // Max number of channels per MC (3 for EP)
#endif
#ifndef MAX_CH
#define MAX_CH ((MAX_IMC)*(MAX_MC_CH)) // Max channels per socket (worst case EP * EX combination = 16)
#endif
-#define MAX_HPM_PFS_ENTRY_NUM 15 // Number of entries in PFS structure
-#define HPM_PFS_ENTRY_SIZE 2 // Entry size of PFS structure in DWORD
-
#pragma pack(1)
-#ifndef MMIO_BARS_ENUM
-#define MMIO_BARS_ENUM
typedef enum {
TYPE_SCF_BAR = 0,
TYPE_PCU_BAR,
@@ -76,7 +75,6 @@ typedef enum {
TYPE_SBREG_BAR,
TYPE_MAX_MMIO_BAR
} MMIO_BARS;
-#endif
typedef enum {
ReservedMemSs,
@@ -95,7 +93,7 @@ typedef enum BootMode {
// in addition to the sub-boot type (WarmBoot, WarmBootFast, etc).
S3Resume = 1 // S3 flow through RC. Should do the bare minimum required for S3
// init and be optimized for speed.
-} BootMode;
+} BOOT_MODE;
//
// This is used to determine what type of die is connected to a UPI link
@@ -163,19 +161,6 @@ typedef struct {
} HPM_VSEC_RESOURCE;
-//
-// Stack id swap information, which includes stack swap flag and the new stack id swap array.
-//
-typedef struct {
- BOOLEAN StackSwapFlag;
- UINT8 StackIdSwapArray[MAX_IIO_STACK];
-} STACKID_SWAP_INFO;
-
-typedef struct {
- UINT64 Cxl1p1RcrbBase;
- BOOLEAN Cxl1p1RcrbValid;
-} CXL_1P1_RCRB;
-
typedef struct {
UINT32 StackPresentBitmap[MAX_SOCKET]; ///< bitmap of present stacks per socket
UINT8 StackBus[MAX_SOCKET][MAX_LOGIC_IIO_STACK];///< Bus of each stack
@@ -188,7 +173,6 @@ typedef struct {
UINT8 segmentSocket[MAX_SOCKET];
UINT8 KtiPortCnt;
UINT32 socketPresentBitMap;
- UINT32 SecondaryNodeBitMap;
UINT32 FpgaPresentBitMap;
UINT32 mmCfgBase;
UINT64 SocketMmCfgBase[MAX_SOCKET];
@@ -220,13 +204,17 @@ typedef struct {
BOOLEAN DataPopulated; // CPU_CSR_ACCESS_VAR is unavailable when FALSE
HPM_VSEC_RESOURCE SocketHpmVsecRes[MAX_SOCKET]; // HPM VSEC info for all sockets
BOOLEAN HbmSku;
- UINT8 HcxType[MAX_SOCKET];
- STACKID_SWAP_INFO StackIdSwapInfo[MAX_SOCKET]; //StackID sync after do StackId swap,including Stack swap table and whether do stack swap
- CXL_1P1_RCRB Cxl1p1Rcrb[MAX_SOCKET][MAX_IIO_STACK]; // CXL 1.1 RCRB, one per PI5 stack
+ UINT64 Cxl1p1Rcrb[MAX_SOCKET][MAX_IIO_STACK]; // CXL 1.1 RCRB, one per PI5 stack
+ UINT64 CxlRbBar[MAX_SOCKET][MAX_IIO_STACK]; // CXL RBBAR, one per PI5 stack
UINT32 DmiRcrb[MAX_SOCKET]; // DMI RCRB region, one per socket
UINT8 FabricType; //Compute die 10x6, 10x5, and 6x5 type is stored
UINT8 ChopType; //Compute Die Chop Type
UINT8 MdfInstCount;
+ UINT32 UboxMmioSize;
+ UINT32 UboxScfMmioSize;
+ UINT64 PpinValue[MAX_SOCKET]; // The Protected Processor Inventory Number from CPU MSRs
+ UINT32 OobMsmPciBaseAddress[MAX_SOCKET];
+ UINT32 S3mControlRegisterBaseAddress[MAX_SOCKET];
} CPU_CSR_ACCESS_VAR;
typedef struct {
@@ -261,7 +249,7 @@ typedef struct {
UINT32 CheckPoint;
UINT8 ResetRequired;
UINT8 Emulation;
- BootMode SysBootMode;
+ BOOT_MODE SysBootMode;
CPU_CSR_ACCESS_VAR CpuCsrAccessVarHost; // Common resource for CsrAccessRoutines
UINT64 CpuFreq;
UINT8 SocketId;