Recent changes in the EDK2 mainline resulted in breaking of compilation and booting of Armada platforms. This patch adjust the MvFvbDxe driver by:
* installation of gEdkiiNvVarStoreFormattedGuid in order to signal NvVarStoreFormattedLib to the generic variable runtime driver * making explicit dependency to ArmPkg/Drivers/CpuDxe drivers in order to enable successful calling of gDS->SetMemorySpaceAttributes Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Marcin Wojtas <m...@semihalf.com> --- Silicon/Marvell/Drivers/Spi/MvFvbDxe/MvFvbDxe.c | 21 ++++++++++++++++++++ Silicon/Marvell/Drivers/Spi/MvFvbDxe/MvFvbDxe.inf | 7 ++----- 2 files changed, 23 insertions(+), 5 deletions(-) diff --git a/Silicon/Marvell/Drivers/Spi/MvFvbDxe/MvFvbDxe.c b/Silicon/Marvell/Drivers/Spi/MvFvbDxe/MvFvbDxe.c index 252ef67..6e583a3 100644 --- a/Silicon/Marvell/Drivers/Spi/MvFvbDxe/MvFvbDxe.c +++ b/Silicon/Marvell/Drivers/Spi/MvFvbDxe/MvFvbDxe.c @@ -26,6 +26,7 @@ #include <Library/UefiLib.h> #include <Library/UefiRuntimeLib.h> +#include <Guid/NvVarStoreFormatted.h> #include <Guid/SystemNvDataGuid.h> #include <Guid/VariableFormat.h> @@ -1076,6 +1077,21 @@ MvFvbEntryPoint ( } // + // The driver implementing the variable read service can now be dispatched; + // the varstore headers are in place. + // + Status = gBS->InstallProtocolInterface (&gImageHandle, + &gEdkiiNvVarStoreFormattedGuid, + EFI_NATIVE_INTERFACE, + NULL); + if (EFI_ERROR (Status)) { + DEBUG ((DEBUG_ERROR, + "%a: Failed to install gEdkiiNvVarStoreFormattedGuid\n", + __FUNCTION__)); + goto ErrorInstallNvVarStoreFormatted; + } + + // // Declare the Non-Volatile storage as EFI_MEMORY_RUNTIME // RuntimeMmioRegionSize = mFvbDevice->FvbSize; @@ -1126,6 +1142,11 @@ ErrorSetMemAttr: gDS->RemoveMemorySpace (RegionBaseAddress, RuntimeMmioRegionSize); ErrorAddSpace: + gBS->UninstallProtocolInterface (&gImageHandle, + &gEdkiiNvVarStoreFormattedGuid, + NULL); + +ErrorInstallNvVarStoreFormatted: gBS->UninstallMultipleProtocolInterfaces (&mFvbDevice->Handle, &gEfiDevicePathProtocolGuid, &gEfiFirmwareVolumeBlockProtocolGuid, diff --git a/Silicon/Marvell/Drivers/Spi/MvFvbDxe/MvFvbDxe.inf b/Silicon/Marvell/Drivers/Spi/MvFvbDxe/MvFvbDxe.inf index 117fe8b..fd3f2f7 100644 --- a/Silicon/Marvell/Drivers/Spi/MvFvbDxe/MvFvbDxe.inf +++ b/Silicon/Marvell/Drivers/Spi/MvFvbDxe/MvFvbDxe.inf @@ -63,6 +63,7 @@ UefiRuntimeServicesTableLib [Guids] + gEdkiiNvVarStoreFormattedGuid gEfiAuthenticatedVariableGuid gEfiEventVirtualAddressChangeGuid gEfiSystemNvDataFvGuid @@ -84,8 +85,4 @@ gMarvellTokenSpaceGuid.PcdSpiMemoryBase [Depex] - # - # MvFvbDxe must be loaded before VariableRuntimeDxe in case empty - # flash needs populating with default values. - # - BEFORE gVariableRuntimeDxeFileGuid + gEfiCpuArchProtocolGuid -- 2.7.4 _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel