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:
Laszlo Ersek 2017-03-12 20:51:08 +01:00
parent 11a6cc5bda
commit 6d7af0c9bc
2 changed files with 5 additions and 77 deletions

View File

@ -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

View File

@ -68,9 +68,6 @@
gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwSpareBase
gEfiMdeModulePkgTokenSpaceGuid.PcdEmuVariableNvStoreReserved
[FeaturePcd]
gUefiOvmfPkgTokenSpaceGuid.PcdSecureBootEnable
[Depex]
TRUE