On Wed, Oct 14, 2015 at 02:30:21PM +0200, Laszlo Ersek wrote:
> The ValidateFvHeader() function checks several conditions against the
> firmware volume header. Failure of the first of these checks, reported as
> "No Firmware Volume header present", is a common situation for unformatted
> flash images, especially when a new virtual machine is created.
> 
> Similarly, "Variable Store Guid non-compatible" is common when the
> firmware binary is switched from Secure Boot-incapable to Secure
> Boot-capable, or vice versa.
> 
> The only caller of ValidateFvHeader(), NorFlashFvbInitialize(), handles
> all these mismatches by installing a new FVB header. It also emits
> another, loud ERROR message (which is even less justified when it is
> triggered by (BootMode == BOOT_WITH_DEFAULT_SETTINGS)).
> 
> Downgrade these messages from EFI_D_ERROR to EFI_D_INFO, so that they
> don't clutter the debug output when the PcdDebugPrintErrorLevel mask only
> enables EFI_D_ERROR (i.e., in a "silent" build).
> 
> These messages have annoyed / confused users; see for example:
> - https://bugzilla.redhat.com/show_bug.cgi?id=1270279
> - http://thread.gmane.org/gmane.comp.bios.edk2.devel/2772/focus=2869
> 
> Cc: Leif Lindholm <leif.lindh...@linaro.org>
> Cc: Ard Biesheuvel <ard.biesheu...@linaro.org>
> Cc: Drew Jones <drjo...@redhat.com>
> Cc: Yehuda Yitschak <yehu...@marvell.com>
> Contributed-under: TianoCore Contribution Agreement 1.0
> Signed-off-by: Laszlo Ersek <ler...@redhat.com>
> ---
> 
> Notes:
>     v2:
>     - Split long info message to separate sentences / lines in the log and
>       in the source [Leif]. Not picking up Leif's R-b just yet; let's make
>       sure he likes this.

I like this.
Reviewed-by: Leif Lindholm <leif.lindh...@linaro.org>
 
>  ArmPlatformPkg/Drivers/NorFlashDxe/NorFlashFvbDxe.c | 19 +++++++++++++------
>  1 file changed, 13 insertions(+), 6 deletions(-)
> 
> diff --git a/ArmPlatformPkg/Drivers/NorFlashDxe/NorFlashFvbDxe.c 
> b/ArmPlatformPkg/Drivers/NorFlashDxe/NorFlashFvbDxe.c
> index 3ed3bb9..e0edc62 100644
> --- a/ArmPlatformPkg/Drivers/NorFlashDxe/NorFlashFvbDxe.c
> +++ b/ArmPlatformPkg/Drivers/NorFlashDxe/NorFlashFvbDxe.c
> @@ -158,20 +158,23 @@ ValidateFvHeader (
>        || (FwVolHeader->FvLength  != FvLength)
>        )
>    {
> -    DEBUG ((EFI_D_ERROR, "ValidateFvHeader: No Firmware Volume header 
> present\n"));
> +    DEBUG ((EFI_D_INFO, "%a: No Firmware Volume header present\n",
> +      __FUNCTION__));
>      return EFI_NOT_FOUND;
>    }
>  
>    // Check the Firmware Volume Guid
>    if( CompareGuid (&FwVolHeader->FileSystemGuid, &gEfiSystemNvDataFvGuid) == 
> FALSE ) {
> -    DEBUG ((EFI_D_ERROR, "ValidateFvHeader: Firmware Volume Guid 
> non-compatible\n"));
> +    DEBUG ((EFI_D_INFO, "%a: Firmware Volume Guid non-compatible\n",
> +      __FUNCTION__));
>      return EFI_NOT_FOUND;
>    }
>  
>    // Verify the header checksum
>    Checksum = CalculateSum16((UINT16*)FwVolHeader, FwVolHeader->HeaderLength);
>    if (Checksum != 0) {
> -    DEBUG ((EFI_D_ERROR, "ValidateFvHeader: FV checksum is invalid 
> (Checksum:0x%X)\n",Checksum));
> +    DEBUG ((EFI_D_INFO, "%a: FV checksum is invalid (Checksum:0x%X)\n",
> +      __FUNCTION__, Checksum));
>      return EFI_NOT_FOUND;
>    }
>  
> @@ -179,13 +182,15 @@ ValidateFvHeader (
>  
>    // Check the Variable Store Guid
>    if (!CompareGuid (&VariableStoreHeader->Signature, mNorFlashVariableGuid)) 
> {
> -    DEBUG ((EFI_D_ERROR, "ValidateFvHeader: Variable Store Guid 
> non-compatible\n"));
> +    DEBUG ((EFI_D_INFO, "%a: Variable Store Guid non-compatible\n",
> +      __FUNCTION__));
>      return EFI_NOT_FOUND;
>    }
>  
>    VariableStoreLength = PcdGet32 (PcdFlashNvStorageVariableSize) - 
> FwVolHeader->HeaderLength;
>    if (VariableStoreHeader->Size != VariableStoreLength) {
> -    DEBUG ((EFI_D_ERROR, "ValidateFvHeader: Variable Store Length does not 
> match\n"));
> +    DEBUG ((EFI_D_INFO, "%a: Variable Store Length does not match\n",
> +      __FUNCTION__));
>      return EFI_NOT_FOUND;
>    }
>  
> @@ -731,7 +736,9 @@ NorFlashFvbInitialize (
>    // Install the Default FVB header if required
>    if (EFI_ERROR(Status)) {
>      // There is no valid header, so time to install one.
> -    DEBUG((EFI_D_ERROR,"NorFlashFvbInitialize: ERROR - The FVB Header is not 
> valid. Installing a correct one for this volume.\n"));
> +    DEBUG ((EFI_D_INFO, "%a: The FVB Header is not valid.\n", __FUNCTION__));
> +    DEBUG ((EFI_D_INFO, "%a: Installing a correct one for this volume.\n",
> +      __FUNCTION__));
>  
>      // Erase all the NorFlash that is reserved for variable storage
>      FvbNumLba = (PcdGet32(PcdFlashNvStorageVariableSize) + 
> PcdGet32(PcdFlashNvStorageFtwWorkingSize) + 
> PcdGet32(PcdFlashNvStorageFtwSpareSize)) / Instance->Media.BlockSize;
> -- 
> 1.8.3.1
> 
> 
_______________________________________________
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel

Reply via email to