]> git.proxmox.com Git - mirror_edk2.git/blob - MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmm.inf
bbc8d2080193d6cb9c5d42856af3f2454bebcd1f
[mirror_edk2.git] / MdeModulePkg / Universal / Variable / RuntimeDxe / VariableSmm.inf
1 ## @file
2 # Provides SMM variable service.
3 #
4 # This module installs SMM variable protocol into SMM protocol database,
5 # which can be used by SMM driver, and installs SMM variable protocol
6 # into BS protocol database, which can be used to notify the SMM Runtime
7 # Dxe driver that the SMM variable service is ready.
8 # This module should be used with SMM Runtime DXE module together. The
9 # SMM Runtime DXE module would install variable arch protocol and variable
10 # write arch protocol based on SMM variable module.
11 #
12 # Caution: This module requires additional review when modified.
13 # This driver will have external input - variable data and communicate buffer in SMM mode.
14 # This external input must be validated carefully to avoid security issues such as
15 # buffer overflow or integer overflow.
16 # The whole SMM authentication variable design relies on the integrity of flash part and SMM.
17 # which is assumed to be protected by platform. All variable code and metadata in flash/SMM Memory
18 # may not be modified without authorization. If platform fails to protect these resources,
19 # the authentication service provided in this driver will be broken, and the behavior is undefined.
20 #
21 # Copyright (c) 2010 - 2019, Intel Corporation. All rights reserved.<BR>
22 # Copyright (c) Microsoft Corporation.
23 # SPDX-License-Identifier: BSD-2-Clause-Patent
24 #
25 ##
26
27 [Defines]
28 INF_VERSION = 0x00010005
29 BASE_NAME = VariableSmm
30 MODULE_UNI_FILE = VariableSmm.uni
31 FILE_GUID = 23A089B3-EED5-4ac5-B2AB-43E3298C2343
32 MODULE_TYPE = DXE_SMM_DRIVER
33 VERSION_STRING = 1.0
34 PI_SPECIFICATION_VERSION = 0x0001000A
35 ENTRY_POINT = VariableServiceInitialize
36
37 #
38 # The following information is for reference only and not required by the build tools.
39 #
40 # VALID_ARCHITECTURES = IA32 X64
41 #
42
43
44 [Sources]
45 Reclaim.c
46 Variable.c
47 VariableTraditionalMm.c
48 VariableSmm.c
49 VariableNonVolatile.c
50 VariableNonVolatile.h
51 VariableParsing.c
52 VariableParsing.h
53 VariableRuntimeCache.c
54 VariableRuntimeCache.h
55 VarCheck.c
56 Variable.h
57 PrivilegePolymorphic.h
58 VariableExLib.c
59 TcgMorLockSmm.c
60 SpeculationBarrierSmm.c
61
62 [Packages]
63 MdePkg/MdePkg.dec
64 MdeModulePkg/MdeModulePkg.dec
65
66 [LibraryClasses]
67 UefiDriverEntryPoint
68 MemoryAllocationLib
69 BaseLib
70 SynchronizationLib
71 UefiLib
72 MmServicesTableLib
73 BaseMemoryLib
74 DebugLib
75 DxeServicesTableLib
76 HobLib
77 PcdLib
78 SmmMemLib
79 AuthVariableLib
80 VarCheckLib
81 UefiBootServicesTableLib
82 VariablePolicyLib
83 VariablePolicyHelperLib
84
85 [Protocols]
86 gEfiSmmFirmwareVolumeBlockProtocolGuid ## CONSUMES
87 ## CONSUMES
88 ## NOTIFY
89 gEfiSmmFaultTolerantWriteProtocolGuid
90 ## PRODUCES
91 ## UNDEFINED # SmiHandlerRegister
92 gEfiSmmVariableProtocolGuid
93 gEfiMmEndOfDxeProtocolGuid ## NOTIFY
94 gEdkiiSmmVarCheckProtocolGuid ## PRODUCES
95 gEfiTcgProtocolGuid ## SOMETIMES_CONSUMES
96 gEfiTcg2ProtocolGuid ## SOMETIMES_CONSUMES
97
98 [Guids]
99 ## SOMETIMES_CONSUMES ## GUID # Signature of Variable store header
100 ## SOMETIMES_PRODUCES ## GUID # Signature of Variable store header
101 ## SOMETIMES_CONSUMES ## HOB
102 ## SOMETIMES_PRODUCES ## SystemTable
103 gEfiAuthenticatedVariableGuid
104
105 ## SOMETIMES_CONSUMES ## GUID # Signature of Variable store header
106 ## SOMETIMES_PRODUCES ## GUID # Signature of Variable store header
107 ## SOMETIMES_CONSUMES ## HOB
108 ## SOMETIMES_PRODUCES ## SystemTable
109 gEfiVariableGuid
110
111 ## SOMETIMES_CONSUMES ## Variable:L"PlatformLang"
112 ## SOMETIMES_PRODUCES ## Variable:L"PlatformLang"
113 ## SOMETIMES_CONSUMES ## Variable:L"Lang"
114 ## SOMETIMES_PRODUCES ## Variable:L"Lang"
115 gEfiGlobalVariableGuid
116
117 gEfiMemoryOverwriteControlDataGuid ## SOMETIMES_CONSUMES ## Variable:L"MemoryOverwriteRequestControl"
118 gEfiMemoryOverwriteRequestControlLockGuid ## SOMETIMES_PRODUCES ## Variable:L"MemoryOverwriteRequestControlLock"
119
120 gSmmVariableWriteGuid ## PRODUCES ## GUID # Install protocol
121 gEfiSystemNvDataFvGuid ## CONSUMES ## GUID
122 gEdkiiFaultTolerantWriteGuid ## SOMETIMES_CONSUMES ## HOB
123
124 ## SOMETIMES_CONSUMES ## Variable:L"VarErrorFlag"
125 ## SOMETIMES_PRODUCES ## Variable:L"VarErrorFlag"
126 gEdkiiVarErrorFlagGuid
127
128 [Pcd]
129 gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableSize ## CONSUMES
130 gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableBase ## SOMETIMES_CONSUMES
131 gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableBase64 ## CONSUMES
132 gEfiMdeModulePkgTokenSpaceGuid.PcdMaxVariableSize ## CONSUMES
133 gEfiMdeModulePkgTokenSpaceGuid.PcdMaxAuthVariableSize ## CONSUMES
134 gEfiMdeModulePkgTokenSpaceGuid.PcdMaxVolatileVariableSize ## CONSUMES
135 gEfiMdeModulePkgTokenSpaceGuid.PcdMaxHardwareErrorVariableSize ## CONSUMES
136 gEfiMdeModulePkgTokenSpaceGuid.PcdVariableStoreSize ## CONSUMES
137 gEfiMdeModulePkgTokenSpaceGuid.PcdHwErrStorageSize ## CONSUMES
138 gEfiMdeModulePkgTokenSpaceGuid.PcdMaxUserNvVariableSpaceSize ## CONSUMES
139 gEfiMdeModulePkgTokenSpaceGuid.PcdBoottimeReservedNvVariableSpaceSize ## CONSUMES
140 gEfiMdeModulePkgTokenSpaceGuid.PcdReclaimVariableSpaceAtEndOfDxe ## CONSUMES
141 gEfiMdeModulePkgTokenSpaceGuid.PcdEmuVariableNvModeEnable ## SOMETIMES_CONSUMES
142 gEfiMdeModulePkgTokenSpaceGuid.PcdEmuVariableNvStoreReserved ## SOMETIMES_CONSUMES
143
144 [FeaturePcd]
145 gEfiMdeModulePkgTokenSpaceGuid.PcdVariableCollectStatistics ## CONSUMES # statistic the information of variable.
146 gEfiMdePkgTokenSpaceGuid.PcdUefiVariableDefaultLangDeprecate ## CONSUMES # Auto update PlatformLang/Lang
147
148 [Depex]
149 TRUE
150
151 [UserExtensions.TianoCore."ExtraFiles"]
152 VariableSmmExtra.uni