ArmPlatformPkg: NorFlashDxe: mellow DEBUG messages about flash reinit

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.lindholm@linaro.org>
Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Cc: Drew Jones <drjones@redhat.com>
Cc: Yehuda Yitschak <yehuday@marvell.com>
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Leif Lindholm <leif.lindholm@linaro.org>

git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@18618 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
Laszlo Ersek 2015-10-16 15:46:28 +00:00 committed by lersek
parent f813662589
commit 582085eb1f
1 changed files with 13 additions and 6 deletions

View File

@ -158,20 +158,23 @@ ValidateFvHeader (
|| (FwVolHeader->FvLength != FvLength) || (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; return EFI_NOT_FOUND;
} }
// Check the Firmware Volume Guid // Check the Firmware Volume Guid
if( CompareGuid (&FwVolHeader->FileSystemGuid, &gEfiSystemNvDataFvGuid) == FALSE ) { 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; return EFI_NOT_FOUND;
} }
// Verify the header checksum // Verify the header checksum
Checksum = CalculateSum16((UINT16*)FwVolHeader, FwVolHeader->HeaderLength); Checksum = CalculateSum16((UINT16*)FwVolHeader, FwVolHeader->HeaderLength);
if (Checksum != 0) { 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; return EFI_NOT_FOUND;
} }
@ -179,13 +182,15 @@ ValidateFvHeader (
// Check the Variable Store Guid // Check the Variable Store Guid
if (!CompareGuid (&VariableStoreHeader->Signature, mNorFlashVariableGuid)) { 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; return EFI_NOT_FOUND;
} }
VariableStoreLength = PcdGet32 (PcdFlashNvStorageVariableSize) - FwVolHeader->HeaderLength; VariableStoreLength = PcdGet32 (PcdFlashNvStorageVariableSize) - FwVolHeader->HeaderLength;
if (VariableStoreHeader->Size != VariableStoreLength) { 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; return EFI_NOT_FOUND;
} }
@ -731,7 +736,9 @@ NorFlashFvbInitialize (
// Install the Default FVB header if required // Install the Default FVB header if required
if (EFI_ERROR(Status)) { if (EFI_ERROR(Status)) {
// There is no valid header, so time to install one. // 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 // Erase all the NorFlash that is reserved for variable storage
FvbNumLba = (PcdGet32(PcdFlashNvStorageVariableSize) + PcdGet32(PcdFlashNvStorageFtwWorkingSize) + PcdGet32(PcdFlashNvStorageFtwSpareSize)) / Instance->Media.BlockSize; FvbNumLba = (PcdGet32(PcdFlashNvStorageVariableSize) + PcdGet32(PcdFlashNvStorageFtwWorkingSize) + PcdGet32(PcdFlashNvStorageFtwSpareSize)) / Instance->Media.BlockSize;