]> git.proxmox.com Git - mirror_edk2.git/blob - MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmm.inf
MdeModulePkg/Variable: Attribute combination should return EFI_UNSUPPORTED
[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 VariableFlashInfoLib
84 VariablePolicyLib
85 VariablePolicyHelperLib
86 SafeIntLib
87
88 [Protocols]
89 gEfiSmmFirmwareVolumeBlockProtocolGuid ## CONSUMES
90 ## CONSUMES
91 ## NOTIFY
92 gEfiSmmFaultTolerantWriteProtocolGuid
93 ## PRODUCES
94 ## UNDEFINED # SmiHandlerRegister
95 gEfiSmmVariableProtocolGuid
96 gEfiMmEndOfDxeProtocolGuid ## NOTIFY
97 gEdkiiSmmVarCheckProtocolGuid ## PRODUCES
98 gEfiTcgProtocolGuid ## SOMETIMES_CONSUMES
99 gEfiTcg2ProtocolGuid ## SOMETIMES_CONSUMES
100
101 [Guids]
102 ## SOMETIMES_CONSUMES ## GUID # Signature of Variable store header
103 ## SOMETIMES_PRODUCES ## GUID # Signature of Variable store header
104 ## SOMETIMES_CONSUMES ## HOB
105 ## SOMETIMES_PRODUCES ## SystemTable
106 gEfiAuthenticatedVariableGuid
107
108 ## SOMETIMES_CONSUMES ## GUID # Signature of Variable store header
109 ## SOMETIMES_PRODUCES ## GUID # Signature of Variable store header
110 ## SOMETIMES_CONSUMES ## HOB
111 ## SOMETIMES_PRODUCES ## SystemTable
112 gEfiVariableGuid
113
114 ## SOMETIMES_CONSUMES ## Variable:L"PlatformLang"
115 ## SOMETIMES_PRODUCES ## Variable:L"PlatformLang"
116 ## SOMETIMES_CONSUMES ## Variable:L"Lang"
117 ## SOMETIMES_PRODUCES ## Variable:L"Lang"
118 gEfiGlobalVariableGuid
119
120 gEfiMemoryOverwriteControlDataGuid ## SOMETIMES_CONSUMES ## Variable:L"MemoryOverwriteRequestControl"
121 gEfiMemoryOverwriteRequestControlLockGuid ## SOMETIMES_PRODUCES ## Variable:L"MemoryOverwriteRequestControlLock"
122
123 gSmmVariableWriteGuid ## PRODUCES ## GUID # Install protocol
124 gEfiSystemNvDataFvGuid ## CONSUMES ## GUID
125 gEdkiiFaultTolerantWriteGuid ## SOMETIMES_CONSUMES ## HOB
126
127 ## SOMETIMES_CONSUMES ## Variable:L"VarErrorFlag"
128 ## SOMETIMES_PRODUCES ## Variable:L"VarErrorFlag"
129 gEdkiiVarErrorFlagGuid
130
131 [Pcd]
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