From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail02.groups.io (mail02.groups.io [66.175.222.108]) by spool.mail.gandi.net (Postfix) with ESMTPS id C741CAC0C80 for ; Tue, 26 Dec 2023 07:56:00 +0000 (UTC) DKIM-Signature: a=rsa-sha256; bh=t8aCAPi1l1zkY7pIlSVf/eVaYEf+4HwMYX2LtNa3uPs=; c=relaxed/simple; d=groups.io; h=From:To:Cc:Subject:Date:Message-Id:MIME-Version:Precedence:List-Subscribe:List-Help:Sender:List-Id:Mailing-List:Delivered-To:Reply-To:List-Unsubscribe-Post:List-Unsubscribe:Content-Transfer-Encoding; s=20140610; t=1703577359; v=1; b=inYtchTOkDW5pB3qoWiHDJaIpzbNpRpRaYESrciSoYkVcrcBtXWkkdIU/4ztqAg7vBbheL5y y8Va7g0YHzBUKwjgh4nnmC1j95n3x2+lBJcoyEGFhzVUZa05cGE08icNk0o+T/Dz1auANnzfX2M coyWN6oiC5bnFPyqooE89pZw= X-Received: by 127.0.0.2 with SMTP id qHMhYY7687511xQjeUir1Usa; Mon, 25 Dec 2023 23:55:59 -0800 X-Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.7]) by mx.groups.io with SMTP id smtpd.web10.76924.1703577358124698287 for ; Mon, 25 Dec 2023 23:55:58 -0800 X-IronPort-AV: E=McAfee;i="6600,9927,10934"; a="17895082" X-IronPort-AV: E=Sophos;i="6.04,304,1695711600"; d="scan'208";a="17895082" X-Received: from fmsmga007.fm.intel.com ([10.253.24.52]) by fmvoesa101.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 25 Dec 2023 23:55:57 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10934"; a="781408518" X-IronPort-AV: E=Sophos;i="6.04,304,1695711600"; d="scan'208";a="781408518" X-Received: from lixiahua-desk2.ccr.corp.intel.com ([10.239.55.96]) by fmsmga007.fm.intel.com with ESMTP; 25 Dec 2023 23:55:56 -0800 From: "Huang, Li-Xia" To: devel@edk2.groups.io Cc: Eric Dong , Nate DeSimone Subject: [edk2-devel] [PATCH v1 1/1] BoardModulePkg\Library\BiosIdLib: Support Standalone MM Date: Tue, 26 Dec 2023 15:55:55 +0800 Message-Id: <20231226075555.3947-1-lisa.huang@intel.com> MIME-Version: 1.0 Precedence: Bulk List-Subscribe: List-Help: Sender: devel@edk2.groups.io List-Id: Mailing-List: list devel@edk2.groups.io; contact devel+owner@edk2.groups.io Reply-To: devel@edk2.groups.io,lisa.huang@intel.com List-Unsubscribe-Post: List-Unsubscribe=One-Click List-Unsubscribe: X-Gm-Message-State: XdSFUnSK3yrXl7fStTAb5owFx7686176AA= Content-Transfer-Encoding: 8bit X-GND-Status: LEGIT Authentication-Results: spool.mail.gandi.net; dkim=pass header.d=groups.io header.s=20140610 header.b=inYtchTO; dmarc=fail reason="SPF not aligned (relaxed), DKIM not aligned (relaxed)" header.from=intel.com (policy=none); spf=pass (spool.mail.gandi.net: domain of bounce@groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce@groups.io Add Standalone Mm BiosIdLib and format code with Uncrustify. Cc: Eric Dong Cc: Nate DeSimone Signed-off-by: Lixia Huang --- 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.
+SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#include +#include +#include +#include + +/** + 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.
+Copyright (c) 2015 - 2023, Intel Corporation. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent **/ @@ -15,7 +15,6 @@ SPDX-License-Identifier: BSD-2-Clause-Patent #include #include #include -#include #include #include #include @@ -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.
+Copyright (c) 2015 - 2023, Intel Corporation. All rights reserved.
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.
+SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#include +#include +#include +#include +#include + +#include + +/** + 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.
+# Copyright (c) 2015 - 2023, Intel Corporation. All rights reserved.
# # 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.
+# +# 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] -=-=-=-=-=-=-=-=-=-=-=-