What to do: 1. Delete VariablePei in SecurityPkg after it merged to VariablePei in MdeModulePkg.
Why to do: 1. Remove code duplication and reduce maintenance effort. The code logic of VariablePei in SecurityPkg is same with VariablePei in MdeModulePkg. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Star Zeng <star.z...@intel.com> Reviewed-by: Jiewen Yao <jiewen....@intel.com> Reviewed-by: Liming Gao <liming....@intel.com> --- SecurityPkg/SecurityPkg.dsc | 1 - .../VariableAuthenticated/Pei/PeiVariableAuth.uni | Bin 2170 -> 0 bytes .../VariableAuthenticated/Pei/PeiVariableExtra.uni | Bin 1348 -> 0 bytes SecurityPkg/VariableAuthenticated/Pei/Variable.c | 1087 -------------------- SecurityPkg/VariableAuthenticated/Pei/Variable.h | 148 --- .../VariableAuthenticated/Pei/VariablePei.inf | 73 -- 6 files changed, 1309 deletions(-) delete mode 100644 SecurityPkg/VariableAuthenticated/Pei/PeiVariableAuth.uni delete mode 100644 SecurityPkg/VariableAuthenticated/Pei/PeiVariableExtra.uni delete mode 100644 SecurityPkg/VariableAuthenticated/Pei/Variable.c delete mode 100644 SecurityPkg/VariableAuthenticated/Pei/Variable.h delete mode 100644 SecurityPkg/VariableAuthenticated/Pei/VariablePei.inf diff --git a/SecurityPkg/SecurityPkg.dsc b/SecurityPkg/SecurityPkg.dsc index f484bf8..566e22c 100644 --- a/SecurityPkg/SecurityPkg.dsc +++ b/SecurityPkg/SecurityPkg.dsc @@ -126,7 +126,6 @@ gEfiSecurityPkgTokenSpaceGuid.PcdTpmScrtmPolicy|1 [Components] - SecurityPkg/VariableAuthenticated/Pei/VariablePei.inf SecurityPkg/Library/DxeImageVerificationLib/DxeImageVerificationLib.inf #SecurityPkg/Library/DxeDeferImageLoadLib/DxeDeferImageLoadLib.inf SecurityPkg/Library/DxeImageAuthenticationStatusLib/DxeImageAuthenticationStatusLib.inf diff --git a/SecurityPkg/VariableAuthenticated/Pei/PeiVariableAuth.uni b/SecurityPkg/VariableAuthenticated/Pei/PeiVariableAuth.uni deleted file mode 100644 index 0fdc8055076e5d6a3192b48ac0138055032bc440..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2170 zcmds&NpBND5QXcE#D5q$7eI*(5f>0b*u=mn5L;ddoTBlPWF&8lZ6JRh_+GVV#*Q4p zHE85ss;ggBzk1#N{i|j*i}*d^i|mbET51y;+e3SRRco<LZQ-^l_L;40iM7Kxv5~c~ zOzZ~BXXY8Z6C1d9WL<nR`;KkMNV_unZ??vw(Fn`H_qMG`oKMUX@MKTvm&8iIn)u$} zb9dxqEA}x6ZN9iTM|qx}UE`^2rZy+mdXsH>ug_WCbJDk*Zvnrm$`z+xapp(V;xYZP zJ>`4B=x8&0X3y=AaqKl7!%AdA$iPsWus>xqvnnffuZt?0W9Ri<ZmO>OR_&EF(8}vQ z*_CxzfHEgT#h8MfYhXprW1kPndhYen+6^&h_^X1-N-C4?q?5AFQloZHSd;#wr=YnU zU%N-{lb}-RXF{8+cg+s1W?<x*gjiEoPmZF@<e3)yh>1BjsodA#E}Ss`xRXnn>krrD zkXEPPJ#9)3LR1bxw~D2^p;Hgg?{;0ps!o0Bx>gO9^H18_IqmWixYRu!Z1&GV2zOB& zm$^zuD>U)a-v=oya4Y}JnXYpBjQZ4WalgbeAoCHL+l^iY<(gj^rDq>_6LgC^yfN=- z>;68(Fd4z6`X1I8ef1eNo!`El(KoS2*aAYyeT<%)cyt}P#Yj3<TcH=OP%HEepKErw zmD4%vLT!1($j<TVcxGqVV^D?B^5`9A%3U_a?BOdPMGao>@KyA$^rx&SbKO6^gdumG zqG?|WoDyAcWg9gq<_Whf=PmCef6r@fmrcKeLNnp+1pY2SYJt%Qt!WozB)-IK9kzO8 zaMyR>w?$ZMG<)T$krIx;Ql=HMyU+g|m4dy0V@|s3!kIMLE^57xy}vW3Tl_!%N0prZ E0WMou@Bjb+ diff --git a/SecurityPkg/VariableAuthenticated/Pei/PeiVariableExtra.uni b/SecurityPkg/VariableAuthenticated/Pei/PeiVariableExtra.uni deleted file mode 100644 index c9f171b0662cfdc5ffea376b12c02dadce55082e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1348 zcmZXUTW`}q5QXO%iT_}g7eKAU?Fk`7Lk(DzI!Y4?Pf>17Ev0efB!%$ff$z-vLW&~q z?##}dIeT_Ce|~qYV-ep|ev!SiYs+nEb9-nH@M^DzmD^VvTgg1OiSI{tZiP*;mw0~> zGb8rWwjQ;zg>A6MwsQY_Vpr_VeXOzTIWq09ZST1YyCE{N$Dlu9eqqn-xxHj{(pazT zm~~oVE?Enq1ViJP{M;+X?3}_-5n>;(#jJ$OhOe|c=N{V|>ssI5HYab{4Pcb}dDg@i zps2<zDE0ZaM9kfu!n$B@?R$Ijq(y{BtW-}LE<tPYrL3~0<doIQnMuzYU)i&&!X0bf zQF{|RGPGNgQ8Nj(Zk=_FB4&!r8-1ii!JW5xUGDG<`}}}Q%k_tAF=Z6H!_($)5TZB) zy;N(1ty52I*VNU$NL8Ks8h^MUasElneNKnE1TFVOO{)9?gwSWwxaF!o+Hw=Gy_3~p zL0iR_u5`@lOYWz0Px}p?3Cw5o++p<?lpDUb%D_HZ0-GM)li5ecQ~QFQqGW`Yng@7O z`fJE4aeaq&!JOci5&@yrKBb=%A}$>{W2HXUc*HDRp&l`J-IjIy52q{kg_?QA$gYU$ zJF^S?DX7B8ym}u?+~rfv0kMiv)e!Z8SXKYd{Fxmw*ZWJVD&Z7~eQR)9^b{?6bdzeH zS=?}J_0vC3$Nlm>YWgL-o1opOQnv?6zd6AO><rW)_=%0+CFOM&0ZDH}C_Cnb_loZS hgn02&jMP+DsuT79r1uxzsb1gz|9PsPlBL}G`wLwR(0>2` diff --git a/SecurityPkg/VariableAuthenticated/Pei/Variable.c b/SecurityPkg/VariableAuthenticated/Pei/Variable.c deleted file mode 100644 index 7ee8b88..0000000 --- a/SecurityPkg/VariableAuthenticated/Pei/Variable.c +++ /dev/null @@ -1,1087 +0,0 @@ -/** @file - Implement ReadOnly Variable Services required by PEIM and install PEI - ReadOnly Varaiable2 PPI. These services operates the non-volatile - storage space. - -Copyright (c) 2009 - 2014, Intel Corporation. All rights reserved.<BR> -This program and the accompanying materials -are licensed and made available under the terms and conditions of the BSD License -which accompanies this distribution. The full text of the license may be found at -http://opensource.org/licenses/bsd-license.php - -THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - -**/ - - -#include "Variable.h" - -// -// Module globals -// -EFI_PEI_READ_ONLY_VARIABLE2_PPI mVariablePpi = { - PeiGetVariable, - PeiGetNextVariableName -}; - -EFI_PEI_PPI_DESCRIPTOR mPpiListVariable = { - (EFI_PEI_PPI_DESCRIPTOR_PPI | EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST), - &gEfiPeiReadOnlyVariable2PpiGuid, - &mVariablePpi -}; - -/** - Provide the functionality of the variable services. - - @param FileHandle Handle of the file being invoked. - Type EFI_PEI_FILE_HANDLE is defined in FfsFindNextFile(). - @param PeiServices General purpose services available to every PEIM. - - @retval EFI_SUCCESS If the interface could be successfully installed - @retval Others Returned from PeiServicesInstallPpi() -**/ -EFI_STATUS -EFIAPI -PeimInitializeVariableServices ( - IN EFI_PEI_FILE_HANDLE FileHandle, - IN CONST EFI_PEI_SERVICES **PeiServices - ) -{ - return PeiServicesInstallPpi (&mPpiListVariable); -} - -/** - - Gets the pointer to the first variable header in given variable store area. - - @param VarStoreHeader Pointer to the Variable Store Header. - - @return Pointer to the first variable header - -**/ -VARIABLE_HEADER * -GetStartPointer ( - IN VARIABLE_STORE_HEADER *VarStoreHeader - ) -{ - // - // The end of variable store - // - return (VARIABLE_HEADER *) HEADER_ALIGN (VarStoreHeader + 1); -} - - -/** - This code gets the pointer to the last variable memory pointer byte. - - @param VarStoreHeader Pointer to the Variable Store Header. - - @return VARIABLE_HEADER* pointer to last unavailable Variable Header. - -**/ -VARIABLE_HEADER * -GetEndPointer ( - IN VARIABLE_STORE_HEADER *VarStoreHeader - ) -{ - // - // The end of variable store - // - return (VARIABLE_HEADER *) HEADER_ALIGN ((UINTN) VarStoreHeader + VarStoreHeader->Size); -} - - -/** - This code checks if variable header is valid or not. - - @param Variable Pointer to the Variable Header. - - @retval TRUE Variable header is valid. - @retval FALSE Variable header is not valid. - -**/ -BOOLEAN -IsValidVariableHeader ( - IN VARIABLE_HEADER *Variable - ) -{ - if (Variable == NULL || Variable->StartId != VARIABLE_DATA ) { - return FALSE; - } - - return TRUE; -} - - -/** - This code gets the size of name of variable. - - @param Variable Pointer to the Variable Header. - - @return Size of variable in bytes in type UINTN. - -**/ -UINTN -NameSizeOfVariable ( - IN VARIABLE_HEADER *Variable - ) -{ - if (Variable->State == (UINT8) (-1) || - Variable->DataSize == (UINT32) (-1) || - Variable->NameSize == (UINT32) (-1) || - Variable->Attributes == (UINT32) (-1)) { - return 0; - } - return (UINTN) Variable->NameSize; -} - - -/** - This code gets the size of data of variable. - - @param Variable Pointer to the Variable Header. - - @return Size of variable in bytes in type UINTN. - -**/ -UINTN -DataSizeOfVariable ( - IN VARIABLE_HEADER *Variable - ) -{ - if (Variable->State == (UINT8) (-1) || - Variable->DataSize == (UINT32) (-1) || - Variable->NameSize == (UINT32) (-1) || - Variable->Attributes == (UINT32) (-1)) { - return 0; - } - return (UINTN) Variable->DataSize; -} - -/** - This code gets the pointer to the variable name. - - @param Variable Pointer to the Variable Header. - - @return A CHAR16* pointer to Variable Name. - -**/ -CHAR16 * -GetVariableNamePtr ( - IN VARIABLE_HEADER *Variable - ) -{ - return (CHAR16 *) (Variable + 1); -} - - -/** - This code gets the pointer to the variable data. - - @param Variable Pointer to the Variable Header. - @param VariableHeader Pointer to the Variable Header that has consecutive content. - - @return A UINT8* pointer to Variable Data. - -**/ -UINT8 * -GetVariableDataPtr ( - IN VARIABLE_HEADER *Variable, - IN VARIABLE_HEADER *VariableHeader - ) -{ - UINTN Value; - - // - // Be careful about pad size for alignment - // - Value = (UINTN) GetVariableNamePtr (Variable); - Value += NameSizeOfVariable (VariableHeader); - Value += GET_PAD_SIZE (NameSizeOfVariable (VariableHeader)); - - return (UINT8 *) Value; -} - - -/** - This code gets the pointer to the next variable header. - - @param StoreInfo Pointer to variable store info structure. - @param Variable Pointer to the Variable Header. - @param VariableHeader Pointer to the Variable Header that has consecutive content. - - @return A VARIABLE_HEADER* pointer to next variable header. - -**/ -VARIABLE_HEADER * -GetNextVariablePtr ( - IN VARIABLE_STORE_INFO *StoreInfo, - IN VARIABLE_HEADER *Variable, - IN VARIABLE_HEADER *VariableHeader - ) -{ - EFI_PHYSICAL_ADDRESS TargetAddress; - EFI_PHYSICAL_ADDRESS SpareAddress; - UINTN Value; - - Value = (UINTN) GetVariableDataPtr (Variable, VariableHeader); - Value += DataSizeOfVariable (VariableHeader); - Value += GET_PAD_SIZE (DataSizeOfVariable (VariableHeader)); - // - // Be careful about pad size for alignment - // - Value = HEADER_ALIGN (Value); - - if (StoreInfo->FtwLastWriteData != NULL) { - TargetAddress = StoreInfo->FtwLastWriteData->TargetAddress; - SpareAddress = StoreInfo->FtwLastWriteData->SpareAddress; - if (((UINTN) Variable < (UINTN) TargetAddress) && (Value >= (UINTN) TargetAddress)) { - // - // Next variable is in spare block. - // - Value = (UINTN) SpareAddress + (Value - (UINTN) TargetAddress); - } - } - - return (VARIABLE_HEADER *) Value; -} - -/** - Get variable store status. - - @param VarStoreHeader Pointer to the Variable Store Header. - - @retval EfiRaw Variable store is raw - @retval EfiValid Variable store is valid - @retval EfiInvalid Variable store is invalid - -**/ -VARIABLE_STORE_STATUS -GetVariableStoreStatus ( - IN VARIABLE_STORE_HEADER *VarStoreHeader - ) -{ - if (CompareGuid (&VarStoreHeader->Signature, &gEfiAuthenticatedVariableGuid) && - VarStoreHeader->Format == VARIABLE_STORE_FORMATTED && - VarStoreHeader->State == VARIABLE_STORE_HEALTHY - ) { - - return EfiValid; - } - - if (((UINT32 *)(&VarStoreHeader->Signature))[0] == 0xffffffff && - ((UINT32 *)(&VarStoreHeader->Signature))[1] == 0xffffffff && - ((UINT32 *)(&VarStoreHeader->Signature))[2] == 0xffffffff && - ((UINT32 *)(&VarStoreHeader->Signature))[3] == 0xffffffff && - VarStoreHeader->Size == 0xffffffff && - VarStoreHeader->Format == 0xff && - VarStoreHeader->State == 0xff - ) { - - return EfiRaw; - } else { - return EfiInvalid; - } -} - -/** - Compare two variable names, one of them may be inconsecutive. - - @param StoreInfo Pointer to variable store info structure. - @param Name1 Pointer to one variable name. - @param Name2 Pointer to another variable name. - @param NameSize Variable name size. - - @retval TRUE Name1 and Name2 are identical. - @retval FALSE Name1 and Name2 are not identical. - -**/ -BOOLEAN -CompareVariableName ( - IN VARIABLE_STORE_INFO *StoreInfo, - IN CONST CHAR16 *Name1, - IN CONST CHAR16 *Name2, - IN UINTN NameSize - ) -{ - EFI_PHYSICAL_ADDRESS TargetAddress; - EFI_PHYSICAL_ADDRESS SpareAddress; - UINTN PartialNameSize; - - if (StoreInfo->FtwLastWriteData != NULL) { - TargetAddress = StoreInfo->FtwLastWriteData->TargetAddress; - SpareAddress = StoreInfo->FtwLastWriteData->SpareAddress; - if (((UINTN) Name1 < (UINTN) TargetAddress) && (((UINTN) Name1 + NameSize) > (UINTN) TargetAddress)) { - // - // Name1 is inconsecutive. - // - PartialNameSize = (UINTN) TargetAddress - (UINTN) Name1; - // - // Partial content is in NV storage. - // - if (CompareMem ((UINT8 *) Name1, (UINT8 *) Name2, PartialNameSize) == 0) { - // - // Another partial content is in spare block. - // - if (CompareMem ((UINT8 *) (UINTN) SpareAddress, (UINT8 *) Name2 + PartialNameSize, NameSize - PartialNameSize) == 0) { - return TRUE; - } - } - return FALSE; - } else if (((UINTN) Name2 < (UINTN) TargetAddress) && (((UINTN) Name2 + NameSize) > (UINTN) TargetAddress)) { - // - // Name2 is inconsecutive. - // - PartialNameSize = (UINTN) TargetAddress - (UINTN) Name2; - // - // Partial content is in NV storage. - // - if (CompareMem ((UINT8 *) Name2, (UINT8 *) Name1, PartialNameSize) == 0) { - // - // Another partial content is in spare block. - // - if (CompareMem ((UINT8 *) (UINTN) SpareAddress, (UINT8 *) Name1 + PartialNameSize, NameSize - PartialNameSize) == 0) { - return TRUE; - } - } - return FALSE; - } - } - - // - // Both Name1 and Name2 are consecutive. - // - if (CompareMem ((UINT8 *) Name1, (UINT8 *) Name2, NameSize) == 0) { - return TRUE; - } - return FALSE; -} - -/** - This function compares a variable with variable entries in database. - - @param StoreInfo Pointer to variable store info structure. - @param Variable Pointer to the variable in our database - @param VariableHeader Pointer to the Variable Header that has consecutive content. - @param VariableName Name of the variable to compare to 'Variable' - @param VendorGuid GUID of the variable to compare to 'Variable' - @param PtrTrack Variable Track Pointer structure that contains Variable Information. - - @retval EFI_SUCCESS Found match variable - @retval EFI_NOT_FOUND Variable not found - -**/ -EFI_STATUS -CompareWithValidVariable ( - IN VARIABLE_STORE_INFO *StoreInfo, - IN VARIABLE_HEADER *Variable, - IN VARIABLE_HEADER *VariableHeader, - IN CONST CHAR16 *VariableName, - IN CONST EFI_GUID *VendorGuid, - OUT VARIABLE_POINTER_TRACK *PtrTrack - ) -{ - VOID *Point; - - if (VariableName[0] == 0) { - PtrTrack->CurrPtr = Variable; - return EFI_SUCCESS; - } else { - // - // Don't use CompareGuid function here for performance reasons. - // Instead we compare the GUID a UINT32 at a time and branch - // on the first failed comparison. - // - if ((((INT32 *) VendorGuid)[0] == ((INT32 *) &VariableHeader->VendorGuid)[0]) && - (((INT32 *) VendorGuid)[1] == ((INT32 *) &VariableHeader->VendorGuid)[1]) && - (((INT32 *) VendorGuid)[2] == ((INT32 *) &VariableHeader->VendorGuid)[2]) && - (((INT32 *) VendorGuid)[3] == ((INT32 *) &VariableHeader->VendorGuid)[3]) - ) { - ASSERT (NameSizeOfVariable (VariableHeader) != 0); - Point = (VOID *) GetVariableNamePtr (Variable); - if (CompareVariableName (StoreInfo, VariableName, Point, NameSizeOfVariable (VariableHeader))) { - PtrTrack->CurrPtr = Variable; - return EFI_SUCCESS; - } - } - } - - return EFI_NOT_FOUND; -} - -/** - Return the variable store header and the store info based on the Index. - - @param Type The type of the variable store. - @param StoreInfo Return the store info. - - @return Pointer to the variable store header. -**/ -VARIABLE_STORE_HEADER * -GetVariableStore ( - IN VARIABLE_STORE_TYPE Type, - OUT VARIABLE_STORE_INFO *StoreInfo - ) -{ - EFI_HOB_GUID_TYPE *GuidHob; - EFI_FIRMWARE_VOLUME_HEADER *FvHeader; - VARIABLE_STORE_HEADER *VariableStoreHeader; - EFI_PHYSICAL_ADDRESS NvStorageBase; - UINT32 NvStorageSize; - FAULT_TOLERANT_WRITE_LAST_WRITE_DATA *FtwLastWriteData; - UINT32 BackUpOffset; - - StoreInfo->IndexTable = NULL; - StoreInfo->FtwLastWriteData = NULL; - VariableStoreHeader = NULL; - switch (Type) { - case VariableStoreTypeHob: - GuidHob = GetFirstGuidHob (&gEfiAuthenticatedVariableGuid); - if (GuidHob != NULL) { - VariableStoreHeader = (VARIABLE_STORE_HEADER *) GET_GUID_HOB_DATA (GuidHob); - } - break; - - case VariableStoreTypeNv: - if (GetBootModeHob () != BOOT_IN_RECOVERY_MODE) { - // - // The content of NV storage for variable is not reliable in recovery boot mode. - // - - NvStorageSize = PcdGet32 (PcdFlashNvStorageVariableSize); - NvStorageBase = (EFI_PHYSICAL_ADDRESS) (PcdGet64 (PcdFlashNvStorageVariableBase64) != 0 ? - PcdGet64 (PcdFlashNvStorageVariableBase64) : - PcdGet32 (PcdFlashNvStorageVariableBase) - ); - // - // First let FvHeader point to NV storage base. - // - FvHeader = (EFI_FIRMWARE_VOLUME_HEADER *) (UINTN) NvStorageBase; - - // - // Check the FTW last write data hob. - // - BackUpOffset = 0; - GuidHob = GetFirstGuidHob (&gEdkiiFaultTolerantWriteGuid); - if (GuidHob != NULL) { - FtwLastWriteData = (FAULT_TOLERANT_WRITE_LAST_WRITE_DATA *) GET_GUID_HOB_DATA (GuidHob); - if (FtwLastWriteData->TargetAddress == NvStorageBase) { - // - // Let FvHeader point to spare block. - // - FvHeader = (EFI_FIRMWARE_VOLUME_HEADER *) (UINTN) FtwLastWriteData->SpareAddress; - DEBUG ((EFI_D_INFO, "PeiVariable: NV storage is backed up in spare block: 0x%x\n", (UINTN) FtwLastWriteData->SpareAddress)); - } else if ((FtwLastWriteData->TargetAddress > NvStorageBase) && (FtwLastWriteData->TargetAddress < (NvStorageBase + NvStorageSize))) { - StoreInfo->FtwLastWriteData = FtwLastWriteData; - // - // Flash NV storage from the offset is backed up in spare block. - // - BackUpOffset = (UINT32) (FtwLastWriteData->TargetAddress - NvStorageBase); - DEBUG ((EFI_D_INFO, "PeiVariable: High partial NV storage from offset: %x is backed up in spare block: 0x%x\n", BackUpOffset, (UINTN) FtwLastWriteData->SpareAddress)); - // - // At least one block data in flash NV storage is still valid, so still leave FvHeader point to NV storage base. - // - } - } - - // - // Check if the Firmware Volume is not corrupted - // - if ((FvHeader->Signature != EFI_FVH_SIGNATURE) || (!CompareGuid (&gEfiSystemNvDataFvGuid, &FvHeader->FileSystemGuid))) { - DEBUG ((EFI_D_ERROR, "Firmware Volume for Variable Store is corrupted\n")); - break; - } - - VariableStoreHeader = (VARIABLE_STORE_HEADER *) ((UINT8 *) FvHeader + FvHeader->HeaderLength); - - GuidHob = GetFirstGuidHob (&gEfiVariableIndexTableGuid); - if (GuidHob != NULL) { - StoreInfo->IndexTable = GET_GUID_HOB_DATA (GuidHob); - } else { - // - // If it's the first time to access variable region in flash, create a guid hob to record - // VAR_ADDED type variable info. - // Note that as the resource of PEI phase is limited, only store the limited number of - // VAR_ADDED type variables to reduce access time. - // - StoreInfo->IndexTable = (VARIABLE_INDEX_TABLE *) BuildGuidHob (&gEfiVariableIndexTableGuid, sizeof (VARIABLE_INDEX_TABLE)); - StoreInfo->IndexTable->Length = 0; - StoreInfo->IndexTable->StartPtr = GetStartPointer (VariableStoreHeader); - StoreInfo->IndexTable->EndPtr = GetEndPointer (VariableStoreHeader); - StoreInfo->IndexTable->GoneThrough = 0; - } - } - break; - - default: - ASSERT (FALSE); - break; - } - - StoreInfo->VariableStoreHeader = VariableStoreHeader; - return VariableStoreHeader; -} - -/** - Get variable header that has consecutive content. - - @param StoreInfo Pointer to variable store info structure. - @param Variable Pointer to the Variable Header. - @param VariableHeader Pointer to Pointer to the Variable Header that has consecutive content. - - @retval TRUE Variable header is valid. - @retval FALSE Variable header is not valid. - -**/ -BOOLEAN -GetVariableHeader ( - IN VARIABLE_STORE_INFO *StoreInfo, - IN VARIABLE_HEADER *Variable, - OUT VARIABLE_HEADER **VariableHeader - ) -{ - EFI_PHYSICAL_ADDRESS TargetAddress; - EFI_PHYSICAL_ADDRESS SpareAddress; - EFI_HOB_GUID_TYPE *GuidHob; - UINTN PartialHeaderSize; - - if (Variable == NULL) { - return FALSE; - } - - // - // First assume variable header pointed by Variable is consecutive. - // - *VariableHeader = Variable; - - if (StoreInfo->FtwLastWriteData != NULL) { - TargetAddress = StoreInfo->FtwLastWriteData->TargetAddress; - SpareAddress = StoreInfo->FtwLastWriteData->SpareAddress; - if (((UINTN) Variable > (UINTN) SpareAddress) && - (((UINTN) Variable - (UINTN) SpareAddress + (UINTN) TargetAddress) >= (UINTN) GetEndPointer (StoreInfo->VariableStoreHeader))) { - // - // Reach the end of variable store. - // - return FALSE; - } - if (((UINTN) Variable < (UINTN) TargetAddress) && (((UINTN) Variable + sizeof (VARIABLE_HEADER)) > (UINTN) TargetAddress)) { - // - // Variable header pointed by Variable is inconsecutive, - // create a guid hob to combine the two partial variable header content together. - // - GuidHob = GetFirstGuidHob (&gEfiCallerIdGuid); - if (GuidHob != NULL) { - *VariableHeader = (VARIABLE_HEADER *) GET_GUID_HOB_DATA (GuidHob); - } else { - *VariableHeader = (VARIABLE_HEADER *) BuildGuidHob (&gEfiCallerIdGuid, sizeof (VARIABLE_HEADER)); - PartialHeaderSize = (UINTN) TargetAddress - (UINTN) Variable; - // - // Partial content is in NV storage. - // - CopyMem ((UINT8 *) *VariableHeader, (UINT8 *) Variable, PartialHeaderSize); - // - // Another partial content is in spare block. - // - CopyMem ((UINT8 *) *VariableHeader + PartialHeaderSize, (UINT8 *) (UINTN) SpareAddress, sizeof (VARIABLE_HEADER) - PartialHeaderSize); - } - } - } else { - if (Variable >= GetEndPointer (StoreInfo->VariableStoreHeader)) { - // - // Reach the end of variable store. - // - return FALSE; - } - } - - return IsValidVariableHeader (*VariableHeader); -} - -/** - Get variable name or data to output buffer. - - @param StoreInfo Pointer to variable store info structure. - @param NameOrData Pointer to the variable name/data that may be inconsecutive. - @param Size Variable name/data size. - @param Buffer Pointer to output buffer to hold the variable name/data. - -**/ -VOID -GetVariableNameOrData ( - IN VARIABLE_STORE_INFO *StoreInfo, - IN UINT8 *NameOrData, - IN UINTN Size, - OUT UINT8 *Buffer - ) -{ - EFI_PHYSICAL_ADDRESS TargetAddress; - EFI_PHYSICAL_ADDRESS SpareAddress; - UINTN PartialSize; - - if (StoreInfo->FtwLastWriteData != NULL) { - TargetAddress = StoreInfo->FtwLastWriteData->TargetAddress; - SpareAddress = StoreInfo->FtwLastWriteData->SpareAddress; - if (((UINTN) NameOrData < (UINTN) TargetAddress) && (((UINTN) NameOrData + Size) > (UINTN) TargetAddress)) { - // - // Variable name/data is inconsecutive. - // - PartialSize = (UINTN) TargetAddress - (UINTN) NameOrData; - // - // Partial content is in NV storage. - // - CopyMem (Buffer, NameOrData, PartialSize); - // - // Another partial content is in spare block. - // - CopyMem (Buffer + PartialSize, (UINT8 *) (UINTN) SpareAddress, Size - PartialSize); - return; - } - } - - // - // Variable name/data is consecutive. - // - CopyMem (Buffer, NameOrData, Size); -} - -/** - Find the variable in the specified variable store. - - @param StoreInfo Pointer to the store info structure. - @param VariableName Name of the variable to be found - @param VendorGuid Vendor GUID to be found. - @param PtrTrack Variable Track Pointer structure that contains Variable Information. - - @retval EFI_SUCCESS Variable found successfully - @retval EFI_NOT_FOUND Variable not found - @retval EFI_INVALID_PARAMETER Invalid variable name - -**/ -EFI_STATUS -FindVariableEx ( - IN VARIABLE_STORE_INFO *StoreInfo, - IN CONST CHAR16 *VariableName, - IN CONST EFI_GUID *VendorGuid, - OUT VARIABLE_POINTER_TRACK *PtrTrack - ) -{ - VARIABLE_HEADER *Variable; - VARIABLE_HEADER *LastVariable; - VARIABLE_HEADER *MaxIndex; - UINTN Index; - UINTN Offset; - BOOLEAN StopRecord; - VARIABLE_HEADER *InDeletedVariable; - VARIABLE_STORE_HEADER *VariableStoreHeader; - VARIABLE_INDEX_TABLE *IndexTable; - VARIABLE_HEADER *VariableHeader; - - VariableStoreHeader = StoreInfo->VariableStoreHeader; - - if (VariableStoreHeader == NULL) { - return EFI_INVALID_PARAMETER; - } - - if (GetVariableStoreStatus (VariableStoreHeader) != EfiValid) { - return EFI_UNSUPPORTED; - } - - if (~VariableStoreHeader->Size == 0) { - return EFI_NOT_FOUND; - } - - IndexTable = StoreInfo->IndexTable; - PtrTrack->StartPtr = GetStartPointer (VariableStoreHeader); - PtrTrack->EndPtr = GetEndPointer (VariableStoreHeader); - - InDeletedVariable = NULL; - - // - // No Variable Address equals zero, so 0 as initial value is safe. - // - MaxIndex = NULL; - VariableHeader = NULL; - - if (IndexTable != NULL) { - // - // traverse the variable index table to look for varible. - // The IndexTable->Index[Index] records the distance of two neighbouring VAR_ADDED type variables. - // - for (Offset = 0, Index = 0; Index < IndexTable->Length; Index++) { - ASSERT (Index < sizeof (IndexTable->Index) / sizeof (IndexTable->Index[0])); - Offset += IndexTable->Index[Index]; - MaxIndex = (VARIABLE_HEADER *) ((UINT8 *) IndexTable->StartPtr + Offset); - GetVariableHeader (StoreInfo, MaxIndex, &VariableHeader); - if (CompareWithValidVariable (StoreInfo, MaxIndex, VariableHeader, VariableName, VendorGuid, PtrTrack) == EFI_SUCCESS) { - if (VariableHeader->State == (VAR_IN_DELETED_TRANSITION & VAR_ADDED)) { - InDeletedVariable = PtrTrack->CurrPtr; - } else { - return EFI_SUCCESS; - } - } - } - - if (IndexTable->GoneThrough != 0) { - // - // If the table has all the existing variables indexed, return. - // - PtrTrack->CurrPtr = InDeletedVariable; - return (PtrTrack->CurrPtr == NULL) ? EFI_NOT_FOUND : EFI_SUCCESS; - } - } - - if (MaxIndex != NULL) { - // - // HOB exists but the variable cannot be found in HOB - // If not found in HOB, then let's start from the MaxIndex we've found. - // - Variable = GetNextVariablePtr (StoreInfo, MaxIndex, VariableHeader); - LastVariable = MaxIndex; - } else { - // - // Start Pointers for the variable. - // Actual Data Pointer where data can be written. - // - Variable = PtrTrack->StartPtr; - LastVariable = PtrTrack->StartPtr; - } - - // - // Find the variable by walk through variable store - // - StopRecord = FALSE; - while (GetVariableHeader (StoreInfo, Variable, &VariableHeader)) { - if (VariableHeader->State == VAR_ADDED || VariableHeader->State == (VAR_IN_DELETED_TRANSITION & VAR_ADDED)) { - // - // Record Variable in VariableIndex HOB - // - if ((IndexTable != NULL) && !StopRecord) { - Offset = (UINTN) Variable - (UINTN) LastVariable; - if ((Offset > 0x0FFFF) || (IndexTable->Length == sizeof (IndexTable->Index) / sizeof (IndexTable->Index[0]))) { - // - // Stop to record if the distance of two neighbouring VAR_ADDED variable is larger than the allowable scope(UINT16), - // or the record buffer is full. - // - StopRecord = TRUE; - } else { - IndexTable->Index[IndexTable->Length++] = (UINT16) Offset; - LastVariable = Variable; - } - } - - if (CompareWithValidVariable (StoreInfo, Variable, VariableHeader, VariableName, VendorGuid, PtrTrack) == EFI_SUCCESS) { - if (VariableHeader->State == (VAR_IN_DELETED_TRANSITION & VAR_ADDED)) { - InDeletedVariable = PtrTrack->CurrPtr; - } else { - return EFI_SUCCESS; - } - } - } - - Variable = GetNextVariablePtr (StoreInfo, Variable, VariableHeader); - } - // - // If gone through the VariableStore, that means we never find in Firmware any more. - // - if ((IndexTable != NULL) && !StopRecord) { - IndexTable->GoneThrough = 1; - } - - PtrTrack->CurrPtr = InDeletedVariable; - - return (PtrTrack->CurrPtr == NULL) ? EFI_NOT_FOUND : EFI_SUCCESS; -} - -/** - Find the variable in HOB and Non-Volatile variable storages. - - @param VariableName Name of the variable to be found - @param VendorGuid Vendor GUID to be found. - @param PtrTrack Variable Track Pointer structure that contains Variable Information. - @param StoreInfo Return the store info. - - @retval EFI_SUCCESS Variable found successfully - @retval EFI_NOT_FOUND Variable not found - @retval EFI_INVALID_PARAMETER Invalid variable name -**/ -EFI_STATUS -FindVariable ( - IN CONST CHAR16 *VariableName, - IN CONST EFI_GUID *VendorGuid, - OUT VARIABLE_POINTER_TRACK *PtrTrack, - OUT VARIABLE_STORE_INFO *StoreInfo - ) -{ - EFI_STATUS Status; - VARIABLE_STORE_TYPE Type; - - if (VariableName[0] != 0 && VendorGuid == NULL) { - return EFI_INVALID_PARAMETER; - } - - for (Type = (VARIABLE_STORE_TYPE) 0; Type < VariableStoreTypeMax; Type++) { - GetVariableStore (Type, StoreInfo); - Status = FindVariableEx ( - StoreInfo, - VariableName, - VendorGuid, - PtrTrack - ); - if (!EFI_ERROR (Status)) { - return Status; - } - } - - return EFI_NOT_FOUND; -} - -/** - This service retrieves a variable's value using its name and GUID. - - Read the specified variable from the UEFI variable store. If the Data - buffer is too small to hold the contents of the variable, the error - EFI_BUFFER_TOO_SMALL is returned and DataSize is set to the required buffer - size to obtain the data. - - @param This A pointer to this instance of the EFI_PEI_READ_ONLY_VARIABLE2_PPI. - @param VariableName A pointer to a null-terminated string that is the variable's name. - @param VariableGuid A pointer to an EFI_GUID that is the variable's GUID. The combination of - VariableGuid and VariableName must be unique. - @param Attributes If non-NULL, on return, points to the variable's attributes. - @param DataSize On entry, points to the size in bytes of the Data buffer. - On return, points to the size of the data returned in Data. - @param Data Points to the buffer which will hold the returned variable value. - - @retval EFI_SUCCESS The variable was read successfully. - @retval EFI_NOT_FOUND The variable could not be found. - @retval EFI_BUFFER_TOO_SMALL The DataSize is too small for the resulting data. - DataSize is updated with the size required for - the specified variable. - @retval EFI_INVALID_PARAMETER VariableName, VariableGuid, DataSize or Data is NULL. - @retval EFI_DEVICE_ERROR The variable could not be retrieved because of a device error. - -**/ -EFI_STATUS -EFIAPI -PeiGetVariable ( - IN CONST EFI_PEI_READ_ONLY_VARIABLE2_PPI *This, - IN CONST CHAR16 *VariableName, - IN CONST EFI_GUID *VariableGuid, - OUT UINT32 *Attributes, - IN OUT UINTN *DataSize, - OUT VOID *Data - ) -{ - VARIABLE_POINTER_TRACK Variable; - UINTN VarDataSize; - EFI_STATUS Status; - VARIABLE_STORE_INFO StoreInfo; - VARIABLE_HEADER *VariableHeader; - - if (VariableName == NULL || VariableGuid == NULL || DataSize == NULL) { - return EFI_INVALID_PARAMETER; - } - - VariableHeader = NULL; - - // - // Find existing variable - // - Status = FindVariable (VariableName, VariableGuid, &Variable, &StoreInfo); - if (EFI_ERROR (Status)) { - return Status; - } - GetVariableHeader (&StoreInfo, Variable.CurrPtr, &VariableHeader); - - // - // Get data size - // - VarDataSize = DataSizeOfVariable (VariableHeader); - if (*DataSize >= VarDataSize) { - if (Data == NULL) { - return EFI_INVALID_PARAMETER; - } - - GetVariableNameOrData (&StoreInfo, GetVariableDataPtr (Variable.CurrPtr, VariableHeader), VarDataSize, Data); - - if (Attributes != NULL) { - *Attributes = VariableHeader->Attributes; - } - - *DataSize = VarDataSize; - return EFI_SUCCESS; - } else { - *DataSize = VarDataSize; - return EFI_BUFFER_TOO_SMALL; - } -} - -/** - Return the next variable name and GUID. - - This function is called multiple times to retrieve the VariableName - and VariableGuid of all variables currently available in the system. - On each call, the previous results are passed into the interface, - and, on return, the interface returns the data for the next - interface. When the entire variable list has been returned, - EFI_NOT_FOUND is returned. - - @param This A pointer to this instance of the EFI_PEI_READ_ONLY_VARIABLE2_PPI. - - @param VariableNameSize On entry, points to the size of the buffer pointed to by VariableName. - On return, the size of the variable name buffer. - @param VariableName On entry, a pointer to a null-terminated string that is the variable's name. - On return, points to the next variable's null-terminated name string. - @param VariableGuid On entry, a pointer to an EFI_GUID that is the variable's GUID. - On return, a pointer to the next variable's GUID. - - @retval EFI_SUCCESS The variable was read successfully. - @retval EFI_NOT_FOUND The variable could not be found. - @retval EFI_BUFFER_TOO_SMALL The VariableNameSize is too small for the resulting - data. VariableNameSize is updated with the size - required for the specified variable. - @retval EFI_INVALID_PARAMETER VariableName, VariableGuid or - VariableNameSize is NULL. - @retval EFI_DEVICE_ERROR The variable could not be retrieved because of a device error. - -**/ -EFI_STATUS -EFIAPI -PeiGetNextVariableName ( - IN CONST EFI_PEI_READ_ONLY_VARIABLE2_PPI *This, - IN OUT UINTN *VariableNameSize, - IN OUT CHAR16 *VariableName, - IN OUT EFI_GUID *VariableGuid - ) -{ - VARIABLE_STORE_TYPE Type; - VARIABLE_POINTER_TRACK Variable; - VARIABLE_POINTER_TRACK VariableInHob; - VARIABLE_POINTER_TRACK VariablePtrTrack; - UINTN VarNameSize; - EFI_STATUS Status; - VARIABLE_STORE_HEADER *VariableStoreHeader[VariableStoreTypeMax]; - VARIABLE_HEADER *VariableHeader; - VARIABLE_STORE_INFO StoreInfo; - VARIABLE_STORE_INFO StoreInfoForNv; - VARIABLE_STORE_INFO StoreInfoForHob; - - if (VariableName == NULL || VariableGuid == NULL || VariableNameSize == NULL) { - return EFI_INVALID_PARAMETER; - } - - VariableHeader = NULL; - - Status = FindVariable (VariableName, VariableGuid, &Variable, &StoreInfo); - if (Variable.CurrPtr == NULL || Status != EFI_SUCCESS) { - return Status; - } - - if (VariableName[0] != 0) { - // - // If variable name is not NULL, get next variable - // - GetVariableHeader (&StoreInfo, Variable.CurrPtr, &VariableHeader); - Variable.CurrPtr = GetNextVariablePtr (&StoreInfo, Variable.CurrPtr, VariableHeader); - } - - VariableStoreHeader[VariableStoreTypeHob] = GetVariableStore (VariableStoreTypeHob, &StoreInfoForHob); - VariableStoreHeader[VariableStoreTypeNv] = GetVariableStore (VariableStoreTypeNv, &StoreInfoForNv); - - while (TRUE) { - // - // Switch from HOB to Non-Volatile. - // - while (!GetVariableHeader (&StoreInfo, Variable.CurrPtr, &VariableHeader)) { - // - // Find current storage index - // - for (Type = (VARIABLE_STORE_TYPE) 0; Type < VariableStoreTypeMax; Type++) { - if ((VariableStoreHeader[Type] != NULL) && (Variable.StartPtr == GetStartPointer (VariableStoreHeader[Type]))) { - break; - } - } - ASSERT (Type < VariableStoreTypeMax); - // - // Switch to next storage - // - for (Type++; Type < VariableStoreTypeMax; Type++) { - if (VariableStoreHeader[Type] != NULL) { - break; - } - } - // - // Capture the case that - // 1. current storage is the last one, or - // 2. no further storage - // - if (Type == VariableStoreTypeMax) { - return EFI_NOT_FOUND; - } - Variable.StartPtr = GetStartPointer (VariableStoreHeader[Type]); - Variable.EndPtr = GetEndPointer (VariableStoreHeader[Type]); - Variable.CurrPtr = Variable.StartPtr; - GetVariableStore (Type, &StoreInfo); - } - - if (VariableHeader->State == VAR_ADDED || VariableHeader->State == (VAR_IN_DELETED_TRANSITION & VAR_ADDED)) { - if (VariableHeader->State == (VAR_IN_DELETED_TRANSITION & VAR_ADDED)) { - // - // If it is a IN_DELETED_TRANSITION variable, - // and there is also a same ADDED one at the same time, - // don't return it. - // - Status = FindVariableEx ( - &StoreInfo, - GetVariableNamePtr (Variable.CurrPtr), - &VariableHeader->VendorGuid, - &VariablePtrTrack - ); - if (!EFI_ERROR (Status) && VariablePtrTrack.CurrPtr != Variable.CurrPtr) { - Variable.CurrPtr = GetNextVariablePtr (&StoreInfo, Variable.CurrPtr, VariableHeader); - continue; - } - } - - // - // Don't return NV variable when HOB overrides it - // - if ((VariableStoreHeader[VariableStoreTypeHob] != NULL) && (VariableStoreHeader[VariableStoreTypeNv] != NULL) && - (Variable.StartPtr == GetStartPointer (VariableStoreHeader[VariableStoreTypeNv])) - ) { - Status = FindVariableEx ( - &StoreInfoForHob, - GetVariableNamePtr (Variable.CurrPtr), - &VariableHeader->VendorGuid, - &VariableInHob - ); - if (!EFI_ERROR (Status)) { - Variable.CurrPtr = GetNextVariablePtr (&StoreInfo, Variable.CurrPtr, VariableHeader); - continue; - } - } - - VarNameSize = NameSizeOfVariable (VariableHeader); - ASSERT (VarNameSize != 0); - - if (VarNameSize <= *VariableNameSize) { - GetVariableNameOrData (&StoreInfo, (UINT8 *) GetVariableNamePtr (Variable.CurrPtr), VarNameSize, (UINT8 *) VariableName); - - CopyMem (VariableGuid, &VariableHeader->VendorGuid, sizeof (EFI_GUID)); - - Status = EFI_SUCCESS; - } else { - Status = EFI_BUFFER_TOO_SMALL; - } - - *VariableNameSize = VarNameSize; - // - // Variable is found - // - return Status; - } else { - Variable.CurrPtr = GetNextVariablePtr (&StoreInfo, Variable.CurrPtr, VariableHeader); - } - } -} diff --git a/SecurityPkg/VariableAuthenticated/Pei/Variable.h b/SecurityPkg/VariableAuthenticated/Pei/Variable.h deleted file mode 100644 index 7693522..0000000 --- a/SecurityPkg/VariableAuthenticated/Pei/Variable.h +++ /dev/null @@ -1,148 +0,0 @@ -/** @file - The internal header file includes the common header files, defines - internal structure and functions used by PeiVariable module. - -Copyright (c) 2009 - 2013, Intel Corporation. All rights reserved.<BR> -This program and the accompanying materials -are licensed and made available under the terms and conditions of the BSD License -which accompanies this distribution. The full text of the license may be found at -http://opensource.org/licenses/bsd-license.php - -THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - -**/ - -#ifndef _PEI_VARIABLE_H_ -#define _PEI_VARIABLE_H_ - -#include <PiPei.h> -#include <Ppi/ReadOnlyVariable2.h> - -#include <Library/DebugLib.h> -#include <Library/PeimEntryPoint.h> -#include <Library/HobLib.h> -#include <Library/PcdLib.h> -#include <Library/BaseMemoryLib.h> -#include <Library/PeiServicesTablePointerLib.h> -#include <Library/PeiServicesLib.h> - -#include <Guid/AuthenticatedVariableFormat.h> -#include <Guid/VariableIndexTable.h> -#include <Guid/SystemNvDataGuid.h> -#include <Guid/FaultTolerantWrite.h> - -typedef enum { - VariableStoreTypeHob, - VariableStoreTypeNv, - VariableStoreTypeMax -} VARIABLE_STORE_TYPE; - -typedef struct { - VARIABLE_STORE_HEADER *VariableStoreHeader; - VARIABLE_INDEX_TABLE *IndexTable; - // - // If it is not NULL, it means there may be an inconsecutive variable whose - // partial content is still in NV storage, but another partial content is backed up - // in spare block. - // - FAULT_TOLERANT_WRITE_LAST_WRITE_DATA *FtwLastWriteData; -} VARIABLE_STORE_INFO; - -// -// Functions -// -/** - Provide the functionality of the variable services. - - @param FileHandle Handle of the file being invoked. - Type EFI_PEI_FILE_HANDLE is defined in FfsFindNextFile(). - @param PeiServices General purpose services available to every PEIM. - - @retval EFI_SUCCESS If the interface could be successfully installed - @retval Others Returned from PeiServicesInstallPpi() - -**/ -EFI_STATUS -EFIAPI -PeimInitializeVariableServices ( - IN EFI_PEI_FILE_HANDLE FileHandle, - IN CONST EFI_PEI_SERVICES **PeiServices - ); - -/** - This service retrieves a variable's value using its name and GUID. - - Read the specified variable from the UEFI variable store. If the Data - buffer is too small to hold the contents of the variable, the error - EFI_BUFFER_TOO_SMALL is returned and DataSize is set to the required buffer - size to obtain the data. - - @param This A pointer to this instance of the EFI_PEI_READ_ONLY_VARIABLE2_PPI. - @param VariableName A pointer to a null-terminated string that is the variable's name. - @param VariableGuid A pointer to an EFI_GUID that is the variable's GUID. The combination of - VariableGuid and VariableName must be unique. - @param Attributes If non-NULL, on return, points to the variable's attributes. - @param DataSize On entry, points to the size in bytes of the Data buffer. - On return, points to the size of the data returned in Data. - @param Data Points to the buffer which will hold the returned variable value. - - @retval EFI_SUCCESS The variable was read successfully. - @retval EFI_NOT_FOUND The variable could not be found. - @retval EFI_BUFFER_TOO_SMALL The DataSize is too small for the resulting data. - DataSize is updated with the size required for - the specified variable. - @retval EFI_INVALID_PARAMETER VariableName, VariableGuid, DataSize or Data is NULL. - @retval EFI_DEVICE_ERROR The variable could not be retrieved because of a device error. - -**/ -EFI_STATUS -EFIAPI -PeiGetVariable ( - IN CONST EFI_PEI_READ_ONLY_VARIABLE2_PPI *This, - IN CONST CHAR16 *VariableName, - IN CONST EFI_GUID *VariableGuid, - OUT UINT32 *Attributes, - IN OUT UINTN *DataSize, - OUT VOID *Data - ); - -/** - Return the next variable name and GUID. - - This function is called multiple times to retrieve the VariableName - and VariableGuid of all variables currently available in the system. - On each call, the previous results are passed into the interface, - and, on return, the interface returns the data for the next - interface. When the entire variable list has been returned, - EFI_NOT_FOUND is returned. - - @param This A pointer to this instance of the EFI_PEI_READ_ONLY_VARIABLE2_PPI. - - @param VariableNameSize On entry, points to the size of the buffer pointed to by VariableName. - @param VariableName On entry, a pointer to a null-terminated string that is the variable's name. - On return, points to the next variable's null-terminated name string. - - @param VariableGuid On entry, a pointer to an UEFI _GUID that is the variable's GUID. - On return, a pointer to the next variable's GUID. - - @retval EFI_SUCCESS The variable was read successfully. - @retval EFI_NOT_FOUND The variable could not be found. - @retval EFI_BUFFER_TOO_SMALL The VariableNameSize is too small for the resulting - data. VariableNameSize is updated with the size - required for the specified variable. - @retval EFI_INVALID_PARAMETER VariableName, VariableGuid or - VariableNameSize is NULL. - @retval EFI_DEVICE_ERROR The variable could not be retrieved because of a device error. - -**/ -EFI_STATUS -EFIAPI -PeiGetNextVariableName ( - IN CONST EFI_PEI_READ_ONLY_VARIABLE2_PPI *This, - IN OUT UINTN *VariableNameSize, - IN OUT CHAR16 *VariableName, - IN OUT EFI_GUID *VariableGuid - ); - -#endif diff --git a/SecurityPkg/VariableAuthenticated/Pei/VariablePei.inf b/SecurityPkg/VariableAuthenticated/Pei/VariablePei.inf deleted file mode 100644 index fa0b5e9..0000000 --- a/SecurityPkg/VariableAuthenticated/Pei/VariablePei.inf +++ /dev/null @@ -1,73 +0,0 @@ -## @file -# Implements ReadOnly Variable Services required by PEIM and installs PEI ReadOnly Varaiable2 PPI -# This module implements ReadOnly Variable Services required by PEIM and installs PEI ReadOnly Varaiable2 PPI. -# -# Copyright (c) 2009 - 2014, Intel Corporation. All rights reserved.<BR> -# This program and the accompanying materials -# are licensed and made available under the terms and conditions of the BSD License -# which accompanies this distribution. The full text of the license may be found at -# http://opensource.org/licenses/bsd-license.php -# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. -# -## - -[Defines] - INF_VERSION = 0x00010005 - BASE_NAME = PeiVariableAuth - MODULE_UNI_FILE = PeiVariableAuth.uni - FILE_GUID = B1F7AF2F-2807-478c-A893-2BF4DDD1F62B - MODULE_TYPE = PEIM - VERSION_STRING = 1.0 - ENTRY_POINT = PeimInitializeVariableServices - -# -# The following information is for reference only and not required by the build tools. -# -# VALID_ARCHITECTURES = IA32 X64 IPF EBC -# - -[Sources] - Variable.c - Variable.h - -[Packages] - MdePkg/MdePkg.dec - MdeModulePkg/MdeModulePkg.dec - SecurityPkg/SecurityPkg.dec - -[LibraryClasses] - BaseMemoryLib - PcdLib - HobLib - PeimEntryPoint - DebugLib - PeiServicesTablePointerLib - PeiServicesLib - -[Guids] - ## CONSUMES ## GUID # Variable store header - ## SOMETIMES_CONSUMES ## HOB - gEfiAuthenticatedVariableGuid - ## SOMETIMES_PRODUCES ## HOB - ## SOMETIMES_CONSUMES ## HOB - gEfiVariableIndexTableGuid - gEfiSystemNvDataFvGuid ## SOMETIMES_CONSUMES ## GUID - gEdkiiFaultTolerantWriteGuid ## SOMETIMES_CONSUMES ## HOB - -[Ppis] - gEfiPeiReadOnlyVariable2PpiGuid ## PRODUCES - -[Pcd] - gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableBase ## SOMETIMES_CONSUMES - gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableBase64 ## CONSUMES - gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableSize ## CONSUMES - -[Depex] - gEdkiiFaultTolerantWriteGuid - -# [BootMode] -# RECOVERY_FULL ## SOMETIMES_CONSUMES - -[UserExtensions.TianoCore."ExtraFiles"] - PeiVariableExtra.uni \ No newline at end of file -- 1.9.5.msysgit.0 ------------------------------------------------------------------------------ Monitor 25 network devices or servers for free with OpManager! OpManager is web-based network management software that monitors network devices and physical & virtual servers, alerts via email & sms for fault. Monitor 25 devices for free with no restriction. Download now http://ad.doubleclick.net/ddm/clk/292181274;119417398;o _______________________________________________ edk2-devel mailing list edk2-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/edk2-devel