]>
Commit | Line | Data |
---|---|---|
5c526736 | 1 | /** @file \r |
3e02ebb2 SZ |
2 | This file defines NvDataFv GUID and FTW working block structures.\r |
3 | The NvDataFv GUID can be used as FileSystemGuid in EFI_FIRMWARE_VOLUME_HEADER if \r | |
6426c8ff | 4 | this FV image contains NV data, such as NV variable data.\r |
3e02ebb2 | 5 | This file also defines WorkingBlockSignature GUID for FTW working block signature.\r |
504214c4 | 6 | \r |
e50a226b | 7 | Copyright (c) 2006 - 2015, Intel Corporation. All rights reserved.<BR>\r |
64a80549 | 8 | This program and the accompanying materials are licensed and made available under \r |
9 | the terms and conditions of the BSD License that accompanies this distribution. \r | |
10 | The full text of the license may be found at\r | |
11 | http://opensource.org/licenses/bsd-license.php. \r | |
12 | \r | |
88f20127 | 13 | THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, \r |
14 | WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. \r | |
15 | \r | |
504214c4 | 16 | **/\r |
88f20127 | 17 | \r |
18 | #ifndef __SYSTEM_NV_DATA_GUID_H__\r | |
19 | #define __SYSTEM_NV_DATA_GUID_H__\r | |
20 | \r | |
21 | #define EFI_SYSTEM_NV_DATA_FV_GUID \\r | |
22 | {0xfff12b8d, 0x7696, 0x4c8b, {0xa9, 0x85, 0x27, 0x47, 0x7, 0x5b, 0x4f, 0x50} }\r | |
23 | \r | |
3e02ebb2 SZ |
24 | #define EDKII_WORKING_BLOCK_SIGNATURE_GUID \\r |
25 | {0x9e58292b, 0x7c68, 0x497d, {0xa0, 0xce, 0x65, 0x0, 0xfd, 0x9f, 0x1b, 0x95} }\r | |
26 | \r | |
5c526736 | 27 | extern EFI_GUID gEfiSystemNvDataFvGuid;\r |
3e02ebb2 | 28 | extern EFI_GUID gEdkiiWorkingBlockSignatureGuid;\r |
88f20127 | 29 | \r |
5c526736 LG |
30 | #define WORKING_BLOCK_VALID 0x1\r |
31 | #define WORKING_BLOCK_INVALID 0x2\r | |
ebafc55b LG |
32 | \r |
33 | ///\r | |
64a80549 | 34 | /// The EDKII Fault tolerant working block header.\r |
5c526736 | 35 | /// The header is immediately followed by the write queue data.\r |
ebafc55b | 36 | ///\r |
5c526736 LG |
37 | typedef struct {\r |
38 | ///\r | |
3e02ebb2 SZ |
39 | /// FTW working block signature.\r |
40 | /// Its value has be updated from gEfiSystemNvDataFvGuid to gEdkiiWorkingBlockSignatureGuid,\r | |
41 | /// because its write queue data format has been updated to support the crossing archs.\r | |
5c526736 LG |
42 | ///\r |
43 | EFI_GUID Signature;\r | |
44 | ///\r | |
e50a226b | 45 | /// 32bit CRC calculated for this header.\r |
5c526736 LG |
46 | ///\r |
47 | UINT32 Crc;\r | |
48 | ///\r | |
64a80549 | 49 | /// Working block valid bit.\r |
5c526736 LG |
50 | ///\r |
51 | UINT8 WorkingBlockValid : 1;\r | |
52 | UINT8 WorkingBlockInvalid : 1;\r | |
53 | UINT8 Reserved : 6;\r | |
54 | UINT8 Reserved3[3];\r | |
55 | ///\r | |
56 | /// Total size of the following write queue range.\r | |
57 | ///\r | |
58 | UINT64 WriteQueueSize;\r | |
59 | ///\r | |
64a80549 | 60 | /// Write Queue data.\r |
3e02ebb2 SZ |
61 | ///\r |
62 | /// EFI_FAULT_TOLERANT_WRITE_HEADER FtwHeader;\r | |
63 | /// EFI_FAULT_TOLERANT_WRITE_RECORD FtwRecord[FtwHeader.NumberOfWrites]\r | |
64 | /// EFI_FAULT_TOLERANT_WRITE_HEADER FtwHeader2;\r | |
65 | /// EFI_FAULT_TOLERANT_WRITE_RECORD FtwRecord2[FtwHeader2.NumberOfWrites]\r | |
66 | /// ...\r | |
abe31ad5 | 67 | ///\r |
68 | } EFI_FAULT_TOLERANT_WORKING_BLOCK_HEADER;\r | |
88f20127 | 69 | \r |
3e02ebb2 SZ |
70 | #define FTW_VALID_STATE 0\r |
71 | #define FTW_INVALID_STATE 1\r | |
72 | \r | |
73 | //\r | |
74 | // EFI Fault tolerant block update write queue entry.\r | |
75 | //\r | |
76 | typedef struct {\r | |
77 | UINT8 HeaderAllocated : 1;\r | |
78 | UINT8 WritesAllocated : 1;\r | |
79 | UINT8 Complete : 1;\r | |
80 | UINT8 Reserved : 5;\r | |
81 | EFI_GUID CallerId;\r | |
82 | UINT64 NumberOfWrites;\r | |
83 | UINT64 PrivateDataSize;\r | |
84 | } EFI_FAULT_TOLERANT_WRITE_HEADER;\r | |
85 | \r | |
86 | //\r | |
87 | // EFI Fault tolerant block update write queue record.\r | |
88 | //\r | |
89 | typedef struct {\r | |
90 | UINT8 BootBlockUpdate : 1;\r | |
91 | UINT8 SpareComplete : 1;\r | |
92 | UINT8 DestinationComplete : 1;\r | |
93 | UINT8 Reserved : 5;\r | |
94 | EFI_LBA Lba;\r | |
95 | UINT64 Offset;\r | |
96 | UINT64 Length;\r | |
97 | //\r | |
98 | // Relative offset to spare block.\r | |
99 | //\r | |
100 | INT64 RelativeOffset;\r | |
101 | //\r | |
102 | // UINT8 PrivateData[PrivateDataSize]\r | |
103 | //\r | |
104 | } EFI_FAULT_TOLERANT_WRITE_RECORD;\r | |
105 | \r | |
106 | #define FTW_RECORD_SIZE(PrivateDataSize) (sizeof (EFI_FAULT_TOLERANT_WRITE_RECORD) + (UINTN) PrivateDataSize)\r | |
107 | \r | |
108 | #define FTW_RECORD_TOTAL_SIZE(NumberOfWrites, PrivateDataSize) \\r | |
109 | ((UINTN) (NumberOfWrites) * (sizeof (EFI_FAULT_TOLERANT_WRITE_RECORD) + (UINTN) PrivateDataSize))\r | |
110 | \r | |
111 | #define FTW_WRITE_TOTAL_SIZE(NumberOfWrites, PrivateDataSize) \\r | |
112 | ( \\r | |
113 | sizeof (EFI_FAULT_TOLERANT_WRITE_HEADER) + (UINTN) (NumberOfWrites) * \\r | |
114 | (sizeof (EFI_FAULT_TOLERANT_WRITE_RECORD) + (UINTN) PrivateDataSize) \\r | |
115 | )\r | |
116 | \r | |
88f20127 | 117 | #endif\r |