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 - 2015, Intel Corporation. All rights reserved.<BR> 10 # 11 # This program and the accompanying materials 12 # are licensed and made available under the terms and conditions of the BSD License 13 # which accompanies this distribution. The full text of the license may be found at 14 # http://opensource.org/licenses/bsd-license.php 15 # THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, 16 # WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. 17 # 18 ## 19 20 [Defines] 21 INF_VERSION = 0x00010005 22 BASE_NAME = SmmFaultTolerantWriteDxe 23 MODULE_UNI_FILE = SmmFaultTolerantWriteDxe.uni 24 FILE_GUID = 470CB248-E8AC-473c-BB4F-81069A1FE6FD 25 MODULE_TYPE = DXE_SMM_DRIVER 26 VERSION_STRING = 1.0 27 PI_SPECIFICATION_VERSION = 0x0001000A 28 ENTRY_POINT = SmmFaultTolerantWriteInitialize 29 30 # 31 # The following information is for reference only and not required by the build tools. 32 # 33 # VALID_ARCHITECTURES = IA32 X64 34 # 35 36 [Sources] 37 FtwMisc.c 38 UpdateWorkingBlock.c 39 FaultTolerantWrite.c 40 FaultTolerantWriteSmm.c 41 FaultTolerantWrite.h 42 FaultTolerantWriteSmmCommon.h 43 44 [Packages] 45 MdePkg/MdePkg.dec 46 MdeModulePkg/MdeModulePkg.dec 47 48 [LibraryClasses] 49 SmmServicesTableLib 50 MemoryAllocationLib 51 BaseMemoryLib 52 UefiDriverEntryPoint 53 DebugLib 54 UefiLib 55 PcdLib 56 ReportStatusCodeLib 57 SmmMemLib 58 59 [Guids] 60 # 61 # Signature in EFI_FAULT_TOLERANT_WORKING_BLOCK_HEADER 62 # 63 ## CONSUMES ## GUID 64 ## PRODUCES ## GUID 65 gEdkiiWorkingBlockSignatureGuid 66 67 [Protocols] 68 gEfiSmmSwapAddressRangeProtocolGuid | gEfiMdeModulePkgTokenSpaceGuid.PcdFullFtwServiceEnable ## SOMETIMES_CONSUMES 69 ## NOTIFY 70 ## CONSUMES 71 gEfiSmmFirmwareVolumeBlockProtocolGuid 72 ## PRODUCES 73 ## UNDEFINED # SmiHandlerRegister 74 gEfiSmmFaultTolerantWriteProtocolGuid 75 gEfiSmmEndOfDxeProtocolGuid ## CONSUMES 76 77 [FeaturePcd] 78 gEfiMdeModulePkgTokenSpaceGuid.PcdFullFtwServiceEnable ## CONSUMES 79 80 [Pcd] 81 gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwWorkingBase ## SOMETIMES_CONSUMES 82 gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwWorkingBase64 ## CONSUMES 83 gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwWorkingSize ## CONSUMES 84 gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwSpareBase ## SOMETIMES_CONSUMES 85 gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwSpareBase64 ## CONSUMES 86 gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwSpareSize ## CONSUMES 87 88 # 89 # gBS->CalculateCrc32() is consumed in EntryPoint. 90 # PI spec said: When the DXE Foundation is notified that the EFI_RUNTIME_ARCH_PROTOCOL 91 # has been installed, then the Boot Service CalculateCrc32() is available. 92 # So add gEfiRuntimeArchProtocolGuid Depex here. 93 # 94 [Depex] 95 gEfiSmmFirmwareVolumeBlockProtocolGuid AND gEfiRuntimeArchProtocolGuid 96 97 [UserExtensions.TianoCore."ExtraFiles"] 98 SmmFaultTolerantWriteDxeExtra.uni 99