]> git.proxmox.com Git - mirror_edk2.git/blame - MdeModulePkg/Include/Guid/SystemNvDataGuid.h
UefiCpuPkg: Move AsmRelocateApLoopStart from Mpfuncs.nasm to AmdSev.nasm
[mirror_edk2.git] / MdeModulePkg / Include / Guid / SystemNvDataGuid.h
CommitLineData
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 7Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>\r
9d510e61 8SPDX-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
21extern EFI_GUID gEfiSystemNvDataFvGuid;\r
22extern 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
31typedef 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
70typedef 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
83typedef 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