Hi Nate,

Thanks for the review. I apologize, that was a mistake due to quickly changing file headers based on what VS Code showed as new files. I will update it in a v2.

Thanks,
Michael

On 2/10/2021 6:20 PM, Nate DeSimone wrote:
Hi Michael,

Given that MinPlatformPkg/Flash/SpiFvbService/SpiFvbServiceMm.c is almost 
identical to MinPlatformPkg/Flash/SpiFvbService/Smm/SpiFvbServiceSmm.c, it 
seems a little inappropriate to remove Intel's copyright from that file. You 
are welcome to add a Microsoft copyright of course. Other than that, your patch 
series look's good!

Thanks,
Nate

-----Original Message-----
From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of Michael
Kubacki
Sent: Friday, February 5, 2021 4:15 PM
To: devel@edk2.groups.io
Cc: Chiu, Chasel <chasel.c...@intel.com>; Desimone, Nathaniel L
<nathaniel.l.desim...@intel.com>; Liming Gao
<gaolim...@byosoft.com.cn>; Dong, Eric <eric.d...@intel.com>
Subject: [edk2-devel] [edk2-platforms][PATCH v1 3/3]
MinPlatformPkg/SpiFvbService: Add Standalone MM support

From: Michael Kubacki <michael.kuba...@microsoft.com>

Adds support for MM_STANDALONE. Retains the directory path to the SMM
INF instance for backward compatibility with existing platforms.

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: Michael Kubacki <michael.kuba...@microsoft.com>
---
  Platform/Intel/MinPlatformPkg/Flash/SpiFvbService/{Common =>
}/FvbInfo.c                                  |  0
  Platform/Intel/MinPlatformPkg/Flash/SpiFvbService/{Common =>
}/SpiFvbServiceCommon.c                      |  0

Platform/Intel/MinPlatformPkg/Flash/SpiFvbService/{Smm/SpiFvbServiceSm
m.c => SpiFvbServiceMm.c}           | 34 +++++------------

Platform/Intel/MinPlatformPkg/Flash/SpiFvbService/SpiFvbServiceStandalon
eMm.c                             | 32 ++++++++++++++++

Platform/Intel/MinPlatformPkg/Flash/SpiFvbService/SpiFvbServiceTraditiona
lMm.c                            | 32 ++++++++++++++++
  Platform/Intel/MinPlatformPkg/Flash/SpiFvbService/{Common =>
}/SpiFvbServiceCommon.h                      |  4 --
  Platform/Intel/MinPlatformPkg/Flash/SpiFvbService/SpiFvbServiceMm.h
| 22 +++++++++++
  Platform/Intel/MinPlatformPkg/Flash/SpiFvbService/SpiFvbServiceSmm.inf
| 17 +++++----
  Platform/Intel/MinPlatformPkg/Flash/SpiFvbService/{SpiFvbServiceSmm.inf
=> SpiFvbServiceStandaloneMm.inf} | 40 ++++++++++----------
  Platform/Intel/MinPlatformPkg/MinPlatformPkg.dsc
|  2 +
  10 files changed, 129 insertions(+), 54 deletions(-)

diff --git
a/Platform/Intel/MinPlatformPkg/Flash/SpiFvbService/Common/FvbInfo.c
b/Platform/Intel/MinPlatformPkg/Flash/SpiFvbService/FvbInfo.c
similarity index 100%
rename from
Platform/Intel/MinPlatformPkg/Flash/SpiFvbService/Common/FvbInfo.c
rename to Platform/Intel/MinPlatformPkg/Flash/SpiFvbService/FvbInfo.c
diff --git
a/Platform/Intel/MinPlatformPkg/Flash/SpiFvbService/Common/SpiFvbServi
ceCommon.c
b/Platform/Intel/MinPlatformPkg/Flash/SpiFvbService/SpiFvbServiceComm
on.c
similarity index 100%
rename from
Platform/Intel/MinPlatformPkg/Flash/SpiFvbService/Common/SpiFvbServic
eCommon.c
rename to
Platform/Intel/MinPlatformPkg/Flash/SpiFvbService/SpiFvbServiceCommon.
c
diff --git
a/Platform/Intel/MinPlatformPkg/Flash/SpiFvbService/Smm/SpiFvbServiceS
mm.c
b/Platform/Intel/MinPlatformPkg/Flash/SpiFvbService/SpiFvbServiceMm.c
similarity index 89%
rename from
Platform/Intel/MinPlatformPkg/Flash/SpiFvbService/Smm/SpiFvbServiceSm
m.c
rename to
Platform/Intel/MinPlatformPkg/Flash/SpiFvbService/SpiFvbServiceMm.c
index 251fcae30b90..3175f5f32e31 100644
---
a/Platform/Intel/MinPlatformPkg/Flash/SpiFvbService/Smm/SpiFvbServiceS
mm.c
+++
b/Platform/Intel/MinPlatformPkg/Flash/SpiFvbService/SpiFvbServiceMm.
+++ c
@@ -1,14 +1,15 @@
  /** @file
-  Common driver source for several Serial Flash devices
+  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>
-SPDX-License-Identifier: BSD-2-Clause-Patent
+  Copyright (c) Microsoft Corporation.<BR>
+  SPDX-License-Identifier: BSD-2-Clause-Patent

  **/

  #include "SpiFvbServiceCommon.h"
