/** @file Copyright (c) 2018, Intel Corporation. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent **/ #ifndef _MEMORY_MAP_GUID_H_ #define _MEMORY_MAP_GUID_H_ #include "SysHost.h" #include "UncoreCommonIncludes.h" #include "PartialMirrorGuid.h" // {F8870015-6994-4b98-95A2-BD56DA91C07F} #define EFI_MEMORY_MAP_GUID \ { \ 0xf8870015,0x6994,0x4b98,0x95,0xa2,0xbd,0x56,0xda,0x91,0xc0,0x7f \ } extern EFI_GUID gEfiMemoryMapGuid; extern CHAR16 EfiMemoryMapVariable[]; // // System Memory Map HOB information // #pragma pack(1) 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 SktInterBitmap; // Socket interleave bitmap, if more that on socket then ImcInterBitmap and ChInterBitmap are identical in all sockets UINT8 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 BaseAddress; // Base Address of the element in 64MB chunks UINT32 ElementSize; // Size of this memory element in 64MB chunks } SYSTEM_MEMORY_MAP_ELEMENT; typedef struct SystemMemoryMapHob { 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 memSize; // Total physical memory size UINT16 memFreq; // Mem Frequency UINT8 memMode; // 0 - Independent, 1 - Lockstep UINT8 volMemMode; // 0 - 1LM, 1 - 2LM UINT8 DimmType; UINT16 DramType; UINT8 DdrVoltage; UINT8 AepDimmPresent; // If at least one Aep Dimm Present (used by Nfit), then this should get set UINT8 SADNum; UINT8 XMPProfilesSup; UINT8 cpuType; UINT8 cpuStepping; UINT8 SystemRasType; UINT8 RasModesEnabled; // RAS modes that are enabled UINT8 ExRasModesEnabled; // Extended RAS modes that are enabled UINT8 RasModesSupported; //RAS modes that are supported by current memory population. UINT8 sncEnabled; // 0 - SNC disabled for this configuration, 1 - SNC enabled for this configuration UINT8 NumOfCluster; UINT8 NumChPerMC; UINT8 numberEntries; // Number of Memory Map Elements UINT8 maxIMC; UINT8 maxCh; struct SystemMemoryMapElement Element[MAX_SOCKET * SAD_RULES]; } SYSTEM_MEMORY_MAP_HOB; #pragma pack() #endif