[edk2-devel] [edk2-platforms][PATCH v3 25/41] MinPlatformPkg: Remove SpiFvbService modules

Michael Kubacki mikuback at linux.microsoft.com
Fri Jun 18 02:07:10 UTC 2021


From: Michael Kubacki <michael.kubacki at microsoft.com>

REF:https://bugzilla.tianocore.org/show_bug.cgi?id=3307

SpiFvbServiceSmm and SpiFvbServiceStandaloneMm have moved to
IntelSiliconPkg.

Cc: Chasel Chiu <chasel.chiu at intel.com>
Cc: Nate DeSimone <nathaniel.l.desimone at intel.com>
Cc: Liming Gao <gaoliming at byosoft.com.cn>
Cc: Eric Dong <eric.dong at intel.com>
Signed-off-by: Michael Kubacki <michael.kubacki at microsoft.com>
Reviewed-by: Nate DeSimone <nathaniel.l.desimone at intel.com>
Reviewed-by: Chasel Chiu <chasel.chiu at intel.com>
---
 Platform/Intel/MinPlatformPkg/Flash/SpiFvbService/FvbInfo.c                     |  94 --
 Platform/Intel/MinPlatformPkg/Flash/SpiFvbService/SpiFvbServiceCommon.c         | 903 --------------------
 Platform/Intel/MinPlatformPkg/Flash/SpiFvbService/SpiFvbServiceMm.c             | 271 ------
 Platform/Intel/MinPlatformPkg/Flash/SpiFvbService/SpiFvbServiceStandaloneMm.c   |  32 -
 Platform/Intel/MinPlatformPkg/Flash/SpiFvbService/SpiFvbServiceTraditionalMm.c  |  32 -
 Platform/Intel/MinPlatformPkg/Flash/SpiFvbService/SpiFvbServiceCommon.h         | 158 ----
 Platform/Intel/MinPlatformPkg/Flash/SpiFvbService/SpiFvbServiceMm.h             |  22 -
 Platform/Intel/MinPlatformPkg/Flash/SpiFvbService/SpiFvbServiceSmm.inf          |  68 --
 Platform/Intel/MinPlatformPkg/Flash/SpiFvbService/SpiFvbServiceStandaloneMm.inf |  67 --
 Platform/Intel/MinPlatformPkg/MinPlatformPkg.dsc                                |   2 -
 10 files changed, 1649 deletions(-)