-#include <Library/SmmServicesTableLib.h>
+#include <Library/MmServicesTableLib.h> #include
+<Library/UefiDriverEntryPoint.h>
  #include <Protocol/SmmFirmwareVolumeBlock.h>

  /**
@@ -74,7 +75,7 @@ InstallFvbProtocol (
    //
    FvbHandle = NULL;

-  Status = gSmst->SmmInstallProtocolInterface (
+  Status = gMmst->MmInstallProtocolInterface (
                      &FvbHandle,
                      &gEfiSmmFirmwareVolumeBlockProtocolGuid,
                      EFI_NATIVE_INTERFACE, @@ -82,7 +83,7 @@ 
InstallFvbProtocol (
                      );
    ASSERT_EFI_ERROR (Status);

-  Status = gSmst->SmmInstallProtocolInterface (
+  Status = gMmst->MmInstallProtocolInterface (
                      &FvbHandle,
                      &gEfiDevicePathProtocolGuid,
                      EFI_NATIVE_INTERFACE, @@ -92,22 +93,13 @@ 
InstallFvbProtocol
(  }

  /**
-
    The function does the necessary initialization work for
    Firmware Volume Block Driver.

-  @param[in]  ImageHandle       The firmware allocated handle for the UEFI
image.
-  @param[in]  SystemTable       A pointer to the EFI system table.
-
-  @retval     EFI_SUCCESS       This funtion always return EFI_SUCCESS.
-                                It will ASSERT on errors.
-
  **/
-EFI_STATUS
-EFIAPI
+VOID
  FvbInitialize (
-  IN EFI_HANDLE        ImageHandle,
-  IN EFI_SYSTEM_TABLE  *SystemTable
+  VOID
    )
  {
    EFI_FVB_INSTANCE                      *FvbInstance;
@@ -219,8 +211,7 @@ FvbInitialize (
      mFvbModuleGlobal.FvbInstance =  (EFI_FVB_INSTANCE *)
AllocateRuntimeZeroPool (BufferSize);
      if (mFvbModuleGlobal.FvbInstance == NULL) {
        ASSERT (FALSE);
-      Status = EFI_OUT_OF_RESOURCES;
-      goto ERROR;
+      return;
      }

      MaxLbaSize      = 0;
@@ -276,9 +267,4 @@ FvbInitialize (

      }
    }
-
-  return EFI_SUCCESS;
-
-ERROR:
-  return Status;
  }
