## @file
#  Provides SMM variable service.
#
#  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.
#
#  Caution: This module requires additional review when modified.
#  This driver will have external input - variable data and communicate buffer in SMM mode.
#  This external input must be validated carefully to avoid security issues such as
#  buffer overflow or integer overflow.
#    The whole SMM authentication variable design relies on the integrity of flash part and SMM.
#  which is assumed to be protected by platform.  All variable code and metadata in flash/SMM Memory
#  may not be modified without authorization. If platform fails to protect these resources,
#  the authentication service provided in this driver will be broken, and the behavior is undefined.
#
# Copyright (c) 2010 - 2019, Intel Corporation. All rights reserved.<BR>
# Copyright (c) 2018, Linaro, Ltd. All rights reserved.<BR>
# Copyright (c) Microsoft Corporation.
# SPDX-License-Identifier: BSD-2-Clause-Patent
#
##

[Defines]
  INF_VERSION                    = 0x0001001B
  BASE_NAME                      = VariableStandaloneMm
  FILE_GUID                      = 7ee2c0c1-c21a-4113-a53a-66824a95696f
  MODULE_TYPE                    = MM_STANDALONE
  VERSION_STRING                 = 1.0
  PI_SPECIFICATION_VERSION       = 0x00010032
  ENTRY_POINT                    = VariableServiceInitialize

#
# The following information is for reference only and not required by the build tools.
#
#  VALID_ARCHITECTURES           = IA32 X64 ARM AARCH64
#


[Sources]
  Reclaim.c
  Variable.c
  VariableSmm.c
  VariableStandaloneMm.c
  VariableNonVolatile.c
  VariableNonVolatile.h
  VariableParsing.c
  VariableParsing.h
  VariableRuntimeCache.c
  VariableRuntimeCache.h
  VarCheck.c
  Variable.h
  PrivilegePolymorphic.h
  VariableExLib.c
  TcgMorLockSmm.c
  SpeculationBarrierSmm.c
  VariableLockRequestToLock.c

[Packages]
  MdePkg/MdePkg.dec
  MdeModulePkg/MdeModulePkg.dec
  StandaloneMmPkg/StandaloneMmPkg.dec

[LibraryClasses]
  AuthVariableLib
  BaseLib
  BaseMemoryLib
  DebugLib
  HobLib
  MemoryAllocationLib
  MmServicesTableLib
  SafeIntLib
  StandaloneMmDriverEntryPoint
  SynchronizationLib
  VarCheckLib
  VariableFlashInfoLib
  VariablePolicyLib
  VariablePolicyHelperLib

[Protocols]
  gEfiSmmFirmwareVolumeBlockProtocolGuid        ## CONSUMES
  ## CONSUMES
  ## NOTIFY
  gEfiSmmFaultTolerantWriteProtocolGuid
  ## PRODUCES
  ## UNDEFINED # SmiHandlerRegister
  gEfiSmmVariableProtocolGuid
  gEfiMmEndOfDxeProtocolGuid                   ## NOTIFY
  gEdkiiSmmVarCheckProtocolGuid                ## PRODUCES

[Guids]
  ## SOMETIMES_CONSUMES   ## GUID # Signature of Variable store header
  ## SOMETIMES_PRODUCES   ## GUID # Signature of Variable store header
  ## SOMETIMES_CONSUMES   ## HOB
  ## SOMETIMES_PRODUCES   ## SystemTable
  gEfiAuthenticatedVariableGuid

  ## SOMETIMES_CONSUMES   ## GUID # Signature of Variable store header
  ## SOMETIMES_PRODUCES   ## GUID # Signature of Variable store header
  ## SOMETIMES_CONSUMES   ## HOB
  ## SOMETIMES_PRODUCES   ## SystemTable
  gEfiVariableGuid

  ## SOMETIMES_CONSUMES   ## Variable:L"PlatformLang"
  ## SOMETIMES_PRODUCES   ## Variable:L"PlatformLang"
  ## SOMETIMES_CONSUMES   ## Variable:L"Lang"
  ## SOMETIMES_PRODUCES   ## Variable:L"Lang"
  gEfiGlobalVariableGuid

  gEfiMemoryOverwriteControlDataGuid            ## SOMETIMES_CONSUMES   ## Variable:L"MemoryOverwriteRequestControl"
  gEfiMemoryOverwriteRequestControlLockGuid     ## SOMETIMES_PRODUCES   ## Variable:L"MemoryOverwriteRequestControlLock"

  gEfiSystemNvDataFvGuid                        ## CONSUMES             ## GUID
  gEdkiiFaultTolerantWriteGuid                  ## SOMETIMES_CONSUMES   ## HOB

  ## SOMETIMES_CONSUMES   ## Variable:L"VarErrorFlag"
  ## SOMETIMES_PRODUCES   ## Variable:L"VarErrorFlag"
  gEdkiiVarErrorFlagGuid

[Pcd]
  gEfiMdeModulePkgTokenSpaceGuid.PcdMaxVariableSize                  ## CONSUMES
  gEfiMdeModulePkgTokenSpaceGuid.PcdMaxAuthVariableSize              ## CONSUMES
  gEfiMdeModulePkgTokenSpaceGuid.PcdMaxVolatileVariableSize          ## CONSUMES
  gEfiMdeModulePkgTokenSpaceGuid.PcdMaxHardwareErrorVariableSize     ## CONSUMES
  gEfiMdeModulePkgTokenSpaceGuid.PcdVariableStoreSize                ## CONSUMES
  gEfiMdeModulePkgTokenSpaceGuid.PcdHwErrStorageSize                 ## CONSUMES
  gEfiMdeModulePkgTokenSpaceGuid.PcdMaxUserNvVariableSpaceSize           ## CONSUMES
  gEfiMdeModulePkgTokenSpaceGuid.PcdBoottimeReservedNvVariableSpaceSize  ## CONSUMES
  gEfiMdeModulePkgTokenSpaceGuid.PcdReclaimVariableSpaceAtEndOfDxe   ## CONSUMES
  gEfiMdeModulePkgTokenSpaceGuid.PcdEmuVariableNvModeEnable          ## SOMETIMES_CONSUMES
  gEfiMdeModulePkgTokenSpaceGuid.PcdEmuVariableNvStoreReserved       ## SOMETIMES_CONSUMES

[FeaturePcd]
  gEfiMdeModulePkgTokenSpaceGuid.PcdVariableCollectStatistics        ## CONSUMES  # statistic the information of variable.
  gEfiMdePkgTokenSpaceGuid.PcdUefiVariableDefaultLangDeprecate       ## CONSUMES  # Auto update PlatformLang/Lang

[Depex]
  TRUE
