]> git.proxmox.com Git - mirror_edk2.git/blob - MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmm.inf
MdeModulePkg: Drop VarLock from RuntimeDxe variable driver
[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 VariableLockRequestToLock.c
62
63 [Packages]
64 MdePkg/MdePkg.dec
65 MdeModulePkg/MdeModulePkg.dec
66
67 [LibraryClasses]
68 UefiDriverEntryPoint
69 MemoryAllocationLib
70 BaseLib
71 SynchronizationLib
72 UefiLib
73 MmServicesTableLib
74 BaseMemoryLib
75 DebugLib
76 DxeServicesTableLib
77 HobLib
78 PcdLib
79 SmmMemLib
80 AuthVariableLib
81 VarCheckLib
82 UefiBootServicesTableLib
83 VariablePolicyLib
84 VariablePolicyHelperLib
85
86 [Protocols]
87 gEfiSmmFirmwareVolumeBlockProtocolGuid ## CONSUMES
88 ## CONSUMES
89 ## NOTIFY
90 gEfiSmmFaultTolerantWriteProtocolGuid
91 ## PRODUCES
92 ## UNDEFINED # SmiHandlerRegister
93 gEfiSmmVariableProtocolGuid
94 gEfiMmEndOfDxeProtocolGuid ## NOTIFY
95 gEdkiiSmmVarCheckProtocolGuid ## PRODUCES
96 gEfiTcgProtocolGuid ## SOMETIMES_CONSUMES
97 gEfiTcg2ProtocolGuid ## SOMETIMES_CONSUMES
98
99 [Guids]
100 ## SOMETIMES_CONSUMES ## GUID # Signature of Variable store header
101 ## SOMETIMES_PRODUCES ## GUID # Signature of Variable store header
102 ## SOMETIMES_CONSUMES ## HOB
103 ## SOMETIMES_PRODUCES ## SystemTable
104 gEfiAuthenticatedVariableGuid
105
106 ## SOMETIMES_CONSUMES ## GUID # Signature of Variable store header
107 ## SOMETIMES_PRODUCES ## GUID # Signature of Variable store header
108 ## SOMETIMES_CONSUMES ## HOB
109 ## SOMETIMES_PRODUCES ## SystemTable
110 gEfiVariableGuid
111
112 ## SOMETIMES_CONSUMES ## Variable:L"PlatformLang"
113 ## SOMETIMES_PRODUCES ## Variable:L"PlatformLang"
114 ## SOMETIMES_CONSUMES ## Variable:L"Lang"
115 ## SOMETIMES_PRODUCES ## Variable:L"Lang"
116 gEfiGlobalVariableGuid
117
118 gEfiMemoryOverwriteControlDataGuid ## SOMETIMES_CONSUMES ## Variable:L"MemoryOverwriteRequestControl"
119 gEfiMemoryOverwriteRequestControlLockGuid ## SOMETIMES_PRODUCES ## Variable:L"MemoryOverwriteRequestControlLock"
120
121 gSmmVariableWriteGuid ## PRODUCES ## GUID # Install protocol
122 gEfiSystemNvDataFvGuid ## CONSUMES ## GUID
123 gEdkiiFaultTolerantWriteGuid ## SOMETIMES_CONSUMES ## HOB
124
125 ## SOMETIMES_CONSUMES ## Variable:L"VarErrorFlag"
126 ## SOMETIMES_PRODUCES ## Variable:L"VarErrorFlag"
127 gEdkiiVarErrorFlagGuid
128
129 [Pcd]
130 gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableSize ## CONSUMES
131 gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableBase ## SOMETIMES_CONSUMES
132 gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableBase64 ## CONSUMES
133 gEfiMdeModulePkgTokenSpaceGuid.PcdMaxVariableSize ## CONSUMES
134 gEfiMdeModulePkgTokenSpaceGuid.PcdMaxAuthVariableSize ## CONSUMES
135 gEfiMdeModulePkgTokenSpaceGuid.PcdMaxVolatileVariableSize ## CONSUMES
136 gEfiMdeModulePkgTokenSpaceGuid.PcdMaxHardwareErrorVariableSize ## CONSUMES
137 gEfiMdeModulePkgTokenSpaceGuid.PcdVariableStoreSize ## CONSUMES
138 gEfiMdeModulePkgTokenSpaceGuid.PcdHwErrStorageSize ## CONSUMES
139 gEfiMdeModulePkgTokenSpaceGuid.PcdMaxUserNvVariableSpaceSize ## CONSUMES
140 gEfiMdeModulePkgTokenSpaceGuid.PcdBoottimeReservedNvVariableSpaceSize ## CONSUMES
141 gEfiMdeModulePkgTokenSpaceGuid.PcdReclaimVariableSpaceAtEndOfDxe ## CONSUMES
142 gEfiMdeModulePkgTokenSpaceGuid.PcdEmuVariableNvModeEnable ## SOMETIMES_CONSUMES
143 gEfiMdeModulePkgTokenSpaceGuid.PcdEmuVariableNvStoreReserved ## SOMETIMES_CONSUMES
144
145 [FeaturePcd]
146 gEfiMdeModulePkgTokenSpaceGuid.PcdVariableCollectStatistics ## CONSUMES # statistic the information of variable.
147 gEfiMdePkgTokenSpaceGuid.PcdUefiVariableDefaultLangDeprecate ## CONSUMES # Auto update PlatformLang/Lang
148
149 [Depex]
150 TRUE
151
152 [UserExtensions.TianoCore."ExtraFiles"]
153 VariableSmmExtra.uni