## @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 - 2024, 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

[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
  MemLib
  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"

  gSmmVariableWriteGuid                         ## PRODUCES             ## GUID # Install protocol
  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
