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