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