public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
* [edk2-devel] [PATCH v1 1/1] BoardModulePkg\Library\BiosIdLib: Support Standalone MM
@ 2023-11-21  2:33 Huang, Li-Xia
  0 siblings, 0 replies; 4+ messages in thread
From: Huang, Li-Xia @ 2023-11-21  2:33 UTC (permalink / raw)
  To: devel; +Cc: Eric Dong, Nate DeSimone

Add Standalone Mm BiosIdLib.
Also fix some EDKII Coding Style issue with uncrustify.

Cc: Eric Dong <eric.dong@intel.com>
Cc: Nate DeSimone <nathaniel.l.desimone@intel.com>

Signed-off-by: Lixia Huang <lisa.huang@intel.com>
---
 Platform/Intel/BoardModulePkg/Library/BiosIdLib/BiosIdCommon.c            |  96 ++++++++++++++++
 Platform/Intel/BoardModulePkg/Library/BiosIdLib/DxeBiosIdLib.c            | 111 +++---------------
 Platform/Intel/BoardModulePkg/Library/BiosIdLib/PeiBiosIdLib.c            | 118 +++-----------------
 Platform/Intel/BoardModulePkg/Library/BiosIdLib/StandaloneMmBiosIdLib.c   |  65 +++++++++++
 Platform/Intel/BoardModulePkg/BoardModulePkg.dsc                          |   1 +
 Platform/Intel/BoardModulePkg/Library/BiosIdLib/DxeBiosIdLib.inf          |   6 +-
 Platform/Intel/BoardModulePkg/Library/BiosIdLib/PeiBiosIdLib.inf          |   6 +-
 Platform/Intel/BoardModulePkg/Library/BiosIdLib/StandaloneMmBiosIdLib.inf |  42 +++++++
 8 files changed, 244 insertions(+), 201 deletions(-)

diff --git a/Platform/Intel/BoardModulePkg/Library/BiosIdLib/BiosIdCommon.c b/Platform/Intel/BoardModulePkg/Library/BiosIdLib/BiosIdCommon.c
new file mode 100644
index 000000000000..5735566bfe3a
--- /dev/null
+++ b/Platform/Intel/BoardModulePkg/Library/BiosIdLib/BiosIdCommon.c
@@ -0,0 +1,96 @@
+/** @file
+  Boot service common BIOS ID library implementation.
+
+  These functions in this file can be called during DXE and cannot be called during runtime
+  or in SMM which should use a RT or SMM library.
+
+
+Copyright (c) 2023, Intel Corporation. All rights reserved.<BR>
+SPDX-License-Identifier: BSD-2-Clause-Patent
+
+**/
+
+#include <PiDxe.h>
+#include <Library/BaseMemoryLib.h>
+#include <Library/BiosIdLib.h>
+#include <Guid/BiosId.h>
+
+/**
+  This function returns the BIOS Version & Release Date and Time by getting and converting BIOS ID.
+
+  @param[out] BiosVersion       The Bios Version out of the conversion.
+  @param[out] BiosReleaseDate   The Bios Release Date out of the conversion.
+  @param[out] BiosReleaseTime   The Bios Release Time out of the conversion.
+
+  @retval EFI_SUCCESS               BIOS Version & Release Date and Time have been got successfully.
+  @retval EFI_NOT_FOUND             BIOS ID image is not found, and no parameter will be modified.
+  @retval EFI_INVALID_PARAMETER     All the parameters are NULL.
+
+**/
+EFI_STATUS
+EFIAPI
+GetBiosVersionDateTime (
+  OUT CHAR16  *BiosVersion OPTIONAL,
+  OUT CHAR16  *BiosReleaseDate OPTIONAL,
+  OUT CHAR16  *BiosReleaseTime OPTIONAL
+  )
+{
+  EFI_STATUS     Status;
+  BIOS_ID_IMAGE  BiosIdImage;
+
+  if ((BiosVersion == NULL) && (BiosReleaseDate == NULL) && (BiosReleaseTime == NULL)) {
+    return EFI_INVALID_PARAMETER;
+  }
+
+  Status = GetBiosId (&BiosIdImage);
+  if (EFI_ERROR (Status)) {
+    return EFI_NOT_FOUND;
+  }
+
+  if (BiosVersion != NULL) {
+    //
+    // Fill the BiosVersion data from the BIOS ID.
+    //
+    CopyMem (BiosVersion, &(BiosIdImage.BiosIdString), sizeof (BIOS_ID_STRING));
+  }
+
+  if (BiosReleaseDate != NULL) {
+    //
+    // Fill the build timestamp date from the BIOS ID in the "MM/DD/YY" format.
+    //
+    BiosReleaseDate[0] = BiosIdImage.BiosIdString.TimeStamp[2];
+    BiosReleaseDate[1] = BiosIdImage.BiosIdString.TimeStamp[3];
+    BiosReleaseDate[2] = (CHAR16)((UINT8)('/'));
+
+    BiosReleaseDate[3] = BiosIdImage.BiosIdString.TimeStamp[4];
+    BiosReleaseDate[4] = BiosIdImage.BiosIdString.TimeStamp[5];
+    BiosReleaseDate[5] = (CHAR16)((UINT8)('/'));
+
+    //
+    // Add 20 for SMBIOS table
+    // Current Linux kernel will misjudge 09 as year 0, so using 2009 for SMBIOS table
+    //
+    BiosReleaseDate[6] = '2';
+    BiosReleaseDate[7] = '0';
+    BiosReleaseDate[8] = BiosIdImage.BiosIdString.TimeStamp[0];
+    BiosReleaseDate[9] = BiosIdImage.BiosIdString.TimeStamp[1];
+
+    BiosReleaseDate[10] = (CHAR16)((UINT8)('\0'));
+  }
+
+  if (BiosReleaseTime != NULL) {
+    //
+    // Fill the build timestamp time from the BIOS ID in the "HH:MM" format.
+    //
+    BiosReleaseTime[0] = BiosIdImage.BiosIdString.TimeStamp[6];
+    BiosReleaseTime[1] = BiosIdImage.BiosIdString.TimeStamp[7];
+    BiosReleaseTime[2] = (CHAR16)((UINT8)(':'));
+
+    BiosReleaseTime[3] = BiosIdImage.BiosIdString.TimeStamp[8];
+    BiosReleaseTime[4] = BiosIdImage.BiosIdString.TimeStamp[9];
+
+    BiosReleaseTime[5] = (CHAR16)((UINT8)('\0'));
+  }
+
+  return EFI_SUCCESS;
+}
diff --git a/Platform/Intel/BoardModulePkg/Library/BiosIdLib/DxeBiosIdLib.c b/Platform/Intel/BoardModulePkg/Library/BiosIdLib/DxeBiosIdLib.c
index 3e614d9efc3e..6535bb36f6c9 100644
--- a/Platform/Intel/BoardModulePkg/Library/BiosIdLib/DxeBiosIdLib.c
+++ b/Platform/Intel/BoardModulePkg/Library/BiosIdLib/DxeBiosIdLib.c
@@ -5,7 +5,7 @@
   or in SMM which should use a RT or SMM library.
 
 
-Copyright (c) 2015 - 2019, Intel Corporation. All rights reserved.<BR>
+Copyright (c) 2015 - 2023, Intel Corporation. All rights reserved.<BR>
 SPDX-License-Identifier: BSD-2-Clause-Patent
 
 **/
@@ -15,7 +15,6 @@ SPDX-License-Identifier: BSD-2-Clause-Patent
 #include <Library/HobLib.h>
 #include <Library/DxeServicesLib.h>
 #include <Library/BaseMemoryLib.h>
-#include <Library/HobLib.h>
 #include <Library/MemoryAllocationLib.h>
 #include <Library/DebugLib.h>
 #include <Library/BiosIdLib.h>
