1 /** @file
2  Define the GUID gEdkiiFaultTolerantWriteGuid that will be used to build
3  FAULT_TOLERANT_WRITE_LAST_WRITE_DATA GUID hob and install PPI to inform the check
4  for FTW last write data has been done. The GUID hob will be only built if FTW last write was
5  still in progress with SpareComplete set and DestinationComplete not set.
6 
7 Copyright (c) 2013 - 2018, Intel Corporation. All rights reserved.<BR>
8 SPDX-License-Identifier: BSD-2-Clause-Patent
9 
10 **/
11 
12 #ifndef _FAULT_TOLERANT_WRITE_H_
13 #define _FAULT_TOLERANT_WRITE_H_
14 
15 #define EDKII_FAULT_TOLERANT_WRITE_GUID \
16   { \
17     0x1d3e9cb8, 0x43af, 0x490b, { 0x83,  0xa, 0x35, 0x16, 0xaa, 0x53, 0x20, 0x47 } \
18   }
19 
20 //
21 // FTW Last write data. It will be used as gEdkiiFaultTolerantWriteGuid GUID hob data.
22 //
23 typedef struct {
24   ///
25   /// Target address to be updated in FTW last write.
26   ///
27   EFI_PHYSICAL_ADDRESS      TargetAddress;
28   ///
29   /// Spare address to back up the updated buffer.
30   ///
31   EFI_PHYSICAL_ADDRESS      SpareAddress;
32   ///
33   /// The length of data that have been backed up in spare block.
34   /// It is also the length of target block that has been erased.
35   ///
36   UINT64                    Length;
37 } FAULT_TOLERANT_WRITE_LAST_WRITE_DATA;
38 
39 //
40 // This GUID will be used to install PPI to inform the check for FTW last write data has been done.
41 // The related FAULT_TOLERANT_WRITE_LAST_WRITE_DATA GUID hob will be only built if
42 // FTW last write was still in progress with SpareComplete set and DestinationComplete not set.
43 // It means the target buffer has been backed up in spare block, then target block has been erased,
44 // but the target buffer has not been writen in target block from spare block.
45 //
46 extern EFI_GUID gEdkiiFaultTolerantWriteGuid;
47 
48 #endif
49