1## @file
2#   Fault Tolerant Write Smm Driver.
3#
4#   This driver installs SMM Fault Tolerant Write (FTW) protocol, which provides fault
5#   tolerant write capability in SMM environment for block devices. Its implementation
6#   depends on the full functionality SMM FVB protocol that support read, write/erase
7#   flash access.
8#
9# Copyright (c) 2010 - 2018, Intel Corporation. All rights reserved.<BR>
10#
11#  SPDX-License-Identifier: BSD-2-Clause-Patent
12#
13##
14
15[Defines]
16  INF_VERSION                    = 0x00010005
17  BASE_NAME                      = SmmFaultTolerantWriteDxe
18  MODULE_UNI_FILE                = SmmFaultTolerantWriteDxe.uni
19  FILE_GUID                      = 470CB248-E8AC-473c-BB4F-81069A1FE6FD
20  MODULE_TYPE                    = DXE_SMM_DRIVER
21  VERSION_STRING                 = 1.0
22  PI_SPECIFICATION_VERSION       = 0x0001000A
23  ENTRY_POINT                    = SmmFaultTolerantWriteInitialize
24
25#
26# The following information is for reference only and not required by the build tools.
27#
28#  VALID_ARCHITECTURES           = IA32 X64
29#
30
31[Sources]
32  FtwMisc.c
33  UpdateWorkingBlock.c
34  FaultTolerantWrite.c
35  FaultTolerantWriteTraditionalMm.c
36  FaultTolerantWriteSmm.c
37  FaultTolerantWrite.h
38  FaultTolerantWriteSmmCommon.h
39
40[Packages]
41  MdePkg/MdePkg.dec
42  MdeModulePkg/MdeModulePkg.dec
43
44[LibraryClasses]
45  MmServicesTableLib
46  MemoryAllocationLib
47  BaseMemoryLib
48  UefiDriverEntryPoint
49  DebugLib
50  UefiLib
51  PcdLib
52  ReportStatusCodeLib
53  SmmMemLib
54  BaseLib
55
56[Guids]
57  #
58  # Signature in EFI_FAULT_TOLERANT_WORKING_BLOCK_HEADER
59  #
60  ## CONSUMES           ## GUID
61  ## PRODUCES           ## GUID
62  gEdkiiWorkingBlockSignatureGuid
63
64[Protocols]
65  gEfiSmmSwapAddressRangeProtocolGuid | gEfiMdeModulePkgTokenSpaceGuid.PcdFullFtwServiceEnable  ## SOMETIMES_CONSUMES
66  ## NOTIFY
67  ## CONSUMES
68  gEfiSmmFirmwareVolumeBlockProtocolGuid
69  ## PRODUCES
70  ## UNDEFINED # SmiHandlerRegister
71  gEfiSmmFaultTolerantWriteProtocolGuid
72  gEfiMmEndOfDxeProtocolGuid                      ## CONSUMES
73
74[FeaturePcd]
75  gEfiMdeModulePkgTokenSpaceGuid.PcdFullFtwServiceEnable    ## CONSUMES
76
77[Pcd]
78  gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwWorkingBase    ## SOMETIMES_CONSUMES
79  gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwWorkingBase64  ## CONSUMES
80  gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwWorkingSize    ## CONSUMES
81  gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwSpareBase      ## SOMETIMES_CONSUMES
82  gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwSpareBase64    ## CONSUMES
83  gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwSpareSize      ## CONSUMES
84
85#
86# gBS->CalculateCrc32() is consumed in EntryPoint.
87# PI spec said: When the DXE Foundation is notified that the EFI_RUNTIME_ARCH_PROTOCOL
88# has been installed, then the Boot Service CalculateCrc32() is available.
89# So add gEfiRuntimeArchProtocolGuid Depex here.
90#
91[Depex]
92  gEfiSmmFirmwareVolumeBlockProtocolGuid AND gEfiRuntimeArchProtocolGuid
93
94[UserExtensions.TianoCore."ExtraFiles"]
95  SmmFaultTolerantWriteDxeExtra.uni
96