@@ -36,16 +35,16 @@ SPDX-License-Identifier: BSD-2-Clause-Patent
 EFI_STATUS
 EFIAPI
 GetBiosId (
-  OUT BIOS_ID_IMAGE     *BiosIdImage OPTIONAL
+  OUT BIOS_ID_IMAGE  *BiosIdImage OPTIONAL
   )
 {
-  EFI_STATUS    Status;
-  BIOS_ID_IMAGE TempBiosIdImage;
-  VOID          *Address;
-  UINTN         Size;
+  EFI_STATUS     Status;
+  BIOS_ID_IMAGE  TempBiosIdImage;
+  VOID           *Address;
+  UINTN          Size;
 
   Address = NULL;
-  Size = 0;
+  Size    = 0;
 
   if (BiosIdImage == NULL) {
     //
@@ -58,10 +57,10 @@ GetBiosId (
   Address = GetFirstGuidHob (&gBiosIdGuid);
   if (Address != NULL) {
     Size = sizeof (BIOS_ID_IMAGE);
-    CopyMem ((VOID *) BiosIdImage, GET_GUID_HOB_DATA (Address), Size);
+    CopyMem ((VOID *)BiosIdImage, GET_GUID_HOB_DATA (Address), Size);
 
-    DEBUG ((EFI_D_INFO, "DXE get BIOS ID from HOB successfully\n"));
-    DEBUG ((EFI_D_INFO, "BIOS ID: %s\n", (CHAR16 *) (&(BiosIdImage->BiosIdString))));
+    DEBUG ((DEBUG_INFO, "DXE get BIOS ID from HOB successfully\n"));
+    DEBUG ((DEBUG_INFO, "BIOS ID: %s\n", (CHAR16 *)(&(BiosIdImage->BiosIdString))));
     return EFI_SUCCESS;
   }
 
@@ -77,99 +76,17 @@ GetBiosId (
     // BIOS ID image is present in FV.
     //
     Size = sizeof (BIOS_ID_IMAGE);
-    CopyMem ((VOID *) BiosIdImage, Address, Size);
+    CopyMem ((VOID *)BiosIdImage, Address, Size);
     //
     // GetSectionFromAnyFv () allocated buffer for Address, now free it.
     //
     FreePool (Address);
 
-    DEBUG ((EFI_D_INFO, "DXE get BIOS ID from FV successfully\n"));
-    DEBUG ((EFI_D_INFO, "BIOS ID: %s\n", (CHAR16 *) (&(BiosIdImage->BiosIdString))));
+    DEBUG ((DEBUG_INFO, "DXE get BIOS ID from FV successfully\n"));
+    DEBUG ((DEBUG_INFO, "BIOS ID: %s\n", (CHAR16 *)(&(BiosIdImage->BiosIdString))));
     return EFI_SUCCESS;
   }
 
-  DEBUG ((EFI_D_ERROR, "DXE get BIOS ID failed: %r\n", EFI_NOT_FOUND));
+  DEBUG ((DEBUG_ERROR, "DXE get BIOS ID failed: %r\n", EFI_NOT_FOUND));
   return EFI_NOT_FOUND;
 }
-
-/**
-  This function returns the BIOS Version & Release Date and Time by getting and converting BIOS ID.
-
-  @param[out] BiosVersion       The Bios Version out of the conversion.
-  @param[out] BiosReleaseDate   The Bios Release Date out of the conversion.
-  @param[out] BiosReleaseTime   The Bios Release Time out of the conversion.
-
-  @retval EFI_SUCCESS               BIOS Version & Release Date and Time have been got successfully.
-  @retval EFI_NOT_FOUND             BIOS ID image is not found, and no parameter will be modified.
-  @retval EFI_INVALID_PARAMETER     All the parameters are NULL.
-
-**/
-EFI_STATUS
-EFIAPI
-GetBiosVersionDateTime (
-  OUT CHAR16    *BiosVersion, OPTIONAL
-  OUT CHAR16    *BiosReleaseDate, OPTIONAL
-  OUT CHAR16    *BiosReleaseTime OPTIONAL
-  )
-{
-  EFI_STATUS        Status;
-  BIOS_ID_IMAGE     BiosIdImage;
-
-  if ((BiosVersion == NULL) && (BiosReleaseDate == NULL) && (BiosReleaseTime == NULL)) {
-    return EFI_INVALID_PARAMETER;
-  }
-
-  Status = GetBiosId (&BiosIdImage);
-  if (EFI_ERROR (Status)) {
-    return EFI_NOT_FOUND;
-  }
-
-  if (BiosVersion != NULL) {
-    //
-    // Fill the BiosVersion data from the BIOS ID.
-    //
-    CopyMem (BiosVersion, &(BiosIdImage.BiosIdString), sizeof (BIOS_ID_STRING));
-  }
-
-  if (BiosReleaseDate != NULL) {
-    //
-    // Fill the build timestamp date from the BIOS ID in the "MM/DD/YY" format.
-    //
-    BiosReleaseDate[0] = BiosIdImage.BiosIdString.TimeStamp[2];
-    BiosReleaseDate[1] = BiosIdImage.BiosIdString.TimeStamp[3];
-    BiosReleaseDate[2] = (CHAR16) ((UINT8) ('/'));
-
-    BiosReleaseDate[3] = BiosIdImage.BiosIdString.TimeStamp[4];
-    BiosReleaseDate[4] = BiosIdImage.BiosIdString.TimeStamp[5];
-    BiosReleaseDate[5] = (CHAR16) ((UINT8) ('/'));
-
-    //
-    // Add 20 for SMBIOS table
-    // Current Linux kernel will misjudge 09 as year 0, so using 2009 for SMBIOS table
-    //
-    BiosReleaseDate[6] = '2';
-    BiosReleaseDate[7] = '0';
-    BiosReleaseDate[8] = BiosIdImage.BiosIdString.TimeStamp[0];
-    BiosReleaseDate[9] = BiosIdImage.BiosIdString.TimeStamp[1];
-
-    BiosReleaseDate[10] = (CHAR16) ((UINT8) ('\0'));
-  }
-
-  if (BiosReleaseTime != NULL) {
-
-    //
-    // Fill the build timestamp time from the BIOS ID in the "HH:MM" format.
-    //
-    BiosReleaseTime[0] = BiosIdImage.BiosIdString.TimeStamp[6];
-    BiosReleaseTime[1] = BiosIdImage.BiosIdString.TimeStamp[7];
-    BiosReleaseTime[2] = (CHAR16) ((UINT8) (':'));
-
-    BiosReleaseTime[3] = BiosIdImage.BiosIdString.TimeStamp[8];
-    BiosReleaseTime[4] = BiosIdImage.BiosIdString.TimeStamp[9];
-
-    BiosReleaseTime[5] = (CHAR16) ((UINT8) ('\0'));
-  }
-
-  return  EFI_SUCCESS;
-}
-
diff --git a/Platform/Intel/BoardModulePkg/Library/BiosIdLib/PeiBiosIdLib.c b/Platform/Intel/BoardModulePkg/Library/BiosIdLib/PeiBiosIdLib.c
index b0f15d2cb8d5..c1295a16444d 100644
--- a/Platform/Intel/BoardModulePkg/Library/BiosIdLib/PeiBiosIdLib.c
+++ b/Platform/Intel/BoardModulePkg/Library/BiosIdLib/PeiBiosIdLib.c
@@ -1,7 +1,7 @@
 /** @file
   Boot service PEI BIOS ID library implementation.
 
-Copyright (c) 2-015 - 2019, Intel Corporation. All rights reserved.<BR>
+Copyright (c) 2015 - 2023, Intel Corporation. All rights reserved.<BR>
 SPDX-License-Identifier: BSD-2-Clause-Patent
 
 **/
@@ -30,19 +30,19 @@ SPDX-License-Identifier: BSD-2-Clause-Patent
 EFI_STATUS
 EFIAPI
 GetBiosId (
-  OUT BIOS_ID_IMAGE     *BiosIdImage OPTIONAL
+  OUT BIOS_ID_IMAGE  *BiosIdImage OPTIONAL
   )
 {
-  EFI_STATUS            Status;
-  BIOS_ID_IMAGE         TempBiosIdImage;
-  VOID                  *Address;
-  UINTN                 Size;
-  UINTN                 Instance;
-  EFI_PEI_FV_HANDLE     VolumeHandle;
-  EFI_PEI_FILE_HANDLE   FileHandle;
+  EFI_STATUS           Status;
+  BIOS_ID_IMAGE        TempBiosIdImage;
+  VOID                 *Address;
+  UINTN                Size;
+  UINTN                Instance;
+  EFI_PEI_FV_HANDLE    VolumeHandle;
+  EFI_PEI_FILE_HANDLE  FileHandle;
 
   Address = NULL;
-  Size = 0;
+  Size    = 0;
 
   if (BiosIdImage == NULL) {
     //
@@ -55,15 +55,15 @@ GetBiosId (
   Address = GetFirstGuidHob (&gBiosIdGuid);
   if (Address != NULL) {
     Size = sizeof (BIOS_ID_IMAGE);
-    CopyMem ((VOID *) BiosIdImage, GET_GUID_HOB_DATA (Address), Size);
+    CopyMem ((VOID *)BiosIdImage, GET_GUID_HOB_DATA (Address), Size);
 
-    DEBUG ((EFI_D_INFO, "PEI get BIOS ID from HOB successfully\n"));
-    DEBUG ((EFI_D_INFO, "BIOS ID: %s\n", (CHAR16 *) (&(BiosIdImage->BiosIdString))));
+    DEBUG ((DEBUG_INFO, "PEI get BIOS ID from HOB successfully\n"));
+    DEBUG ((DEBUG_INFO, "BIOS ID: %s\n", (CHAR16 *)(&(BiosIdImage->BiosIdString))));
     return EFI_SUCCESS;
   }
 
   VolumeHandle = NULL;
-  Instance = 0;
+  Instance     = 0;
   while (TRUE) {
     //
     // Traverse all firmware volume instances.
@@ -74,7 +74,7 @@ GetBiosId (
     }
 
     FileHandle = NULL;
-    Status = PeiServicesFfsFindFileByName (&gBiosIdGuid, VolumeHandle, &FileHandle);
+    Status     = PeiServicesFfsFindFileByName (&gBiosIdGuid, VolumeHandle, &FileHandle);
     if (!EFI_ERROR (Status)) {
       //
       // Search RAW section.
@@ -85,10 +85,10 @@ GetBiosId (
         // BIOS ID image is present in this FV.
         //
         Size = sizeof (BIOS_ID_IMAGE);
-        CopyMem ((VOID *) BiosIdImage, Address, Size);
+        CopyMem ((VOID *)BiosIdImage, Address, Size);
 
-        DEBUG ((EFI_D_INFO, "PEI get BIOS ID from FV successfully\n"));
-        DEBUG ((EFI_D_INFO, "BIOS ID: %s\n", (CHAR16 *) (&(BiosIdImage->BiosIdString))));
+        DEBUG ((DEBUG_INFO, "PEI get BIOS ID from FV successfully\n"));
+        DEBUG ((DEBUG_INFO, "BIOS ID: %s\n", (CHAR16 *)(&(BiosIdImage->BiosIdString))));
 
         //
         // Build GUID HOB for the BIOS ID image.
@@ -107,85 +107,3 @@ GetBiosId (
   DEBUG ((EFI_D_ERROR, "PEI get BIOS ID failed: %r\n", EFI_NOT_FOUND));
   return EFI_NOT_FOUND;
 }
-
-/**
-  This function returns the BIOS Version & Release Date and Time by getting and converting BIOS ID.
-
-  @param[out] BiosVersion       The Bios Version out of the conversion.
-  @param[out] BiosReleaseDate   The Bios Release Date out of the conversion.
-  @param[out] BiosReleaseTime   The Bios Release Time out of the conversion.
-
-  @retval EFI_SUCCESS               BIOS Version & Release Date and Time have been got successfully.
-  @retval EFI_NOT_FOUND             BIOS ID image is not found, and no parameter will be modified.
-  @retval EFI_INVALID_PARAMETER     All the parameters are NULL.
-
-**/
-EFI_STATUS
-EFIAPI
-GetBiosVersionDateTime (
-  OUT CHAR16    *BiosVersion, OPTIONAL
-  OUT CHAR16    *BiosReleaseDate, OPTIONAL
-  OUT CHAR16    *BiosReleaseTime OPTIONAL
-  )
-{
-  EFI_STATUS        Status;
-  BIOS_ID_IMAGE     BiosIdImage;
-
-  if ((BiosVersion == NULL) && (BiosReleaseDate == NULL) && (BiosReleaseTime == NULL)) {
-    return EFI_INVALID_PARAMETER;
-  }
-
-  Status = GetBiosId (&BiosIdImage);
-  if (EFI_ERROR (Status)) {
-    return EFI_NOT_FOUND;
-  }
-
-  if (BiosVersion != NULL) {
-    //
-    // Fill the BiosVersion data from the BIOS ID.
-    //
-    CopyMem (BiosVersion, &(BiosIdImage.BiosIdString), sizeof (BIOS_ID_STRING));
-  }
-
-  if (BiosReleaseDate != NULL) {
-    //
-    // Fill the build timestamp date from the BIOS ID in the "MM/DD/YY" format.
-    //
-    BiosReleaseDate[0] = BiosIdImage.BiosIdString.TimeStamp[2];
-    BiosReleaseDate[1] = BiosIdImage.BiosIdString.TimeStamp[3];
-    BiosReleaseDate[2] = (CHAR16) ((UINT8) ('/'));
-
-    BiosReleaseDate[3] = BiosIdImage.BiosIdString.TimeStamp[4];
-    BiosReleaseDate[4] = BiosIdImage.BiosIdString.TimeStamp[5];
-    BiosReleaseDate[5] = (CHAR16) ((UINT8) ('/'));
-
-    //
-    // Add 20 for SMBIOS table
-    // Current Linux kernel will misjudge 09 as year 0, so using 2009 for SMBIOS table
-    //
-    BiosReleaseDate[6] = '2';
-    BiosReleaseDate[7] = '0';
-    BiosReleaseDate[8] = BiosIdImage.BiosIdString.TimeStamp[0];
-    BiosReleaseDate[9] = BiosIdImage.BiosIdString.TimeStamp[1];
-
-    BiosReleaseDate[10] = (CHAR16) ((UINT8) ('\0'));
-  }
-
-  if (BiosReleaseTime != NULL) {
-
-    //
-    // Fill the build timestamp time from the BIOS ID in the "HH:MM" format.
-    //
-    BiosReleaseTime[0] = BiosIdImage.BiosIdString.TimeStamp[6];
-    BiosReleaseTime[1] = BiosIdImage.BiosIdString.TimeStamp[7];
-    BiosReleaseTime[2] = (CHAR16) ((UINT8) (':'));
-
-    BiosReleaseTime[3] = BiosIdImage.BiosIdString.TimeStamp[8];
-    BiosReleaseTime[4] = BiosIdImage.BiosIdString.TimeStamp[9];
-
-    BiosReleaseTime[5] = (CHAR16) ((UINT8) ('\0'));
-  }
-
-  return  EFI_SUCCESS;
-}
-
diff --git a/Platform/Intel/BoardModulePkg/Library/BiosIdLib/StandaloneMmBiosIdLib.c b/Platform/Intel/BoardModulePkg/Library/BiosIdLib/StandaloneMmBiosIdLib.c
new file mode 100644
index 000000000000..af2d47f2b133
--- /dev/null
+++ b/Platform/Intel/BoardModulePkg/Library/BiosIdLib/StandaloneMmBiosIdLib.c
@@ -0,0 +1,65 @@
+/** @file
+  Boot service StandaloneMm BIOS ID library implementation.
+
+  These functions in this file can be called during DXE and cannot be called during runtime
+  or in SMM which should use a RT or SMM library.
+
+
+Copyright (c) 2023, Intel Corporation. All rights reserved.<BR>
+SPDX-License-Identifier: BSD-2-Clause-Patent
+
+**/
+
+#include <PiMm.h>
+#include <Library/HobLib.h>
+#include <Library/BaseMemoryLib.h>
+#include <Library/DebugLib.h>
+#include <Library/BiosIdLib.h>
+
+#include <Guid/BiosId.h>
+
+/**
+  This function returns BIOS ID by searching HOB.
+  It also debug print the BIOS ID found.
+
+  @param[out] BiosIdImage   The BIOS ID got from HOB or FV. It is optional,
+                            no BIOS ID will be returned if it is NULL as input.
+
+  @retval EFI_SUCCESS               BIOS ID has been got successfully.
+  @retval EFI_NOT_FOUND             BIOS ID image is not found, and no parameter will be modified.
+
+**/
+EFI_STATUS
+EFIAPI
+GetBiosId (
+  OUT BIOS_ID_IMAGE  *BiosIdImage OPTIONAL
+  )
+{
+  BIOS_ID_IMAGE  TempBiosIdImage;
+  VOID           *Address;
+  UINTN          Size;
+
+  Address = NULL;
+  Size    = 0;
+
+  if (BiosIdImage == NULL) {
+    //
+    // It is NULL as input, so no BIOS ID will be returned.
+    // Use temp buffer to hold the BIOS ID.
+    //
+    BiosIdImage = &TempBiosIdImage;
+  }
+
+  Address = GetFirstGuidHob (&gBiosIdGuid);
+  if (Address != NULL) {
+    Size = sizeof (BIOS_ID_IMAGE);
+    CopyMem ((VOID *)BiosIdImage, GET_GUID_HOB_DATA (Address), Size);
+
+    DEBUG ((DEBUG_INFO, "StandaloneMm get BIOS ID from HOB successfully\n"));
+    DEBUG ((DEBUG_INFO, "BIOS ID: %s\n", (CHAR16 *)(&(BiosIdImage->BiosIdString))));
+    return EFI_SUCCESS;
+  }
+
+  DEBUG ((DEBUG_ERROR, "StandaloneMm get BIOS ID failed: %r\n", EFI_NOT_FOUND));
+  return EFI_NOT_FOUND;
+}
diff --git a/Platform/Intel/BoardModulePkg/BoardModulePkg.dsc b/Platform/Intel/BoardModulePkg/BoardModulePkg.dsc
index 9f00592a19c0..44a2abd03f58 100644
--- a/Platform/Intel/BoardModulePkg/BoardModulePkg.dsc
+++ b/Platform/Intel/BoardModulePkg/BoardModulePkg.dsc
@@ -88,6 +88,7 @@
 
   BoardModulePkg/Library/BiosIdLib/DxeBiosIdLib.inf
   BoardModulePkg/Library/BiosIdLib/PeiBiosIdLib.inf
+  BoardModulePkg/Library/BiosIdLib/StandaloneMmBiosIdLib.inf
 
   BoardModulePkg/Library/PeiFirmwareBootMediaInfoLib/PeiFirmwareBootMediaInfoLib.inf
   BoardModulePkg/Library/BdsPs2KbcLib/BdsPs2KbcLib.inf
diff --git a/Platform/Intel/BoardModulePkg/Library/BiosIdLib/DxeBiosIdLib.inf b/Platform/Intel/BoardModulePkg/Library/BiosIdLib/DxeBiosIdLib.inf
index 39f42e91a0cc..9b63a0d580c2 100644
--- a/Platform/Intel/BoardModulePkg/Library/BiosIdLib/DxeBiosIdLib.inf
+++ b/Platform/Intel/BoardModulePkg/Library/BiosIdLib/DxeBiosIdLib.inf
@@ -1,7 +1,7 @@
 ### @file
 #  DXE BIOS ID library.
 #
-# Copyright (c) 2015 - 2019, Intel Corporation. All rights reserved.<BR>
+# Copyright (c) 2015 - 2023, Intel Corporation. All rights reserved.<BR>
 #
 # SPDX-License-Identifier: BSD-2-Clause-Patent
 #
@@ -22,10 +22,12 @@
 
 [Sources.common]
   DxeBiosIdLib.c
+  BiosIdCommon.c
 
 [Packages]
   MdePkg/MdePkg.dec
-  BoardModulePkg/BoardModulePkg.dec

+  BoardModulePkg/BoardModulePkg.dec
+
 
 [LibraryClasses]
   BaseLib
diff --git a/Platform/Intel/BoardModulePkg/Library/BiosIdLib/PeiBiosIdLib.inf b/Platform/Intel/BoardModulePkg/Library/BiosIdLib/PeiBiosIdLib.inf
index e38d17bd9bb1..c197a3f18316 100644
--- a/Platform/Intel/BoardModulePkg/Library/BiosIdLib/PeiBiosIdLib.inf
+++ b/Platform/Intel/BoardModulePkg/Library/BiosIdLib/PeiBiosIdLib.inf
@@ -1,7 +1,7 @@
 ### @file
 # PEI BIOS ID library.
 #
-# Copyright (c) 2015 - 2019, Intel Corporation. All rights reserved.<BR>
+# Copyright (c) 2015 - 2023, Intel Corporation. All rights reserved.<BR>
 #
 # SPDX-License-Identifier: BSD-2-Clause-Patent
 #
@@ -22,10 +22,12 @@
 
 [Sources.common]
   PeiBiosIdLib.c
+  BiosIdCommon.c
 
 [Packages]
   MdePkg/MdePkg.dec
-  BoardModulePkg/BoardModulePkg.dec

+  BoardModulePkg/BoardModulePkg.dec
+
 
 [LibraryClasses]
   BaseLib
diff --git a/Platform/Intel/BoardModulePkg/Library/BiosIdLib/StandaloneMmBiosIdLib.inf b/Platform/Intel/BoardModulePkg/Library/BiosIdLib/StandaloneMmBiosIdLib.inf
new file mode 100644
index 000000000000..40f64b8067d1
--- /dev/null
+++ b/Platform/Intel/BoardModulePkg/Library/BiosIdLib/StandaloneMmBiosIdLib.inf
@@ -0,0 +1,42 @@
+### @file
+#  StandaloneMm BIOS ID library.
+#
+# Copyright (c) 2023, Intel Corporation. All rights reserved.<BR>
+#
+# SPDX-License-Identifier: BSD-2-Clause-Patent
+#
+###
+[Defines]
+  INF_VERSION                   = 0x00010005
+  BASE_NAME                     = StandaloneMmBiosIdLib
+  FILE_GUID                     = b6304cdf-6d3e-4762-8a88-ff98dcad6b14
+  MODULE_TYPE                   = MM_STANDALONE
+  VERSION_STRING                = 1.0
+  PI_SPECIFICATION_VERSION      = 0x00010032
+  LIBRARY_CLASS                 = BiosIdLib| MM_CORE_STANDALONE MM_STANDALONE
+
+#
+# The following information is for reference only and not required by the build tools.
+#
+#  VALID_ARCHITECTURES          = IA32 X64
+#
+
+[Sources.common]
+  StandaloneMmBiosIdLib.c
+  BiosIdCommon.c
+
+[Packages]
+  MdePkg/MdePkg.dec
+  BoardModulePkg/BoardModulePkg.dec
+
+[LibraryClasses]
+  BaseLib
+  BaseMemoryLib
+  HobLib
+  DebugLib
+
+[Guids]
+  ## SOMETIMES_CONSUMES ## HOB
+  ## SOMETIMES_CONSUMES ## GUID
+  gBiosIdGuid
+
-- 
2.26.2.windows.1



-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#111503): https://edk2.groups.io/g/devel/message/111503
Mute This Topic: https://groups.io/mt/102721635/7686176
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [rebecca@openfw.io]
-=-=-=-=-=-=-=-=-=-=-=-



^ permalink raw reply related	[flat|nested] 4+ messages in thread

* [edk2-devel] [PATCH v1 1/1] BoardModulePkg\Library\BiosIdLib: Support Standalone MM
@ 2023-12-26  7:55 Huang, Li-Xia
  2024-01-05 19:20 ` Nate DeSimone
  2024-01-05 19:27 ` Nate DeSimone
  0 siblings, 2 replies; 4+ messages in thread
From: Huang, Li-Xia @ 2023-12-26  7:55 UTC (permalink / raw)
  To: devel; +Cc: Eric Dong, Nate DeSimone

Add Standalone Mm BiosIdLib and format code with Uncrustify.

Cc: Eric Dong <eric.dong@intel.com>
Cc: Nate DeSimone <nathaniel.l.desimone@intel.com>

Signed-off-by: Lixia Huang <lisa.huang@intel.com>
---
 Platform/Intel/BoardModulePkg/Library/BiosIdLib/BiosIdCommon.c            |  96 ++++++++++++++++
 Platform/Intel/BoardModulePkg/Library/BiosIdLib/DxeBiosIdLib.c            | 111 +++---------------
 Platform/Intel/BoardModulePkg/Library/BiosIdLib/PeiBiosIdLib.c            | 118 +++-----------------
 Platform/Intel/BoardModulePkg/Library/BiosIdLib/StandaloneMmBiosIdLib.c   |  65 +++++++++++
 Platform/Intel/BoardModulePkg/BoardModulePkg.dsc                          |   1 +
 Platform/Intel/BoardModulePkg/Library/BiosIdLib/DxeBiosIdLib.inf          |   1 +
 Platform/Intel/BoardModulePkg/Library/BiosIdLib/PeiBiosIdLib.inf          |   6 +-
 Platform/Intel/BoardModulePkg/Library/BiosIdLib/StandaloneMmBiosIdLib.inf |  42 +++++++
 8 files changed, 241 insertions(+), 199 deletions(-)

diff --git a/Platform/Intel/BoardModulePkg/Library/BiosIdLib/BiosIdCommon.c b/Platform/Intel/BoardModulePkg/Library/BiosIdLib/BiosIdCommon.c
new file mode 100644
index 000000000000..5735566bfe3a
--- /dev/null
+++ b/Platform/Intel/BoardModulePkg/Library/BiosIdLib/BiosIdCommon.c
@@ -0,0 +1,96 @@
+/** @file
+  Boot service common BIOS ID library implementation.
+
+  These functions in this file can be called during DXE and cannot be called during runtime
+  or in SMM which should use a RT or SMM library.
+
+
+Copyright (c) 2023, Intel Corporation. All rights reserved.<BR>
+SPDX-License-Identifier: BSD-2-Clause-Patent
+
+**/
+
+#include <PiDxe.h>
+#include <Library/BaseMemoryLib.h>
+#include <Library/BiosIdLib.h>
+#include <Guid/BiosId.h>
+
+/**
+  This function returns the BIOS Version & Release Date and Time by getting and converting BIOS ID.
+
+  @param[out] BiosVersion       The Bios Version out of the conversion.
+  @param[out] BiosReleaseDate   The Bios Release Date out of the conversion.
+  @param[out] BiosReleaseTime   The Bios Release Time out of the conversion.
+
+  @retval EFI_SUCCESS               BIOS Version & Release Date and Time have been got successfully.
+  @retval EFI_NOT_FOUND             BIOS ID image is not found, and no parameter will be modified.
+  @retval EFI_INVALID_PARAMETER     All the parameters are NULL.
+
+**/
+EFI_STATUS
+EFIAPI
+GetBiosVersionDateTime (
+  OUT CHAR16  *BiosVersion OPTIONAL,
+  OUT CHAR16  *BiosReleaseDate OPTIONAL,
+  OUT CHAR16  *BiosReleaseTime OPTIONAL
+  )
+{
+  EFI_STATUS     Status;
+  BIOS_ID_IMAGE  BiosIdImage;
+
+  if ((BiosVersion == NULL) && (BiosReleaseDate == NULL) && (BiosReleaseTime == NULL)) {
+    return EFI_INVALID_PARAMETER;
+  }
+
+  Status = GetBiosId (&BiosIdImage);
+  if (EFI_ERROR (Status)) {
+    return EFI_NOT_FOUND;
+  }
+
+  if (BiosVersion != NULL) {
+    //
+    // Fill the BiosVersion data from the BIOS ID.
+    //
+    CopyMem (BiosVersion, &(BiosIdImage.BiosIdString), sizeof (BIOS_ID_STRING));
+  }
+
+  if (BiosReleaseDate != NULL) {
+    //
+    // Fill the build timestamp date from the BIOS ID in the "MM/DD/YY" format.
+    //
+    BiosReleaseDate[0] = BiosIdImage.BiosIdString.TimeStamp[2];
+    BiosReleaseDate[1] = BiosIdImage.BiosIdString.TimeStamp[3];
+    BiosReleaseDate[2] = (CHAR16)((UINT8)('/'));
+
+    BiosReleaseDate[3] = BiosIdImage.BiosIdString.TimeStamp[4];
+    BiosReleaseDate[4] = BiosIdImage.BiosIdString.TimeStamp[5];
+    BiosReleaseDate[5] = (CHAR16)((UINT8)('/'));
+
+    //
+    // Add 20 for SMBIOS table
+    // Current Linux kernel will misjudge 09 as year 0, so using 2009 for SMBIOS table
+    //
+    BiosReleaseDate[6] = '2';
+    BiosReleaseDate[7] = '0';
+    BiosReleaseDate[8] = BiosIdImage.BiosIdString.TimeStamp[0];
+    BiosReleaseDate[9] = BiosIdImage.BiosIdString.TimeStamp[1];
+
+    BiosReleaseDate[10] = (CHAR16)((UINT8)('\0'));
+  }
+
+  if (BiosReleaseTime != NULL) {
+    //
+    // Fill the build timestamp time from the BIOS ID in the "HH:MM" format.
+    //
+    BiosReleaseTime[0] = BiosIdImage.BiosIdString.TimeStamp[6];
+    BiosReleaseTime[1] = BiosIdImage.BiosIdString.TimeStamp[7];
+    BiosReleaseTime[2] = (CHAR16)((UINT8)(':'));
+
+    BiosReleaseTime[3] = BiosIdImage.BiosIdString.TimeStamp[8];
+    BiosReleaseTime[4] = BiosIdImage.BiosIdString.TimeStamp[9];
+
+    BiosReleaseTime[5] = (CHAR16)((UINT8)('\0'));
+  }
+
+  return EFI_SUCCESS;
+}
diff --git a/Platform/Intel/BoardModulePkg/Library/BiosIdLib/DxeBiosIdLib.c b/Platform/Intel/BoardModulePkg/Library/BiosIdLib/DxeBiosIdLib.c
index 3e614d9efc3e..6535bb36f6c9 100644
--- a/Platform/Intel/BoardModulePkg/Library/BiosIdLib/DxeBiosIdLib.c
+++ b/Platform/Intel/BoardModulePkg/Library/BiosIdLib/DxeBiosIdLib.c
@@ -5,7 +5,7 @@
   or in SMM which should use a RT or SMM library.
 
 
-Copyright (c) 2015 - 2019, Intel Corporation. All rights reserved.<BR>
+Copyright (c) 2015 - 2023, Intel Corporation. All rights reserved.<BR>
 SPDX-License-Identifier: BSD-2-Clause-Patent
 
 **/
@@ -15,7 +15,6 @@ SPDX-License-Identifier: BSD-2-Clause-Patent
 #include <Library/HobLib.h>
 #include <Library/DxeServicesLib.h>
 #include <Library/BaseMemoryLib.h>
-#include <Library/HobLib.h>
 #include <Library/MemoryAllocationLib.h>
 #include <Library/DebugLib.h>
 #include <Library/BiosIdLib.h>
@@ -36,16 +35,16 @@ SPDX-License-Identifier: BSD-2-Clause-Patent
 EFI_STATUS
 EFIAPI
 GetBiosId (
-  OUT BIOS_ID_IMAGE     *BiosIdImage OPTIONAL
+  OUT BIOS_ID_IMAGE  *BiosIdImage OPTIONAL
   )
 {
-  EFI_STATUS    Status;
-  BIOS_ID_IMAGE TempBiosIdImage;
-  VOID          *Address;
-  UINTN         Size;
+  EFI_STATUS     Status;
+  BIOS_ID_IMAGE  TempBiosIdImage;
+  VOID           *Address;
+  UINTN          Size;
 
   Address = NULL;
-  Size = 0;
+  Size    = 0;
 
   if (BiosIdImage == NULL) {
     //
@@ -58,10 +57,10 @@ GetBiosId (
   Address = GetFirstGuidHob (&gBiosIdGuid);
   if (Address != NULL) {
     Size = sizeof (BIOS_ID_IMAGE);
-    CopyMem ((VOID *) BiosIdImage, GET_GUID_HOB_DATA (Address), Size);
+    CopyMem ((VOID *)BiosIdImage, GET_GUID_HOB_DATA (Address), Size);
 
-    DEBUG ((EFI_D_INFO, "DXE get BIOS ID from HOB successfully\n"));
-    DEBUG ((EFI_D_INFO, "BIOS ID: %s\n", (CHAR16 *) (&(BiosIdImage->BiosIdString))));
+    DEBUG ((DEBUG_INFO, "DXE get BIOS ID from HOB successfully\n"));
+    DEBUG ((DEBUG_INFO, "BIOS ID: %s\n", (CHAR16 *)(&(BiosIdImage->BiosIdString))));
     return EFI_SUCCESS;
   }
 
@@ -77,99 +76,17 @@ GetBiosId (
     // BIOS ID image is present in FV.
     //
     Size = sizeof (BIOS_ID_IMAGE);
-    CopyMem ((VOID *) BiosIdImage, Address, Size);
+    CopyMem ((VOID *)BiosIdImage, Address, Size);
     //
     // GetSectionFromAnyFv () allocated buffer for Address, now free it.
     //
     FreePool (Address);
 
-    DEBUG ((EFI_D_INFO, "DXE get BIOS ID from FV successfully\n"));
-    DEBUG ((EFI_D_INFO, "BIOS ID: %s\n", (CHAR16 *) (&(BiosIdImage->BiosIdString))));
+    DEBUG ((DEBUG_INFO, "DXE get BIOS ID from FV successfully\n"));
+    DEBUG ((DEBUG_INFO, "BIOS ID: %s\n", (CHAR16 *)(&(BiosIdImage->BiosIdString))));
     return EFI_SUCCESS;
   }
 
-  DEBUG ((EFI_D_ERROR, "DXE get BIOS ID failed: %r\n", EFI_NOT_FOUND));
+  DEBUG ((DEBUG_ERROR, "DXE get BIOS ID failed: %r\n", EFI_NOT_FOUND));
   return EFI_NOT_FOUND;
 }
-
-/**
-  This function returns the BIOS Version & Release Date and Time by getting and converting BIOS ID.
-
-  @param[out] BiosVersion       The Bios Version out of the conversion.
-  @param[out] BiosReleaseDate   The Bios Release Date out of the conversion.
-  @param[out] BiosReleaseTime   The Bios Release Time out of the conversion.
-
-  @retval EFI_SUCCESS               BIOS Version & Release Date and Time have been got successfully.
-  @retval EFI_NOT_FOUND             BIOS ID image is not found, and no parameter will be modified.
-  @retval EFI_INVALID_PARAMETER     All the parameters are NULL.
-
-**/
-EFI_STATUS
-EFIAPI
-GetBiosVersionDateTime (
-  OUT CHAR16    *BiosVersion, OPTIONAL
-  OUT CHAR16    *BiosReleaseDate, OPTIONAL
-  OUT CHAR16    *BiosReleaseTime OPTIONAL
-  )
-{
-  EFI_STATUS        Status;
-  BIOS_ID_IMAGE     BiosIdImage;
-
-  if ((BiosVersion == NULL) && (BiosReleaseDate == NULL) && (BiosReleaseTime == NULL)) {
-    return EFI_INVALID_PARAMETER;
-  }
-
-  Status = GetBiosId (&BiosIdImage);
-  if (EFI_ERROR (Status)) {
-    return EFI_NOT_FOUND;
-  }
-
-  if (BiosVersion != NULL) {
-    //
-    // Fill the BiosVersion data from the BIOS ID.
-    //
-    CopyMem (BiosVersion, &(BiosIdImage.BiosIdString), sizeof (BIOS_ID_STRING));
-  }
-
-  if (BiosReleaseDate != NULL) {
-    //
-    // Fill the build timestamp date from the BIOS ID in the "MM/DD/YY" format.
-    //
-    BiosReleaseDate[0] = BiosIdImage.BiosIdString.TimeStamp[2];
-    BiosReleaseDate[1] = BiosIdImage.BiosIdString.TimeStamp[3];
-    BiosReleaseDate[2] = (CHAR16) ((UINT8) ('/'));
-
-    BiosReleaseDate[3] = BiosIdImage.BiosIdString.TimeStamp[4];
-    BiosReleaseDate[4] = BiosIdImage.BiosIdString.TimeStamp[5];
-    BiosReleaseDate[5] = (CHAR16) ((UINT8) ('/'));
-
-    //
-    // Add 20 for SMBIOS table
-    // Current Linux kernel will misjudge 09 as year 0, so using 2009 for SMBIOS table
-    //
-    BiosReleaseDate[6] = '2';
-    BiosReleaseDate[7] = '0';
-    BiosReleaseDate[8] = BiosIdImage.BiosIdString.TimeStamp[0];
-    BiosReleaseDate[9] = BiosIdImage.BiosIdString.TimeStamp[1];
-
-    BiosReleaseDate[10] = (CHAR16) ((UINT8) ('\0'));
-  }
-
-  if (BiosReleaseTime != NULL) {
-
-    //
-    // Fill the build timestamp time from the BIOS ID in the "HH:MM" format.
-    //
-    BiosReleaseTime[0] = BiosIdImage.BiosIdString.TimeStamp[6];
-    BiosReleaseTime[1] = BiosIdImage.BiosIdString.TimeStamp[7];
-    BiosReleaseTime[2] = (CHAR16) ((UINT8) (':'));
-
-    BiosReleaseTime[3] = BiosIdImage.BiosIdString.TimeStamp[8];
-    BiosReleaseTime[4] = BiosIdImage.BiosIdString.TimeStamp[9];
-
-    BiosReleaseTime[5] = (CHAR16) ((UINT8) ('\0'));
-  }
-
-  return  EFI_SUCCESS;
-}
-
diff --git a/Platform/Intel/BoardModulePkg/Library/BiosIdLib/PeiBiosIdLib.c b/Platform/Intel/BoardModulePkg/Library/BiosIdLib/PeiBiosIdLib.c
index b0f15d2cb8d5..c1295a16444d 100644
--- a/Platform/Intel/BoardModulePkg/Library/BiosIdLib/PeiBiosIdLib.c
+++ b/Platform/Intel/BoardModulePkg/Library/BiosIdLib/PeiBiosIdLib.c
@@ -1,7 +1,7 @@
 /** @file
   Boot service PEI BIOS ID library implementation.
 
-Copyright (c) 2-015 - 2019, Intel Corporation. All rights reserved.<BR>
+Copyright (c) 2015 - 2023, Intel Corporation. All rights reserved.<BR>
 SPDX-License-Identifier: BSD-2-Clause-Patent
 
 **/
@@ -30,19 +30,19 @@ SPDX-License-Identifier: BSD-2-Clause-Patent
 EFI_STATUS
 EFIAPI
 GetBiosId (
-  OUT BIOS_ID_IMAGE     *BiosIdImage OPTIONAL
+  OUT BIOS_ID_IMAGE  *BiosIdImage OPTIONAL
   )
 {
-  EFI_STATUS            Status;
-  BIOS_ID_IMAGE         TempBiosIdImage;
-  VOID                  *Address;
-  UINTN                 Size;
-  UINTN                 Instance;
-  EFI_PEI_FV_HANDLE     VolumeHandle;
-  EFI_PEI_FILE_HANDLE   FileHandle;
+  EFI_STATUS           Status;
+  BIOS_ID_IMAGE        TempBiosIdImage;
+  VOID                 *Address;
+  UINTN                Size;
+  UINTN                Instance;
+  EFI_PEI_FV_HANDLE    VolumeHandle;
+  EFI_PEI_FILE_HANDLE  FileHandle;
 
   Address = NULL;
-  Size = 0;
+  Size    = 0;
 
   if (BiosIdImage == NULL) {
     //
@@ -55,15 +55,15 @@ GetBiosId (
   Address = GetFirstGuidHob (&gBiosIdGuid);
   if (Address != NULL) {
     Size = sizeof (BIOS_ID_IMAGE);
-    CopyMem ((VOID *) BiosIdImage, GET_GUID_HOB_DATA (Address), Size);
+    CopyMem ((VOID *)BiosIdImage, GET_GUID_HOB_DATA (Address), Size);
 
-    DEBUG ((EFI_D_INFO, "PEI get BIOS ID from HOB successfully\n"));
-    DEBUG ((EFI_D_INFO, "BIOS ID: %s\n", (CHAR16 *) (&(BiosIdImage->BiosIdString))));
+    DEBUG ((DEBUG_INFO, "PEI get BIOS ID from HOB successfully\n"));
+    DEBUG ((DEBUG_INFO, "BIOS ID: %s\n", (CHAR16 *)(&(BiosIdImage->BiosIdString))));
     return EFI_SUCCESS;
   }
 
   VolumeHandle = NULL;
-  Instance = 0;
+  Instance     = 0;
   while (TRUE) {
     //
     // Traverse all firmware volume instances.
@@ -74,7 +74,7 @@ GetBiosId (
     }
 
     FileHandle = NULL;
-    Status = PeiServicesFfsFindFileByName (&gBiosIdGuid, VolumeHandle, &FileHandle);
+    Status     = PeiServicesFfsFindFileByName (&gBiosIdGuid, VolumeHandle, &FileHandle);
     if (!EFI_ERROR (Status)) {
       //
       // Search RAW section.
@@ -85,10 +85,10 @@ GetBiosId (
         // BIOS ID image is present in this FV.
         //
         Size = sizeof (BIOS_ID_IMAGE);
-        CopyMem ((VOID *) BiosIdImage, Address, Size);
+        CopyMem ((VOID *)BiosIdImage, Address, Size);
 
-        DEBUG ((EFI_D_INFO, "PEI get BIOS ID from FV successfully\n"));
-        DEBUG ((EFI_D_INFO, "BIOS ID: %s\n", (CHAR16 *) (&(BiosIdImage->BiosIdString))));
+        DEBUG ((DEBUG_INFO, "PEI get BIOS ID from FV successfully\n"));
+        DEBUG ((DEBUG_INFO, "BIOS ID: %s\n", (CHAR16 *)(&(BiosIdImage->BiosIdString))));
 
         //
         // Build GUID HOB for the BIOS ID image.
@@ -107,85 +107,3 @@ GetBiosId (
   DEBUG ((EFI_D_ERROR, "PEI get BIOS ID failed: %r\n", EFI_NOT_FOUND));
   return EFI_NOT_FOUND;
 }
-
-/**
-  This function returns the BIOS Version & Release Date and Time by getting and converting BIOS ID.
-
-  @param[out] BiosVersion       The Bios Version out of the conversion.
-  @param[out] BiosReleaseDate   The Bios Release Date out of the conversion.
-  @param[out] BiosReleaseTime   The Bios Release Time out of the conversion.
-
-  @retval EFI_SUCCESS               BIOS Version & Release Date and Time have been got successfully.
-  @retval EFI_NOT_FOUND             BIOS ID image is not found, and no parameter will be modified.
-  @retval EFI_INVALID_PARAMETER     All the parameters are NULL.
-
-**/
-EFI_STATUS
-EFIAPI
-GetBiosVersionDateTime (
-  OUT CHAR16    *BiosVersion, OPTIONAL
-  OUT CHAR16    *BiosReleaseDate, OPTIONAL
-  OUT CHAR16    *BiosReleaseTime OPTIONAL
-  )
-{
-  EFI_STATUS        Status;
-  BIOS_ID_IMAGE     BiosIdImage;
-
-  if ((BiosVersion == NULL) && (BiosReleaseDate == NULL) && (BiosReleaseTime == NULL)) {
-    return EFI_INVALID_PARAMETER;
-  }
-
-  Status = GetBiosId (&BiosIdImage);
-  if (EFI_ERROR (Status)) {
-    return EFI_NOT_FOUND;
-  }
-
-  if (BiosVersion != NULL) {
-    //
-    // Fill the BiosVersion data from the BIOS ID.
-    //
-    CopyMem (BiosVersion, &(BiosIdImage.BiosIdString), sizeof (BIOS_ID_STRING));
-  }
-
-  if (BiosReleaseDate != NULL) {
-    //
-    // Fill the build timestamp date from the BIOS ID in the "MM/DD/YY" format.
-    //
-    BiosReleaseDate[0] = BiosIdImage.BiosIdString.TimeStamp[2];
-    BiosReleaseDate[1] = BiosIdImage.BiosIdString.TimeStamp[3];
-    BiosReleaseDate[2] = (CHAR16) ((UINT8) ('/'));
-
-    BiosReleaseDate[3] = BiosIdImage.BiosIdString.TimeStamp[4];
-    BiosReleaseDate[4] = BiosIdImage.BiosIdString.TimeStamp[5];
-    BiosReleaseDate[5] = (CHAR16) ((UINT8) ('/'));
-
-    //
-    // Add 20 for SMBIOS table
-    // Current Linux kernel will misjudge 09 as year 0, so using 2009 for SMBIOS table
-    //
-    BiosReleaseDate[6] = '2';
-    BiosReleaseDate[7] = '0';
-    BiosReleaseDate[8] = BiosIdImage.BiosIdString.TimeStamp[0];
-    BiosReleaseDate[9] = BiosIdImage.BiosIdString.TimeStamp[1];
-
-    BiosReleaseDate[10] = (CHAR16) ((UINT8) ('\0'));
-  }
-
-  if (BiosReleaseTime != NULL) {
-
-    //
-    // Fill the build timestamp time from the BIOS ID in the "HH:MM" format.
-    //
-    BiosReleaseTime[0] = BiosIdImage.BiosIdString.TimeStamp[6];
-    BiosReleaseTime[1] = BiosIdImage.BiosIdString.TimeStamp[7];
-    BiosReleaseTime[2] = (CHAR16) ((UINT8) (':'));
-
-    BiosReleaseTime[3] = BiosIdImage.BiosIdString.TimeStamp[8];
-    BiosReleaseTime[4] = BiosIdImage.BiosIdString.TimeStamp[9];
-
-    BiosReleaseTime[5] = (CHAR16) ((UINT8) ('\0'));
-  }
-
-  return  EFI_SUCCESS;
-}
-
diff --git a/Platform/Intel/BoardModulePkg/Library/BiosIdLib/StandaloneMmBiosIdLib.c b/Platform/Intel/BoardModulePkg/Library/BiosIdLib/StandaloneMmBiosIdLib.c
new file mode 100644
index 000000000000..af2d47f2b133
--- /dev/null
+++ b/Platform/Intel/BoardModulePkg/Library/BiosIdLib/StandaloneMmBiosIdLib.c
@@ -0,0 +1,65 @@
+/** @file
+  Boot service StandaloneMm BIOS ID library implementation.
+
+  These functions in this file can be called during DXE and cannot be called during runtime
+  or in SMM which should use a RT or SMM library.
+
+
+Copyright (c) 2023, Intel Corporation. All rights reserved.<BR>
+SPDX-License-Identifier: BSD-2-Clause-Patent
+
+**/
+
+#include <PiMm.h>
+#include <Library/HobLib.h>
+#include <Library/BaseMemoryLib.h>
+#include <Library/DebugLib.h>
+#include <Library/BiosIdLib.h>
+
+#include <Guid/BiosId.h>
+
+/**
+  This function returns BIOS ID by searching HOB.
+  It also debug print the BIOS ID found.
+
+  @param[out] BiosIdImage   The BIOS ID got from HOB or FV. It is optional,
+                            no BIOS ID will be returned if it is NULL as input.
+
+  @retval EFI_SUCCESS               BIOS ID has been got successfully.
+  @retval EFI_NOT_FOUND             BIOS ID image is not found, and no parameter will be modified.
+
+**/
+EFI_STATUS
+EFIAPI
+GetBiosId (
+  OUT BIOS_ID_IMAGE  *BiosIdImage OPTIONAL
+  )
+{
+  BIOS_ID_IMAGE  TempBiosIdImage;
+  VOID           *Address;
+  UINTN          Size;
+
+  Address = NULL;
+  Size    = 0;
+
+  if (BiosIdImage == NULL) {
+    //
+    // It is NULL as input, so no BIOS ID will be returned.
+    // Use temp buffer to hold the BIOS ID.
+    //
+    BiosIdImage = &TempBiosIdImage;
+  }
+
+  Address = GetFirstGuidHob (&gBiosIdGuid);
+  if (Address != NULL) {
+    Size = sizeof (BIOS_ID_IMAGE);
+    CopyMem ((VOID *)BiosIdImage, GET_GUID_HOB_DATA (Address), Size);
+
+    DEBUG ((DEBUG_INFO, "StandaloneMm get BIOS ID from HOB successfully\n"));
+    DEBUG ((DEBUG_INFO, "BIOS ID: %s\n", (CHAR16 *)(&(BiosIdImage->BiosIdString))));
+    return EFI_SUCCESS;
+  }
+
+  DEBUG ((DEBUG_ERROR, "StandaloneMm get BIOS ID failed: %r\n", EFI_NOT_FOUND));
+  return EFI_NOT_FOUND;
+}
diff --git a/Platform/Intel/BoardModulePkg/BoardModulePkg.dsc b/Platform/Intel/BoardModulePkg/BoardModulePkg.dsc
index 9f00592a19c0..44a2abd03f58 100644
--- a/Platform/Intel/BoardModulePkg/BoardModulePkg.dsc
+++ b/Platform/Intel/BoardModulePkg/BoardModulePkg.dsc
@@ -88,6 +88,7 @@
 
   BoardModulePkg/Library/BiosIdLib/DxeBiosIdLib.inf
   BoardModulePkg/Library/BiosIdLib/PeiBiosIdLib.inf
+  BoardModulePkg/Library/BiosIdLib/StandaloneMmBiosIdLib.inf
 
   BoardModulePkg/Library/PeiFirmwareBootMediaInfoLib/PeiFirmwareBootMediaInfoLib.inf
   BoardModulePkg/Library/BdsPs2KbcLib/BdsPs2KbcLib.inf
diff --git a/Platform/Intel/BoardModulePkg/Library/BiosIdLib/DxeBiosIdLib.inf b/Platform/Intel/BoardModulePkg/Library/BiosIdLib/DxeBiosIdLib.inf
index 39f42e91a0cc..f73ab1f3b6b6 100644
--- a/Platform/Intel/BoardModulePkg/Library/BiosIdLib/DxeBiosIdLib.inf
+++ b/Platform/Intel/BoardModulePkg/Library/BiosIdLib/DxeBiosIdLib.inf
@@ -22,6 +22,7 @@
 
 [Sources.common]
   DxeBiosIdLib.c
+  BiosIdCommon.c
 
 [Packages]
   MdePkg/MdePkg.dec
diff --git a/Platform/Intel/BoardModulePkg/Library/BiosIdLib/PeiBiosIdLib.inf b/Platform/Intel/BoardModulePkg/Library/BiosIdLib/PeiBiosIdLib.inf
index e38d17bd9bb1..c197a3f18316 100644
--- a/Platform/Intel/BoardModulePkg/Library/BiosIdLib/PeiBiosIdLib.inf
+++ b/Platform/Intel/BoardModulePkg/Library/BiosIdLib/PeiBiosIdLib.inf
@@ -1,7 +1,7 @@
 ### @file
 # PEI BIOS ID library.
 #
-# Copyright (c) 2015 - 2019, Intel Corporation. All rights reserved.<BR>
+# Copyright (c) 2015 - 2023, Intel Corporation. All rights reserved.<BR>
 #
 # SPDX-License-Identifier: BSD-2-Clause-Patent
 #
@@ -22,10 +22,12 @@
 
 [Sources.common]
   PeiBiosIdLib.c
+  BiosIdCommon.c
 
 [Packages]
   MdePkg/MdePkg.dec
-  BoardModulePkg/BoardModulePkg.dec

+  BoardModulePkg/BoardModulePkg.dec
+
 
 [LibraryClasses]
   BaseLib
diff --git a/Platform/Intel/BoardModulePkg/Library/BiosIdLib/StandaloneMmBiosIdLib.inf b/Platform/Intel/BoardModulePkg/Library/BiosIdLib/StandaloneMmBiosIdLib.inf
new file mode 100644
index 000000000000..40f64b8067d1
--- /dev/null
+++ b/Platform/Intel/BoardModulePkg/Library/BiosIdLib/StandaloneMmBiosIdLib.inf
@@ -0,0 +1,42 @@
+### @file
+#  StandaloneMm BIOS ID library.
+#
+# Copyright (c) 2023, Intel Corporation. All rights reserved.<BR>
+#
+# SPDX-License-Identifier: BSD-2-Clause-Patent
+#
+###
+[Defines]
+  INF_VERSION                   = 0x00010005
+  BASE_NAME                     = StandaloneMmBiosIdLib
+  FILE_GUID                     = b6304cdf-6d3e-4762-8a88-ff98dcad6b14
+  MODULE_TYPE                   = MM_STANDALONE
+  VERSION_STRING                = 1.0
+  PI_SPECIFICATION_VERSION      = 0x00010032
+  LIBRARY_CLASS                 = BiosIdLib| MM_CORE_STANDALONE MM_STANDALONE
+
+#
+# The following information is for reference only and not required by the build tools.
+#
+#  VALID_ARCHITECTURES          = IA32 X64
+#
+
+[Sources.common]
+  StandaloneMmBiosIdLib.c
+  BiosIdCommon.c
+
+[Packages]
+  MdePkg/MdePkg.dec
+  BoardModulePkg/BoardModulePkg.dec
+
+[LibraryClasses]
+  BaseLib
+  BaseMemoryLib
+  HobLib
+  DebugLib
+
+[Guids]
+  ## SOMETIMES_CONSUMES ## HOB
+  ## SOMETIMES_CONSUMES ## GUID
+  gBiosIdGuid
+
-- 
2.26.2.windows.1



-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#112908): https://edk2.groups.io/g/devel/message/112908
Mute This Topic: https://groups.io/mt/103367466/7686176
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [rebecca@openfw.io]
-=-=-=-=-=-=-=-=-=-=-=-



^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [edk2-devel] [PATCH v1 1/1] BoardModulePkg\Library\BiosIdLib: Support Standalone MM
  2023-12-26  7:55 [edk2-devel] [PATCH v1 1/1] BoardModulePkg\Library\BiosIdLib: Support Standalone MM Huang, Li-Xia
@ 2024-01-05 19:20 ` Nate DeSimone
  2024-01-05 19:27 ` Nate DeSimone
  1 sibling, 0 replies; 4+ messages in thread
From: Nate DeSimone @ 2024-01-05 19:20 UTC (permalink / raw)
  To: Huang, Li-Xia, devel@edk2.groups.io; +Cc: Dong, Eric

Hi Li,

It looks like the standalone MM version of this library is missing the search for the BiosId file. I suspect the issue you ran into is that standalone MM only has support for 1 FV, and it is highly likely that the BiosId file is not in the standalone MM FV. This is understandable; however, it does highlight yet another deficiency in the architecture of standalone MM. Again, that is not your fault and is beyond the scope of this patch.

Reviewed-by: Nate DeSimone <nathaniel.l.desimone@intel.com>

> -----Original Message-----
> From: Huang, Li-Xia <lisa.huang@intel.com>
> Sent: Monday, December 25, 2023 11:56 PM
> To: devel@edk2.groups.io
> Cc: Dong, Eric <eric.dong@intel.com>; Desimone, Nathaniel L
> <nathaniel.l.desimone@intel.com>
> Subject: [PATCH v1 1/1] BoardModulePkg\Library\BiosIdLib: Support
> Standalone MM
> 
> Add Standalone Mm BiosIdLib and format code with Uncrustify.
> 
> Cc: Eric Dong <eric.dong@intel.com>
> Cc: Nate DeSimone <nathaniel.l.desimone@intel.com>
> 
> Signed-off-by: Lixia Huang <lisa.huang@intel.com>
> ---
>  Platform/Intel/BoardModulePkg/Library/BiosIdLib/BiosIdCommon.c            |
> 96 ++++++++++++++++
>  Platform/Intel/BoardModulePkg/Library/BiosIdLib/DxeBiosIdLib.c            | 111
> +++---------------
>  Platform/Intel/BoardModulePkg/Library/BiosIdLib/PeiBiosIdLib.c            | 118
> +++-----------------
>  Platform/Intel/BoardModulePkg/Library/BiosIdLib/StandaloneMmBiosIdLib.c
> |  65 +++++++++++
>  Platform/Intel/BoardModulePkg/BoardModulePkg.dsc                          |   1 +
>  Platform/Intel/BoardModulePkg/Library/BiosIdLib/DxeBiosIdLib.inf          |   1
> +
>  Platform/Intel/BoardModulePkg/Library/BiosIdLib/PeiBiosIdLib.inf          |   6
> +-
> 
> Platform/Intel/BoardModulePkg/Library/BiosIdLib/StandaloneMmBiosIdLib.i
> nf |  42 +++++++
>  8 files changed, 241 insertions(+), 199 deletions(-)
> 
> diff --git
> a/Platform/Intel/BoardModulePkg/Library/BiosIdLib/BiosIdCommon.c
> b/Platform/Intel/BoardModulePkg/Library/BiosIdLib/BiosIdCommon.c
> new file mode 100644
> index 000000000000..5735566bfe3a
> --- /dev/null
> +++ b/Platform/Intel/BoardModulePkg/Library/BiosIdLib/BiosIdCommon.c
> @@ -0,0 +1,96 @@
> +/** @file
> +  Boot service common BIOS ID library implementation.
> +
> +  These functions in this file can be called during DXE and cannot be
> + called during runtime  or in SMM which should use a RT or SMM library.
> +
> +
> +Copyright (c) 2023, Intel Corporation. All rights reserved.<BR>
> +SPDX-License-Identifier: BSD-2-Clause-Patent
> +
> +**/
> +
> +#include <PiDxe.h>
> +#include <Library/BaseMemoryLib.h>
> +#include <Library/BiosIdLib.h>
> +#include <Guid/BiosId.h>
> +
> +/**
> +  This function returns the BIOS Version & Release Date and Time by getting
> and converting BIOS ID.
> +
> +  @param[out] BiosVersion       The Bios Version out of the conversion.
> +  @param[out] BiosReleaseDate   The Bios Release Date out of the
> conversion.
> +  @param[out] BiosReleaseTime   The Bios Release Time out of the
> conversion.
> +
> +  @retval EFI_SUCCESS               BIOS Version & Release Date and Time have
> been got successfully.
> +  @retval EFI_NOT_FOUND             BIOS ID image is not found, and no
> parameter will be modified.
> +  @retval EFI_INVALID_PARAMETER     All the parameters are NULL.
> +
> +**/
> +EFI_STATUS
> +EFIAPI
> +GetBiosVersionDateTime (
> +  OUT CHAR16  *BiosVersion OPTIONAL,
> +  OUT CHAR16  *BiosReleaseDate OPTIONAL,
> +  OUT CHAR16  *BiosReleaseTime OPTIONAL
> +  )
> +{
> +  EFI_STATUS     Status;
> +  BIOS_ID_IMAGE  BiosIdImage;
> +
> +  if ((BiosVersion == NULL) && (BiosReleaseDate == NULL) &&
> (BiosReleaseTime == NULL)) {
> +    return EFI_INVALID_PARAMETER;
> +  }
> +
> +  Status = GetBiosId (&BiosIdImage);
> +  if (EFI_ERROR (Status)) {
> +    return EFI_NOT_FOUND;
> +  }
> +
> +  if (BiosVersion != NULL) {
> +    //
> +    // Fill the BiosVersion data from the BIOS ID.
> +    //
> +    CopyMem (BiosVersion, &(BiosIdImage.BiosIdString), sizeof
> + (BIOS_ID_STRING));  }
> +
> +  if (BiosReleaseDate != NULL) {
> +    //
> +    // Fill the build timestamp date from the BIOS ID in the "MM/DD/YY"
> format.
> +    //
> +    BiosReleaseDate[0] = BiosIdImage.BiosIdString.TimeStamp[2];
> +    BiosReleaseDate[1] = BiosIdImage.BiosIdString.TimeStamp[3];
> +    BiosReleaseDate[2] = (CHAR16)((UINT8)('/'));
> +
> +    BiosReleaseDate[3] = BiosIdImage.BiosIdString.TimeStamp[4];
> +    BiosReleaseDate[4] = BiosIdImage.BiosIdString.TimeStamp[5];
> +    BiosReleaseDate[5] = (CHAR16)((UINT8)('/'));
> +
> +    //
> +    // Add 20 for SMBIOS table
> +    // Current Linux kernel will misjudge 09 as year 0, so using 2009 for
> SMBIOS table
> +    //
> +    BiosReleaseDate[6] = '2';
> +    BiosReleaseDate[7] = '0';
> +    BiosReleaseDate[8] = BiosIdImage.BiosIdString.TimeStamp[0];
> +    BiosReleaseDate[9] = BiosIdImage.BiosIdString.TimeStamp[1];
> +
> +    BiosReleaseDate[10] = (CHAR16)((UINT8)('\0'));  }
> +
> +  if (BiosReleaseTime != NULL) {
> +    //
> +    // Fill the build timestamp time from the BIOS ID in the "HH:MM" format.
> +    //
> +    BiosReleaseTime[0] = BiosIdImage.BiosIdString.TimeStamp[6];
> +    BiosReleaseTime[1] = BiosIdImage.BiosIdString.TimeStamp[7];
> +    BiosReleaseTime[2] = (CHAR16)((UINT8)(':'));
> +
> +    BiosReleaseTime[3] = BiosIdImage.BiosIdString.TimeStamp[8];
> +    BiosReleaseTime[4] = BiosIdImage.BiosIdString.TimeStamp[9];
> +
> +    BiosReleaseTime[5] = (CHAR16)((UINT8)('\0'));  }
> +
> +  return EFI_SUCCESS;
> +}
> diff --git a/Platform/Intel/BoardModulePkg/Library/BiosIdLib/DxeBiosIdLib.c
> b/Platform/Intel/BoardModulePkg/Library/BiosIdLib/DxeBiosIdLib.c
> index 3e614d9efc3e..6535bb36f6c9 100644
> --- a/Platform/Intel/BoardModulePkg/Library/BiosIdLib/DxeBiosIdLib.c
> +++ b/Platform/Intel/BoardModulePkg/Library/BiosIdLib/DxeBiosIdLib.c
> @@ -5,7 +5,7 @@
>    or in SMM which should use a RT or SMM library.
> 
> 
> -Copyright (c) 2015 - 2019, Intel Corporation. All rights reserved.<BR>
> +Copyright (c) 2015 - 2023, Intel Corporation. All rights reserved.<BR>
>  SPDX-License-Identifier: BSD-2-Clause-Patent
> 
>  **/
> @@ -15,7 +15,6 @@ SPDX-License-Identifier: BSD-2-Clause-Patent  #include
> <Library/HobLib.h>  #include <Library/DxeServicesLib.h>  #include
> <Library/BaseMemoryLib.h> -#include <Library/HobLib.h>  #include
> <Library/MemoryAllocationLib.h>  #include <Library/DebugLib.h>  #include
> <Library/BiosIdLib.h> @@ -36,16 +35,16 @@ SPDX-License-Identifier: BSD-2-
> Clause-Patent  EFI_STATUS  EFIAPI  GetBiosId (
> -  OUT BIOS_ID_IMAGE     *BiosIdImage OPTIONAL
> +  OUT BIOS_ID_IMAGE  *BiosIdImage OPTIONAL
>    )
>  {
> -  EFI_STATUS    Status;
> -  BIOS_ID_IMAGE TempBiosIdImage;
> -  VOID          *Address;
> -  UINTN         Size;
> +  EFI_STATUS     Status;
> +  BIOS_ID_IMAGE  TempBiosIdImage;
> +  VOID           *Address;
> +  UINTN          Size;
> 
>    Address = NULL;
> -  Size = 0;
> +  Size    = 0;
> 
>    if (BiosIdImage == NULL) {
>      //
> @@ -58,10 +57,10 @@ GetBiosId (
>    Address = GetFirstGuidHob (&gBiosIdGuid);
>    if (Address != NULL) {
>      Size = sizeof (BIOS_ID_IMAGE);
> -    CopyMem ((VOID *) BiosIdImage, GET_GUID_HOB_DATA (Address), Size);
> +    CopyMem ((VOID *)BiosIdImage, GET_GUID_HOB_DATA (Address), Size);
> 
> -    DEBUG ((EFI_D_INFO, "DXE get BIOS ID from HOB successfully\n"));
> -    DEBUG ((EFI_D_INFO, "BIOS ID: %s\n", (CHAR16 *) (&(BiosIdImage-
> >BiosIdString))));
> +    DEBUG ((DEBUG_INFO, "DXE get BIOS ID from HOB successfully\n"));
> +    DEBUG ((DEBUG_INFO, "BIOS ID: %s\n", (CHAR16
> + *)(&(BiosIdImage->BiosIdString))));
>      return EFI_SUCCESS;
>    }
> 
> @@ -77,99 +76,17 @@ GetBiosId (
>      // BIOS ID image is present in FV.
>      //
>      Size = sizeof (BIOS_ID_IMAGE);
> -    CopyMem ((VOID *) BiosIdImage, Address, Size);
> +    CopyMem ((VOID *)BiosIdImage, Address, Size);
>      //
>      // GetSectionFromAnyFv () allocated buffer for Address, now free it.
>      //
>      FreePool (Address);
> 
> -    DEBUG ((EFI_D_INFO, "DXE get BIOS ID from FV successfully\n"));
> -    DEBUG ((EFI_D_INFO, "BIOS ID: %s\n", (CHAR16 *) (&(BiosIdImage-
> >BiosIdString))));
> +    DEBUG ((DEBUG_INFO, "DXE get BIOS ID from FV successfully\n"));
> +    DEBUG ((DEBUG_INFO, "BIOS ID: %s\n", (CHAR16
> + *)(&(BiosIdImage->BiosIdString))));
>      return EFI_SUCCESS;
>    }
> 
> -  DEBUG ((EFI_D_ERROR, "DXE get BIOS ID failed: %r\n", EFI_NOT_FOUND));
> +  DEBUG ((DEBUG_ERROR, "DXE get BIOS ID failed: %r\n",
> EFI_NOT_FOUND));
>    return EFI_NOT_FOUND;
>  }
> -
> -/**
> -  This function returns the BIOS Version & Release Date and Time by getting
> and converting BIOS ID.
> -
> -  @param[out] BiosVersion       The Bios Version out of the conversion.
> -  @param[out] BiosReleaseDate   The Bios Release Date out of the conversion.
> -  @param[out] BiosReleaseTime   The Bios Release Time out of the
> conversion.
> -
> -  @retval EFI_SUCCESS               BIOS Version & Release Date and Time have
> been got successfully.
> -  @retval EFI_NOT_FOUND             BIOS ID image is not found, and no
> parameter will be modified.
> -  @retval EFI_INVALID_PARAMETER     All the parameters are NULL.
> -
> -**/
> -EFI_STATUS
> -EFIAPI
> -GetBiosVersionDateTime (
> -  OUT CHAR16    *BiosVersion, OPTIONAL
> -  OUT CHAR16    *BiosReleaseDate, OPTIONAL
> -  OUT CHAR16    *BiosReleaseTime OPTIONAL
> -  )
> -{
> -  EFI_STATUS        Status;
> -  BIOS_ID_IMAGE     BiosIdImage;
> -
> -  if ((BiosVersion == NULL) && (BiosReleaseDate == NULL) &&
> (BiosReleaseTime == NULL)) {
> -    return EFI_INVALID_PARAMETER;
> -  }
> -
> -  Status = GetBiosId (&BiosIdImage);
> -  if (EFI_ERROR (Status)) {
> -    return EFI_NOT_FOUND;
> -  }
> -
> -  if (BiosVersion != NULL) {
> -    //
> -    // Fill the BiosVersion data from the BIOS ID.
> -    //
> -    CopyMem (BiosVersion, &(BiosIdImage.BiosIdString), sizeof
> (BIOS_ID_STRING));
> -  }
> -
> -  if (BiosReleaseDate != NULL) {
> -    //
> -    // Fill the build timestamp date from the BIOS ID in the "MM/DD/YY"
> format.
> -    //
> -    BiosReleaseDate[0] = BiosIdImage.BiosIdString.TimeStamp[2];
> -    BiosReleaseDate[1] = BiosIdImage.BiosIdString.TimeStamp[3];
> -    BiosReleaseDate[2] = (CHAR16) ((UINT8) ('/'));
> -
> -    BiosReleaseDate[3] = BiosIdImage.BiosIdString.TimeStamp[4];
> -    BiosReleaseDate[4] = BiosIdImage.BiosIdString.TimeStamp[5];
> -    BiosReleaseDate[5] = (CHAR16) ((UINT8) ('/'));
> -
> -    //
> -    // Add 20 for SMBIOS table
> -    // Current Linux kernel will misjudge 09 as year 0, so using 2009 for SMBIOS
> table
> -    //
> -    BiosReleaseDate[6] = '2';
> -    BiosReleaseDate[7] = '0';
> -    BiosReleaseDate[8] = BiosIdImage.BiosIdString.TimeStamp[0];
> -    BiosReleaseDate[9] = BiosIdImage.BiosIdString.TimeStamp[1];
> -
> -    BiosReleaseDate[10] = (CHAR16) ((UINT8) ('\0'));
> -  }
> -
> -  if (BiosReleaseTime != NULL) {
> -
> -    //
> -    // Fill the build timestamp time from the BIOS ID in the "HH:MM" format.
> -    //
> -    BiosReleaseTime[0] = BiosIdImage.BiosIdString.TimeStamp[6];
> -    BiosReleaseTime[1] = BiosIdImage.BiosIdString.TimeStamp[7];
> -    BiosReleaseTime[2] = (CHAR16) ((UINT8) (':'));
> -
> -    BiosReleaseTime[3] = BiosIdImage.BiosIdString.TimeStamp[8];
> -    BiosReleaseTime[4] = BiosIdImage.BiosIdString.TimeStamp[9];
> -
> -    BiosReleaseTime[5] = (CHAR16) ((UINT8) ('\0'));
> -  }
> -
> -  return  EFI_SUCCESS;
> -}
> -
> diff --git a/Platform/Intel/BoardModulePkg/Library/BiosIdLib/PeiBiosIdLib.c
> b/Platform/Intel/BoardModulePkg/Library/BiosIdLib/PeiBiosIdLib.c
> index b0f15d2cb8d5..c1295a16444d 100644
> --- a/Platform/Intel/BoardModulePkg/Library/BiosIdLib/PeiBiosIdLib.c
> +++ b/Platform/Intel/BoardModulePkg/Library/BiosIdLib/PeiBiosIdLib.c
> @@ -1,7 +1,7 @@
>  /** @file
>    Boot service PEI BIOS ID library implementation.
> 
> -Copyright (c) 2-015 - 2019, Intel Corporation. All rights reserved.<BR>
> +Copyright (c) 2015 - 2023, Intel Corporation. All rights reserved.<BR>
>  SPDX-License-Identifier: BSD-2-Clause-Patent
> 
>  **/
> @@ -30,19 +30,19 @@ SPDX-License-Identifier: BSD-2-Clause-Patent
> EFI_STATUS  EFIAPI  GetBiosId (
> -  OUT BIOS_ID_IMAGE     *BiosIdImage OPTIONAL
> +  OUT BIOS_ID_IMAGE  *BiosIdImage OPTIONAL
>    )
>  {
> -  EFI_STATUS            Status;
> -  BIOS_ID_IMAGE         TempBiosIdImage;
> -  VOID                  *Address;
> -  UINTN                 Size;
> -  UINTN                 Instance;
> -  EFI_PEI_FV_HANDLE     VolumeHandle;
> -  EFI_PEI_FILE_HANDLE   FileHandle;
> +  EFI_STATUS           Status;
> +  BIOS_ID_IMAGE        TempBiosIdImage;
> +  VOID                 *Address;
> +  UINTN                Size;
> +  UINTN                Instance;
> +  EFI_PEI_FV_HANDLE    VolumeHandle;
> +  EFI_PEI_FILE_HANDLE  FileHandle;
> 
>    Address = NULL;
> -  Size = 0;
> +  Size    = 0;
> 
>    if (BiosIdImage == NULL) {
>      //
> @@ -55,15 +55,15 @@ GetBiosId (
>    Address = GetFirstGuidHob (&gBiosIdGuid);
>    if (Address != NULL) {
>      Size = sizeof (BIOS_ID_IMAGE);
> -    CopyMem ((VOID *) BiosIdImage, GET_GUID_HOB_DATA (Address), Size);
> +    CopyMem ((VOID *)BiosIdImage, GET_GUID_HOB_DATA (Address), Size);
> 
> -    DEBUG ((EFI_D_INFO, "PEI get BIOS ID from HOB successfully\n"));
> -    DEBUG ((EFI_D_INFO, "BIOS ID: %s\n", (CHAR16 *) (&(BiosIdImage-
> >BiosIdString))));
> +    DEBUG ((DEBUG_INFO, "PEI get BIOS ID from HOB successfully\n"));
> +    DEBUG ((DEBUG_INFO, "BIOS ID: %s\n", (CHAR16
> + *)(&(BiosIdImage->BiosIdString))));
>      return EFI_SUCCESS;
>    }
> 
>    VolumeHandle = NULL;
> -  Instance = 0;
> +  Instance     = 0;
>    while (TRUE) {
>      //
>      // Traverse all firmware volume instances.
> @@ -74,7 +74,7 @@ GetBiosId (
>      }
> 
>      FileHandle = NULL;
> -    Status = PeiServicesFfsFindFileByName (&gBiosIdGuid, VolumeHandle,
> &FileHandle);
> +    Status     = PeiServicesFfsFindFileByName (&gBiosIdGuid, VolumeHandle,
> &FileHandle);
>      if (!EFI_ERROR (Status)) {
>        //
>        // Search RAW section.
> @@ -85,10 +85,10 @@ GetBiosId (
>          // BIOS ID image is present in this FV.
>          //
>          Size = sizeof (BIOS_ID_IMAGE);
> -        CopyMem ((VOID *) BiosIdImage, Address, Size);
> +        CopyMem ((VOID *)BiosIdImage, Address, Size);
> 
> -        DEBUG ((EFI_D_INFO, "PEI get BIOS ID from FV successfully\n"));
> -        DEBUG ((EFI_D_INFO, "BIOS ID: %s\n", (CHAR16 *) (&(BiosIdImage-
> >BiosIdString))));
> +        DEBUG ((DEBUG_INFO, "PEI get BIOS ID from FV successfully\n"));
> +        DEBUG ((DEBUG_INFO, "BIOS ID: %s\n", (CHAR16
> + *)(&(BiosIdImage->BiosIdString))));
> 
>          //
>          // Build GUID HOB for the BIOS ID image.
> @@ -107,85 +107,3 @@ GetBiosId (
>    DEBUG ((EFI_D_ERROR, "PEI get BIOS ID failed: %r\n", EFI_NOT_FOUND));
>    return EFI_NOT_FOUND;
>  }
> -
> -/**
> -  This function returns the BIOS Version & Release Date and Time by getting
> and converting BIOS ID.
> -
> -  @param[out] BiosVersion       The Bios Version out of the conversion.
> -  @param[out] BiosReleaseDate   The Bios Release Date out of the conversion.
> -  @param[out] BiosReleaseTime   The Bios Release Time out of the
> conversion.
> -
> -  @retval EFI_SUCCESS               BIOS Version & Release Date and Time have
> been got successfully.
> -  @retval EFI_NOT_FOUND             BIOS ID image is not found, and no
> parameter will be modified.
> -  @retval EFI_INVALID_PARAMETER     All the parameters are NULL.
> -
> -**/
> -EFI_STATUS
> -EFIAPI
> -GetBiosVersionDateTime (
> -  OUT CHAR16    *BiosVersion, OPTIONAL
> -  OUT CHAR16    *BiosReleaseDate, OPTIONAL
> -  OUT CHAR16    *BiosReleaseTime OPTIONAL
> -  )
> -{
> -  EFI_STATUS        Status;
> -  BIOS_ID_IMAGE     BiosIdImage;
> -
> -  if ((BiosVersion == NULL) && (BiosReleaseDate == NULL) &&
> (BiosReleaseTime == NULL)) {
> -    return EFI_INVALID_PARAMETER;
> -  }
> -
> -  Status = GetBiosId (&BiosIdImage);
> -  if (EFI_ERROR (Status)) {
> -    return EFI_NOT_FOUND;
> -  }
> -
> -  if (BiosVersion != NULL) {
> -    //
> -    // Fill the BiosVersion data from the BIOS ID.
> -    //
> -    CopyMem (BiosVersion, &(BiosIdImage.BiosIdString), sizeof
> (BIOS_ID_STRING));
> -  }
> -
> -  if (BiosReleaseDate != NULL) {
> -    //
> -    // Fill the build timestamp date from the BIOS ID in the "MM/DD/YY"
> format.
> -    //
> -    BiosReleaseDate[0] = BiosIdImage.BiosIdString.TimeStamp[2];
> -    BiosReleaseDate[1] = BiosIdImage.BiosIdString.TimeStamp[3];
> -    BiosReleaseDate[2] = (CHAR16) ((UINT8) ('/'));
> -
> -    BiosReleaseDate[3] = BiosIdImage.BiosIdString.TimeStamp[4];
> -    BiosReleaseDate[4] = BiosIdImage.BiosIdString.TimeStamp[5];
> -    BiosReleaseDate[5] = (CHAR16) ((UINT8) ('/'));
> -
> -    //
> -    // Add 20 for SMBIOS table
> -    // Current Linux kernel will misjudge 09 as year 0, so using 2009 for SMBIOS
> table
> -    //
> -    BiosReleaseDate[6] = '2';
> -    BiosReleaseDate[7] = '0';
> -    BiosReleaseDate[8] = BiosIdImage.BiosIdString.TimeStamp[0];
> -    BiosReleaseDate[9] = BiosIdImage.BiosIdString.TimeStamp[1];
> -
> -    BiosReleaseDate[10] = (CHAR16) ((UINT8) ('\0'));
> -  }
> -
> -  if (BiosReleaseTime != NULL) {
> -
> -    //
> -    // Fill the build timestamp time from the BIOS ID in the "HH:MM" format.
> -    //
> -    BiosReleaseTime[0] = BiosIdImage.BiosIdString.TimeStamp[6];
> -    BiosReleaseTime[1] = BiosIdImage.BiosIdString.TimeStamp[7];
> -    BiosReleaseTime[2] = (CHAR16) ((UINT8) (':'));
> -
> -    BiosReleaseTime[3] = BiosIdImage.BiosIdString.TimeStamp[8];
> -    BiosReleaseTime[4] = BiosIdImage.BiosIdString.TimeStamp[9];
> -
> -    BiosReleaseTime[5] = (CHAR16) ((UINT8) ('\0'));
> -  }
> -
> -  return  EFI_SUCCESS;
> -}
> -
> diff --git
> a/Platform/Intel/BoardModulePkg/Library/BiosIdLib/StandaloneMmBiosIdLib
> .c
> b/Platform/Intel/BoardModulePkg/Library/BiosIdLib/StandaloneMmBiosIdLi
> b.c
> new file mode 100644
> index 000000000000..af2d47f2b133
> --- /dev/null
> +++
> b/Platform/Intel/BoardModulePkg/Library/BiosIdLib/StandaloneMmBiosId
> +++ Lib.c
> @@ -0,0 +1,65 @@
> +/** @file
> +  Boot service StandaloneMm BIOS ID library implementation.
> +
> +  These functions in this file can be called during DXE and cannot be
> + called during runtime  or in SMM which should use a RT or SMM library.
> +
> +
> +Copyright (c) 2023, Intel Corporation. All rights reserved.<BR>
> +SPDX-License-Identifier: BSD-2-Clause-Patent
> +
> +**/
> +
> +#include <PiMm.h>
> +#include <Library/HobLib.h>
> +#include <Library/BaseMemoryLib.h>
> +#include <Library/DebugLib.h>
> +#include <Library/BiosIdLib.h>
> +
> +#include <Guid/BiosId.h>
> +
> +/**
> +  This function returns BIOS ID by searching HOB.
> +  It also debug print the BIOS ID found.
> +
> +  @param[out] BiosIdImage   The BIOS ID got from HOB or FV. It is optional,
> +                            no BIOS ID will be returned if it is NULL as input.
> +
> +  @retval EFI_SUCCESS               BIOS ID has been got successfully.
> +  @retval EFI_NOT_FOUND             BIOS ID image is not found, and no
> parameter will be modified.
> +
> +**/
> +EFI_STATUS
> +EFIAPI
> +GetBiosId (
> +  OUT BIOS_ID_IMAGE  *BiosIdImage OPTIONAL
> +  )
> +{
> +  BIOS_ID_IMAGE  TempBiosIdImage;
> +  VOID           *Address;
> +  UINTN          Size;
> +
> +  Address = NULL;
> +  Size    = 0;
> +
> +  if (BiosIdImage == NULL) {
> +    //
> +    // It is NULL as input, so no BIOS ID will be returned.
> +    // Use temp buffer to hold the BIOS ID.
> +    //
> +    BiosIdImage = &TempBiosIdImage;
> +  }
> +
> +  Address = GetFirstGuidHob (&gBiosIdGuid);  if (Address != NULL) {
> +    Size = sizeof (BIOS_ID_IMAGE);
> +    CopyMem ((VOID *)BiosIdImage, GET_GUID_HOB_DATA (Address), Size);
> +
> +    DEBUG ((DEBUG_INFO, "StandaloneMm get BIOS ID from HOB
> successfully\n"));
> +    DEBUG ((DEBUG_INFO, "BIOS ID: %s\n", (CHAR16 *)(&(BiosIdImage-
> >BiosIdString))));
> +    return EFI_SUCCESS;
> +  }
> +
> +  DEBUG ((DEBUG_ERROR, "StandaloneMm get BIOS ID failed: %r\n",
> +EFI_NOT_FOUND));
> +  return EFI_NOT_FOUND;
> +}
> diff --git a/Platform/Intel/BoardModulePkg/BoardModulePkg.dsc
> b/Platform/Intel/BoardModulePkg/BoardModulePkg.dsc
> index 9f00592a19c0..44a2abd03f58 100644
> --- a/Platform/Intel/BoardModulePkg/BoardModulePkg.dsc
> +++ b/Platform/Intel/BoardModulePkg/BoardModulePkg.dsc
> @@ -88,6 +88,7 @@
> 
>    BoardModulePkg/Library/BiosIdLib/DxeBiosIdLib.inf
>    BoardModulePkg/Library/BiosIdLib/PeiBiosIdLib.inf
> +  BoardModulePkg/Library/BiosIdLib/StandaloneMmBiosIdLib.inf
> 
> 
> BoardModulePkg/Library/PeiFirmwareBootMediaInfoLib/PeiFirmwareBootMe
> diaInfoLib.inf
>    BoardModulePkg/Library/BdsPs2KbcLib/BdsPs2KbcLib.inf
> diff --git a/Platform/Intel/BoardModulePkg/Library/BiosIdLib/DxeBiosIdLib.inf
> b/Platform/Intel/BoardModulePkg/Library/BiosIdLib/DxeBiosIdLib.inf
> index 39f42e91a0cc..f73ab1f3b6b6 100644
> --- a/Platform/Intel/BoardModulePkg/Library/BiosIdLib/DxeBiosIdLib.inf
> +++ b/Platform/Intel/BoardModulePkg/Library/BiosIdLib/DxeBiosIdLib.inf
> @@ -22,6 +22,7 @@
> 
>  [Sources.common]
>    DxeBiosIdLib.c
> +  BiosIdCommon.c
> 
>  [Packages]
>    MdePkg/MdePkg.dec
> diff --git a/Platform/Intel/BoardModulePkg/Library/BiosIdLib/PeiBiosIdLib.inf
> b/Platform/Intel/BoardModulePkg/Library/BiosIdLib/PeiBiosIdLib.inf
> index e38d17bd9bb1..c197a3f18316 100644
> --- a/Platform/Intel/BoardModulePkg/Library/BiosIdLib/PeiBiosIdLib.inf
> +++ b/Platform/Intel/BoardModulePkg/Library/BiosIdLib/PeiBiosIdLib.inf
> @@ -1,7 +1,7 @@
>  ### @file
>  # PEI BIOS ID library.
>  #
> -# Copyright (c) 2015 - 2019, Intel Corporation. All rights reserved.<BR>
> +# Copyright (c) 2015 - 2023, Intel Corporation. All rights
> +reserved.<BR>
>  #
>  # SPDX-License-Identifier: BSD-2-Clause-Patent  # @@ -22,10 +22,12 @@
> 
>  [Sources.common]
>    PeiBiosIdLib.c
> +  BiosIdCommon.c
> 
>  [Packages]
>    MdePkg/MdePkg.dec
> -  BoardModulePkg/BoardModulePkg.dec
> 
> +  BoardModulePkg/BoardModulePkg.dec
> +
> 
>  [LibraryClasses]
>    BaseLib
> diff --git
> a/Platform/Intel/BoardModulePkg/Library/BiosIdLib/StandaloneMmBiosIdLib
> .inf
> b/Platform/Intel/BoardModulePkg/Library/BiosIdLib/StandaloneMmBiosIdLi
> b.inf
> new file mode 100644
> index 000000000000..40f64b8067d1
> --- /dev/null
> +++
> b/Platform/Intel/BoardModulePkg/Library/BiosIdLib/StandaloneMmBiosId
> +++ Lib.inf
> @@ -0,0 +1,42 @@
> +### @file
> +#  StandaloneMm BIOS ID library.
> +#
> +# Copyright (c) 2023, Intel Corporation. All rights reserved.<BR> # #
> +SPDX-License-Identifier: BSD-2-Clause-Patent # ### [Defines]
> +  INF_VERSION                   = 0x00010005
> +  BASE_NAME                     = StandaloneMmBiosIdLib
> +  FILE_GUID                     = b6304cdf-6d3e-4762-8a88-ff98dcad6b14
> +  MODULE_TYPE                   = MM_STANDALONE
> +  VERSION_STRING                = 1.0
> +  PI_SPECIFICATION_VERSION      = 0x00010032
> +  LIBRARY_CLASS                 = BiosIdLib| MM_CORE_STANDALONE
> MM_STANDALONE
> +
> +#
> +# The following information is for reference only and not required by the build
> tools.
> +#
> +#  VALID_ARCHITECTURES          = IA32 X64
> +#
> +
> +[Sources.common]
> +  StandaloneMmBiosIdLib.c
> +  BiosIdCommon.c
> +
> +[Packages]
> +  MdePkg/MdePkg.dec
> +  BoardModulePkg/BoardModulePkg.dec
> +
> +[LibraryClasses]
> +  BaseLib
> +  BaseMemoryLib
> +  HobLib
> +  DebugLib
> +
> +[Guids]
> +  ## SOMETIMES_CONSUMES ## HOB
> +  ## SOMETIMES_CONSUMES ## GUID
> +  gBiosIdGuid
> +
> --
> 2.26.2.windows.1



-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#113316): https://edk2.groups.io/g/devel/message/113316
Mute This Topic: https://groups.io/mt/103367466/7686176
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [rebecca@openfw.io]
-=-=-=-=-=-=-=-=-=-=-=-



^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [edk2-devel] [PATCH v1 1/1] BoardModulePkg\Library\BiosIdLib: Support Standalone MM
  2023-12-26  7:55 [edk2-devel] [PATCH v1 1/1] BoardModulePkg\Library\BiosIdLib: Support Standalone MM Huang, Li-Xia
  2024-01-05 19:20 ` Nate DeSimone
@ 2024-01-05 19:27 ` Nate DeSimone
  1 sibling, 0 replies; 4+ messages in thread
From: Nate DeSimone @ 2024-01-05 19:27 UTC (permalink / raw)
  To: Huang, Li-Xia, devel@edk2.groups.io; +Cc: Dong, Eric

Pushed as b46ecad

> -----Original Message-----
> From: Huang, Li-Xia <lisa.huang@intel.com>
> Sent: Monday, December 25, 2023 11:56 PM
> To: devel@edk2.groups.io
> Cc: Dong, Eric <eric.dong@intel.com>; Desimone, Nathaniel L
> <nathaniel.l.desimone@intel.com>
> Subject: [PATCH v1 1/1] BoardModulePkg\Library\BiosIdLib: Support
> Standalone MM
> 
> Add Standalone Mm BiosIdLib and format code with Uncrustify.
> 
> Cc: Eric Dong <eric.dong@intel.com>
> Cc: Nate DeSimone <nathaniel.l.desimone@intel.com>
> 
> Signed-off-by: Lixia Huang <lisa.huang@intel.com>
> ---
>  Platform/Intel/BoardModulePkg/Library/BiosIdLib/BiosIdCommon.c            |
> 96 ++++++++++++++++
>  Platform/Intel/BoardModulePkg/Library/BiosIdLib/DxeBiosIdLib.c            | 111
> +++---------------
>  Platform/Intel/BoardModulePkg/Library/BiosIdLib/PeiBiosIdLib.c            | 118
> +++-----------------
>  Platform/Intel/BoardModulePkg/Library/BiosIdLib/StandaloneMmBiosIdLib.c
> |  65 +++++++++++
>  Platform/Intel/BoardModulePkg/BoardModulePkg.dsc                          |   1 +
>  Platform/Intel/BoardModulePkg/Library/BiosIdLib/DxeBiosIdLib.inf          |   1
> +
>  Platform/Intel/BoardModulePkg/Library/BiosIdLib/PeiBiosIdLib.inf          |   6
> +-
> 
> Platform/Intel/BoardModulePkg/Library/BiosIdLib/StandaloneMmBiosIdLib.i
> nf |  42 +++++++
>  8 files changed, 241 insertions(+), 199 deletions(-)
> 
> diff --git
> a/Platform/Intel/BoardModulePkg/Library/BiosIdLib/BiosIdCommon.c
> b/Platform/Intel/BoardModulePkg/Library/BiosIdLib/BiosIdCommon.c
> new file mode 100644
> index 000000000000..5735566bfe3a
> --- /dev/null
> +++ b/Platform/Intel/BoardModulePkg/Library/BiosIdLib/BiosIdCommon.c
> @@ -0,0 +1,96 @@
> +/** @file
> +  Boot service common BIOS ID library implementation.
> +
> +  These functions in this file can be called during DXE and cannot be
> + called during runtime  or in SMM which should use a RT or SMM library.
> +
> +
> +Copyright (c) 2023, Intel Corporation. All rights reserved.<BR>
> +SPDX-License-Identifier: BSD-2-Clause-Patent
> +
> +**/
> +
> +#include <PiDxe.h>
> +#include <Library/BaseMemoryLib.h>
> +#include <Library/BiosIdLib.h>
> +#include <Guid/BiosId.h>
> +
> +/**
> +  This function returns the BIOS Version & Release Date and Time by getting
> and converting BIOS ID.
> +
> +  @param[out] BiosVersion       The Bios Version out of the conversion.
> +  @param[out] BiosReleaseDate   The Bios Release Date out of the
> conversion.
> +  @param[out] BiosReleaseTime   The Bios Release Time out of the
> conversion.
> +
> +  @retval EFI_SUCCESS               BIOS Version & Release Date and Time have
> been got successfully.
> +  @retval EFI_NOT_FOUND             BIOS ID image is not found, and no
> parameter will be modified.
> +  @retval EFI_INVALID_PARAMETER     All the parameters are NULL.
> +
> +**/
> +EFI_STATUS
> +EFIAPI
> +GetBiosVersionDateTime (
> +  OUT CHAR16  *BiosVersion OPTIONAL,
> +  OUT CHAR16  *BiosReleaseDate OPTIONAL,
> +  OUT CHAR16  *BiosReleaseTime OPTIONAL
> +  )
> +{
> +  EFI_STATUS     Status;
> +  BIOS_ID_IMAGE  BiosIdImage;
> +
> +  if ((BiosVersion == NULL) && (BiosReleaseDate == NULL) &&
> (BiosReleaseTime == NULL)) {
> +    return EFI_INVALID_PARAMETER;
> +  }
> +
> +  Status = GetBiosId (&BiosIdImage);
> +  if (EFI_ERROR (Status)) {
> +    return EFI_NOT_FOUND;
> +  }
> +
> +  if (BiosVersion != NULL) {
> +    //
> +    // Fill the BiosVersion data from the BIOS ID.
> +    //
> +    CopyMem (BiosVersion, &(BiosIdImage.BiosIdString), sizeof
> + (BIOS_ID_STRING));  }
> +
> +  if (BiosReleaseDate != NULL) {
> +    //
> +    // Fill the build timestamp date from the BIOS ID in the "MM/DD/YY"
> format.
> +    //
> +    BiosReleaseDate[0] = BiosIdImage.BiosIdString.TimeStamp[2];
> +    BiosReleaseDate[1] = BiosIdImage.BiosIdString.TimeStamp[3];
> +    BiosReleaseDate[2] = (CHAR16)((UINT8)('/'));
> +
> +    BiosReleaseDate[3] = BiosIdImage.BiosIdString.TimeStamp[4];
> +    BiosReleaseDate[4] = BiosIdImage.BiosIdString.TimeStamp[5];
> +    BiosReleaseDate[5] = (CHAR16)((UINT8)('/'));
> +
> +    //
> +    // Add 20 for SMBIOS table
> +    // Current Linux kernel will misjudge 09 as year 0, so using 2009 for
> SMBIOS table
> +    //
> +    BiosReleaseDate[6] = '2';
> +    BiosReleaseDate[7] = '0';
> +    BiosReleaseDate[8] = BiosIdImage.BiosIdString.TimeStamp[0];
> +    BiosReleaseDate[9] = BiosIdImage.BiosIdString.TimeStamp[1];
> +
> +    BiosReleaseDate[10] = (CHAR16)((UINT8)('\0'));  }
> +
> +  if (BiosReleaseTime != NULL) {
> +    //
> +    // Fill the build timestamp time from the BIOS ID in the "HH:MM" format.
> +    //
> +    BiosReleaseTime[0] = BiosIdImage.BiosIdString.TimeStamp[6];
> +    BiosReleaseTime[1] = BiosIdImage.BiosIdString.TimeStamp[7];
> +    BiosReleaseTime[2] = (CHAR16)((UINT8)(':'));
> +
> +    BiosReleaseTime[3] = BiosIdImage.BiosIdString.TimeStamp[8];
> +    BiosReleaseTime[4] = BiosIdImage.BiosIdString.TimeStamp[9];
> +
> +    BiosReleaseTime[5] = (CHAR16)((UINT8)('\0'));  }
> +
> +  return EFI_SUCCESS;
> +}
> diff --git a/Platform/Intel/BoardModulePkg/Library/BiosIdLib/DxeBiosIdLib.c
> b/Platform/Intel/BoardModulePkg/Library/BiosIdLib/DxeBiosIdLib.c
> index 3e614d9efc3e..6535bb36f6c9 100644
> --- a/Platform/Intel/BoardModulePkg/Library/BiosIdLib/DxeBiosIdLib.c
> +++ b/Platform/Intel/BoardModulePkg/Library/BiosIdLib/DxeBiosIdLib.c
> @@ -5,7 +5,7 @@
>    or in SMM which should use a RT or SMM library.
> 
> 
> -Copyright (c) 2015 - 2019, Intel Corporation. All rights reserved.<BR>
> +Copyright (c) 2015 - 2023, Intel Corporation. All rights reserved.<BR>
>  SPDX-License-Identifier: BSD-2-Clause-Patent
> 
>  **/
> @@ -15,7 +15,6 @@ SPDX-License-Identifier: BSD-2-Clause-Patent  #include
> <Library/HobLib.h>  #include <Library/DxeServicesLib.h>  #include
> <Library/BaseMemoryLib.h> -#include <Library/HobLib.h>  #include
> <Library/MemoryAllocationLib.h>  #include <Library/DebugLib.h>  #include
> <Library/BiosIdLib.h> @@ -36,16 +35,16 @@ SPDX-License-Identifier: BSD-2-
> Clause-Patent  EFI_STATUS  EFIAPI  GetBiosId (
> -  OUT BIOS_ID_IMAGE     *BiosIdImage OPTIONAL
> +  OUT BIOS_ID_IMAGE  *BiosIdImage OPTIONAL
>    )
>  {
> -  EFI_STATUS    Status;
> -  BIOS_ID_IMAGE TempBiosIdImage;
> -  VOID          *Address;
> -  UINTN         Size;
> +  EFI_STATUS     Status;
> +  BIOS_ID_IMAGE  TempBiosIdImage;
> +  VOID           *Address;
> +  UINTN          Size;
> 
>    Address = NULL;
> -  Size = 0;
> +  Size    = 0;
> 
>    if (BiosIdImage == NULL) {
>      //
> @@ -58,10 +57,10 @@ GetBiosId (
>    Address = GetFirstGuidHob (&gBiosIdGuid);
>    if (Address != NULL) {
>      Size = sizeof (BIOS_ID_IMAGE);
> -    CopyMem ((VOID *) BiosIdImage, GET_GUID_HOB_DATA (Address), Size);
> +    CopyMem ((VOID *)BiosIdImage, GET_GUID_HOB_DATA (Address), Size);
> 
> -    DEBUG ((EFI_D_INFO, "DXE get BIOS ID from HOB successfully\n"));
> -    DEBUG ((EFI_D_INFO, "BIOS ID: %s\n", (CHAR16 *) (&(BiosIdImage-
> >BiosIdString))));
> +    DEBUG ((DEBUG_INFO, "DXE get BIOS ID from HOB successfully\n"));
> +    DEBUG ((DEBUG_INFO, "BIOS ID: %s\n", (CHAR16
> + *)(&(BiosIdImage->BiosIdString))));
>      return EFI_SUCCESS;
>    }
> 
> @@ -77,99 +76,17 @@ GetBiosId (
>      // BIOS ID image is present in FV.
>      //
>      Size = sizeof (BIOS_ID_IMAGE);
> -    CopyMem ((VOID *) BiosIdImage, Address, Size);
> +    CopyMem ((VOID *)BiosIdImage, Address, Size);
>      //
>      // GetSectionFromAnyFv () allocated buffer for Address, now free it.
>      //
>      FreePool (Address);
> 
> -    DEBUG ((EFI_D_INFO, "DXE get BIOS ID from FV successfully\n"));
> -    DEBUG ((EFI_D_INFO, "BIOS ID: %s\n", (CHAR16 *) (&(BiosIdImage-
> >BiosIdString))));
> +    DEBUG ((DEBUG_INFO, "DXE get BIOS ID from FV successfully\n"));
> +    DEBUG ((DEBUG_INFO, "BIOS ID: %s\n", (CHAR16
> + *)(&(BiosIdImage->BiosIdString))));
>      return EFI_SUCCESS;
>    }
> 
> -  DEBUG ((EFI_D_ERROR, "DXE get BIOS ID failed: %r\n", EFI_NOT_FOUND));
> +  DEBUG ((DEBUG_ERROR, "DXE get BIOS ID failed: %r\n",
> EFI_NOT_FOUND));
>    return EFI_NOT_FOUND;
>  }
> -
> -/**
> -  This function returns the BIOS Version & Release Date and Time by getting
> and converting BIOS ID.
> -
> -  @param[out] BiosVersion       The Bios Version out of the conversion.
> -  @param[out] BiosReleaseDate   The Bios Release Date out of the conversion.
> -  @param[out] BiosReleaseTime   The Bios Release Time out of the
> conversion.
> -
> -  @retval EFI_SUCCESS               BIOS Version & Release Date and Time have
> been got successfully.
> -  @retval EFI_NOT_FOUND             BIOS ID image is not found, and no
> parameter will be modified.
> -  @retval EFI_INVALID_PARAMETER     All the parameters are NULL.
> -
> -**/
> -EFI_STATUS
> -EFIAPI
> -GetBiosVersionDateTime (
> -  OUT CHAR16    *BiosVersion, OPTIONAL
> -  OUT CHAR16    *BiosReleaseDate, OPTIONAL
> -  OUT CHAR16    *BiosReleaseTime OPTIONAL
> -  )
> -{
> -  EFI_STATUS        Status;
> -  BIOS_ID_IMAGE     BiosIdImage;
> -
> -  if ((BiosVersion == NULL) && (BiosReleaseDate == NULL) &&
> (BiosReleaseTime == NULL)) {
> -    return EFI_INVALID_PARAMETER;
> -  }
> -
> -  Status = GetBiosId (&BiosIdImage);
> -  if (EFI_ERROR (Status)) {
> -    return EFI_NOT_FOUND;
> -  }
> -
> -  if (BiosVersion != NULL) {
> -    //
> -    // Fill the BiosVersion data from the BIOS ID.
> -    //
> -    CopyMem (BiosVersion, &(BiosIdImage.BiosIdString), sizeof
> (BIOS_ID_STRING));
> -  }
> -
> -  if (BiosReleaseDate != NULL) {
> -    //
> -    // Fill the build timestamp date from the BIOS ID in the "MM/DD/YY"
> format.
> -    //
> -    BiosReleaseDate[0] = BiosIdImage.BiosIdString.TimeStamp[2];
> -    BiosReleaseDate[1] = BiosIdImage.BiosIdString.TimeStamp[3];
> -    BiosReleaseDate[2] = (CHAR16) ((UINT8) ('/'));
> -
> -    BiosReleaseDate[3] = BiosIdImage.BiosIdString.TimeStamp[4];
> -    BiosReleaseDate[4] = BiosIdImage.BiosIdString.TimeStamp[5];
> -    BiosReleaseDate[5] = (CHAR16) ((UINT8) ('/'));
> -
> -    //
> -    // Add 20 for SMBIOS table
> -    // Current Linux kernel will misjudge 09 as year 0, so using 2009 for SMBIOS
> table
> -    //
> -    BiosReleaseDate[6] = '2';
> -    BiosReleaseDate[7] = '0';
> -    BiosReleaseDate[8] = BiosIdImage.BiosIdString.TimeStamp[0];
> -    BiosReleaseDate[9] = BiosIdImage.BiosIdString.TimeStamp[1];
> -
> -    BiosReleaseDate[10] = (CHAR16) ((UINT8) ('\0'));
> -  }
> -
> -  if (BiosReleaseTime != NULL) {
> -
> -    //
> -    // Fill the build timestamp time from the BIOS ID in the "HH:MM" format.
> -    //
> -    BiosReleaseTime[0] = BiosIdImage.BiosIdString.TimeStamp[6];
> -    BiosReleaseTime[1] = BiosIdImage.BiosIdString.TimeStamp[7];
> -    BiosReleaseTime[2] = (CHAR16) ((UINT8) (':'));
> -
> -    BiosReleaseTime[3] = BiosIdImage.BiosIdString.TimeStamp[8];
> -    BiosReleaseTime[4] = BiosIdImage.BiosIdString.TimeStamp[9];
> -
> -    BiosReleaseTime[5] = (CHAR16) ((UINT8) ('\0'));
> -  }
> -
> -  return  EFI_SUCCESS;
> -}
> -
> diff --git a/Platform/Intel/BoardModulePkg/Library/BiosIdLib/PeiBiosIdLib.c
> b/Platform/Intel/BoardModulePkg/Library/BiosIdLib/PeiBiosIdLib.c
> index b0f15d2cb8d5..c1295a16444d 100644
> --- a/Platform/Intel/BoardModulePkg/Library/BiosIdLib/PeiBiosIdLib.c
> +++ b/Platform/Intel/BoardModulePkg/Library/BiosIdLib/PeiBiosIdLib.c
> @@ -1,7 +1,7 @@
>  /** @file
>    Boot service PEI BIOS ID library implementation.
> 
> -Copyright (c) 2-015 - 2019, Intel Corporation. All rights reserved.<BR>
> +Copyright (c) 2015 - 2023, Intel Corporation. All rights reserved.<BR>
>  SPDX-License-Identifier: BSD-2-Clause-Patent
> 
>  **/
> @@ -30,19 +30,19 @@ SPDX-License-Identifier: BSD-2-Clause-Patent
> EFI_STATUS  EFIAPI  GetBiosId (
> -  OUT BIOS_ID_IMAGE     *BiosIdImage OPTIONAL
> +  OUT BIOS_ID_IMAGE  *BiosIdImage OPTIONAL
>    )
>  {
> -  EFI_STATUS            Status;
> -  BIOS_ID_IMAGE         TempBiosIdImage;
> -  VOID                  *Address;
> -  UINTN                 Size;
> -  UINTN                 Instance;
> -  EFI_PEI_FV_HANDLE     VolumeHandle;
> -  EFI_PEI_FILE_HANDLE   FileHandle;
> +  EFI_STATUS           Status;
> +  BIOS_ID_IMAGE        TempBiosIdImage;
> +  VOID                 *Address;
> +  UINTN                Size;
> +  UINTN                Instance;
> +  EFI_PEI_FV_HANDLE    VolumeHandle;
> +  EFI_PEI_FILE_HANDLE  FileHandle;
> 
>    Address = NULL;
> -  Size = 0;
> +  Size    = 0;
> 
>    if (BiosIdImage == NULL) {
>      //
> @@ -55,15 +55,15 @@ GetBiosId (
>    Address = GetFirstGuidHob (&gBiosIdGuid);
>    if (Address != NULL) {
>      Size = sizeof (BIOS_ID_IMAGE);
> -    CopyMem ((VOID *) BiosIdImage, GET_GUID_HOB_DATA (Address), Size);
> +    CopyMem ((VOID *)BiosIdImage, GET_GUID_HOB_DATA (Address), Size);
> 
> -    DEBUG ((EFI_D_INFO, "PEI get BIOS ID from HOB successfully\n"));
> -    DEBUG ((EFI_D_INFO, "BIOS ID: %s\n", (CHAR16 *) (&(BiosIdImage-
> >BiosIdString))));
> +    DEBUG ((DEBUG_INFO, "PEI get BIOS ID from HOB successfully\n"));
> +    DEBUG ((DEBUG_INFO, "BIOS ID: %s\n", (CHAR16
> + *)(&(BiosIdImage->BiosIdString))));
>      return EFI_SUCCESS;
>    }
> 
>    VolumeHandle = NULL;
> -  Instance = 0;
> +  Instance     = 0;
>    while (TRUE) {
>      //
>      // Traverse all firmware volume instances.
> @@ -74,7 +74,7 @@ GetBiosId (
>      }
> 
>      FileHandle = NULL;
> -    Status = PeiServicesFfsFindFileByName (&gBiosIdGuid, VolumeHandle,
> &FileHandle);
> +    Status     = PeiServicesFfsFindFileByName (&gBiosIdGuid, VolumeHandle,
> &FileHandle);
>      if (!EFI_ERROR (Status)) {
>        //
>        // Search RAW section.
> @@ -85,10 +85,10 @@ GetBiosId (
>          // BIOS ID image is present in this FV.
>          //
>          Size = sizeof (BIOS_ID_IMAGE);
> -        CopyMem ((VOID *) BiosIdImage, Address, Size);
> +        CopyMem ((VOID *)BiosIdImage, Address, Size);
> 
> -        DEBUG ((EFI_D_INFO, "PEI get BIOS ID from FV successfully\n"));
> -        DEBUG ((EFI_D_INFO, "BIOS ID: %s\n", (CHAR16 *) (&(BiosIdImage-
> >BiosIdString))));
> +        DEBUG ((DEBUG_INFO, "PEI get BIOS ID from FV successfully\n"));
> +        DEBUG ((DEBUG_INFO, "BIOS ID: %s\n", (CHAR16
> + *)(&(BiosIdImage->BiosIdString))));
> 
>          //
>          // Build GUID HOB for the BIOS ID image.
> @@ -107,85 +107,3 @@ GetBiosId (
>    DEBUG ((EFI_D_ERROR, "PEI get BIOS ID failed: %r\n", EFI_NOT_FOUND));
>    return EFI_NOT_FOUND;
>  }
> -
> -/**
> -  This function returns the BIOS Version & Release Date and Time by getting
> and converting BIOS ID.
> -
> -  @param[out] BiosVersion       The Bios Version out of the conversion.
> -  @param[out] BiosReleaseDate   The Bios Release Date out of the conversion.
> -  @param[out] BiosReleaseTime   The Bios Release Time out of the
> conversion.
> -
> -  @retval EFI_SUCCESS               BIOS Version & Release Date and Time have
> been got successfully.
> -  @retval EFI_NOT_FOUND             BIOS ID image is not found, and no
> parameter will be modified.
> -  @retval EFI_INVALID_PARAMETER     All the parameters are NULL.
> -
> -**/
> -EFI_STATUS
> -EFIAPI
> -GetBiosVersionDateTime (
> -  OUT CHAR16    *BiosVersion, OPTIONAL
> -  OUT CHAR16    *BiosReleaseDate, OPTIONAL
> -  OUT CHAR16    *BiosReleaseTime OPTIONAL
> -  )
> -{
> -  EFI_STATUS        Status;
> -  BIOS_ID_IMAGE     BiosIdImage;
> -
> -  if ((BiosVersion == NULL) && (BiosReleaseDate == NULL) &&
> (BiosReleaseTime == NULL)) {
> -    return EFI_INVALID_PARAMETER;
> -  }
> -
> -  Status = GetBiosId (&BiosIdImage);
> -  if (EFI_ERROR (Status)) {
> -    return EFI_NOT_FOUND;
> -  }
> -
> -  if (BiosVersion != NULL) {
> -    //
> -    // Fill the BiosVersion data from the BIOS ID.
> -    //
> -    CopyMem (BiosVersion, &(BiosIdImage.BiosIdString), sizeof
> (BIOS_ID_STRING));
> -  }
> -
> -  if (BiosReleaseDate != NULL) {
> -    //
> -    // Fill the build timestamp date from the BIOS ID in the "MM/DD/YY"
> format.
> -    //
> -    BiosReleaseDate[0] = BiosIdImage.BiosIdString.TimeStamp[2];
> -    BiosReleaseDate[1] = BiosIdImage.BiosIdString.TimeStamp[3];
> -    BiosReleaseDate[2] = (CHAR16) ((UINT8) ('/'));
> -
> -    BiosReleaseDate[3] = BiosIdImage.BiosIdString.TimeStamp[4];
> -    BiosReleaseDate[4] = BiosIdImage.BiosIdString.TimeStamp[5];
> -    BiosReleaseDate[5] = (CHAR16) ((UINT8) ('/'));
> -
> -    //
> -    // Add 20 for SMBIOS table
> -    // Current Linux kernel will misjudge 09 as year 0, so using 2009 for SMBIOS
> table
> -    //
> -    BiosReleaseDate[6] = '2';
> -    BiosReleaseDate[7] = '0';
> -    BiosReleaseDate[8] = BiosIdImage.BiosIdString.TimeStamp[0];
> -    BiosReleaseDate[9] = BiosIdImage.BiosIdString.TimeStamp[1];
> -
> -    BiosReleaseDate[10] = (CHAR16) ((UINT8) ('\0'));
> -  }
> -
> -  if (BiosReleaseTime != NULL) {
> -
> -    //
> -    // Fill the build timestamp time from the BIOS ID in the "HH:MM" format.
> -    //
> -    BiosReleaseTime[0] = BiosIdImage.BiosIdString.TimeStamp[6];
> -    BiosReleaseTime[1] = BiosIdImage.BiosIdString.TimeStamp[7];
> -    BiosReleaseTime[2] = (CHAR16) ((UINT8) (':'));
> -
> -    BiosReleaseTime[3] = BiosIdImage.BiosIdString.TimeStamp[8];
> -    BiosReleaseTime[4] = BiosIdImage.BiosIdString.TimeStamp[9];
> -
> -    BiosReleaseTime[5] = (CHAR16) ((UINT8) ('\0'));
> -  }
> -
> -  return  EFI_SUCCESS;
> -}
> -
> diff --git
> a/Platform/Intel/BoardModulePkg/Library/BiosIdLib/StandaloneMmBiosIdLib
> .c
> b/Platform/Intel/BoardModulePkg/Library/BiosIdLib/StandaloneMmBiosIdLi
> b.c
> new file mode 100644
> index 000000000000..af2d47f2b133
> --- /dev/null
> +++
> b/Platform/Intel/BoardModulePkg/Library/BiosIdLib/StandaloneMmBiosId
> +++ Lib.c
> @@ -0,0 +1,65 @@
> +/** @file
> +  Boot service StandaloneMm BIOS ID library implementation.
> +
> +  These functions in this file can be called during DXE and cannot be
> + called during runtime  or in SMM which should use a RT or SMM library.
> +
> +
> +Copyright (c) 2023, Intel Corporation. All rights reserved.<BR>
> +SPDX-License-Identifier: BSD-2-Clause-Patent
> +
> +**/
> +
> +#include <PiMm.h>
> +#include <Library/HobLib.h>
> +#include <Library/BaseMemoryLib.h>
> +#include <Library/DebugLib.h>
> +#include <Library/BiosIdLib.h>
> +
> +#include <Guid/BiosId.h>
> +
> +/**
> +  This function returns BIOS ID by searching HOB.
> +  It also debug print the BIOS ID found.
> +
> +  @param[out] BiosIdImage   The BIOS ID got from HOB or FV. It is optional,
> +                            no BIOS ID will be returned if it is NULL as input.
> +
> +  @retval EFI_SUCCESS               BIOS ID has been got successfully.
> +  @retval EFI_NOT_FOUND             BIOS ID image is not found, and no
> parameter will be modified.
> +
> +**/
> +EFI_STATUS
> +EFIAPI
> +GetBiosId (
> +  OUT BIOS_ID_IMAGE  *BiosIdImage OPTIONAL
> +  )
> +{
> +  BIOS_ID_IMAGE  TempBiosIdImage;
> +  VOID           *Address;
> +  UINTN          Size;
> +
> +  Address = NULL;
> +  Size    = 0;
> +
> +  if (BiosIdImage == NULL) {
> +    //
> +    // It is NULL as input, so no BIOS ID will be returned.
> +    // Use temp buffer to hold the BIOS ID.
> +    //
> +    BiosIdImage = &TempBiosIdImage;
> +  }
> +
> +  Address = GetFirstGuidHob (&gBiosIdGuid);  if (Address != NULL) {
> +    Size = sizeof (BIOS_ID_IMAGE);
> +    CopyMem ((VOID *)BiosIdImage, GET_GUID_HOB_DATA (Address), Size);
> +
> +    DEBUG ((DEBUG_INFO, "StandaloneMm get BIOS ID from HOB
> successfully\n"));
> +    DEBUG ((DEBUG_INFO, "BIOS ID: %s\n", (CHAR16 *)(&(BiosIdImage-
> >BiosIdString))));
> +    return EFI_SUCCESS;
> +  }
> +
> +  DEBUG ((DEBUG_ERROR, "StandaloneMm get BIOS ID failed: %r\n",
> +EFI_NOT_FOUND));
> +  return EFI_NOT_FOUND;
> +}
> diff --git a/Platform/Intel/BoardModulePkg/BoardModulePkg.dsc
> b/Platform/Intel/BoardModulePkg/BoardModulePkg.dsc
> index 9f00592a19c0..44a2abd03f58 100644
> --- a/Platform/Intel/BoardModulePkg/BoardModulePkg.dsc
> +++ b/Platform/Intel/BoardModulePkg/BoardModulePkg.dsc
> @@ -88,6 +88,7 @@
> 
>    BoardModulePkg/Library/BiosIdLib/DxeBiosIdLib.inf
>    BoardModulePkg/Library/BiosIdLib/PeiBiosIdLib.inf
> +  BoardModulePkg/Library/BiosIdLib/StandaloneMmBiosIdLib.inf
> 
> 
> BoardModulePkg/Library/PeiFirmwareBootMediaInfoLib/PeiFirmwareBootMe
> diaInfoLib.inf
>    BoardModulePkg/Library/BdsPs2KbcLib/BdsPs2KbcLib.inf
> diff --git a/Platform/Intel/BoardModulePkg/Library/BiosIdLib/DxeBiosIdLib.inf
> b/Platform/Intel/BoardModulePkg/Library/BiosIdLib/DxeBiosIdLib.inf
> index 39f42e91a0cc..f73ab1f3b6b6 100644
> --- a/Platform/Intel/BoardModulePkg/Library/BiosIdLib/DxeBiosIdLib.inf
> +++ b/Platform/Intel/BoardModulePkg/Library/BiosIdLib/DxeBiosIdLib.inf
> @@ -22,6 +22,7 @@
> 
>  [Sources.common]
>    DxeBiosIdLib.c
> +  BiosIdCommon.c
> 
>  [Packages]
>    MdePkg/MdePkg.dec
> diff --git a/Platform/Intel/BoardModulePkg/Library/BiosIdLib/PeiBiosIdLib.inf
> b/Platform/Intel/BoardModulePkg/Library/BiosIdLib/PeiBiosIdLib.inf
> index e38d17bd9bb1..c197a3f18316 100644
> --- a/Platform/Intel/BoardModulePkg/Library/BiosIdLib/PeiBiosIdLib.inf
> +++ b/Platform/Intel/BoardModulePkg/Library/BiosIdLib/PeiBiosIdLib.inf
> @@ -1,7 +1,7 @@
>  ### @file
>  # PEI BIOS ID library.
>  #
> -# Copyright (c) 2015 - 2019, Intel Corporation. All rights reserved.<BR>
> +# Copyright (c) 2015 - 2023, Intel Corporation. All rights
> +reserved.<BR>
>  #
>  # SPDX-License-Identifier: BSD-2-Clause-Patent  # @@ -22,10 +22,12 @@
> 
>  [Sources.common]
>    PeiBiosIdLib.c
> +  BiosIdCommon.c
> 
>  [Packages]
>    MdePkg/MdePkg.dec
> -  BoardModulePkg/BoardModulePkg.dec
> 
> +  BoardModulePkg/BoardModulePkg.dec
> +
> 
>  [LibraryClasses]
>    BaseLib
> diff --git
> a/Platform/Intel/BoardModulePkg/Library/BiosIdLib/StandaloneMmBiosIdLib
> .inf
> b/Platform/Intel/BoardModulePkg/Library/BiosIdLib/StandaloneMmBiosIdLi
> b.inf
> new file mode 100644
> index 000000000000..40f64b8067d1
> --- /dev/null
> +++
> b/Platform/Intel/BoardModulePkg/Library/BiosIdLib/StandaloneMmBiosId
> +++ Lib.inf
> @@ -0,0 +1,42 @@
> +### @file
> +#  StandaloneMm BIOS ID library.
> +#
> +# Copyright (c) 2023, Intel Corporation. All rights reserved.<BR> # #
> +SPDX-License-Identifier: BSD-2-Clause-Patent # ### [Defines]
> +  INF_VERSION                   = 0x00010005
> +  BASE_NAME                     = StandaloneMmBiosIdLib
> +  FILE_GUID                     = b6304cdf-6d3e-4762-8a88-ff98dcad6b14
> +  MODULE_TYPE                   = MM_STANDALONE
> +  VERSION_STRING                = 1.0
> +  PI_SPECIFICATION_VERSION      = 0x00010032
> +  LIBRARY_CLASS                 = BiosIdLib| MM_CORE_STANDALONE
> MM_STANDALONE
> +
> +#
> +# The following information is for reference only and not required by the build
> tools.
> +#
> +#  VALID_ARCHITECTURES          = IA32 X64
> +#
> +
> +[Sources.common]
> +  StandaloneMmBiosIdLib.c
> +  BiosIdCommon.c
> +
> +[Packages]
> +  MdePkg/MdePkg.dec
> +  BoardModulePkg/BoardModulePkg.dec
> +
> +[LibraryClasses]
> +  BaseLib
> +  BaseMemoryLib
> +  HobLib
> +  DebugLib
> +
> +[Guids]
> +  ## SOMETIMES_CONSUMES ## HOB
> +  ## SOMETIMES_CONSUMES ## GUID
> +  gBiosIdGuid
> +
> --
> 2.26.2.windows.1



-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#113317): https://edk2.groups.io/g/devel/message/113317
Mute This Topic: https://groups.io/mt/103367466/7686176
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [rebecca@openfw.io]
-=-=-=-=-=-=-=-=-=-=-=-



^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2024-01-05 19:28 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-12-26  7:55 [edk2-devel] [PATCH v1 1/1] BoardModulePkg\Library\BiosIdLib: Support Standalone MM Huang, Li-Xia
2024-01-05 19:20 ` Nate DeSimone
2024-01-05 19:27 ` Nate DeSimone
  -- strict thread matches above, loose matches on Subject: below --
2023-11-21  2:33 Huang, Li-Xia

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox