## @file\r
-# This driver installs SMM Fault Tolerant Write (FTW) protocol, which provides fault \r
-# tolerant write capability in SMM environment for block devices. Its implementation \r
-# depends on the full functionality SMM FVB protocol that support read, write/erase \r
+# Fault Tolerant Write Smm Driver.\r
+#\r
+# This driver installs SMM Fault Tolerant Write (FTW) protocol, which provides fault\r
+# tolerant write capability in SMM environment for block devices. Its implementation\r
+# depends on the full functionality SMM FVB protocol that support read, write/erase\r
# flash access.\r
#\r
-# Copyright (c) 2010 - 2013, Intel Corporation. All rights reserved.<BR>\r
+# Copyright (c) 2010 - 2018, Intel Corporation. All rights reserved.<BR>\r
#\r
-# This program and the accompanying materials\r
-# are licensed and made available under the terms and conditions of the BSD License\r
-# which accompanies this distribution. The full text of the license may be found at\r
-# http://opensource.org/licenses/bsd-license.php\r
-# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+# SPDX-License-Identifier: BSD-2-Clause-Patent\r
#\r
##\r
\r
[Defines]\r
INF_VERSION = 0x00010005\r
BASE_NAME = SmmFaultTolerantWriteDxe\r
+ MODULE_UNI_FILE = SmmFaultTolerantWriteDxe.uni\r
FILE_GUID = 470CB248-E8AC-473c-BB4F-81069A1FE6FD\r
MODULE_TYPE = DXE_SMM_DRIVER\r
VERSION_STRING = 1.0\r
FtwMisc.c\r
UpdateWorkingBlock.c\r
FaultTolerantWrite.c\r
+ FaultTolerantWriteTraditionalMm.c\r
FaultTolerantWriteSmm.c\r
FaultTolerantWrite.h\r
FaultTolerantWriteSmmCommon.h\r
MdeModulePkg/MdeModulePkg.dec\r
\r
[LibraryClasses]\r
- SmmServicesTableLib\r
+ MmServicesTableLib\r
MemoryAllocationLib\r
BaseMemoryLib\r
UefiDriverEntryPoint\r
DebugLib\r
UefiLib\r
PcdLib\r
+ ReportStatusCodeLib\r
+ SmmMemLib\r
+ BaseLib\r
\r
[Guids]\r
- gEdkiiWorkingBlockSignatureGuid ## CONSUMES ## FV Signature of Working Space Header\r
+ #\r
+ # Signature in EFI_FAULT_TOLERANT_WORKING_BLOCK_HEADER\r
+ #\r
+ ## CONSUMES ## GUID\r
+ ## PRODUCES ## GUID\r
+ gEdkiiWorkingBlockSignatureGuid\r
\r
[Protocols]\r
- gEfiSmmSwapAddressRangeProtocolGuid | gEfiMdeModulePkgTokenSpaceGuid.PcdFullFtwServiceEnable ## CONSUMES\r
- gEfiSmmFirmwareVolumeBlockProtocolGuid ## CONSUMES\r
- gEfiSmmFaultTolerantWriteProtocolGuid ## PRODUCES\r
- gEfiSmmAccess2ProtocolGuid ## CONSUMES\r
- gEfiSmmEndOfDxeProtocolGuid ## CONSUMES\r
+ gEfiSmmSwapAddressRangeProtocolGuid | gEfiMdeModulePkgTokenSpaceGuid.PcdFullFtwServiceEnable ## SOMETIMES_CONSUMES\r
+ ## NOTIFY\r
+ ## CONSUMES\r
+ gEfiSmmFirmwareVolumeBlockProtocolGuid\r
+ ## PRODUCES\r
+ ## UNDEFINED # SmiHandlerRegister\r
+ gEfiSmmFaultTolerantWriteProtocolGuid\r
+ gEfiMmEndOfDxeProtocolGuid ## CONSUMES\r
\r
[FeaturePcd]\r
- gEfiMdeModulePkgTokenSpaceGuid.PcdFullFtwServiceEnable\r
+ gEfiMdeModulePkgTokenSpaceGuid.PcdFullFtwServiceEnable ## CONSUMES\r
\r
[Pcd]\r
- gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwWorkingBase\r
- gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwWorkingBase64\r
- gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwWorkingSize\r
- gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwSpareBase\r
- gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwSpareBase64\r
- gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwSpareSize\r
+ gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwWorkingBase ## SOMETIMES_CONSUMES\r
+ gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwWorkingBase64 ## CONSUMES\r
+ gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwWorkingSize ## CONSUMES\r
+ gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwSpareBase ## SOMETIMES_CONSUMES\r
+ gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwSpareBase64 ## CONSUMES\r
+ gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwSpareSize ## CONSUMES\r
\r
+#\r
+# gBS->CalculateCrc32() is consumed in EntryPoint.\r
+# PI spec said: When the DXE Foundation is notified that the EFI_RUNTIME_ARCH_PROTOCOL\r
+# has been installed, then the Boot Service CalculateCrc32() is available.\r
+# So add gEfiRuntimeArchProtocolGuid Depex here.\r
+#\r
[Depex]\r
- gEfiSmmFirmwareVolumeBlockProtocolGuid\r
+ gEfiSmmFirmwareVolumeBlockProtocolGuid AND gEfiRuntimeArchProtocolGuid\r
\r
+[UserExtensions.TianoCore."ExtraFiles"]\r
+ SmmFaultTolerantWriteDxeExtra.uni\r