1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
|
/** @file
Copyright (c) 2018, Intel Corporation. All rights reserved.<BR>
This program and the accompanying materials are licensed and made available under
the terms and conditions of the BSD License that accompanies this distribution.
The full text of the license may be found at
http://opensource.org/licenses/bsd-license.php.
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
**/
#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)
struct SystemMemoryMapElement {
UINT8 NodeId; // Node ID of the HA Owning the memory
UINT8 SocketId; // Socket Id of socket that has his memory - ONLY IN NUMA
UINT8 ImcInterBitmap; // IMC interleave bitmap for this DRAM rule - ONLY IN NUMA
UINT32 BaseAddress; // Base Address of the element in 64MB chunks
UINT32 ElementSize; // Size of this memory element in 64MB chunks
};
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 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];
};
#pragma pack()
#endif
|