]>
Commit | Line | Data |
---|---|---|
d1102dba | 1 | /** @file\r |
3e02ebb2 | 2 | This file defines NvDataFv GUID and FTW working block structures.\r |
d1102dba | 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 |
d1102dba | 7 | Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>\r |
9d510e61 | 8 | SPDX-License-Identifier: BSD-2-Clause-Patent\r |
88f20127 | 9 | \r |
504214c4 | 10 | **/\r |
88f20127 | 11 | \r |
12 | #ifndef __SYSTEM_NV_DATA_GUID_H__\r | |
13 | #define __SYSTEM_NV_DATA_GUID_H__\r | |
14 | \r | |
15 | #define EFI_SYSTEM_NV_DATA_FV_GUID \\r | |
16 | {0xfff12b8d, 0x7696, 0x4c8b, {0xa9, 0x85, 0x27, 0x47, 0x7, 0x5b, 0x4f, 0x50} }\r | |
17 | \r | |
3e02ebb2 SZ |
18 | #define EDKII_WORKING_BLOCK_SIGNATURE_GUID \\r |
19 | {0x9e58292b, 0x7c68, 0x497d, {0xa0, 0xce, 0x65, 0x0, 0xfd, 0x9f, 0x1b, 0x95} }\r | |
20 | \r | |
1436aea4 MK |
21 | extern EFI_GUID gEfiSystemNvDataFvGuid;\r |
22 | extern EFI_GUID gEdkiiWorkingBlockSignatureGuid;\r | |
88f20127 | 23 | \r |
1436aea4 MK |
24 | #define WORKING_BLOCK_VALID 0x1\r |
25 | #define WORKING_BLOCK_INVALID 0x2\r | |
ebafc55b LG |
26 | \r |
27 | ///\r | |
64a80549 | 28 | /// The EDKII Fault tolerant working block header.\r |
5c526736 | 29 | /// The header is immediately followed by the write queue data.\r |
ebafc55b | 30 | ///\r |
5c526736 LG |
31 | typedef struct {\r |
32 | ///\r | |
3e02ebb2 SZ |
33 | /// FTW working block signature.\r |
34 | /// Its value has be updated from gEfiSystemNvDataFvGuid to gEdkiiWorkingBlockSignatureGuid,\r | |
35 | /// because its write queue data format has been updated to support the crossing archs.\r | |
5c526736 | 36 | ///\r |
1436aea4 | 37 | EFI_GUID Signature;\r |
5c526736 | 38 | ///\r |
e50a226b | 39 | /// 32bit CRC calculated for this header.\r |
5c526736 | 40 | ///\r |
1436aea4 | 41 | UINT32 Crc;\r |
5c526736 | 42 | ///\r |
64a80549 | 43 | /// Working block valid bit.\r |
5c526736 | 44 | ///\r |
1436aea4 MK |
45 | UINT8 WorkingBlockValid : 1;\r |
46 | UINT8 WorkingBlockInvalid : 1;\r | |
47 | UINT8 Reserved : 6;\r | |
48 | UINT8 Reserved3[3];\r | |
5c526736 LG |
49 | ///\r |
50 | /// Total size of the following write queue range.\r | |
51 | ///\r | |
1436aea4 | 52 | UINT64 WriteQueueSize;\r |
5c526736 | 53 | ///\r |
64a80549 | 54 | /// Write Queue data.\r |
3e02ebb2 SZ |
55 | ///\r |
56 | /// EFI_FAULT_TOLERANT_WRITE_HEADER FtwHeader;\r | |
57 | /// EFI_FAULT_TOLERANT_WRITE_RECORD FtwRecord[FtwHeader.NumberOfWrites]\r | |
58 | /// EFI_FAULT_TOLERANT_WRITE_HEADER FtwHeader2;\r | |
59 | /// EFI_FAULT_TOLERANT_WRITE_RECORD FtwRecord2[FtwHeader2.NumberOfWrites]\r | |
60 | /// ...\r | |
abe31ad5 | 61 | ///\r |
62 | } EFI_FAULT_TOLERANT_WORKING_BLOCK_HEADER;\r | |
88f20127 | 63 | \r |
1436aea4 MK |
64 | #define FTW_VALID_STATE 0\r |
65 | #define FTW_INVALID_STATE 1\r | |
3e02ebb2 SZ |
66 | \r |
67 | //\r | |
68 | // EFI Fault tolerant block update write queue entry.\r | |
69 | //\r | |
70 | typedef struct {\r | |
1436aea4 MK |
71 | UINT8 HeaderAllocated : 1;\r |
72 | UINT8 WritesAllocated : 1;\r | |
73 | UINT8 Complete : 1;\r | |
74 | UINT8 Reserved : 5;\r | |
75 | EFI_GUID CallerId;\r | |
76 | UINT64 NumberOfWrites;\r | |
77 | UINT64 PrivateDataSize;\r | |
3e02ebb2 SZ |
78 | } EFI_FAULT_TOLERANT_WRITE_HEADER;\r |
79 | \r | |
80 | //\r | |
81 | // EFI Fault tolerant block update write queue record.\r | |
82 | //\r | |
83 | typedef struct {\r | |
1436aea4 MK |
84 | UINT8 BootBlockUpdate : 1;\r |
85 | UINT8 SpareComplete : 1;\r | |
86 | UINT8 DestinationComplete : 1;\r | |
87 | UINT8 Reserved : 5;\r | |
88 | EFI_LBA Lba;\r | |
89 | UINT64 Offset;\r | |
90 | UINT64 Length;\r | |
3e02ebb2 SZ |
91 | //\r |
92 | // Relative offset to spare block.\r | |
93 | //\r | |
1436aea4 | 94 | INT64 RelativeOffset;\r |
3e02ebb2 SZ |
95 | //\r |
96 | // UINT8 PrivateData[PrivateDataSize]\r | |
97 | //\r | |
98 | } EFI_FAULT_TOLERANT_WRITE_RECORD;\r | |
99 | \r | |
100 | #define FTW_RECORD_SIZE(PrivateDataSize) (sizeof (EFI_FAULT_TOLERANT_WRITE_RECORD) + (UINTN) PrivateDataSize)\r | |
101 | \r | |
102 | #define FTW_RECORD_TOTAL_SIZE(NumberOfWrites, PrivateDataSize) \\r | |
103 | ((UINTN) (NumberOfWrites) * (sizeof (EFI_FAULT_TOLERANT_WRITE_RECORD) + (UINTN) PrivateDataSize))\r | |
104 | \r | |
105 | #define FTW_WRITE_TOTAL_SIZE(NumberOfWrites, PrivateDataSize) \\r | |
106 | ( \\r | |
107 | sizeof (EFI_FAULT_TOLERANT_WRITE_HEADER) + (UINTN) (NumberOfWrites) * \\r | |
108 | (sizeof (EFI_FAULT_TOLERANT_WRITE_RECORD) + (UINTN) PrivateDataSize) \\r | |
109 | )\r | |
110 | \r | |
88f20127 | 111 | #endif\r |