From: "Yuwei Chen" <yuwei.chen@intel.com>
To: "devel@edk2.groups.io" <devel@edk2.groups.io>,
"Lin, Jason1" <jason1.lin@intel.com>
Cc: "Feng, Bob C" <bob.c.feng@intel.com>,
"Gao, Liming" <gaoliming@byosoft.com.cn>,
"Oram, Isaac W" <isaac.w.oram@intel.com>,
"Chaganty, Rangasai V" <rangasai.v.chaganty@intel.com>,
"Chiang, Dakota" <dakota.chiang@intel.com>
Subject: Re: [edk2-devel] [PATCH v3 1/3] [edk2-platforms] Silicon/Intel/FitGen: Support multiple Startup ACM Type 2 entries in FitGen tool
Date: Mon, 4 Jul 2022 01:35:59 +0000 [thread overview]
Message-ID: <MW5PR11MB590694143F10CABA05D2A43496BE9@MW5PR11MB5906.namprd11.prod.outlook.com> (raw)
In-Reply-To: <20220701151005.189-1-jason1.lin@intel.com>
Reviewed-by: Yuwei Chen<yuwei.chen@intel.com>
> -----Original Message-----
> From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of Lin,
> Jason1
> Sent: Friday, July 1, 2022 11:10 PM
> To: devel@edk2.groups.io
> Cc: Lin, Jason1 <jason1.lin@intel.com>; Feng, Bob C <bob.c.feng@intel.com>;
> Gao, Liming <gaoliming@byosoft.com.cn>; Chen, Christine
> <yuwei.chen@intel.com>; Oram, Isaac W <isaac.w.oram@intel.com>;
> Chaganty, Rangasai V <rangasai.v.chaganty@intel.com>; Chiang, Dakota
> <dakota.chiang@intel.com>
> Subject: [edk2-devel] [PATCH v3 1/3] [edk2-platforms] Silicon/Intel/FitGen:
> Support multiple Startup ACM Type 2 entries in FitGen tool
>
> From: Jason1 Lin <jason1.lin@intel.com>
>
> REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3958
>
> Within current FitGen tool there had limitation only allow one S-ACM to
> generate the Type 2 entry.
> This code change is used to support multiple type 2 entries up to 0x20.
>
> Signed-off-by: Jason1 Lin <jason1.lin@intel.com>
> Cc: Bob Feng <bob.c.feng@intel.com>
> Cc: Liming Gao <gaoliming@byosoft.com.cn>
> Cc: Yuwei Chen <yuwei.chen@intel.com>
> Cc: Isaac W Oram <isaac.w.oram@intel.com>
> Cc: Rangasai V Chaganty <rangasai.v.chaganty@intel.com>
> Cc: Dakota Chiang <dakota.chiang@intel.com>
> ---
> Silicon/Intel/Tools/FitGen/FitGen.c | 89 +++++++++++---------
> Silicon/Intel/Tools/FitGen/FitGen.h | 4 +-
> 2 files changed, 50 insertions(+), 43 deletions(-)
>
> diff --git a/Silicon/Intel/Tools/FitGen/FitGen.c
> b/Silicon/Intel/Tools/FitGen/FitGen.c
> index 4de72ea422..eac8fa8715 100644
> --- a/Silicon/Intel/Tools/FitGen/FitGen.c
> +++ b/Silicon/Intel/Tools/FitGen/FitGen.c
> @@ -2,7 +2,7 @@
> This utility is part of build process for IA32/X64 FD. It generates FIT table. -
> Copyright (c) 2010-2021, Intel Corporation. All rights
> reserved.<BR>+Copyright (c) 2010-2022, Intel Corporation. All rights
> reserved.<BR> SPDX-License-Identifier: BSD-2-Clause-Patent **/@@ -204,6
> +204,7 @@ typedef struct {
> #define MAX_BIOS_MODULE_ENTRY 0x20 #define
> MAX_MICROCODE_ENTRY 0x20+#define MAX_STARTUP_ACM_ENTRY 0x20
> #define MAX_OPTIONAL_ENTRY 0x20 #define MAX_PORT_ENTRY 0x20
> @@ -255,11 +256,12 @@ typedef struct {
> UINT32 FitEntryNumber; UINT32
> BiosModuleNumber; UINT32 MicrocodeNumber;+ UINT32
> StartupAcmNumber; UINT32 OptionalModuleNumber; UINT32
> PortModuleNumber; UINT32 GlobalVersion; UINT32
> FitHeaderVersion;- FIT_TABLE_CONTEXT_ENTRY StartupAcm;+
> FIT_TABLE_CONTEXT_ENTRY StartupAcm[MAX_STARTUP_ACM_ENTRY];
> UINT32 StartupAcmVersion; FIT_TABLE_CONTEXT_ENTRY
> DiagnstAcm; UINT32 DiagnstAcmVersion;@@ -1149,14 +1151,15
> @@ Returns:
> Error (NULL, 0, 0, "-I Parameter incorrect, Header Type unsupported!",
> NULL); return 0; case FIT_TABLE_TYPE_STARTUP_ACM:- if
> (gFitTableContext.StartupAcm.Type != 0) {- Error (NULL, 0, 0, "-I
> Parameter incorrect, Duplicated StartupAcm!", NULL);+ if
> (gFitTableContext.StartupAcmNumber >= MAX_STARTUP_ACM_ENTRY) {+
> Error (NULL, 0, 0, "-I Parameter incorrect, too many StartupAcm!", NULL);
> return 0; }- gFitTableContext.StartupAcm.Type =
> FIT_TABLE_TYPE_STARTUP_ACM;-
> gFitTableContext.StartupAcm.Address =
> (UINT32)BiosInfoStruct[BiosInfoIndex].Address;-
> gFitTableContext.StartupAcm.Size =
> (UINT32)BiosInfoStruct[BiosInfoIndex].Size;-
> gFitTableContext.StartupAcmVersion =
> BiosInfoStruct[BiosInfoIndex].Version;+
> gFitTableContext.StartupAcm[gFitTableContext.StartupAcmNumber].Type =
> FIT_TABLE_TYPE_STARTUP_ACM;+
> gFitTableContext.StartupAcm[gFitTableContext.StartupAcmNumber].Address
> = (UINT32)BiosInfoStruct[BiosInfoIndex].Address;+
> gFitTableContext.StartupAcm[gFitTableContext.StartupAcmNumber].Size =
> (UINT32)BiosInfoStruct[BiosInfoIndex].Size;+
> gFitTableContext.StartupAcm[gFitTableContext.StartupAcmNumber].Version
> = BiosInfoStruct[BiosInfoIndex].Version;+
> gFitTableContext.StartupAcmNumber ++;
> gFitTableContext.FitEntryNumber ++; break; case
> FIT_TABLE_TYPE_DIAGNST_ACM:@@ -1351,16 +1354,15 @@ Returns:
> // // 1. StartupAcm //- do {+ while (TRUE) { if ((Index + 1 >= argc) ||
> ((strcmp (argv[Index], "-S") != 0) && (strcmp (argv[Index], "-s") != 0)) ) {-
> if (BiosInfoExist && (gFitTableContext.StartupAcm.Type ==
> FIT_TABLE_TYPE_STARTUP_ACM)) {- break;+ if
> (gFitTableContext.StartupAcmNumber == 0) {+ printf ("-S not found.
> WARNING!\n"); } // Error (NULL, 0, 0, "-S Parameter incorrect, expect -
> S!", NULL); // return 0;- printf ("-S not found. WARNING!\n");
> break; } if (IsGuidData (argv[Index + 1], &Guid)) {@@ -1381,14 +1383,13
> @@ Returns:
> FileSize = xtoi (argv[Index + 2]); Index += 3; }- if
> (gFitTableContext.StartupAcm.Type != 0) {- Error (NULL, 0, 0, "-S Parameter
> incorrect, Duplicated StartupAcm!", NULL);+ if
> (gFitTableContext.StartupAcmNumber >= MAX_STARTUP_ACM_ENTRY) {+
> Error (NULL, 0, 0, "-S Parameter incorrect, too many StartupAcm!", NULL);
> return 0; }- gFitTableContext.StartupAcm.Type =
> FIT_TABLE_TYPE_STARTUP_ACM;- gFitTableContext.StartupAcm.Address =
> (UINT32) (UINTN) FileBuffer;- gFitTableContext.StartupAcm.Size = FileSize;-
> gFitTableContext.FitEntryNumber ++;+
> gFitTableContext.StartupAcm[gFitTableContext.StartupAcmNumber].Type =
> FIT_TABLE_TYPE_STARTUP_ACM;+
> gFitTableContext.StartupAcm[gFitTableContext.StartupAcmNumber].Address
> = (UINT32) (UINTN) FileBuffer;+
> gFitTableContext.StartupAcm[gFitTableContext.StartupAcmNumber].Size =
> FileSize; // // 1.1 StartupAcm version@@ -1407,7 +1408,10 @@ Returns:
> gFitTableContext.StartupAcmVersion = xtoi (argv[Index + 1]); Index +=
> 2; }- } while (FALSE);++ gFitTableContext.StartupAcmNumber ++;+
> gFitTableContext.FitEntryNumber ++;+ } // // 1.5. DiagnosticsAcm@@ -
> 1890,7 +1894,9 @@ Returns:
> // // Final: Check StartupAcm in BiosModule. //- CheckOverlap
> (gFitTableContext.StartupAcm.Address, gFitTableContext.StartupAcm.Size);+
> for (Index = 0; Index < (INTN)gFitTableContext.StartupAcmNumber; Index++)
> {+ CheckOverlap (gFitTableContext.StartupAcm[Index].Address,
> gFitTableContext.StartupAcm[Index].Size);+ } FitEntryNumber =
> gFitTableContext.FitEntryNumber; for (Index = 0; Index <
> (INTN)gFitTableContext.OptionalModuleNumber; Index++) { if
> ((gFitTableContext.OptionalModule[Index].Type ==
> FIT_TABLE_TYPE_BIOS_POLICY) ||@@ -2178,8 +2184,8 @@ Returns:
> } printf ("Total FIT Entry number: 0x%x\n",
> gFitTableContext.FitEntryNumber); printf ("FitHeader version: 0x%04x\n",
> gFitTableContext.FitHeaderVersion);- if
> (gFitTableContext.StartupAcm.Address != 0) {- printf ("StartupAcm -
> (0x%08x, 0x%08x, 0x%04x)\n", gFitTableContext.StartupAcm.Address,
> gFitTableContext.StartupAcm.Size, gFitTableContext.StartupAcmVersion);+
> for (Index = 0; Index < gFitTableContext.StartupAcmNumber; Index++) {+
> printf ("StartupAcm[%d] - (0x%08x, 0x%08x, 0x%04x)\n", Index,
> gFitTableContext.StartupAcm[Index].Address,
> gFitTableContext.StartupAcm[Index].Size,
> gFitTableContext.StartupAcmVersion); } if
> (gFitTableContext.DiagnstAcm.Address != 0) { printf ("DiagnosticAcm -
> (0x%08x, 0x%08x, 0x%04x)\n", gFitTableContext.DiagnstAcm.Address,
> gFitTableContext.DiagnstAcm.Size,
> gFitTableContext.DiagnstAcmVersion);@@ -2809,8 +2815,8 @@ Returns:
> // // 4. StartupAcm //- if (gFitTableContext.StartupAcm.Address != 0) {-
> FitEntry[FitIndex].Address = gFitTableContext.StartupAcm.Address;+
> for (Index = 0; Index < gFitTableContext.StartupAcmNumber; Index++) {+
> FitEntry[FitIndex].Address =
> gFitTableContext.StartupAcm[Index].Address; *(UINT32
> *)&FitEntry[FitIndex].Size[0] = 0; //gFitTableContext.StartupAcm.Size / 16;
> FitEntry[FitIndex].Version =
> (UINT16)gFitTableContext.StartupAcmVersion; FitEntry[FitIndex].Type
> = FIT_TABLE_TYPE_STARTUP_ACM;@@ -3110,7 +3116,7 @@ GetFitEntryInfo
> (
> Routine Description: - Fill the FIT table information to Fvrecovery+ Get the
> FIT table information from Fvrecovery Arguments: @@ -3164,8 +3170,8 @@
> Returns:
> gFitTableContext.MicrocodeNumber ++; break; case
> FIT_TABLE_TYPE_STARTUP_ACM:- gFitTableContext.StartupAcm.Address =
> (UINT32)FitEntry[FitIndex].Address;- gFitTableContext.StartupAcmVersion
> = FitEntry[FitIndex].Version;+
> gFitTableContext.StartupAcm[gFitTableContext.StartupAcmNumber].Address
> = (UINT32)FitEntry[FitIndex].Address;+
> gFitTableContext.StartupAcmVersion =
> FitEntry[FitIndex].Version; break; case FIT_TABLE_TYPE_BIOS_MODULE:
> gFitTableContext.BiosModule[gFitTableContext.BiosModuleNumber].Address
> = (UINT32)FitEntry[FitIndex].Address;@@ -3232,6 +3238,7 @@ Returns:
> UINT32 FdFileSize; UINT8 *AcmBuffer;+ INTN
> Index; UINT32 FixedFitLocation; FileBufferRaw = NULL;@@ -
> 3323,22 +3330,23 @@ Returns:
> // // Get ACM buffer //- if (gFitTableContext.StartupAcm.Address !=
> 0) {- AcmBuffer =
> FLASH_TO_MEMORY(gFitTableContext.StartupAcm.Address, FdFileBuffer,
> FdFileSize);- if ((AcmBuffer < FdFileBuffer) || (AcmBuffer +
> gFitTableContext.StartupAcm.Size > FdFileBuffer + FdFileSize)) {- printf
> ("ACM out of range - can not validate it\n");- AcmBuffer = NULL;- }+
> for (Index = 0; Index < (INTN)gFitTableContext.StartupAcmNumber; Index ++)
> {+ if (gFitTableContext.StartupAcm[Index].Address != 0) {+ AcmBuffer =
> FLASH_TO_MEMORY(gFitTableContext.StartupAcm[Index].Address,
> FdFileBuffer, FdFileSize);+ if ((AcmBuffer < FdFileBuffer) || (AcmBuffer +
> gFitTableContext.StartupAcm[Index].Size > FdFileBuffer + FdFileSize)) {+
> printf ("ACM out of range - can not validate it\n");+ AcmBuffer =
> NULL;+ } - if (AcmBuffer != NULL) {- if (CheckAcm ((ACM_FORMAT
> *)AcmBuffer, gFitTableContext.StartupAcm.Size)) {- DumpAcm
> ((ACM_FORMAT *)AcmBuffer);- } else {- Status = STATUS_ERROR;-
> goto exitFunc;+ if (AcmBuffer != NULL) {+ if (CheckAcm
> ((ACM_FORMAT *)AcmBuffer, gFitTableContext.StartupAcm[Index].Size)) {+
> DumpAcm ((ACM_FORMAT *)AcmBuffer);+ } else {+ Status =
> STATUS_ERROR;+ goto exitFunc;+ } } }- } //@@ -
> 3576,4 +3584,3 @@ Returns:
> return u; }-diff --git a/Silicon/Intel/Tools/FitGen/FitGen.h
> b/Silicon/Intel/Tools/FitGen/FitGen.h
> index 5add6a8870..b7de0a6b2d 100644
> --- a/Silicon/Intel/Tools/FitGen/FitGen.h
> +++ b/Silicon/Intel/Tools/FitGen/FitGen.h
> @@ -1,7 +1,7 @@
> /**@file Definitions for the FitGen utility. -Copyright (c) 2010-2020, Intel
> Corporation. All rights reserved.<BR>+Copyright (c) 2010-2022, Intel
> Corporation. All rights reserved.<BR> SPDX-License-Identifier: BSD-2-Clause-
> Patent **/@@ -31,7 +31,7 @@ SPDX-License-Identifier: BSD-2-Clause-Patent
> // Utility version information // #define UTILITY_MAJOR_VERSION 0-#define
> UTILITY_MINOR_VERSION 64+#define UTILITY_MINOR_VERSION 65 #define
> UTILITY_DATE __DATE__ //--
> 2.37.0.windows.1
>
>
>
> -=-=-=-=-=-=
> Groups.io Links: You receive all messages sent to this group.
> View/Reply Online (#90988): https://edk2.groups.io/g/devel/message/90988
> Mute This Topic: https://groups.io/mt/92111640/4546272
> Group Owner: devel+owner@edk2.groups.io
> Unsubscribe: https://edk2.groups.io/g/devel/unsub [yuwei.chen@intel.com]
> -=-=-=-=-=-=
>
next prev parent reply other threads:[~2022-07-04 1:36 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-07-01 15:10 [PATCH v3 1/3] [edk2-platforms] Silicon/Intel/FitGen: Support multiple Startup ACM Type 2 entries in FitGen tool Lin, Jason1
2022-07-01 15:10 ` [PATCH v3 2/3] [edk2-platforms] Silicon/Intel/FitGen: Reduce the typecasting and pointer usage Lin, Jason1
2022-07-01 18:34 ` Oram, Isaac W
2022-07-04 1:37 ` Yuwei Chen
2022-07-01 15:10 ` [PATCH v3 3/3] [edk2-platforms] Silicon/Intel/FitGen: Support Startup ACM entries (Type 2) 0x200 Version Lin, Jason1
2022-07-01 18:34 ` Oram, Isaac W
2022-07-04 1:37 ` Yuwei Chen
2022-07-01 18:34 ` [PATCH v3 1/3] [edk2-platforms] Silicon/Intel/FitGen: Support multiple Startup ACM Type 2 entries in FitGen tool Oram, Isaac W
2022-07-04 1:35 ` Yuwei Chen [this message]
2022-07-05 13:06 ` Bob Feng
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-list from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=MW5PR11MB590694143F10CABA05D2A43496BE9@MW5PR11MB5906.namprd11.prod.outlook.com \
--to=devel@edk2.groups.io \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox