mirror of https://github.com/acidanthera/audk.git
Change IPF version AuthVariable driver to support multiple-platform feature.
Signed-off-by: rni2 Reviewed-by: erictian git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@12730 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
parent
53e6937c20
commit
4f8ef5ce4e
|
@ -57,6 +57,7 @@
|
||||||
PcdLib
|
PcdLib
|
||||||
ExtendedSalLib
|
ExtendedSalLib
|
||||||
BaseCryptLib
|
BaseCryptLib
|
||||||
|
HobLib
|
||||||
|
|
||||||
[Protocols]
|
[Protocols]
|
||||||
gEfiFirmwareVolumeBlockProtocolGuid # PROTOCOL SOMETIMES_CONSUMED
|
gEfiFirmwareVolumeBlockProtocolGuid # PROTOCOL SOMETIMES_CONSUMED
|
||||||
|
|
|
@ -223,6 +223,8 @@ VariableServiceInitialize (
|
||||||
Status = AutenticatedVariableServiceInitialize ();
|
Status = AutenticatedVariableServiceInitialize ();
|
||||||
ASSERT_EFI_ERROR (Status);
|
ASSERT_EFI_ERROR (Status);
|
||||||
|
|
||||||
|
FlushHob2Nv ();
|
||||||
|
|
||||||
//
|
//
|
||||||
// Register All the Functions with Extended SAL Variable Services Class
|
// Register All the Functions with Extended SAL Variable Services Class
|
||||||
//
|
//
|
||||||
|
|
|
@ -2938,6 +2938,58 @@ ReclaimForOS(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Flush the HOB variable to NV variable storage.
|
||||||
|
**/
|
||||||
|
VOID
|
||||||
|
FlushHob2Nv (
|
||||||
|
VOID
|
||||||
|
)
|
||||||
|
{
|
||||||
|
EFI_STATUS Status;
|
||||||
|
VOID *GuidHob;
|
||||||
|
VARIABLE_STORE_HEADER *VariableStoreHeader;
|
||||||
|
VARIABLE_HEADER *VariableHeader;
|
||||||
|
//
|
||||||
|
// Get HOB variable store.
|
||||||
|
//
|
||||||
|
GuidHob = GetFirstGuidHob (&gEfiAuthenticatedVariableGuid);
|
||||||
|
if (GuidHob != NULL) {
|
||||||
|
VariableStoreHeader = (VARIABLE_STORE_HEADER *) GET_GUID_HOB_DATA (GuidHob);
|
||||||
|
if (CompareGuid (&VariableStoreHeader->Signature, &gEfiAuthenticatedVariableGuid) &&
|
||||||
|
(VariableStoreHeader->Format == VARIABLE_STORE_FORMATTED) &&
|
||||||
|
(VariableStoreHeader->State == VARIABLE_STORE_HEALTHY)
|
||||||
|
) {
|
||||||
|
DEBUG ((EFI_D_INFO, "HOB Variable Store appears to be valid.\n"));
|
||||||
|
//
|
||||||
|
// Flush the HOB variable to NV Variable storage.
|
||||||
|
//
|
||||||
|
for ( VariableHeader = (VARIABLE_HEADER *) HEADER_ALIGN (VariableStoreHeader + 1)
|
||||||
|
; (VariableHeader < (VARIABLE_HEADER *) HEADER_ALIGN ((UINTN) VariableStoreHeader + VariableStoreHeader->Size)
|
||||||
|
&&
|
||||||
|
(VariableHeader->StartId == VARIABLE_DATA))
|
||||||
|
; VariableHeader = (VARIABLE_HEADER *) HEADER_ALIGN ((UINTN) (VariableHeader + 1)
|
||||||
|
+ VariableHeader->NameSize + GET_PAD_SIZE (VariableHeader->NameSize)
|
||||||
|
+ VariableHeader->DataSize + GET_PAD_SIZE (VariableHeader->DataSize)
|
||||||
|
)
|
||||||
|
) {
|
||||||
|
ASSERT (VariableHeader->State == VAR_ADDED);
|
||||||
|
ASSERT ((VariableHeader->Attributes & EFI_VARIABLE_NON_VOLATILE) != 0);
|
||||||
|
Status = EsalSetVariable (
|
||||||
|
(CHAR16 *) (VariableHeader + 1),
|
||||||
|
&VariableHeader->VendorGuid,
|
||||||
|
VariableHeader->Attributes,
|
||||||
|
VariableHeader->DataSize,
|
||||||
|
(UINT8 *) (VariableHeader + 1) + VariableHeader->NameSize + GET_PAD_SIZE (VariableHeader->NameSize),
|
||||||
|
Physical,
|
||||||
|
mVariableModuleGlobal
|
||||||
|
);
|
||||||
|
ASSERT_EFI_ERROR (Status);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Initializes variable store area for non-volatile and volatile variable.
|
Initializes variable store area for non-volatile and volatile variable.
|
||||||
|
|
||||||
|
|
|
@ -30,6 +30,7 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||||||
#include <Guid/EventGroup.h>
|
#include <Guid/EventGroup.h>
|
||||||
|
|
||||||
#include <Library/PcdLib.h>
|
#include <Library/PcdLib.h>
|
||||||
|
#include <Library/HobLib.h>
|
||||||
#include <Library/UefiDriverEntryPoint.h>
|
#include <Library/UefiDriverEntryPoint.h>
|
||||||
#include <Library/DxeServicesTableLib.h>
|
#include <Library/DxeServicesTableLib.h>
|
||||||
#include <Library/UefiRuntimeLib.h>
|
#include <Library/UefiRuntimeLib.h>
|
||||||
|
@ -493,4 +494,12 @@ IsValidVariableHeader (
|
||||||
OUT VARIABLE_HEADER *VariableHeader OPTIONAL
|
OUT VARIABLE_HEADER *VariableHeader OPTIONAL
|
||||||
);
|
);
|
||||||
|
|
||||||
|
/**
|
||||||
|
Flush the HOB variable to NV variable storage.
|
||||||
|
**/
|
||||||
|
VOID
|
||||||
|
FlushHob2Nv (
|
||||||
|
VOID
|
||||||
|
);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Reference in New Issue