-## @file
-# Component description file for SMM Variable module.
-#
-# This module installs SMM variable protocol into SMM protocol database,
-# which can be used by SMM driver, and installs SMM variable protocol
-# into BS protocol database, which can be used to notify the SMM Runtime
-# Dxe driver that the SMM variable service is ready.
-# This module should be used with SMM Runtime DXE module together. The
-# SMM Runtime DXE module would install variable arch protocol and variable
-# write arch protocol based on SMM variable module.
-# Copyright (c) 2010, 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
-# which 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.
-#
-#
-##
-
-[Defines]
- INF_VERSION = 0x00010005
- BASE_NAME = VariableSmm
- FILE_GUID = 23A089B3-EED5-4ac5-B2AB-43E3298C2343
- MODULE_TYPE = DXE_SMM_DRIVER
- VERSION_STRING = 1.0
- PI_SPECIFICATION_VERSION = 0x0001000A
- ENTRY_POINT = VariableServiceInitialize
-
-#
-# The following information is for reference only and not required by the build tools.
-#
-# VALID_ARCHITECTURES = IA32 X64
-#
-
-
-[Sources]
- Reclaim.c
- Variable.c
- VariableSmm.c
- Variable.h
- VariableSmmCommon.h
-
-[Packages]
- MdePkg/MdePkg.dec
- MdeModulePkg/MdeModulePkg.dec
-
-[LibraryClasses]
- UefiDriverEntryPoint
- MemoryAllocationLib
- BaseLib
- SynchronizationLib
- UefiLib
- SmmLib
- SmmServicesTableLib
- BaseMemoryLib
- DebugLib
- DxeServicesTableLib
-
-[Protocols]
- gEfiSmmFirmwareVolumeBlockProtocolGuid ## SOMETIMES_CONSUMES
- gEfiSmmVariableProtocolGuid ## ALWAYS_PRODUCES
- gEfiSmmFaultTolerantWriteProtocolGuid ## SOMETIMES_CONSUMES
-
-[Guids]
- gEfiVariableGuid ## PRODUCES ## Configuration Table Guid
- gEfiGlobalVariableGuid ## PRODUCES ## Variable Guid
-
-[Pcd]
- gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableSize
- gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableBase
- gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableBase64
- gEfiMdeModulePkgTokenSpaceGuid.PcdMaxVariableSize
- gEfiMdeModulePkgTokenSpaceGuid.PcdMaxHardwareErrorVariableSize
- gEfiMdeModulePkgTokenSpaceGuid.PcdVariableStoreSize
- gEfiMdeModulePkgTokenSpaceGuid.PcdHwErrStorageSize
-
-[FeaturePcd]
- gEfiMdeModulePkgTokenSpaceGuid.PcdVariableCollectStatistics ## SOMETIME_CONSUMES (statistic the information of variable.)
-
-[Depex]
- TRUE
-
-
\ No newline at end of file
+## @file\r
+# Provides SMM variable service.\r
+#\r
+# This module installs SMM variable protocol into SMM protocol database,\r
+# which can be used by SMM driver, and installs SMM variable protocol\r
+# into BS protocol database, which can be used to notify the SMM Runtime\r
+# Dxe driver that the SMM variable service is ready.\r
+# This module should be used with SMM Runtime DXE module together. The\r
+# SMM Runtime DXE module would install variable arch protocol and variable\r
+# write arch protocol based on SMM variable module.\r
+#\r
+# Caution: This module requires additional review when modified.\r
+# This driver will have external input - variable data and communicate buffer in SMM mode.\r
+# This external input must be validated carefully to avoid security issues such as\r
+# buffer overflow or integer overflow.\r
+# The whole SMM authentication variable design relies on the integrity of flash part and SMM.\r
+# which is assumed to be protected by platform. All variable code and metadata in flash/SMM Memory\r
+# may not be modified without authorization. If platform fails to protect these resources,\r
+# the authentication service provided in this driver will be broken, and the behavior is undefined.\r
+#\r
+# Copyright (c) 2010 - 2019, Intel Corporation. All rights reserved.<BR>\r
+# Copyright (c) Microsoft Corporation.\r
+# SPDX-License-Identifier: BSD-2-Clause-Patent\r
+#\r
+##\r
+\r
+[Defines]\r
+ INF_VERSION = 0x00010005\r
+ BASE_NAME = VariableSmm\r
+ MODULE_UNI_FILE = VariableSmm.uni\r
+ FILE_GUID = 23A089B3-EED5-4ac5-B2AB-43E3298C2343\r
+ MODULE_TYPE = DXE_SMM_DRIVER\r
+ VERSION_STRING = 1.0\r
+ PI_SPECIFICATION_VERSION = 0x0001000A\r
+ ENTRY_POINT = VariableServiceInitialize\r
+\r
+#\r
+# The following information is for reference only and not required by the build tools.\r
+#\r
+# VALID_ARCHITECTURES = IA32 X64\r
+#\r
+\r
+\r
+[Sources]\r
+ Reclaim.c\r
+ Variable.c\r
+ VariableTraditionalMm.c\r
+ VariableSmm.c\r
+ VariableNonVolatile.c\r
+ VariableNonVolatile.h\r
+ VariableParsing.c\r
+ VariableParsing.h\r
+ VariableRuntimeCache.c\r
+ VariableRuntimeCache.h\r
+ VarCheck.c\r
+ Variable.h\r
+ PrivilegePolymorphic.h\r
+ VariableExLib.c\r
+ TcgMorLockSmm.c\r
+ SpeculationBarrierSmm.c\r
+ VariableLockRequestToLock.c\r
+\r
+[Packages]\r
+ MdePkg/MdePkg.dec\r
+ MdeModulePkg/MdeModulePkg.dec\r
+\r
+[LibraryClasses]\r
+ UefiDriverEntryPoint\r
+ MemoryAllocationLib\r
+ BaseLib\r
+ SynchronizationLib\r
+ UefiLib\r
+ MmServicesTableLib\r
+ BaseMemoryLib\r
+ DebugLib\r
+ DxeServicesTableLib\r
+ HobLib\r
+ PcdLib\r
+ SmmMemLib\r
+ AuthVariableLib\r
+ VarCheckLib\r
+ UefiBootServicesTableLib\r
+ VariableFlashInfoLib\r
+ VariablePolicyLib\r
+ VariablePolicyHelperLib\r
+ SafeIntLib\r
+\r
+[Protocols]\r
+ gEfiSmmFirmwareVolumeBlockProtocolGuid ## CONSUMES\r
+ ## CONSUMES\r
+ ## NOTIFY\r
+ gEfiSmmFaultTolerantWriteProtocolGuid\r
+ ## PRODUCES\r
+ ## UNDEFINED # SmiHandlerRegister\r
+ gEfiSmmVariableProtocolGuid\r
+ gEfiMmEndOfDxeProtocolGuid ## NOTIFY\r
+ gEdkiiSmmVarCheckProtocolGuid ## PRODUCES\r
+ gEfiTcgProtocolGuid ## SOMETIMES_CONSUMES\r
+ gEfiTcg2ProtocolGuid ## SOMETIMES_CONSUMES\r
+\r
+[Guids]\r
+ ## SOMETIMES_CONSUMES ## GUID # Signature of Variable store header\r
+ ## SOMETIMES_PRODUCES ## GUID # Signature of Variable store header\r
+ ## SOMETIMES_CONSUMES ## HOB\r
+ ## SOMETIMES_PRODUCES ## SystemTable\r
+ gEfiAuthenticatedVariableGuid\r
+\r
+ ## SOMETIMES_CONSUMES ## GUID # Signature of Variable store header\r
+ ## SOMETIMES_PRODUCES ## GUID # Signature of Variable store header\r
+ ## SOMETIMES_CONSUMES ## HOB\r
+ ## SOMETIMES_PRODUCES ## SystemTable\r
+ gEfiVariableGuid\r
+\r
+ ## SOMETIMES_CONSUMES ## Variable:L"PlatformLang"\r
+ ## SOMETIMES_PRODUCES ## Variable:L"PlatformLang"\r
+ ## SOMETIMES_CONSUMES ## Variable:L"Lang"\r
+ ## SOMETIMES_PRODUCES ## Variable:L"Lang"\r
+ gEfiGlobalVariableGuid\r
+\r
+ gEfiMemoryOverwriteControlDataGuid ## SOMETIMES_CONSUMES ## Variable:L"MemoryOverwriteRequestControl"\r
+ gEfiMemoryOverwriteRequestControlLockGuid ## SOMETIMES_PRODUCES ## Variable:L"MemoryOverwriteRequestControlLock"\r
+\r
+ gSmmVariableWriteGuid ## PRODUCES ## GUID # Install protocol\r
+ gEfiSystemNvDataFvGuid ## CONSUMES ## GUID\r
+ gEdkiiFaultTolerantWriteGuid ## SOMETIMES_CONSUMES ## HOB\r
+\r
+ ## SOMETIMES_CONSUMES ## Variable:L"VarErrorFlag"\r
+ ## SOMETIMES_PRODUCES ## Variable:L"VarErrorFlag"\r
+ gEdkiiVarErrorFlagGuid\r
+\r
+[Pcd]\r
+ gEfiMdeModulePkgTokenSpaceGuid.PcdMaxVariableSize ## CONSUMES\r
+ gEfiMdeModulePkgTokenSpaceGuid.PcdMaxAuthVariableSize ## CONSUMES\r
+ gEfiMdeModulePkgTokenSpaceGuid.PcdMaxVolatileVariableSize ## CONSUMES\r
+ gEfiMdeModulePkgTokenSpaceGuid.PcdMaxHardwareErrorVariableSize ## CONSUMES\r
+ gEfiMdeModulePkgTokenSpaceGuid.PcdVariableStoreSize ## CONSUMES\r
+ gEfiMdeModulePkgTokenSpaceGuid.PcdHwErrStorageSize ## CONSUMES\r
+ gEfiMdeModulePkgTokenSpaceGuid.PcdMaxUserNvVariableSpaceSize ## CONSUMES\r
+ gEfiMdeModulePkgTokenSpaceGuid.PcdBoottimeReservedNvVariableSpaceSize ## CONSUMES\r
+ gEfiMdeModulePkgTokenSpaceGuid.PcdReclaimVariableSpaceAtEndOfDxe ## CONSUMES\r
+ gEfiMdeModulePkgTokenSpaceGuid.PcdEmuVariableNvModeEnable ## SOMETIMES_CONSUMES\r
+ gEfiMdeModulePkgTokenSpaceGuid.PcdEmuVariableNvStoreReserved ## SOMETIMES_CONSUMES\r
+\r
+[FeaturePcd]\r
+ gEfiMdeModulePkgTokenSpaceGuid.PcdVariableCollectStatistics ## CONSUMES # statistic the information of variable.\r
+ gEfiMdePkgTokenSpaceGuid.PcdUefiVariableDefaultLangDeprecate ## CONSUMES # Auto update PlatformLang/Lang\r
+\r
+[Depex]\r
+ TRUE\r
+\r
+[UserExtensions.TianoCore."ExtraFiles"]\r
+ VariableSmmExtra.uni\r