diff --git a/Platform/Intel/MinPlatformPkg/Flash/SpiFvbService/FvbInfo.c b/Platform/Intel/MinPlatformPkg/Flash/SpiFvbService/FvbInfo.c
deleted file mode 100644
index 7f2678fa9e5a..000000000000
--- a/Platform/Intel/MinPlatformPkg/Flash/SpiFvbService/FvbInfo.c
+++ /dev/null
@@ -1,94 +0,0 @@
-/**@file
-  Defines data structure that is the volume header found.
-  These data is intent to decouple FVB driver with FV header.
-
-Copyright (c) 2017, Intel Corporation. All rights reserved.<BR>
-SPDX-License-Identifier: BSD-2-Clause-Patent
-
-**/
-
-#include "SpiFvbServiceCommon.h"
-
-#define FIRMWARE_BLOCK_SIZE         0x10000
-#define FVB_MEDIA_BLOCK_SIZE        FIRMWARE_BLOCK_SIZE
-
-#define NV_STORAGE_BASE_ADDRESS     FixedPcdGet32(PcdFlashNvStorageVariableBase)
-#define SYSTEM_NV_BLOCK_NUM         ((FixedPcdGet32(PcdFlashNvStorageVariableSize)+ FixedPcdGet32(PcdFlashNvStorageFtwWorkingSize) + FixedPcdGet32(PcdFlashNvStorageFtwSpareSize))/ FVB_MEDIA_BLOCK_SIZE)
-
-typedef struct {
-  EFI_PHYSICAL_ADDRESS        BaseAddress;
-  EFI_FIRMWARE_VOLUME_HEADER  FvbInfo;
-  EFI_FV_BLOCK_MAP_ENTRY      End[1];
-} EFI_FVB2_MEDIA_INFO;
-
-//
-// This data structure contains a template of all correct FV headers, which is used to restore
-// Fv header if it's corrupted.
-//
-EFI_FVB2_MEDIA_INFO mPlatformFvbMediaInfo[] = {
-  //
-  // Systen NvStorage FVB
-  //
-  {
-    NV_STORAGE_BASE_ADDRESS,
-    {
-      {0,}, //ZeroVector[16]
-      EFI_SYSTEM_NV_DATA_FV_GUID,
-      FVB_MEDIA_BLOCK_SIZE * SYSTEM_NV_BLOCK_NUM,
-      EFI_FVH_SIGNATURE,
-      0x0004feff, // check MdePkg/Include/Pi/PiFirmwareVolume.h for details on EFI_FVB_ATTRIBUTES_2
-      sizeof (EFI_FIRMWARE_VOLUME_HEADER) + sizeof (EFI_FV_BLOCK_MAP_ENTRY),
-      0,    //CheckSum which will be calucated dynamically.
-      0,    //ExtHeaderOffset
-      {0,}, //Reserved[1]
-      2,    //Revision
-      {
-        {
-          SYSTEM_NV_BLOCK_NUM,
-          FVB_MEDIA_BLOCK_SIZE,
-        }
-      }
-    },
-    {
-      {
-        0,
-        0
-      }
-    }
-  }
-};
-
-EFI_STATUS
-GetFvbInfo (
-  IN  EFI_PHYSICAL_ADDRESS         FvBaseAddress,
-  OUT EFI_FIRMWARE_VOLUME_HEADER   **FvbInfo
-  )
-{
-  UINTN                       Index;
-  EFI_FIRMWARE_VOLUME_HEADER  *FvHeader;
-
-  for (Index = 0; Index < sizeof (mPlatformFvbMediaInfo) / sizeof (EFI_FVB2_MEDIA_INFO); Index++) {
-    if (mPlatformFvbMediaInfo[Index].BaseAddress == FvBaseAddress) {
-      FvHeader = &mPlatformFvbMediaInfo[Index].FvbInfo;
-
-      //
-      // Update the checksum value of FV header.
-      //
-      FvHeader->Checksum = CalculateCheckSum16 ( (UINT16 *) FvHeader, FvHeader->HeaderLength);
-
-      *FvbInfo = FvHeader;
-
-      DEBUG ((DEBUG_INFO, "BaseAddr: 0x%lx \n", FvBaseAddress));
-      DEBUG ((DEBUG_INFO, "FvLength: 0x%lx \n", (*FvbInfo)->FvLength));
-      DEBUG ((DEBUG_INFO, "HeaderLength: 0x%x \n", (*FvbInfo)->HeaderLength));
-      DEBUG ((DEBUG_INFO, "Header Checksum: 0x%X\n", (*FvbInfo)->Checksum));
-      DEBUG ((DEBUG_INFO, "FvBlockMap[0].NumBlocks: 0x%x \n", (*FvbInfo)->BlockMap[0].NumBlocks));
-      DEBUG ((DEBUG_INFO, "FvBlockMap[0].BlockLength: 0x%x \n", (*FvbInfo)->BlockMap[0].Length));
-      DEBUG ((DEBUG_INFO, "FvBlockMap[1].NumBlocks: 0x%x \n", (*FvbInfo)->BlockMap[1].NumBlocks));
-      DEBUG ((DEBUG_INFO, "FvBlockMap[1].BlockLength: 0x%x \n\n", (*FvbInfo)->BlockMap[1].Length));
-
-      return EFI_SUCCESS;
-    }
-  }
-  return EFI_NOT_FOUND;
-}
diff --git a/Platform/Intel/MinPlatformPkg/Flash/SpiFvbService/SpiFvbServiceCommon.c b/Platform/Intel/MinPlatformPkg/Flash/SpiFvbService/SpiFvbServiceCommon.c
deleted file mode 100644
index 113c749d04ff..000000000000
--- a/Platform/Intel/MinPlatformPkg/Flash/SpiFvbService/SpiFvbServiceCommon.c
+++ /dev/null
@@ -1,903 +0,0 @@
-/** @file
-  Common driver source for several Serial Flash devices
-  which are compliant with the Intel(R) Serial Flash Interface Compatibility Specification.
-
-Copyright (c) 2017, Intel Corporation. All rights reserved.<BR>
-SPDX-License-Identifier: BSD-2-Clause-Patent
-
-**/
-
-#include "SpiFvbServiceCommon.h"
-
-//
-// Global variable for this FVB driver  which contains
-// the private data of all firmware volume block instances
-//
-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 = {
-  {
-    {
-      HARDWARE_DEVICE_PATH,
-      HW_MEMMAP_DP,
-      {
-        (UINT8)(sizeof (MEMMAP_DEVICE_PATH)),
-        (UINT8)(sizeof (MEMMAP_DEVICE_PATH) >> 8)
-      }
-    },
-    EfiMemoryMappedIO,
-    (EFI_PHYSICAL_ADDRESS) 0,
-    (EFI_PHYSICAL_ADDRESS) 0,
-  },
-  {
-    END_DEVICE_PATH_TYPE,
-    END_ENTIRE_DEVICE_PATH_SUBTYPE,
-    {
-      END_DEVICE_PATH_LENGTH,
-      0
-    }
-  }
-};
-
-FV_PIWG_DEVICE_PATH mFvPIWGDevicePathTemplate = {
-  {
-    {
-      MEDIA_DEVICE_PATH,
-      MEDIA_PIWG_FW_VOL_DP,
-      {
-        (UINT8)(sizeof (MEDIA_FW_VOL_DEVICE_PATH)),
-        (UINT8)(sizeof (MEDIA_FW_VOL_DEVICE_PATH) >> 8)
-      }
-    },
-    { 0 }
-  },
-  {
-    END_DEVICE_PATH_TYPE,
-    END_ENTIRE_DEVICE_PATH_SUBTYPE,
-    {
-      END_DEVICE_PATH_LENGTH,
-      0
-    }
-  }
-};
-
-//
-// Template structure used when installing FVB protocol
-//
-EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL mFvbProtocolTemplate = {
-  FvbProtocolGetAttributes,
-  FvbProtocolSetAttributes,
-  FvbProtocolGetPhysicalAddress,
-  FvbProtocolGetBlockSize,
-  FvbProtocolRead,
-  FvbProtocolWrite,
-  FvbProtocolEraseBlocks,
-  NULL
-};
-
-/**
-  Get the EFI_FVB_ATTRIBUTES_2 of a FV.
-
-  @param[in]  FvbInstance The pointer to the EFI_FVB_INSTANCE.
-
-  @return     Attributes of the FV identified by FvbInstance.
-
-**/
-EFI_FVB_ATTRIBUTES_2
-FvbGetVolumeAttributes (
-  IN EFI_FVB_INSTANCE         *FvbInstance
-  )
-{
-  return FvbInstance->FvHeader.Attributes;
-}
-
-/**
-  Retrieves the starting address of an LBA in an FV. It also
-  return a few other attribut of the FV.
-
-  @param[in]  FvbInstance     The pointer to the EFI_FVB_INSTANCE.
-  @param[in]  Lba             The logical block address
-  @param[out] LbaAddress      On output, contains the physical starting address
-                              of the Lba
-  @param[out] LbaLength       On output, contains the length of the block
-  @param[out] NumOfBlocks     A pointer to a caller allocated UINTN in which the
-                              number of consecutive blocks starting with Lba is
-                              returned. All blocks in this range have a size of
-                              BlockSize
-
-  @retval   EFI_SUCCESS Successfully returns
-  @retval   EFI_INVALID_PARAMETER Instance not found
-
-**/
-EFI_STATUS
-FvbGetLbaAddress (
-  IN  EFI_FVB_INSTANCE                    *FvbInstance,
-  IN  EFI_LBA                             Lba,
-  OUT UINTN                               *LbaAddress,
-  OUT UINTN                               *LbaLength,
-  OUT UINTN                               *NumOfBlocks
-  )
-{
-  UINT32                                  NumBlocks;
-  UINT32                                  BlockLength;
-  UINTN                                   Offset;
-  EFI_LBA                                 StartLba;
-  EFI_LBA                                 NextLba;
-  EFI_FV_BLOCK_MAP_ENTRY                  *BlockMap;
-
-  StartLba  = 0;
-  Offset    = 0;
-  BlockMap  = &(FvbInstance->FvHeader.BlockMap[0]);
-
-  //
-  // Parse the blockmap of the FV to find which map entry the Lba belongs to
-  //
-  while (TRUE) {
-    NumBlocks   = BlockMap->NumBlocks;
-    BlockLength = BlockMap->Length;
-
-    if ( NumBlocks == 0 || BlockLength == 0) {
-      return EFI_INVALID_PARAMETER;
-    }
-
-    NextLba = StartLba + NumBlocks;
-
-    //
-    // The map entry found
-    //
-    if (Lba >= StartLba && Lba < NextLba) {
-      Offset = Offset + (UINTN)MultU64x32((Lba - StartLba), BlockLength);
-      if (LbaAddress ) {
-        *LbaAddress = FvbInstance->FvBase + Offset;
-      }
-
-      if (LbaLength ) {
-        *LbaLength = BlockLength;
-      }
-
-      if (NumOfBlocks ) {
-        *NumOfBlocks = (UINTN)(NextLba - Lba);
-      }
-      return EFI_SUCCESS;
-    }
-
-    StartLba  = NextLba;
-    Offset    = Offset + NumBlocks * BlockLength;
-    BlockMap++;
-  }
-}
-
-/**
-  Reads specified number of bytes into a buffer from the specified block.
-
-  @param[in]      FvbInstance           The pointer to the EFI_FVB_INSTANCE
-  @param[in]      Lba                   The logical block address to be read from
-  @param[in]      BlockOffset           Offset into the block at which to begin reading
-  @param[in]      NumBytes              Pointer that on input contains the total size of
-                                        the buffer. On output, it contains the total number
-                                        of bytes read
-  @param[in]      Buffer                Pointer to a caller allocated buffer that will be
-                                        used to hold the data read
-
-
-  @retval         EFI_SUCCESS           The firmware volume was read successfully and
-                                        contents are in Buffer
-  @retval         EFI_BAD_BUFFER_SIZE   Read attempted across a LBA boundary. On output,
-                                        NumBytes contains the total number of bytes returned
-                                        in Buffer
-  @retval         EFI_ACCESS_DENIED     The firmware volume is in the ReadDisabled state
-  @retval         EFI_DEVICE_ERROR      The block device is not functioning correctly and
-                                        could not be read
-  @retval         EFI_INVALID_PARAMETER Instance not found, or NumBytes, Buffer are NULL
-
-**/
-EFI_STATUS
-FvbReadBlock (
-  IN EFI_FVB_INSTANCE                     *FvbInstance,
-  IN EFI_LBA                              Lba,
-  IN UINTN                                BlockOffset,
-  IN OUT UINTN                            *NumBytes,
-  IN UINT8                                *Buffer
-  )
-{
-  EFI_FVB_ATTRIBUTES_2                    Attributes;
-  UINTN                                   LbaAddress;
-  UINTN                                   LbaLength;
-  EFI_STATUS                              Status;
-  BOOLEAN                                 BadBufferSize = FALSE;
-
-  if ((NumBytes == NULL) || (Buffer == NULL)) {
-    return EFI_INVALID_PARAMETER;
-  }
-  if (*NumBytes == 0) {
-    return EFI_INVALID_PARAMETER;
-  }
-
-  Status = FvbGetLbaAddress (FvbInstance, Lba, &LbaAddress, &LbaLength, NULL);
-  if (EFI_ERROR(Status)) {
-    return Status;
-  }
-
-  Attributes = FvbGetVolumeAttributes (FvbInstance);
-
-  if ((Attributes & EFI_FVB2_READ_STATUS) == 0) {
-    return EFI_ACCESS_DENIED;
-  }
-
-  if (BlockOffset > LbaLength) {
-   return EFI_INVALID_PARAMETER;
-  }
-
-  if (LbaLength < (*NumBytes + BlockOffset)) {
-    DEBUG ((DEBUG_INFO,
-      "FvReadBlock: Reducing Numbytes from 0x%x to 0x%x\n",
-      *NumBytes,
-      (UINT32)(LbaLength - BlockOffset))
-      );
-    *NumBytes     = (UINT32) (LbaLength - BlockOffset);
-    BadBufferSize = TRUE;
-  }
-
-  Status = SpiFlashRead (LbaAddress + BlockOffset, (UINT32 *)NumBytes, Buffer);
-
-  if (!EFI_ERROR (Status) && BadBufferSize) {
-    return EFI_BAD_BUFFER_SIZE;
-  } else {
-    return Status;
-  }
-}
-
-/**
-  Writes specified number of bytes from the input buffer to the block.
-
-  @param[in]  FvbInstance           The pointer to the EFI_FVB_INSTANCE
-  @param[in]  Lba                   The starting logical block index to write to
-  @param[in]  BlockOffset           Offset into the block at which to begin writing
-  @param[in]  NumBytes              Pointer that on input contains the total size of
-                                    the buffer. On output, it contains the total number
-                                    of bytes actually written
-  @param[in]  Buffer                Pointer to a caller allocated buffer that contains
-                                    the source for the write
-  @retval     EFI_SUCCESS           The firmware volume was written successfully
-  @retval     EFI_BAD_BUFFER_SIZE   Write attempted across a LBA boundary. On output,
-                                    NumBytes contains the total number of bytes
-                                    actually written
-  @retval     EFI_ACCESS_DENIED     The firmware volume is in the WriteDisabled state
-  @retval     EFI_DEVICE_ERROR      The block device is not functioning correctly and
-                                    could not be written
-  @retval     EFI_INVALID_PARAMETER Instance not found, or NumBytes, Buffer are NULL
-
-**/
-EFI_STATUS
-FvbWriteBlock (
-  IN EFI_FVB_INSTANCE                     *FvbInstance,
-  IN EFI_LBA                              Lba,
-  IN UINTN                                BlockOffset,
-  IN OUT UINTN                            *NumBytes,
-  IN UINT8                                *Buffer
-  )
-{
-  EFI_FVB_ATTRIBUTES_2                    Attributes;
-  UINTN                                   LbaAddress;
-  UINTN                                   LbaLength;
-  EFI_STATUS                              Status;
-  BOOLEAN                                 BadBufferSize = FALSE;
-
-  if ((NumBytes == NULL) || (Buffer == NULL)) {
-    return EFI_INVALID_PARAMETER;
-  }
-  if (*NumBytes == 0) {
-    return EFI_INVALID_PARAMETER;
-  }
-
-  Status = FvbGetLbaAddress (FvbInstance, Lba, &LbaAddress, &LbaLength, NULL);
-  if (EFI_ERROR(Status)) {
-    return Status;
-  }
-
-  //
-  // Check if the FV is write enabled
-  //
-  Attributes = FvbGetVolumeAttributes (FvbInstance);
-  if ((Attributes & EFI_FVB2_WRITE_STATUS) == 0)  {
-    return EFI_ACCESS_DENIED;
-  }
-
-  //
-  // Perform boundary checks and adjust NumBytes
-  //
-  if (BlockOffset > LbaLength) {
-    return EFI_INVALID_PARAMETER;
-  }
-
-  if (LbaLength < (*NumBytes + BlockOffset)) {
-    DEBUG ((DEBUG_INFO,
-      "FvWriteBlock: Reducing Numbytes from 0x%x to 0x%x\n",
-      *NumBytes,
-      (UINT32)(LbaLength - BlockOffset))
-      );
-    *NumBytes     = (UINT32) (LbaLength - BlockOffset);
-    BadBufferSize = TRUE;
-  }
-
-  Status = SpiFlashWrite (LbaAddress + BlockOffset, (UINT32 *)NumBytes, Buffer);
-  if (EFI_ERROR (Status)) {
-    return Status;
-  }
-
-  Status = SpiFlashLock ();
-  if (EFI_ERROR (Status)) {
-    return Status;
-  }
-
-  WriteBackInvalidateDataCacheRange ((VOID *) (LbaAddress + BlockOffset), *NumBytes);
-
-  if (!EFI_ERROR (Status) && BadBufferSize) {
-    return EFI_BAD_BUFFER_SIZE;
-  } else {
-    return Status;
-  }
-}
-
-
-
-/**
-  Erases and initializes a firmware volume block.
-
-  @param[in]    FvbInstance       The pointer to the EFI_FVB_INSTANCE
-  @param[in]    Lba               The logical block index to be erased
-
-  @retval   EFI_SUCCESS           The erase request was successfully completed
-  @retval   EFI_ACCESS_DENIED     The firmware volume is in the WriteDisabled state
-  @retval   EFI_DEVICE_ERROR      The block device is not functioning correctly and
-                                  could not be written. Firmware device may have been
-                                  partially erased
-  @retval   EFI_INVALID_PARAMETER Instance not found
-
-**/
-EFI_STATUS
-FvbEraseBlock (
-  IN EFI_FVB_INSTANCE           *FvbInstance,
-  IN EFI_LBA                    Lba
-  )
-{
-
-  EFI_FVB_ATTRIBUTES_2                    Attributes;
-  UINTN                                   LbaAddress;
-  UINTN                                   LbaLength;
-  EFI_STATUS                              Status;
-
-  //
-  // Check if the FV is write enabled
-  //
-  Attributes = FvbGetVolumeAttributes (FvbInstance);
-
-  if( (Attributes & EFI_FVB2_WRITE_STATUS) == 0)  {
-    return EFI_ACCESS_DENIED;
-  }
-
-  //
-  // Get the starting address of the block for erase.
-  //
-  Status = FvbGetLbaAddress (FvbInstance, Lba, &LbaAddress, &LbaLength, NULL);
-  if (EFI_ERROR(Status)) {
-    return Status;
-  }
-
-  Status = SpiFlashBlockErase (LbaAddress, &LbaLength);
-  if (EFI_ERROR (Status)) {
-    return Status;
-  }
-
-  Status = SpiFlashLock ();
-  if (EFI_ERROR (Status)) {
-    return Status;
-  }
-
-  WriteBackInvalidateDataCacheRange ((VOID *) LbaAddress, LbaLength);
-
-  return Status;
-}
-
-/**
-  Modifies the current settings of the firmware volume according to the
-  input parameter, and returns the new setting of the volume
-
-  @param[in]  FvbInstance           The pointer to the EFI_FVB_INSTANCE.
-  @param[in]  Attributes            On input, it is a pointer to EFI_FVB_ATTRIBUTES_2
-                                    containing the desired firmware volume settings.
-                                    On successful return, it contains the new settings
-                                    of the firmware volume
-
-  @retval     EFI_SUCCESS           Successfully returns
-  @retval     EFI_ACCESS_DENIED     The volume setting is locked and cannot be modified
-  @retval     EFI_INVALID_PARAMETER Instance not found, or The attributes requested are
-                                    in conflict with the capabilities as declared in the
-                                    firmware volume header
-
-**/
-EFI_STATUS
-FvbSetVolumeAttributes (
-  IN EFI_FVB_INSTANCE                     *FvbInstance,
-  IN OUT EFI_FVB_ATTRIBUTES_2             *Attributes
-  )
-{
-  EFI_FVB_ATTRIBUTES_2                      OldAttributes;
-  EFI_FVB_ATTRIBUTES_2                      *AttribPtr;
-  EFI_FVB_ATTRIBUTES_2                      UnchangedAttributes;
-  UINT32                                    Capabilities;
-  UINT32                                    OldStatus, NewStatus;
-
-  AttribPtr     = (EFI_FVB_ATTRIBUTES_2 *) &(FvbInstance->FvHeader.Attributes);
-  OldAttributes = *AttribPtr;
-  Capabilities  = OldAttributes & EFI_FVB2_CAPABILITIES;
-  OldStatus     = OldAttributes & EFI_FVB2_STATUS;
-  NewStatus     = *Attributes & EFI_FVB2_STATUS;
-
-  UnchangedAttributes = EFI_FVB2_READ_DISABLED_CAP  | \
-                        EFI_FVB2_READ_ENABLED_CAP   | \
-                        EFI_FVB2_WRITE_DISABLED_CAP | \
-                        EFI_FVB2_WRITE_ENABLED_CAP  | \
-                        EFI_FVB2_LOCK_CAP           | \
-                        EFI_FVB2_STICKY_WRITE       | \
-                        EFI_FVB2_MEMORY_MAPPED      | \
-                        EFI_FVB2_ERASE_POLARITY     | \
-                        EFI_FVB2_READ_LOCK_CAP      | \
-                        EFI_FVB2_WRITE_LOCK_CAP     | \
-                        EFI_FVB2_ALIGNMENT;
-
-  //
-  // Some attributes of FV is read only can *not* be set
-  //
-  if ((OldAttributes & UnchangedAttributes) ^ (*Attributes & UnchangedAttributes)) {
-    return EFI_INVALID_PARAMETER;
-  }
-
-  //
-  // If firmware volume is locked, no status bit can be updated
-  //
-  if ( OldAttributes & EFI_FVB2_LOCK_STATUS ) {
-    if ( OldStatus ^ NewStatus ) {
-      return EFI_ACCESS_DENIED;
-    }
-  }
-
-  //
-  // Test read disable
-  //
-  if ((Capabilities & EFI_FVB2_READ_DISABLED_CAP) == 0) {
-    if ((NewStatus & EFI_FVB2_READ_STATUS) == 0) {
-      return EFI_INVALID_PARAMETER;
-    }
-  }
-
-  //
-  // Test read enable
-  //
-  if ((Capabilities & EFI_FVB2_READ_ENABLED_CAP) == 0) {
-    if (NewStatus & EFI_FVB2_READ_STATUS) {
-      return EFI_INVALID_PARAMETER;
-    }
-  }
-
-  //
-  // Test write disable
-  //
-  if ((Capabilities & EFI_FVB2_WRITE_DISABLED_CAP) == 0) {
-    if ((NewStatus & EFI_FVB2_WRITE_STATUS) == 0) {
-      return EFI_INVALID_PARAMETER;
-    }
-  }
-
-  //
-  // Test write enable
-  //
-  if ((Capabilities & EFI_FVB2_WRITE_ENABLED_CAP) == 0) {
-    if (NewStatus & EFI_FVB2_WRITE_STATUS) {
-      return EFI_INVALID_PARAMETER;
-    }
-  }
-
-  //
-  // Test lock
-  //
-  if ((Capabilities & EFI_FVB2_LOCK_CAP) == 0) {
-    if (NewStatus & EFI_FVB2_LOCK_STATUS) {
-      return EFI_INVALID_PARAMETER;
-    }
-  }
-
-  *AttribPtr  = (*AttribPtr) & (0xFFFFFFFF & (~EFI_FVB2_STATUS));
-  *AttribPtr  = (*AttribPtr) | NewStatus;
-  *Attributes = *AttribPtr;
-
-  return EFI_SUCCESS;
-}
-
-/**
-  Check the integrity of firmware volume header
-
-  @param[in]  FvHeader   A pointer to a firmware volume header
-
-  @retval     TRUE          The firmware volume is consistent
-  @retval     FALSE         The firmware volume has corrupted.
-
-**/
-BOOLEAN
-IsFvHeaderValid (
-  IN       EFI_PHYSICAL_ADDRESS          FvBase,
-  IN CONST EFI_FIRMWARE_VOLUME_HEADER    *FvHeader
-  )
-{
-  if (FvBase == PcdGet32(PcdFlashNvStorageVariableBase)) {
-    if (CompareMem (&FvHeader->FileSystemGuid, &gEfiSystemNvDataFvGuid, sizeof(EFI_GUID)) != 0 ) {
-      return FALSE;
-    }
-  } else {
-    if (CompareMem (&FvHeader->FileSystemGuid, &gEfiFirmwareFileSystem2Guid, sizeof(EFI_GUID)) != 0 ) {
-      return FALSE;
-    }
-  }
-  if ( (FvHeader->Revision != EFI_FVH_REVISION)   ||
-       (FvHeader->Signature != EFI_FVH_SIGNATURE) ||
-       (FvHeader->FvLength == ((UINTN) -1))       ||
-       ((FvHeader->HeaderLength & 0x01 ) !=0) )  {
-    return FALSE;
-  }
-
-  if (CalculateCheckSum16 ((UINT16 *) FvHeader, FvHeader->HeaderLength) != 0) {
-    return FALSE;
-  }
-
-  return TRUE;
-}
-
-//
-// FVB protocol APIs
-//
-
-/**
-  Retrieves the physical address of the device.
-
-  @param[in]  This    A pointer to EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL.
-  @param[out] Address Output buffer containing the address.
-
-  retval      EFI_SUCCESS The function always return successfully.
-
-**/
-EFI_STATUS
-EFIAPI
-FvbProtocolGetPhysicalAddress (
-  IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL  *This,
-  OUT EFI_PHYSICAL_ADDRESS                     *Address
-  )
-{
-  EFI_FVB_INSTANCE      *FvbInstance;
-
-  FvbInstance = FVB_INSTANCE_FROM_THIS (This);
-
-  *Address = FvbInstance->FvBase;
-
-  return EFI_SUCCESS;
-}
-
-/**
-  Retrieve the size of a logical block
-
-  @param[in]  This        Calling context
-  @param[in]  Lba         Indicates which block to return the size for.
-  @param[out] BlockSize   A pointer to a caller allocated UINTN in which
-                          the size of the block is returned
-  @param[out] NumOfBlocks A pointer to a caller allocated UINTN in which the
-                          number of consecutive blocks starting with Lba is
-                          returned. All blocks in this range have a size of
-                          BlockSize
-
-  @retval     EFI_SUCCESS The function always return successfully.
-
-**/
-EFI_STATUS
-EFIAPI
-FvbProtocolGetBlockSize (
-  IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL  *This,
-  IN  EFI_LBA                                  Lba,
-  OUT UINTN                                    *BlockSize,
-  OUT UINTN                                    *NumOfBlocks
-  )
-{
-  EFI_FVB_INSTANCE                 *FvbInstance;
-
-  FvbInstance = FVB_INSTANCE_FROM_THIS (This);
-
-  DEBUG((DEBUG_INFO,
-    "FvbProtocolGetBlockSize: Lba: 0x%lx BlockSize: 0x%x NumOfBlocks: 0x%x\n",
-    Lba,
-    BlockSize,
-    NumOfBlocks)
-    );
-
-  return FvbGetLbaAddress (
-           FvbInstance,
-           Lba,
-           NULL,
-           BlockSize,
-           NumOfBlocks
-           );
-}
-
-/**
-  Retrieves Volume attributes.  No polarity translations are done.
-
-  @param[in]    This        Calling context
-  @param[out]   Attributes  Output buffer which contains attributes
-
-  @retval       EFI_SUCCESS The function always return successfully.
-
-**/
-EFI_STATUS
-EFIAPI
-FvbProtocolGetAttributes (
-  IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL   *This,
-  OUT EFI_FVB_ATTRIBUTES_2                *Attributes
-  )
-{
-  EFI_FVB_INSTANCE                 *FvbInstance;
-
-  FvbInstance = FVB_INSTANCE_FROM_THIS (This);
-
-  *Attributes = FvbGetVolumeAttributes (FvbInstance);
-
-  DEBUG ((DEBUG_INFO,
-    "FvbProtocolGetAttributes: This: 0x%x Attributes: 0x%x\n",
-    This,
-    *Attributes)
-    );
-
-  return EFI_SUCCESS;
-}
-
-/**
-  Sets Volume attributes. No polarity translations are done.
-
-  @param[in]  This        Calling context
-  @param[out] Attributes  Output buffer which contains attributes
-
-  @retval     EFI_SUCCESS The function always return successfully.
-
-**/
-EFI_STATUS
-EFIAPI
-FvbProtocolSetAttributes (
-  IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL   *This,
-  IN OUT EFI_FVB_ATTRIBUTES_2                   *Attributes
-  )
-{
-  EFI_STATUS                       Status;
-  EFI_FVB_INSTANCE                 *FvbInstance;
-
-  DEBUG((DEBUG_INFO,
-    "FvbProtocolSetAttributes: Before SET -  This: 0x%x Attributes: 0x%x\n",
-    This,
-    *Attributes)
-    );
-
-  FvbInstance  = FVB_INSTANCE_FROM_THIS (This);
-
-  Status = FvbSetVolumeAttributes (FvbInstance, Attributes);
-
-  DEBUG((DEBUG_INFO,
-    "FvbProtocolSetAttributes: After SET -  This: 0x%x Attributes: 0x%x\n",
-    This,
-    *Attributes)
-    );
-
-  return Status;
-}
-
-/**
-  The EraseBlock() function erases one or more blocks as denoted by the
-  variable argument list. The entire parameter list of blocks must be verified
-  prior to erasing any blocks.  If a block is requested that does not exist
-  within the associated firmware volume (it has a larger index than the last
-  block of the firmware volume), the EraseBlock() function must return
-  EFI_INVALID_PARAMETER without modifying the contents of the firmware volume.
-
-  @param[in] This         Calling context
-  @param[in] ...          Starting LBA followed by Number of Lba to erase.
-                          a -1 to terminate the list.
-
-  @retval EFI_SUCCESS       The erase request was successfully completed
-  @retval EFI_ACCESS_DENIED The firmware volume is in the WriteDisabled state
-  @retval EFI_DEVICE_ERROR  The block device is not functioning correctly and
-                            could not be written. Firmware device may have been
-                            partially erased
-
-**/
-EFI_STATUS
-EFIAPI
-FvbProtocolEraseBlocks (
-  IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL    *This,
-  ...
-  )
-{
-  EFI_FVB_INSTANCE                      *FvbInstance;
-  UINTN                                 NumOfBlocks;
-  VA_LIST                               Args;
-  EFI_LBA                               StartingLba;
-  UINTN                                 NumOfLba;
-  EFI_STATUS                            Status;
-
-  DEBUG((DEBUG_INFO, "FvbProtocolEraseBlocks: \n"));
-
-  FvbInstance  = FVB_INSTANCE_FROM_THIS (This);
-
-  NumOfBlocks = FvbInstance->NumOfBlocks;
-
-  VA_START (Args, This);
-
-  do {
-    StartingLba = VA_ARG (Args, EFI_LBA);
-    if ( StartingLba == EFI_LBA_LIST_TERMINATOR ) {
-      break;
-    }
-
-    NumOfLba = VA_ARG (Args, UINT32);
-
-    //
-    // Check input parameters
-    //
-    if (NumOfLba == 0) {
-      VA_END (Args);
-      return EFI_INVALID_PARAMETER;
-    }
-
-    if ( ( StartingLba + NumOfLba ) > NumOfBlocks ) {
-      return EFI_INVALID_PARAMETER;
-    }
-  } while ( 1 );
-
-  VA_END (Args);
-
-  VA_START (Args, This);
-  do {
-    StartingLba = VA_ARG (Args, EFI_LBA);
-    if (StartingLba == EFI_LBA_LIST_TERMINATOR) {
-      break;
-    }
-
-    NumOfLba = VA_ARG (Args, UINT32);
-
-    while ( NumOfLba > 0 ) {
-      Status = FvbEraseBlock (FvbInstance, StartingLba);
-      if ( EFI_ERROR(Status)) {
-        VA_END (Args);
-        return Status;
-      }
-      StartingLba ++;
-      NumOfLba --;
-    }
-
-  } while ( 1 );
-
-  VA_END (Args);
-
-  return EFI_SUCCESS;
-}
-
-/**
-  Writes data beginning at Lba:Offset from FV. The write terminates either
-  when *NumBytes of data have been written, or when a block boundary is
-  reached.  *NumBytes is updated to reflect the actual number of bytes
-  written. The write opertion does not include erase. This routine will
-  attempt to write only the specified bytes. If the writes do not stick,
-  it will return an error.
-
-  @param[in]      This      Calling context
-  @param[in]      Lba       Block in which to begin write
-  @param[in]      Offset    Offset in the block at which to begin write
-  @param[in,out]  NumBytes  On input, indicates the requested write size. On
-                            output, indicates the actual number of bytes written
-  @param[in]      Buffer    Buffer containing source data for the write.
-
-  @retval EFI_SUCCESS           The firmware volume was written successfully
-  @retval EFI_BAD_BUFFER_SIZE   Write attempted across a LBA boundary. On output,
-                                NumBytes contains the total number of bytes
-                                actually written
-  @retval EFI_ACCESS_DENIED     The firmware volume is in the WriteDisabled state
-  @retval EFI_DEVICE_ERROR      The block device is not functioning correctly and
-                                could not be written
-  @retval EFI_INVALID_PARAMETER NumBytes or Buffer are NULL
-
-**/
-EFI_STATUS
-EFIAPI
-FvbProtocolWrite (
-  IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL   *This,
-  IN EFI_LBA                                    Lba,
-  IN UINTN                                      Offset,
-  IN OUT UINTN                                  *NumBytes,
-  IN UINT8                                      *Buffer
-  )
-{
-  EFI_FVB_INSTANCE        *FvbInstance;
-
-  FvbInstance = FVB_INSTANCE_FROM_THIS (This);
-
-  DEBUG((DEBUG_INFO,
-    "FvbProtocolWrite: Lba: 0x%lx Offset: 0x%x NumBytes: 0x%x, Buffer: 0x%x\n",
-    Lba,
-    Offset,
-    *NumBytes,
-    Buffer)
-    );
-
-  return FvbWriteBlock (FvbInstance, Lba, Offset, NumBytes, Buffer);
-}
-
-/**
-  Reads data beginning at Lba:Offset from FV. The Read terminates either
-  when *NumBytes of data have been read, or when a block boundary is
-  reached.  *NumBytes is updated to reflect the actual number of bytes
-  written. The write opertion does not include erase. This routine will
-  attempt to write only the specified bytes. If the writes do not stick,
-  it will return an error.
-
-  @param[in]      This      Calling context
-  @param[in]      Lba       Block in which to begin write
-  @param[in]      Offset    Offset in the block at which to begin write
-  @param[in,out]  NumBytes  On input, indicates the requested write size. On
-                            output, indicates the actual number of bytes written
-  @param[in]      Buffer    Buffer containing source data for the write.
-
-  @retval EFI_SUCCESS           The firmware volume was read successfully and
-                                contents are in Buffer
-  @retval EFI_BAD_BUFFER_SIZE   Read attempted across a LBA boundary. On output,
-                                NumBytes contains the total number of bytes returned
-                                in Buffer
-  @retval EFI_ACCESS_DENIED     The firmware volume is in the ReadDisabled state
-  @retval EFI_DEVICE_ERROR      The block device is not functioning correctly and
-                                could not be read
-  @retval EFI_INVALID_PARAMETER NumBytes or Buffer are NULL
-
-**/
-EFI_STATUS
-EFIAPI
-FvbProtocolRead (
-  IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL   *This,
-  IN EFI_LBA                                    Lba,
-  IN UINTN                                      Offset,
-  IN OUT UINTN                                  *NumBytes,
-  OUT UINT8                                     *Buffer
-  )
-{
-  EFI_FVB_INSTANCE     *FvbInstance;
-  EFI_STATUS           Status;
-
-  FvbInstance = FVB_INSTANCE_FROM_THIS (This);
-  Status = FvbReadBlock (FvbInstance, Lba, Offset, NumBytes, Buffer);
-  DEBUG((DEBUG_INFO,
-    "FvbProtocolRead: Lba: 0x%lx Offset: 0x%x NumBytes: 0x%x, Buffer: 0x%x\n",
-    Lba,
-    Offset,
-    *NumBytes,
-    Buffer)
-    );
-
-  return Status;
-}
diff --git a/Platform/Intel/MinPlatformPkg/Flash/SpiFvbService/SpiFvbServiceMm.c b/Platform/Intel/MinPlatformPkg/Flash/SpiFvbService/SpiFvbServiceMm.c
deleted file mode 100644
index 016f19587c91..000000000000
--- a/Platform/Intel/MinPlatformPkg/Flash/SpiFvbService/SpiFvbServiceMm.c
+++ /dev/null
@@ -1,271 +0,0 @@
-/** @file
-  MM driver source for several Serial Flash devices
-  which are compliant with the Intel(R) Serial Flash Interface Compatibility Specification.
-
-  Copyright (c) 2017, Intel Corporation. All rights reserved.<BR>
-  Copyright (c) Microsoft Corporation.<BR>
-  SPDX-License-Identifier: BSD-2-Clause-Patent
-
-**/
-
-#include "SpiFvbServiceCommon.h"
-#include <Library/MmServicesTableLib.h>
-#include <Library/UefiDriverEntryPoint.h>
-#include <Protocol/SmmFirmwareVolumeBlock.h>
-
-/**
-  The function installs EFI_FIRMWARE_VOLUME_BLOCK protocol
-  for each FV in the system.
-
-  @param[in]  FvbInstance   The pointer to a FW volume instance structure,
-                            which contains the information about one FV.
-
-  @retval     VOID
-
-**/
-VOID
-InstallFvbProtocol (
-  IN  EFI_FVB_INSTANCE               *FvbInstance
-  )
-{
-  EFI_FIRMWARE_VOLUME_HEADER            *FvHeader;
-  EFI_STATUS                            Status;
-  EFI_HANDLE                            FvbHandle;
-
-  ASSERT (FvbInstance != NULL);
-  if (FvbInstance == NULL) {
-    return;
-  }
-
-  CopyMem (&FvbInstance->FvbProtocol, &mFvbProtocolTemplate, sizeof (EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL));
-
-  FvHeader = &FvbInstance->FvHeader;
-  if (FvHeader == NULL) {
-    return;
-  }
-
-  //
-  // Set up the devicepath
-  //
-  DEBUG ((DEBUG_INFO, "FwBlockService.c: Setting up DevicePath for 0x%lx:\n", FvbInstance->FvBase));
-  if (FvHeader->ExtHeaderOffset == 0) {
-    //
-    // FV does not contains extension header, then produce MEMMAP_DEVICE_PATH
-    //
-    FvbInstance->DevicePath = (EFI_DEVICE_PATH_PROTOCOL *) AllocateRuntimeCopyPool (sizeof (FV_MEMMAP_DEVICE_PATH), &mFvMemmapDevicePathTemplate);
-    if (FvbInstance->DevicePath == NULL) {
-      DEBUG ((DEBUG_INFO, "SpiFvbServiceSmm.c: Memory allocation for MEMMAP_DEVICE_PATH failed\n"));
-      return;
-    }
-    ((FV_MEMMAP_DEVICE_PATH *) FvbInstance->DevicePath)->MemMapDevPath.StartingAddress = FvbInstance->FvBase;
-    ((FV_MEMMAP_DEVICE_PATH *) FvbInstance->DevicePath)->MemMapDevPath.EndingAddress   = FvbInstance->FvBase + FvHeader->FvLength - 1;
-  } else {
-    FvbInstance->DevicePath = (EFI_DEVICE_PATH_PROTOCOL *) AllocateRuntimeCopyPool (sizeof (FV_PIWG_DEVICE_PATH), &mFvPIWGDevicePathTemplate);
-    if (FvbInstance->DevicePath == NULL) {
-      DEBUG ((DEBUG_INFO, "SpiFvbServiceSmm.c: Memory allocation for FV_PIWG_DEVICE_PATH failed\n"));
-      return;
-    }
-    CopyGuid (
-      &((FV_PIWG_DEVICE_PATH *)FvbInstance->DevicePath)->FvDevPath.FvName,
-      (GUID *)(UINTN)(FvbInstance->FvBase + FvHeader->ExtHeaderOffset)
-      );
-  }
-
-  //
-  // LocateDevicePath fails so install a new interface and device path
-  //
-  FvbHandle = NULL;
-
-  Status = gMmst->MmInstallProtocolInterface (
-                    &FvbHandle,
-                    &gEfiSmmFirmwareVolumeBlockProtocolGuid,
-                    EFI_NATIVE_INTERFACE,
-                    &(FvbInstance->FvbProtocol)
-                    );
-  ASSERT_EFI_ERROR (Status);
-
-  Status = gMmst->MmInstallProtocolInterface (
-                    &FvbHandle,
-                    &gEfiDevicePathProtocolGuid,
-                    EFI_NATIVE_INTERFACE,
-                    &(FvbInstance->DevicePath)
-                    );
-  ASSERT_EFI_ERROR (Status);
-}
-
-/**
-  The function does the necessary initialization work for
-  Firmware Volume Block Driver.
-
-**/
-VOID
-FvbInitialize (
-  VOID
-  )
-{
-  EFI_FVB_INSTANCE                      *FvbInstance;
-  EFI_FIRMWARE_VOLUME_HEADER            *FvHeader;
-  EFI_FV_BLOCK_MAP_ENTRY                *PtrBlockMapEntry;
-  EFI_PHYSICAL_ADDRESS                  BaseAddress;
-  EFI_STATUS                            Status;
-  UINTN                                 BufferSize;
-  UINTN                                 Idx;
-  UINT32                                MaxLbaSize;
-  UINT32                                BytesWritten;
-  UINTN                                 BytesErased;
-
-  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);
-
-  //
-  // We will only continue with FVB installation if the
-  // SPI is the active BIOS state
-  //
-  {
-    //
-    // Make sure all FVB are valid and/or fix if possible
-    //
-    for (Idx = 0;; Idx++) {
-      if (mPlatformFvBaseAddress[Idx].FvSize == 0 && mPlatformFvBaseAddress[Idx].FvBase == 0) {
-        break;
-      }
-
-      BaseAddress = mPlatformFvBaseAddress[Idx].FvBase;
-      FvHeader = (EFI_FIRMWARE_VOLUME_HEADER *) (UINTN) BaseAddress;
-
-      if (!IsFvHeaderValid (BaseAddress, FvHeader)) {
-        BytesWritten = 0;
-        BytesErased = 0;
-        DEBUG ((DEBUG_ERROR, "ERROR - The FV in 0x%x is invalid!\n", FvHeader));
-        Status = GetFvbInfo (BaseAddress, &FvHeader);
-        if (EFI_ERROR (Status)) {
-          DEBUG ((DEBUG_WARN, "ERROR - Can't recovery FV header at 0x%x.  GetFvbInfo Status %r\n", BaseAddress, Status));
-          continue;
-        }
-        DEBUG ((DEBUG_INFO, "Rewriting FV header at 0x%X with static data\n", BaseAddress));
-        //
-        // Spi erase
-        //
-        BytesErased = (UINTN) FvHeader->BlockMap->Length;
-        Status = SpiFlashBlockErase( (UINTN) BaseAddress, &BytesErased);
-        if (EFI_ERROR (Status)) {
-          DEBUG ((DEBUG_WARN, "ERROR - SpiFlashBlockErase Error  %r\n", Status));
-          continue;
-        }
-        if (BytesErased != FvHeader->BlockMap->Length) {
-          DEBUG ((DEBUG_WARN, "ERROR - BytesErased != FvHeader->BlockMap->Length\n"));
-          DEBUG ((DEBUG_INFO, " BytesErased = 0x%X\n Length = 0x%X\n", BytesErased, FvHeader->BlockMap->Length));
-          continue;
-        }
-        BytesWritten = FvHeader->HeaderLength;
-        Status = SpiFlashWrite ((UINTN)BaseAddress, &BytesWritten, (UINT8*)FvHeader);
-        if (EFI_ERROR (Status)) {
-          DEBUG ((DEBUG_WARN, "ERROR - SpiFlashWrite Error  %r\n", Status));
-          continue;
-        }
-        if (BytesWritten != FvHeader->HeaderLength) {
-          DEBUG ((DEBUG_WARN, "ERROR - BytesWritten != HeaderLength\n"));
-          DEBUG ((DEBUG_INFO, " BytesWritten = 0x%X\n HeaderLength = 0x%X\n", BytesWritten, FvHeader->HeaderLength));
-          continue;
-        }
-        Status = SpiFlashLock ();
-        if (EFI_ERROR (Status)) {
-          DEBUG ((DEBUG_WARN, "ERROR - SpiFlashLock Error  %r\n", Status));
-          continue;
-        }
-        DEBUG ((DEBUG_INFO, "FV Header @ 0x%X restored with static data\n", BaseAddress));
-        //
-        // Clear cache for this range.
-        //
-        WriteBackInvalidateDataCacheRange ( (VOID *) (UINTN) BaseAddress, FvHeader->BlockMap->Length);
-      }
-    }
-
-    //
-    // Calculate the total size for all firmware volume block instances
-    //
-    BufferSize = 0;
-    for (Idx = 0; ; Idx++) {
-      if (mPlatformFvBaseAddress[Idx].FvSize == 0 && mPlatformFvBaseAddress[Idx].FvBase == 0) {
-        break;
-      }
-      BaseAddress = mPlatformFvBaseAddress[Idx].FvBase;
-      FvHeader = (EFI_FIRMWARE_VOLUME_HEADER *) (UINTN) BaseAddress;
-
-      if (!IsFvHeaderValid (BaseAddress, FvHeader)) {
-        DEBUG ((DEBUG_WARN, "ERROR - The FV in 0x%x is invalid!\n", FvHeader));
-        continue;
-      }
-
-      BufferSize += (FvHeader->HeaderLength +
-                    sizeof (EFI_FVB_INSTANCE) -
-                    sizeof (EFI_FIRMWARE_VOLUME_HEADER)
-                    );
-    }
-
-    mFvbModuleGlobal.FvbInstance =  (EFI_FVB_INSTANCE *) AllocateRuntimeZeroPool (BufferSize);
-    if (mFvbModuleGlobal.FvbInstance == NULL) {
-      ASSERT (FALSE);
-      return;
-    }
-
-    MaxLbaSize      = 0;
-    FvbInstance     = mFvbModuleGlobal.FvbInstance;
-    mFvbModuleGlobal.NumFv   = 0;
-
-    for (Idx = 0; ; Idx++) {
-      if (mPlatformFvBaseAddress[Idx].FvSize == 0 && mPlatformFvBaseAddress[Idx].FvBase == 0) {
-        break;
-      }
-      BaseAddress = mPlatformFvBaseAddress[Idx].FvBase;
-      FvHeader = (EFI_FIRMWARE_VOLUME_HEADER *) (UINTN) BaseAddress;
-
-      if (!IsFvHeaderValid (BaseAddress, FvHeader)) {
-        DEBUG ((DEBUG_WARN, "ERROR - The FV in 0x%x is invalid!\n", FvHeader));
-        continue;
-      }
-
-      FvbInstance->Signature = FVB_INSTANCE_SIGNATURE;
-      CopyMem (&(FvbInstance->FvHeader), FvHeader, FvHeader->HeaderLength);
-
-      FvHeader = &(FvbInstance->FvHeader);
-      FvbInstance->FvBase = (UINTN)BaseAddress;
-
-      //
-      // Process the block map for each FV
-      //
-      FvbInstance->NumOfBlocks   = 0;
-      for (PtrBlockMapEntry = FvHeader->BlockMap;
-           PtrBlockMapEntry->NumBlocks != 0;
-           PtrBlockMapEntry++) {
-        //
-        // Get the maximum size of a block.
-        //
-        if (MaxLbaSize < PtrBlockMapEntry->Length) {
-          MaxLbaSize  = PtrBlockMapEntry->Length;
-        }
-        FvbInstance->NumOfBlocks += PtrBlockMapEntry->NumBlocks;
-      }
-
-      //
-      // Add a FVB Protocol Instance
-      //
-      InstallFvbProtocol (FvbInstance);
-      mFvbModuleGlobal.NumFv++;
-
-      //
-      // Move on to the next FvbInstance
-      //
-      FvbInstance = (EFI_FVB_INSTANCE *) ((UINTN)((UINT8 *)FvbInstance) +
-                                            FvHeader->HeaderLength +
-                                            (sizeof (EFI_FVB_INSTANCE) - sizeof (EFI_FIRMWARE_VOLUME_HEADER)));
-
-    }
-  }
-}
diff --git a/Platform/Intel/MinPlatformPkg/Flash/SpiFvbService/SpiFvbServiceStandaloneMm.c b/Platform/Intel/MinPlatformPkg/Flash/SpiFvbService/SpiFvbServiceStandaloneMm.c
deleted file mode 100644
index 252c818d6551..000000000000
--- a/Platform/Intel/MinPlatformPkg/Flash/SpiFvbService/SpiFvbServiceStandaloneMm.c
+++ /dev/null
@@ -1,32 +0,0 @@
-/** @file
-  MM driver source for several Serial Flash devices
-  which are compliant with the Intel(R) Serial Flash Interface Compatibility Specification.
-
-  Copyright (c) Microsoft Corporation.<BR>
-  SPDX-License-Identifier: BSD-2-Clause-Patent
-
-**/
-
-#include "SpiFvbServiceCommon.h"
-#include "SpiFvbServiceMm.h"
-
-/**
-  The driver Standalone MM entry point.
-
-  @param[in] ImageHandle          Image handle of this driver.
-  @param[in] MmSystemTable        A pointer to the MM system table.
-
-  @retval EFI_SUCCESS             This function always returns EFI_SUCCESS.
-
-**/
-EFI_STATUS
-EFIAPI
-SpiFvbStandaloneMmInitialize (
-  IN EFI_HANDLE            ImageHandle,
-  IN EFI_MM_SYSTEM_TABLE   *MmSystemTable
-  )
-{
-  FvbInitialize ();
-
-  return EFI_SUCCESS;
-}
diff --git a/Platform/Intel/MinPlatformPkg/Flash/SpiFvbService/SpiFvbServiceTraditionalMm.c b/Platform/Intel/MinPlatformPkg/Flash/SpiFvbService/SpiFvbServiceTraditionalMm.c
deleted file mode 100644
index 1c2dac70e3c6..000000000000
--- a/Platform/Intel/MinPlatformPkg/Flash/SpiFvbService/SpiFvbServiceTraditionalMm.c
+++ /dev/null
@@ -1,32 +0,0 @@
-/** @file
-  MM driver source for several Serial Flash devices
-  which are compliant with the Intel(R) Serial Flash Interface Compatibility Specification.
-
-  Copyright (c) Microsoft Corporation.<BR>
-  SPDX-License-Identifier: BSD-2-Clause-Patent
-
-**/
-
-#include "SpiFvbServiceCommon.h"
-#include "SpiFvbServiceMm.h"
-
-/**
-  The driver Traditional MM entry point.
-
-  @param[in] ImageHandle          Image handle of this driver.
-  @param[in] SystemTable          A pointer to the EFI system table.
-
-  @retval EFI_SUCCESS             This function always returns EFI_SUCCESS.
-
-**/
-EFI_STATUS
-EFIAPI
-SpiFvbTraditionalMmInitialize (
-  IN EFI_HANDLE            ImageHandle,
-  IN EFI_SYSTEM_TABLE      *SystemTable
-  )
-{
-  FvbInitialize ();
-
-  return EFI_SUCCESS;
-}
diff --git a/Platform/Intel/MinPlatformPkg/Flash/SpiFvbService/SpiFvbServiceCommon.h b/Platform/Intel/MinPlatformPkg/Flash/SpiFvbService/SpiFvbServiceCommon.h
deleted file mode 100644
index e9d69e985814..000000000000
--- a/Platform/Intel/MinPlatformPkg/Flash/SpiFvbService/SpiFvbServiceCommon.h
+++ /dev/null
@@ -1,158 +0,0 @@
-/** @file
-  Common source definitions used in serial flash drivers
-
-Copyright (c) 2017, Intel Corporation. All rights reserved.<BR>
-SPDX-License-Identifier: BSD-2-Clause-Patent
-
-**/
-
-#ifndef _SPI_FVB_SERVICE_COMMON_H
-#define _SPI_FVB_SERVICE_COMMON_H
-
-#include <Guid/EventGroup.h>
-#include <Guid/FirmwareFileSystem2.h>
-#include <Guid/SystemNvDataGuid.h>
-#include <Protocol/DevicePath.h>
-#include <Protocol/FirmwareVolumeBlock.h>
-
-#include <Library/BaseLib.h>
-#include <Library/DebugLib.h>
-#include <Library/BaseMemoryLib.h>
-#include <Library/IoLib.h>
-#include <Library/CacheMaintenanceLib.h>
-#include <Library/MemoryAllocationLib.h>
-#include <Library/PcdLib.h>
-#include <Library/DevicePathLib.h>
-#include <Library/HobLib.h>
-
-#include <Library/SpiFlashCommonLib.h>
-
-//
-// Define two helper macro to extract the Capability field or Status field in FVB
-// bit fields
-//
-#define EFI_FVB2_CAPABILITIES (EFI_FVB2_READ_DISABLED_CAP | \
-                              EFI_FVB2_READ_ENABLED_CAP | \
-                              EFI_FVB2_WRITE_DISABLED_CAP | \
-                              EFI_FVB2_WRITE_ENABLED_CAP | \
-                              EFI_FVB2_LOCK_CAP \
-                              )
-
-#define EFI_FVB2_STATUS (EFI_FVB2_READ_STATUS | EFI_FVB2_WRITE_STATUS | EFI_FVB2_LOCK_STATUS)
-
-#define FVB_INSTANCE_SIGNATURE       SIGNATURE_32('F','V','B','I')
-
-typedef struct {
-  UINT32                                Signature;
-  UINTN                                 FvBase;
-  UINTN                                 NumOfBlocks;
-  EFI_DEVICE_PATH_PROTOCOL              *DevicePath;
-  EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL    FvbProtocol;
-  EFI_FIRMWARE_VOLUME_HEADER            FvHeader;
-} EFI_FVB_INSTANCE;
-
-typedef struct {
-  EFI_FVB_INSTANCE            *FvbInstance;
-  UINT32                      NumFv;
-} FVB_GLOBAL;
-
-//
-// Fvb Protocol instance data
-//
-#define FVB_INSTANCE_FROM_THIS(a) CR(a, EFI_FVB_INSTANCE, FvbProtocol, FVB_INSTANCE_SIGNATURE)
-
-typedef struct {
-  MEDIA_FW_VOL_DEVICE_PATH  FvDevPath;
-  EFI_DEVICE_PATH_PROTOCOL  EndDevPath;
-} FV_PIWG_DEVICE_PATH;
-
-typedef struct {
-  MEMMAP_DEVICE_PATH          MemMapDevPath;
-  EFI_DEVICE_PATH_PROTOCOL    EndDevPath;
-} FV_MEMMAP_DEVICE_PATH;
-
-typedef struct {
-  UINT32              FvBase;
-  UINT32              FvSize;
-} FV_INFO;
-
-//
-// Protocol APIs
-//
-EFI_STATUS
-EFIAPI
-FvbProtocolGetAttributes (
-  IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL   *This,
-  OUT EFI_FVB_ATTRIBUTES_2                      *Attributes
-  );
-
-EFI_STATUS
-EFIAPI
-FvbProtocolSetAttributes (
-  IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL   *This,
-  IN OUT EFI_FVB_ATTRIBUTES_2                   *Attributes
-  );
-
-EFI_STATUS
-EFIAPI
-FvbProtocolGetPhysicalAddress (
-  IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL  *This,
-       OUT EFI_PHYSICAL_ADDRESS                *Address
-  );
-
-EFI_STATUS
-EFIAPI
-FvbProtocolGetBlockSize (
-  IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL  *This,
-  IN  EFI_LBA                                  Lba,
-  OUT UINTN                                    *BlockSize,
-  OUT UINTN                                    *NumOfBlocks
-  );
-
-EFI_STATUS
-EFIAPI
-FvbProtocolRead (
-  IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL   *This,
-  IN EFI_LBA                                    Lba,
-  IN UINTN                                      Offset,
-  IN OUT UINTN                                  *NumBytes,
-  OUT UINT8                                     *Buffer
-  );
-
-EFI_STATUS
-EFIAPI
-FvbProtocolWrite (
-  IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL   *This,
-  IN EFI_LBA                                    Lba,
-  IN UINTN                                      Offset,
-  IN OUT UINTN                                  *NumBytes,
-  IN UINT8                                      *Buffer
-  );
-
-EFI_STATUS
-EFIAPI
-FvbProtocolEraseBlocks (
-  IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL    *This,
-  ...
-  );
-
-BOOLEAN
-IsFvHeaderValid (
-  IN       EFI_PHYSICAL_ADDRESS          FvBase,
-  IN CONST EFI_FIRMWARE_VOLUME_HEADER    *FwVolHeader
-  );
-
-EFI_STATUS
-GetFvbInfo (
-  IN  EFI_PHYSICAL_ADDRESS         FvBaseAddress,
-  OUT EFI_FIRMWARE_VOLUME_HEADER   **FvbInfo
-  );
-
-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.h b/Platform/Intel/MinPlatformPkg/Flash/SpiFvbService/SpiFvbServiceMm.h
deleted file mode 100644
index 36af1130c8ee..000000000000
--- a/Platform/Intel/MinPlatformPkg/Flash/SpiFvbService/SpiFvbServiceMm.h
+++ /dev/null
@@ -1,22 +0,0 @@
-/** @file
-  Definitions common to MM implementation in this driver.
-
-  Copyright (c) Microsoft Corporation.<BR>
-  SPDX-License-Identifier: BSD-2-Clause-Patent
-
-**/
-
-#ifndef _SPI_FVB_SERVICE_MM_H_
-#define _SPI_FVB_SERVICE_MM_H_
-
-/**
-  The function does the necessary initialization work for
-  Firmware Volume Block Driver.
-
-**/
-VOID
-FvbInitialize (
-  VOID
-  );
-
-#endif
diff --git a/Platform/Intel/MinPlatformPkg/Flash/SpiFvbService/SpiFvbServiceSmm.inf b/Platform/Intel/MinPlatformPkg/Flash/SpiFvbService/SpiFvbServiceSmm.inf
deleted file mode 100644
index 10e51e11756f..000000000000
--- a/Platform/Intel/MinPlatformPkg/Flash/SpiFvbService/SpiFvbServiceSmm.inf
+++ /dev/null
@@ -1,68 +0,0 @@
-### @file
-# Component description file for the Serial Flash device Runtime driver.
-#
-# Copyright (c) 2017-2019, Intel Corporation. All rights reserved.<BR>
-# Copyright (c) Microsoft Corporation.<BR>
-#
-# SPDX-License-Identifier: BSD-2-Clause-Patent
-#
-###
-
-[Defines]
-  INF_VERSION                    = 0x00010017
-  BASE_NAME                      = SpiFvbServiceSmm
-  FILE_GUID                      = 68A10D85-6858-4402-B070-028B3EA21747
-  VERSION_STRING                 = 1.0
-  MODULE_TYPE                    = DXE_SMM_DRIVER
-  PI_SPECIFICATION_VERSION       = 1.10
-  ENTRY_POINT                    = SpiFvbTraditionalMmInitialize
-
-#
-# The following information is for reference only and not required by the build tools.
-#
-# VALID_ARCHITECTURES = IA32 X64
-#
-
-[LibraryClasses]
-  PcdLib
-  MemoryAllocationLib
-  CacheMaintenanceLib
-  BaseMemoryLib
-  DebugLib
-  BaseLib
-  UefiBootServicesTableLib
-  UefiDriverEntryPoint
-  SpiFlashCommonLib
-  MmServicesTableLib
-
-[Packages]
-  MdePkg/MdePkg.dec
-  MdeModulePkg/MdeModulePkg.dec
-  MinPlatformPkg/MinPlatformPkg.dec
-
-[Pcd]
-  gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableBase   ## CONSUMES
-  gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableSize   ## CONSUMES
-  gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwWorkingSize ## CONSUMES
-  gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwSpareSize   ## CONSUMES
-  gMinPlatformPkgTokenSpaceGuid.PcdFlashFvMicrocodeBase          ## CONSUMES
-  gMinPlatformPkgTokenSpaceGuid.PcdFlashFvMicrocodeSize          ## CONSUMES
-
-[Sources]
-  FvbInfo.c
-  SpiFvbServiceCommon.h
-  SpiFvbServiceCommon.c
-  SpiFvbServiceMm.h
-  SpiFvbServiceMm.c
-  SpiFvbServiceTraditionalMm.c
-
-[Protocols]
-  gEfiDevicePathProtocolGuid                    ## PRODUCES
-  gEfiSmmFirmwareVolumeBlockProtocolGuid        ## PRODUCES
-
-[Guids]
-  gEfiFirmwareFileSystem2Guid                   ## CONSUMES
-  gEfiSystemNvDataFvGuid                        ## CONSUMES
-
-[Depex]
-  TRUE
diff --git a/Platform/Intel/MinPlatformPkg/Flash/SpiFvbService/SpiFvbServiceStandaloneMm.inf b/Platform/Intel/MinPlatformPkg/Flash/SpiFvbService/SpiFvbServiceStandaloneMm.inf
deleted file mode 100644
index 9f08d3673f41..000000000000
--- a/Platform/Intel/MinPlatformPkg/Flash/SpiFvbService/SpiFvbServiceStandaloneMm.inf
+++ /dev/null
@@ -1,67 +0,0 @@
-### @file
-# Component description file for the Serial Flash device Standalone MM driver.
-#
-# Copyright (c) 2017-2019, Intel Corporation. All rights reserved.<BR>
-# Copyright (c) Microsoft Corporation.<BR>
-#
-# SPDX-License-Identifier: BSD-2-Clause-Patent
-#
-###
-
-[Defines]
-  INF_VERSION                    = 0x0001001B
-  BASE_NAME                      = SpiFvbServiceStandaloneMm
-  FILE_GUID                      = E6313655-8BD0-4EAB-B319-AD5E212CE6AB
-  VERSION_STRING                 = 1.0
-  MODULE_TYPE                    = MM_STANDALONE
-  PI_SPECIFICATION_VERSION       = 0x00010032
-  ENTRY_POINT                    = SpiFvbStandaloneMmInitialize
-
-#
-# The following information is for reference only and not required by the build tools.
-#
-# VALID_ARCHITECTURES = IA32 X64
-#
-
-[LibraryClasses]
-  BaseLib
-  BaseMemoryLib
-  CacheMaintenanceLib
-  DebugLib
-  MemoryAllocationLib
-  PcdLib
-  MmServicesTableLib
-  SpiFlashCommonLib
-  StandaloneMmDriverEntryPoint
-
-[Packages]
-  MdePkg/MdePkg.dec
-  MdeModulePkg/MdeModulePkg.dec
-  MinPlatformPkg/MinPlatformPkg.dec
-
-[Pcd]
-  gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableBase   ## CONSUMES
-  gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableSize   ## CONSUMES
-  gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwWorkingSize ## CONSUMES
-  gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwSpareSize   ## CONSUMES
-  gMinPlatformPkgTokenSpaceGuid.PcdFlashFvMicrocodeBase          ## CONSUMES
-  gMinPlatformPkgTokenSpaceGuid.PcdFlashFvMicrocodeSize          ## CONSUMES
-
-[Sources]
-  FvbInfo.c
-  SpiFvbServiceCommon.h
-  SpiFvbServiceCommon.c
-  SpiFvbServiceMm.h
-  SpiFvbServiceMm.c
-  SpiFvbServiceStandaloneMm.c
-
-[Protocols]
-  gEfiDevicePathProtocolGuid                    ## PRODUCES
-  gEfiSmmFirmwareVolumeBlockProtocolGuid        ## PRODUCES
-
-[Guids]
-  gEfiFirmwareFileSystem2Guid                   ## CONSUMES
-  gEfiSystemNvDataFvGuid                        ## CONSUMES
-
-[Depex]
-  TRUE
diff --git a/Platform/Intel/MinPlatformPkg/MinPlatformPkg.dsc b/Platform/Intel/MinPlatformPkg/MinPlatformPkg.dsc
index 35cbd40abb05..15867eee4e61 100644
--- a/Platform/Intel/MinPlatformPkg/MinPlatformPkg.dsc
+++ b/Platform/Intel/MinPlatformPkg/MinPlatformPkg.dsc
@@ -159,8 +159,6 @@ [Components]
 
   MinPlatformPkg/Bds/Library/DxePlatformBootManagerLib/DxePlatformBootManagerLib.inf
 
-  MinPlatformPkg/Flash/SpiFvbService/SpiFvbServiceSmm.inf
-  MinPlatformPkg/Flash/SpiFvbService/SpiFvbServiceStandaloneMm.inf
   MinPlatformPkg/Flash/Library/SpiFlashCommonLibNull/SpiFlashCommonLibNull.inf
 
   MinPlatformPkg/FspWrapper/SaveMemoryConfig/SaveMemoryConfig.inf
-- 
2.28.0.windows.1



-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#76719): https://edk2.groups.io/g/devel/message/76719
Mute This Topic: https://groups.io/mt/83619580/1813853
Group Owner: devel+owner at edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [edk2-devel-archive at redhat.com]
-=-=-=-=-=-=-=-=-=-=-=-






More information about the edk2-devel-archive mailing list