mirror of https://github.com/acidanthera/audk.git
OvmfPkg/EmuVariableFvbRuntimeDxe: always format an auth varstore header
In this patch, we extend commit d92eaabefb
("OvmfPkg: simplify
VARIABLE_STORE_HEADER generation", 2016-02-05) to
EmuVariableFvbRuntimeDxe.
This is the difference between FvAndVarTemplate and
FvAndAuthenticatedVarTemplate:
> --- non-auth 2017-05-05 22:32:06.001512283 +0200
> +++ auth 2017-05-05 22:32:18.841364882 +0200
> @@ -1,7 +1,7 @@
> //
> - // Templates for standard (non-authenticated) variable FV header
> + // Templates for authenticated variable FV header
> //
> - STATIC FVB_FV_HDR_AND_VARS_TEMPLATE FvAndVarTemplate = {
> + STATIC FVB_FV_HDR_AND_VARS_TEMPLATE FvAndAuthenticatedVarTemplate = {
> { // EFI_FIRMWARE_VOLUME_HEADER FvHdr;
> // UINT8 ZeroVector[16];
> { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
> @@ -34,7 +34,7 @@
> EFI_FVH_REVISION,
>
> // EFI_FV_BLOCK_MAP_ENTRY BlockMap[1];
> - {
> + {
> {
> 2, // UINT32 NumBlocks;
> EMU_FVB_BLOCK_SIZE // UINT32 Length;
> @@ -44,8 +44,8 @@
> // EFI_FV_BLOCK_MAP_ENTRY EndBlockMap;
> { 0, 0 }, // End of block map
> { // VARIABLE_STORE_HEADER VarHdr;
> - // EFI_GUID Signature;
> - EFI_VARIABLE_GUID,
> + // EFI_GUID Signature; // need authenticated variables for secure boot
> + EFI_AUTHENTICATED_VARIABLE_GUID,
>
> // UINT32 Size;
> (
After this change, using "-bios", the variable driver logs:
- with the SB feature enabled:
> Variable driver will work with auth variable format!
> Variable driver will work with auth variable support!
- with the SB feature disabled:
> Variable driver will work with auth variable format!
> Variable driver will continue to work without auth variable support!
Cc: Jordan Justen <jordan.l.justen@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
This commit is contained in:
parent
11a6cc5bda
commit
6d7af0c9bc
|
@ -625,75 +625,6 @@ InitializeFvAndVariableStoreHeaders (
|
|||
IN VOID *Ptr
|
||||
)
|
||||
{
|
||||
//
|
||||
// Templates for standard (non-authenticated) variable FV header
|
||||
//
|
||||
STATIC FVB_FV_HDR_AND_VARS_TEMPLATE FvAndVarTemplate = {
|
||||
{ // EFI_FIRMWARE_VOLUME_HEADER FvHdr;
|
||||
// UINT8 ZeroVector[16];
|
||||
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
|
||||
|
||||
// EFI_GUID FileSystemGuid;
|
||||
EFI_SYSTEM_NV_DATA_FV_GUID,
|
||||
|
||||
// UINT64 FvLength;
|
||||
EMU_FVB_SIZE,
|
||||
|
||||
// UINT32 Signature;
|
||||
EFI_FVH_SIGNATURE,
|
||||
|
||||
// EFI_FVB_ATTRIBUTES_2 Attributes;
|
||||
0x4feff,
|
||||
|
||||
// UINT16 HeaderLength;
|
||||
EMU_FV_HEADER_LENGTH,
|
||||
|
||||
// UINT16 Checksum;
|
||||
0,
|
||||
|
||||
// UINT16 ExtHeaderOffset;
|
||||
0,
|
||||
|
||||
// UINT8 Reserved[1];
|
||||
{0},
|
||||
|
||||
// UINT8 Revision;
|
||||
EFI_FVH_REVISION,
|
||||
|
||||
// EFI_FV_BLOCK_MAP_ENTRY BlockMap[1];
|
||||
{
|
||||
{
|
||||
2, // UINT32 NumBlocks;
|
||||
EMU_FVB_BLOCK_SIZE // UINT32 Length;
|
||||
}
|
||||
}
|
||||
},
|
||||
// EFI_FV_BLOCK_MAP_ENTRY EndBlockMap;
|
||||
{ 0, 0 }, // End of block map
|
||||
{ // VARIABLE_STORE_HEADER VarHdr;
|
||||
// EFI_GUID Signature;
|
||||
EFI_VARIABLE_GUID,
|
||||
|
||||
// UINT32 Size;
|
||||
(
|
||||
FixedPcdGet32 (PcdVariableStoreSize) -
|
||||
OFFSET_OF (FVB_FV_HDR_AND_VARS_TEMPLATE, VarHdr)
|
||||
),
|
||||
|
||||
// UINT8 Format;
|
||||
VARIABLE_STORE_FORMATTED,
|
||||
|
||||
// UINT8 State;
|
||||
VARIABLE_STORE_HEALTHY,
|
||||
|
||||
// UINT16 Reserved;
|
||||
0,
|
||||
|
||||
// UINT32 Reserved1;
|
||||
0
|
||||
}
|
||||
};
|
||||
|
||||
//
|
||||
// Templates for authenticated variable FV header
|
||||
//
|
||||
|
@ -768,11 +699,11 @@ InitializeFvAndVariableStoreHeaders (
|
|||
//
|
||||
// Copy the template structure into the location
|
||||
//
|
||||
if (FeaturePcdGet (PcdSecureBootEnable) == FALSE) {
|
||||
CopyMem (Ptr, (VOID*)&FvAndVarTemplate, sizeof (FvAndVarTemplate));
|
||||
} else {
|
||||
CopyMem (Ptr, (VOID*)&FvAndAuthenticatedVarTemplate, sizeof (FvAndAuthenticatedVarTemplate));
|
||||
}
|
||||
CopyMem (
|
||||
Ptr,
|
||||
&FvAndAuthenticatedVarTemplate,
|
||||
sizeof FvAndAuthenticatedVarTemplate
|
||||
);
|
||||
|
||||
//
|
||||
// Update the checksum for the FV header
|
||||
|
|
|
@ -68,9 +68,6 @@
|
|||
gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwSpareBase
|
||||
gEfiMdeModulePkgTokenSpaceGuid.PcdEmuVariableNvStoreReserved
|
||||
|
||||
[FeaturePcd]
|
||||
gUefiOvmfPkgTokenSpaceGuid.PcdSecureBootEnable
|
||||
|
||||
[Depex]
|
||||
TRUE
|
||||
|
||||
|
|
Loading…
Reference in New Issue