diff --git
a/Platform/Intel/MinPlatformPkg/Flash/SpiFvbService/SpiFvbServiceStandal
oneMm.c
b/Platform/Intel/MinPlatformPkg/Flash/SpiFvbService/SpiFvbServiceStandal
oneMm.c
new file mode 100644
index 000000000000..252c818d6551
--- /dev/null
+++ b/Platform/Intel/MinPlatformPkg/Flash/SpiFvbService/SpiFvbServiceSta
+++ ndaloneMm.c
@@ -0,0 +1,32 @@
+/** @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/SpiFvbServiceTraditio
nalMm.c
b/Platform/Intel/MinPlatformPkg/Flash/SpiFvbService/SpiFvbServiceTraditio
nalMm.c
new file mode 100644
index 000000000000..1c2dac70e3c6
--- /dev/null
+++ b/Platform/Intel/MinPlatformPkg/Flash/SpiFvbService/SpiFvbServiceTra
+++ ditionalMm.c
@@ -0,0 +1,32 @@
+/** @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/Common/SpiFvbServi
ceCommon.h
b/Platform/Intel/MinPlatformPkg/Flash/SpiFvbService/SpiFvbServiceComm
on.h
similarity index 94%
rename from
Platform/Intel/MinPlatformPkg/Flash/SpiFvbService/Common/SpiFvbServic
eCommon.h
rename to
Platform/Intel/MinPlatformPkg/Flash/SpiFvbService/SpiFvbServiceCommon.
h
index 6379fc86d52e..e9d69e985814 100644
---
a/Platform/Intel/MinPlatformPkg/Flash/SpiFvbService/Common/SpiFvbServi
ceCommon.h
+++
b/Platform/Intel/MinPlatformPkg/Flash/SpiFvbService/SpiFvbServiceCom
+++ mon.h
@@ -15,9 +15,6 @@ SPDX-License-Identifier: BSD-2-Clause-Patent  #include
<Protocol/DevicePath.h>  #include <Protocol/FirmwareVolumeBlock.h>

-#include <Library/UefiDriverEntryPoint.h> -#include
<Library/UefiBootServicesTableLib.h>
-#include <Library/UefiLib.h>
  #include <Library/BaseLib.h>
  #include <Library/DebugLib.h>
  #include <Library/BaseMemoryLib.h>
@@ -159,4 +156,3 @@ 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
new file mode 100644
index 000000000000..36af1130c8ee
--- /dev/null
+++
b/Platform/Intel/MinPlatformPkg/Flash/SpiFvbService/SpiFvbServiceMm.
+++ h
@@ -0,0 +1,22 @@
+/** @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.in
f
b/Platform/Intel/MinPlatformPkg/Flash/SpiFvbService/SpiFvbServiceSmm.in
f
index d59c499b2e9e..10e51e11756f 100644
---
a/Platform/Intel/MinPlatformPkg/Flash/SpiFvbService/SpiFvbServiceSmm.in
f
+++
b/Platform/Intel/MinPlatformPkg/Flash/SpiFvbService/SpiFvbServiceSmm
+++ .inf
@@ -2,6 +2,7 @@
  # 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  # @@ -14,7 +15,8 @@
[Defines]
    VERSION_STRING                 = 1.0
    MODULE_TYPE                    = DXE_SMM_DRIVER
    PI_SPECIFICATION_VERSION       = 1.10
-  ENTRY_POINT                    = FvbInitialize
+  ENTRY_POINT                    = SpiFvbTraditionalMmInitialize
+
  #
  # The following information is for reference only and not required by the
build tools.
  #
@@ -28,11 +30,10 @@ [LibraryClasses]
    BaseMemoryLib
    DebugLib
    BaseLib
-  UefiLib
    UefiBootServicesTableLib
    UefiDriverEntryPoint
    SpiFlashCommonLib
-  SmmServicesTableLib
+  MmServicesTableLib

  [Packages]
    MdePkg/MdePkg.dec
@@ -48,10 +49,12 @@ [Pcd]
    gMinPlatformPkgTokenSpaceGuid.PcdFlashFvMicrocodeSize          ##
CONSUMES

  [Sources]
-  Common/SpiFvbServiceCommon.c
-  Common/FvbInfo.c
-  Common/SpiFvbServiceCommon.h
-  Smm/SpiFvbServiceSmm.c
+  FvbInfo.c
+  SpiFvbServiceCommon.h
+  SpiFvbServiceCommon.c
+  SpiFvbServiceMm.h
+  SpiFvbServiceMm.c
+  SpiFvbServiceTraditionalMm.c

  [Protocols]
    gEfiDevicePathProtocolGuid                    ## PRODUCES
diff --git
a/Platform/Intel/MinPlatformPkg/Flash/SpiFvbService/SpiFvbServiceSmm.in
f
b/Platform/Intel/MinPlatformPkg/Flash/SpiFvbService/SpiFvbServiceStandal
oneMm.inf
similarity index 64%
copy from
Platform/Intel/MinPlatformPkg/Flash/SpiFvbService/SpiFvbServiceSmm.inf
copy to
Platform/Intel/MinPlatformPkg/Flash/SpiFvbService/SpiFvbServiceStandalon
eMm.inf
index d59c499b2e9e..9f08d3673f41 100644
---
a/Platform/Intel/MinPlatformPkg/Flash/SpiFvbService/SpiFvbServiceSmm.in
f
+++ b/Platform/Intel/MinPlatformPkg/Flash/SpiFvbService/SpiFvbServiceSta
+++ ndaloneMm.inf
@@ -1,20 +1,22 @@
  ### @file
-# Component description file for the Serial Flash device Runtime driver.
+# 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                    = 0x00010017
-  BASE_NAME                      = SpiFvbServiceSmm
-  FILE_GUID                      = 68A10D85-6858-4402-B070-028B3EA21747
+  INF_VERSION                    = 0x0001001B
+  BASE_NAME                      = SpiFvbServiceStandaloneMm
+  FILE_GUID                      = E6313655-8BD0-4EAB-B319-AD5E212CE6AB
    VERSION_STRING                 = 1.0
-  MODULE_TYPE                    = DXE_SMM_DRIVER
-  PI_SPECIFICATION_VERSION       = 1.10
-  ENTRY_POINT                    = FvbInitialize
+  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.
  #
@@ -22,17 +24,15 @@ [Defines]
  #

  [LibraryClasses]
-  PcdLib
-  MemoryAllocationLib
-  CacheMaintenanceLib
+  BaseLib
    BaseMemoryLib
+  CacheMaintenanceLib
    DebugLib
-  BaseLib
-  UefiLib
-  UefiBootServicesTableLib
-  UefiDriverEntryPoint
+  MemoryAllocationLib
+  PcdLib
+  MmServicesTableLib
    SpiFlashCommonLib
-  SmmServicesTableLib
+  StandaloneMmDriverEntryPoint

  [Packages]
    MdePkg/MdePkg.dec
@@ -48,10 +48,12 @@ [Pcd]
    gMinPlatformPkgTokenSpaceGuid.PcdFlashFvMicrocodeSize          ##
CONSUMES

  [Sources]
-  Common/SpiFvbServiceCommon.c
-  Common/FvbInfo.c
-  Common/SpiFvbServiceCommon.h
-  Smm/SpiFvbServiceSmm.c
+  FvbInfo.c
+  SpiFvbServiceCommon.h
+  SpiFvbServiceCommon.c
+  SpiFvbServiceMm.h
+  SpiFvbServiceMm.c
+  SpiFvbServiceStandaloneMm.c

  [Protocols]
    gEfiDevicePathProtocolGuid                    ## PRODUCES
diff --git a/Platform/Intel/MinPlatformPkg/MinPlatformPkg.dsc
b/Platform/Intel/MinPlatformPkg/MinPlatformPkg.dsc
index 5e88de43e08d..0460fd5a3206 100644
--- a/Platform/Intel/MinPlatformPkg/MinPlatformPkg.dsc
+++ b/Platform/Intel/MinPlatformPkg/MinPlatformPkg.dsc
@@ -117,6 +117,7 @@ [LibraryClasses.common.MM_STANDALONE]
    DebugLib|MdePkg/Library/BaseDebugLibNull/BaseDebugLibNull.inf

MemoryAllocationLib|StandaloneMmPkg/Library/StandaloneMmMemoryAll
ocationLib/StandaloneMmMemoryAllocationLib.inf

MmServicesTableLib|MdePkg/Library/StandaloneMmServicesTableLib/Stan
daloneMmServicesTableLib.inf
+
+
SpiFlashCommonLib|MinPlatformPkg/Flash/Library/SpiFlashCommonLibNull/
S
+ piFlashCommonLibNull.inf

StandaloneMmDriverEntryPoint|MdePkg/Library/StandaloneMmDriverEntry
Point/StandaloneMmDriverEntryPoint.inf


##########################################################
#########################################
@@ -155,6 +156,7 @@ [Components]

MinPlatformPkg/Bds/Library/DxePlatformBootManagerLib/DxePlatformBoot
ManagerLib.inf

    MinPlatformPkg/Flash/SpiFvbService/SpiFvbServiceSmm.inf
+  MinPlatformPkg/Flash/SpiFvbService/SpiFvbServiceStandaloneMm.inf

MinPlatformPkg/Flash/Library/SpiFlashCommonLibNull/SpiFlashCommonLib
Null.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 (#71385): https://edk2.groups.io/g/devel/message/71385
Mute This Topic: https://groups.io/mt/80420930/1767664
Group Owner: devel+ow...@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub
[nathaniel.l.desim...@intel.com]
-=-=-=-=-=-=








-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#71620): https://edk2.groups.io/g/devel/message/71620
Mute This Topic: https://groups.io/mt/80420930/21656
Group Owner: devel+ow...@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-


Reply via email to