]> git.proxmox.com Git - mirror_edk2.git/blame - MdeModulePkg/Include/Guid/SmmVariableCommon.h
MdeModulePkg: Apply uncrustify changes
[mirror_edk2.git] / MdeModulePkg / Include / Guid / SmmVariableCommon.h
CommitLineData
d00ed85e 1/** @file\r
2 The file defined some common structures used for communicating between SMM variable module and SMM variable wrapper module.\r
3\r
aab3b9b9 4Copyright (c) 2011 - 2019, Intel Corporation. All rights reserved.<BR>\r
9d510e61 5SPDX-License-Identifier: BSD-2-Clause-Patent\r
d00ed85e 6\r
7**/\r
8\r
9#ifndef _SMM_VARIABLE_COMMON_H_\r
10#define _SMM_VARIABLE_COMMON_H_\r
11\r
aab3b9b9 12#include <Guid/VariableFormat.h>\r
efb01a10
SZ
13#include <Protocol/VarCheck.h>\r
14\r
d00ed85e 15#define EFI_SMM_VARIABLE_WRITE_GUID \\r
16 { 0x93ba1826, 0xdffb, 0x45dd, { 0x82, 0xa7, 0xe7, 0xdc, 0xaa, 0x3b, 0xbd, 0xf3 } }\r
17\r
1436aea4 18extern EFI_GUID gSmmVariableWriteGuid;\r
d00ed85e 19\r
20//\r
fa0737a8
SZ
21// This structure is used for SMM variable. the collected statistics data is saved in SMRAM. It can be got from\r
22// SMI handler. The communication buffer should be:\r
be4e0cfb 23// EFI_MM_COMMUNICATE_HEADER + SMM_VARIABLE_COMMUNICATE_HEADER + payload.\r
d00ed85e 24//\r
25typedef struct {\r
1436aea4
MK
26 UINTN Function;\r
27 EFI_STATUS ReturnStatus;\r
28 UINT8 Data[1];\r
d00ed85e 29} SMM_VARIABLE_COMMUNICATE_HEADER;\r
30\r
31//\r
32// The payload for this function is SMM_VARIABLE_COMMUNICATE_ACCESS_VARIABLE.\r
33//\r
1436aea4 34#define SMM_VARIABLE_FUNCTION_GET_VARIABLE 1\r
d00ed85e 35//\r
36// The payload for this function is SMM_VARIABLE_COMMUNICATE_GET_NEXT_VARIABLE_NAME.\r
fa0737a8 37//\r
d00ed85e 38#define SMM_VARIABLE_FUNCTION_GET_NEXT_VARIABLE_NAME 2\r
39//\r
40// The payload for this function is SMM_VARIABLE_COMMUNICATE_ACCESS_VARIABLE.\r
fa0737a8 41//\r
1436aea4 42#define SMM_VARIABLE_FUNCTION_SET_VARIABLE 3\r
d00ed85e 43//\r
44// The payload for this function is SMM_VARIABLE_COMMUNICATE_QUERY_VARIABLE_INFO.\r
fa0737a8 45//\r
1436aea4 46#define SMM_VARIABLE_FUNCTION_QUERY_VARIABLE_INFO 4\r
d00ed85e 47//\r
48// It is a notify event, no extra payload for this function.\r
fa0737a8 49//\r
1436aea4 50#define SMM_VARIABLE_FUNCTION_READY_TO_BOOT 5\r
d00ed85e 51//\r
52// It is a notify event, no extra payload for this function.\r
fa0737a8 53//\r
1436aea4 54#define SMM_VARIABLE_FUNCTION_EXIT_BOOT_SERVICE 6\r
d00ed85e 55//\r
be4e0cfb 56// The payload for this function is VARIABLE_INFO_ENTRY. The GUID in EFI_MM_COMMUNICATE_HEADER\r
d00ed85e 57// is gEfiSmmVariableProtocolGuid.\r
58//\r
1436aea4 59#define SMM_VARIABLE_FUNCTION_GET_STATISTICS 7\r
ff843847
RN
60//\r
61// The payload for this function is SMM_VARIABLE_COMMUNICATE_LOCK_VARIABLE\r
62//\r
1436aea4 63#define SMM_VARIABLE_FUNCTION_LOCK_VARIABLE 8\r
d00ed85e 64\r
efb01a10
SZ
65#define SMM_VARIABLE_FUNCTION_VAR_CHECK_VARIABLE_PROPERTY_SET 9\r
66\r
67#define SMM_VARIABLE_FUNCTION_VAR_CHECK_VARIABLE_PROPERTY_GET 10\r
68\r
1436aea4 69#define SMM_VARIABLE_FUNCTION_GET_PAYLOAD_SIZE 11\r
aab3b9b9
MK
70//\r
71// The payload for this function is SMM_VARIABLE_COMMUNICATE_RUNTIME_VARIABLE_CACHE_CONTEXT\r
72//\r
1436aea4 73#define SMM_VARIABLE_FUNCTION_INIT_RUNTIME_VARIABLE_CACHE_CONTEXT 12\r
aab3b9b9 74\r
1436aea4 75#define SMM_VARIABLE_FUNCTION_SYNC_RUNTIME_CACHE 13\r
aab3b9b9
MK
76//\r
77// The payload for this function is SMM_VARIABLE_COMMUNICATE_GET_RUNTIME_CACHE_INFO\r
78//\r
1436aea4 79#define SMM_VARIABLE_FUNCTION_GET_RUNTIME_CACHE_INFO 14\r
fa0737a8 80\r
d00ed85e 81///\r
82/// Size of SMM communicate header, without including the payload.\r
83///\r
be4e0cfb 84#define SMM_COMMUNICATE_HEADER_SIZE (OFFSET_OF (EFI_MM_COMMUNICATE_HEADER, Data))\r
d00ed85e 85\r
86///\r
87/// Size of SMM variable communicate header, without including the payload.\r
88///\r
89#define SMM_VARIABLE_COMMUNICATE_HEADER_SIZE (OFFSET_OF (SMM_VARIABLE_COMMUNICATE_HEADER, Data))\r
90\r
91///\r
92/// This structure is used to communicate with SMI handler by SetVariable and GetVariable.\r
93///\r
94typedef struct {\r
95 EFI_GUID Guid;\r
96 UINTN DataSize;\r
97 UINTN NameSize;\r
fa0737a8 98 UINT32 Attributes;\r
d00ed85e 99 CHAR16 Name[1];\r
100} SMM_VARIABLE_COMMUNICATE_ACCESS_VARIABLE;\r
101\r
102///\r
103/// This structure is used to communicate with SMI handler by GetNextVariableName.\r
104///\r
105typedef struct {\r
106 EFI_GUID Guid;\r
0c55190f 107 UINTN NameSize; // Return name buffer size\r
d00ed85e 108 CHAR16 Name[1];\r
109} SMM_VARIABLE_COMMUNICATE_GET_NEXT_VARIABLE_NAME;\r
110\r
111///\r
112/// This structure is used to communicate with SMI handler by QueryVariableInfo.\r
113///\r
114typedef struct {\r
1436aea4
MK
115 UINT64 MaximumVariableStorageSize;\r
116 UINT64 RemainingVariableStorageSize;\r
117 UINT64 MaximumVariableSize;\r
118 UINT32 Attributes;\r
d00ed85e 119} SMM_VARIABLE_COMMUNICATE_QUERY_VARIABLE_INFO;\r
120\r
ff843847
RN
121typedef SMM_VARIABLE_COMMUNICATE_GET_NEXT_VARIABLE_NAME SMM_VARIABLE_COMMUNICATE_LOCK_VARIABLE;\r
122\r
efb01a10 123typedef struct {\r
1436aea4
MK
124 EFI_GUID Guid;\r
125 UINTN NameSize;\r
126 VAR_CHECK_VARIABLE_PROPERTY VariableProperty;\r
127 CHAR16 Name[1];\r
efb01a10
SZ
128} SMM_VARIABLE_COMMUNICATE_VAR_CHECK_VARIABLE_PROPERTY;\r
129\r
fa0737a8 130typedef struct {\r
1436aea4 131 UINTN VariablePayloadSize;\r
fa0737a8
SZ
132} SMM_VARIABLE_COMMUNICATE_GET_PAYLOAD_SIZE;\r
133\r
aab3b9b9 134typedef struct {\r
1436aea4
MK
135 BOOLEAN *ReadLock;\r
136 BOOLEAN *PendingUpdate;\r
137 BOOLEAN *HobFlushComplete;\r
138 VARIABLE_STORE_HEADER *RuntimeHobCache;\r
139 VARIABLE_STORE_HEADER *RuntimeNvCache;\r
140 VARIABLE_STORE_HEADER *RuntimeVolatileCache;\r
aab3b9b9
MK
141} SMM_VARIABLE_COMMUNICATE_RUNTIME_VARIABLE_CACHE_CONTEXT;\r
142\r
143typedef struct {\r
1436aea4
MK
144 UINTN TotalHobStorageSize;\r
145 UINTN TotalNvStorageSize;\r
146 UINTN TotalVolatileStorageSize;\r
147 BOOLEAN AuthenticatedVariableUsage;\r
aab3b9b9
MK
148} SMM_VARIABLE_COMMUNICATE_GET_RUNTIME_CACHE_INFO;\r
149\r
fa0737a8 150#endif // _SMM_VARIABLE_COMMON_H_\r