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, Intel Corporation. All rights reserved.<BR>
8 This program and the accompanying materials are licensed and made available under
9 the terms and conditions of the BSD License that accompanies this distribution.
10 The full text of the license may be found at
11 http://opensource.org/licenses/bsd-license.php.
12 
13 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
14 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
15 
16 **/
17 
18 #ifndef _FAULT_TOLERANT_WRITE_H_
19 #define _FAULT_TOLERANT_WRITE_H_
20 
21 #define EDKII_FAULT_TOLERANT_WRITE_GUID \
22   { \
23     0x1d3e9cb8, 0x43af, 0x490b, { 0x83,  0xa, 0x35, 0x16, 0xaa, 0x53, 0x20, 0x47 } \
24   }
25 
26 //
27 // FTW Last write data. It will be used as gEdkiiFaultTolerantWriteGuid GUID hob data.
28 //
29 typedef struct {
30   ///
31   /// Target address to be updated in FTW last write.
32   ///
33   EFI_PHYSICAL_ADDRESS      TargetAddress;
34   ///
35   /// Spare address to back up the updated buffer.
36   ///
37   EFI_PHYSICAL_ADDRESS      SpareAddress;
38   ///
39   /// The length of data that have been backed up in spare block.
40   /// It is also the length of target block that has been erased.
41   ///
42   UINT64                    Length;
43 } FAULT_TOLERANT_WRITE_LAST_WRITE_DATA;
44 
45 //
46 // This GUID will be used to install PPI to inform the check for FTW last write data has been done.
47 // The related FAULT_TOLERANT_WRITE_LAST_WRITE_DATA GUID hob will be only built if
48 // FTW last write was still in progress with SpareComplete set and DestinationComplete not set.
49 // It means the target buffer has been backed up in spare block, then target block has been erased,
50 // but the target buffer has not been writen in target block from spare block.
51 //
52 extern EFI_GUID gEdkiiFaultTolerantWriteGuid;
53 
54 #endif
55