Change MM reporting to use ReportFvLib API ReportMmFv (); This removed the hardcoded table of FV to publish. Also removed the unused "default" table.
Cc: Chasel Chiu <chasel.c...@intel.com> Cc: Nate DeSimone <nathaniel.l.desim...@intel.com> Cc: Liming Gao <gaolim...@byosoft.com.cn> Cc: Eric Dong <eric.d...@intel.com> Signed-off-by: Isaac Oram <isaac.w.o...@intel.com> --- Platform/Intel/MinPlatformPkg/Flash/SpiFvbService/SpiFvbServiceCommon.c | 16 -------- Platform/Intel/MinPlatformPkg/Flash/SpiFvbService/SpiFvbServiceCommon.h | 7 ---- Platform/Intel/MinPlatformPkg/Flash/SpiFvbService/SpiFvbServiceMm.c | 41 ++++++++++++-------- Platform/Intel/MinPlatformPkg/Flash/SpiFvbService/SpiFvbServiceSmm.inf | 1 + Platform/Intel/MinPlatformPkg/Flash/SpiFvbService/SpiFvbServiceStandaloneMm.inf | 1 + 5 files changed, 27 insertions(+), 39 deletions(-) diff --git a/Platform/Intel/MinPlatformPkg/Flash/SpiFvbService/SpiFvbServiceCommon.c b/Platform/Intel/MinPlatformPkg/Flash/SpiFvbService/SpiFvbServiceCommon.c index 113c749d04..b8a255dbf4 100644 --- a/Platform/Intel/MinPlatformPkg/Flash/SpiFvbService/SpiFvbServiceCommon.c +++ b/Platform/Intel/MinPlatformPkg/Flash/SpiFvbService/SpiFvbServiceCommon.c @@ -15,22 +15,6 @@ SPDX-License-Identifier: BSD-2-Clause-Patent // FVB_GLOBAL mFvbModuleGlobal; -// -// This platform driver knows there are multiple FVs on FD. -// Now we only provide FVs on Variable region and MicorCode region for performance issue. -// -FV_INFO mPlatformFvBaseAddress[] = { - {0, 0}, // {FixedPcdGet32(PcdFlashNvStorageVariableBase), FixedPcdGet32(PcdFlashNvStorageVariableSize)}, - {0, 0}, // {FixedPcdGet32(PcdFlashFvMicrocodeBase), FixedPcdGet32(PcdFlashFvMicrocodeSize)}, - {0, 0} -}; - -FV_INFO mPlatformDefaultBaseAddress[] = { - {0, 0}, // {FixedPcdGet32(PcdFlashNvStorageVariableBase), FixedPcdGet32(PcdFlashNvStorageVariableSize)}, - {0, 0}, // {FixedPcdGet32(PcdFlashFvMicrocodeBase), FixedPcdGet32(PcdFlashFvMicrocodeSize)}, - {0, 0} -}; - FV_MEMMAP_DEVICE_PATH mFvMemmapDevicePathTemplate = { { { diff --git a/Platform/Intel/MinPlatformPkg/Flash/SpiFvbService/SpiFvbServiceCommon.h b/Platform/Intel/MinPlatformPkg/Flash/SpiFvbService/SpiFvbServiceCommon.h index e9d69e9858..d1d61b124f 100644 --- a/Platform/Intel/MinPlatformPkg/Flash/SpiFvbService/SpiFvbServiceCommon.h +++ b/Platform/Intel/MinPlatformPkg/Flash/SpiFvbService/SpiFvbServiceCommon.h @@ -71,11 +71,6 @@ typedef struct { EFI_DEVICE_PATH_PROTOCOL EndDevPath; } FV_MEMMAP_DEVICE_PATH; -typedef struct { - UINT32 FvBase; - UINT32 FvSize; -} FV_INFO; - // // Protocol APIs // @@ -152,7 +147,5 @@ extern FVB_GLOBAL mFvbModuleGlobal; extern FV_MEMMAP_DEVICE_PATH mFvMemmapDevicePathTemplate; extern FV_PIWG_DEVICE_PATH mFvPIWGDevicePathTemplate; extern EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL mFvbProtocolTemplate; -extern FV_INFO mPlatformFvBaseAddress[]; -extern FV_INFO mPlatformDefaultBaseAddress[]; #endif diff --git a/Platform/Intel/MinPlatformPkg/Flash/SpiFvbService/SpiFvbServiceMm.c b/Platform/Intel/MinPlatformPkg/Flash/SpiFvbService/SpiFvbServiceMm.c index 016f19587c..1d8d55b8f2 100644 --- a/Platform/Intel/MinPlatformPkg/Flash/SpiFvbService/SpiFvbServiceMm.c +++ b/Platform/Intel/MinPlatformPkg/Flash/SpiFvbService/SpiFvbServiceMm.c @@ -11,6 +11,7 @@ #include "SpiFvbServiceCommon.h" #include <Library/MmServicesTableLib.h> #include <Library/UefiDriverEntryPoint.h> +#include <Library/ReportFvLib.h> #include <Protocol/SmmFirmwareVolumeBlock.h> /** @@ -97,8 +98,12 @@ InstallFvbProtocol ( The function does the necessary initialization work for Firmware Volume Block Driver. + @param VOID + + @retval EFI_SUCCESS The driver initialized successfully. + @retval EFI_UNSUPPORTED The driver failed to initialize properly. **/ -VOID +EFI_STATUS FvbInitialize ( VOID ) @@ -113,15 +118,17 @@ FvbInitialize ( UINT32 MaxLbaSize; UINT32 BytesWritten; UINTN BytesErased; + FV_INFO *BoardFvInfoTablePtr; - mPlatformFvBaseAddress[0].FvBase = PcdGet32(PcdFlashNvStorageVariableBase); - mPlatformFvBaseAddress[0].FvSize = PcdGet32(PcdFlashNvStorageVariableSize); - mPlatformFvBaseAddress[1].FvBase = PcdGet32(PcdFlashFvMicrocodeBase); - mPlatformFvBaseAddress[1].FvSize = PcdGet32(PcdFlashFvMicrocodeSize); - mPlatformDefaultBaseAddress[0].FvBase = PcdGet32(PcdFlashNvStorageVariableBase); - mPlatformDefaultBaseAddress[0].FvSize = PcdGet32(PcdFlashNvStorageVariableSize); - mPlatformDefaultBaseAddress[1].FvBase = PcdGet32(PcdFlashFvMicrocodeBase); - mPlatformDefaultBaseAddress[1].FvSize = PcdGet32(PcdFlashFvMicrocodeSize); + // + // Retrieve the FV Info from the board library + // + BoardFvInfoTablePtr = NULL; + ReportMmFv (&BoardFvInfoTablePtr); + if (!BoardFvInfoTablePtr) { + ASSERT (BoardFvInfoTablePtr != NULL); + return EFI_UNSUPPORTED; + } // // We will only continue with FVB installation if the @@ -132,11 +139,11 @@ FvbInitialize ( // Make sure all FVB are valid and/or fix if possible // for (Idx = 0;; Idx++) { - if (mPlatformFvBaseAddress[Idx].FvSize == 0 && mPlatformFvBaseAddress[Idx].FvBase == 0) { + if (BoardFvInfoTablePtr[Idx].FvSize == 0 && BoardFvInfoTablePtr[Idx].FvBase == 0) { break; } - BaseAddress = mPlatformFvBaseAddress[Idx].FvBase; + BaseAddress = BoardFvInfoTablePtr[Idx].FvBase; FvHeader = (EFI_FIRMWARE_VOLUME_HEADER *) (UINTN) BaseAddress; if (!IsFvHeaderValid (BaseAddress, FvHeader)) { @@ -192,10 +199,10 @@ FvbInitialize ( // BufferSize = 0; for (Idx = 0; ; Idx++) { - if (mPlatformFvBaseAddress[Idx].FvSize == 0 && mPlatformFvBaseAddress[Idx].FvBase == 0) { + if (BoardFvInfoTablePtr[Idx].FvSize == 0 && BoardFvInfoTablePtr[Idx].FvBase == 0) { break; } - BaseAddress = mPlatformFvBaseAddress[Idx].FvBase; + BaseAddress = BoardFvInfoTablePtr[Idx].FvBase; FvHeader = (EFI_FIRMWARE_VOLUME_HEADER *) (UINTN) BaseAddress; if (!IsFvHeaderValid (BaseAddress, FvHeader)) { @@ -212,7 +219,7 @@ FvbInitialize ( mFvbModuleGlobal.FvbInstance = (EFI_FVB_INSTANCE *) AllocateRuntimeZeroPool (BufferSize); if (mFvbModuleGlobal.FvbInstance == NULL) { ASSERT (FALSE); - return; + return EFI_SUCCESS; } MaxLbaSize = 0; @@ -220,10 +227,10 @@ FvbInitialize ( mFvbModuleGlobal.NumFv = 0; for (Idx = 0; ; Idx++) { - if (mPlatformFvBaseAddress[Idx].FvSize == 0 && mPlatformFvBaseAddress[Idx].FvBase == 0) { + if (BoardFvInfoTablePtr[Idx].FvSize == 0 && BoardFvInfoTablePtr[Idx].FvBase == 0) { break; } - BaseAddress = mPlatformFvBaseAddress[Idx].FvBase; + BaseAddress = BoardFvInfoTablePtr[Idx].FvBase; FvHeader = (EFI_FIRMWARE_VOLUME_HEADER *) (UINTN) BaseAddress; if (!IsFvHeaderValid (BaseAddress, FvHeader)) { @@ -268,4 +275,6 @@ FvbInitialize ( } } + + return EFI_SUCCESS; } diff --git a/Platform/Intel/MinPlatformPkg/Flash/SpiFvbService/SpiFvbServiceSmm.inf b/Platform/Intel/MinPlatformPkg/Flash/SpiFvbService/SpiFvbServiceSmm.inf index 10e51e1175..7b69bedcdc 100644 --- a/Platform/Intel/MinPlatformPkg/Flash/SpiFvbService/SpiFvbServiceSmm.inf +++ b/Platform/Intel/MinPlatformPkg/Flash/SpiFvbService/SpiFvbServiceSmm.inf @@ -34,6 +34,7 @@ UefiDriverEntryPoint SpiFlashCommonLib MmServicesTableLib + ReportFvLib [Packages] MdePkg/MdePkg.dec diff --git a/Platform/Intel/MinPlatformPkg/Flash/SpiFvbService/SpiFvbServiceStandaloneMm.inf b/Platform/Intel/MinPlatformPkg/Flash/SpiFvbService/SpiFvbServiceStandaloneMm.inf index 9f08d3673f..1dfb2520e7 100644 --- a/Platform/Intel/MinPlatformPkg/Flash/SpiFvbService/SpiFvbServiceStandaloneMm.inf +++ b/Platform/Intel/MinPlatformPkg/Flash/SpiFvbService/SpiFvbServiceStandaloneMm.inf @@ -33,6 +33,7 @@ MmServicesTableLib SpiFlashCommonLib StandaloneMmDriverEntryPoint + ReportFvLib [Packages] MdePkg/MdePkg.dec -- 2.27.0.windows.1 -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#82164): https://edk2.groups.io/g/devel/message/82164 Mute This Topic: https://groups.io/mt/86360116/21656 Group Owner: devel+ow...@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-