From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) by mx.groups.io with SMTP id smtpd.web11.814.1581054861281691055 for ; Thu, 06 Feb 2020 21:54:21 -0800 Authentication-Results: mx.groups.io; dkim=missing; spf=pass (domain: intel.com, ip: 192.55.52.120, mailfrom: liming.gao@intel.com) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga003.jf.intel.com ([10.7.209.27]) by fmsmga104.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 06 Feb 2020 21:54:20 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.70,411,1574150400"; d="scan'208";a="232279802" Received: from fmsmsx107.amr.corp.intel.com ([10.18.124.205]) by orsmga003.jf.intel.com with ESMTP; 06 Feb 2020 21:54:19 -0800 Received: from shsmsx601.ccr.corp.intel.com (10.109.6.141) by fmsmsx107.amr.corp.intel.com (10.18.124.205) with Microsoft SMTP Server (TLS) id 14.3.439.0; Thu, 6 Feb 2020 21:54:18 -0800 Received: from shsmsx606.ccr.corp.intel.com (10.109.6.216) by SHSMSX601.ccr.corp.intel.com (10.109.6.141) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5; Fri, 7 Feb 2020 13:54:16 +0800 Received: from shsmsx606.ccr.corp.intel.com ([10.109.6.216]) by SHSMSX606.ccr.corp.intel.com ([10.109.6.216]) with mapi id 15.01.1713.004; Fri, 7 Feb 2020 13:54:16 +0800 From: "Liming Gao" To: "Agrawal, Sachin" , "devel@edk2.groups.io" CC: "Feng, Bob C" Subject: Re: [PATCH v1] Add support for Diagnostics ACM in FitGen tool Thread-Topic: [PATCH v1] Add support for Diagnostics ACM in FitGen tool Thread-Index: AQHV28NhRugODF12+UmPhBsbHpgrYqgPPMyw Date: Fri, 7 Feb 2020 05:54:16 +0000 Message-ID: <0a9fb448d6fd484288d48b795a2647a0@intel.com> References: <20200205012656.8796-1-sachin.agrawal@intel.com> In-Reply-To: <20200205012656.8796-1-sachin.agrawal@intel.com> Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-version: 11.2.0.6 dlp-product: dlpe-windows dlp-reaction: no-action x-originating-ip: [10.239.127.36] MIME-Version: 1.0 Return-Path: liming.gao@intel.com Content-Language: en-US Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Agrawal: I have two comments.=20 1. CheckOverlap (gFitTableContext.DiagnstAcm.Address, gFitTableContext.Di= agnstAcm.Size); I see Size is always zero. If so, is this checker still req= uired? 2. Update edk2-platforms\Silicon\Intel\Tools\FitGen\FitGen.h UTILITY_MINO= R_VERSION to new value.=20 Thanks Liming > -----Original Message----- > From: Agrawal, Sachin > Sent: Wednesday, February 5, 2020 9:27 AM > To: devel@edk2.groups.io > Cc: Feng, Bob C ; Gao, Liming > Subject: [PATCH v1] Add support for Diagnostics ACM in FitGen tool >=20 > From: "Agrawal, Sachin" >=20 > REF https://bugzilla.tianocore.org/show_bug.cgi?id=3D2200 >=20 > FitGen Tool is responsible for creating FIT table in UEFI BIOS. > A new FIT entry type (FIT Type 0x3) has been allocated for Diagnsotics AC= M. > FitGen tool is updated to add support for this Diagnostics ACM. >=20 > Cc: Bob Feng > Cc: Liming Gao >=20 > Signed-off-by: Sachin Agrawal > --- > Silicon/Intel/Tools/FitGen/FitGen.c | 68 ++++++++++++++++++++ > 1 file changed, 68 insertions(+) >=20 > diff --git a/Silicon/Intel/Tools/FitGen/FitGen.c b/Silicon/Intel/Tools/Fi= tGen/FitGen.c > index 833610f2a0..48fbe1ef85 100644 > --- a/Silicon/Intel/Tools/FitGen/FitGen.c > +++ b/Silicon/Intel/Tools/FitGen/FitGen.c > @@ -217,6 +217,7 @@ typedef struct { > #define FIT_TABLE_TYPE_HEADER 0 > #define FIT_TABLE_TYPE_MICROCODE 1 > #define FIT_TABLE_TYPE_STARTUP_ACM 2 > +#define FIT_TABLE_TYPE_DIAGNST_ACM 3 > #define FIT_TABLE_TYPE_BIOS_MODULE 7 > #define FIT_TABLE_TYPE_TPM_POLICY 8 > #define FIT_TABLE_TYPE_BIOS_POLICY 9 > @@ -246,6 +247,8 @@ typedef struct { > UINT32 FitHeaderVersion; > FIT_TABLE_CONTEXT_ENTRY StartupAcm; > UINT32 StartupAcmVersion; > + FIT_TABLE_CONTEXT_ENTRY DiagnstAcm; > + UINT32 DiagnstAcmVersion; > FIT_TABLE_CONTEXT_ENTRY BiosModule[MAX_BIOS_MODULE_ENTRY]; > UINT32 BiosModuleVersion; > FIT_TABLE_CONTEXT_ENTRY Microcode[MAX_MICROCODE_ENTRY]; > @@ -318,6 +321,7 @@ Returns: > "\t[-L ]\n" > "\t[-I ]\n" > "\t[-S |] [-= V ]\n" > + "\t[-U |]\n" > "\t[-B ] [-B ...] [-V ]\n" > "\t[-M ] [-M ...]|[-U | MicrocodeRegionSize>|] [-V ]\n" > "\t[-O RecordType ||| [-V > ]] [-O ... [-V ...]]\n" > @@ -332,6 +336,8 @@ Returns: > printf ("\tStartupAcmAddress - Address of StartupAcm.\n"); > printf ("\tStartupAcmSize - Size of StartupAcm.\n"); > printf ("\tStartupAcmGuid - Guid of StartupAcm Module, if Star= tupAcm is in a BiosModule, it will be excluded form that.\n"); > + printf ("\tDiagnstAcmAddress - Address of DiagnstAcm.\n"); > + printf ("\tDiagnstAcmGuid - Guid of DiagnstAcm Module, if Diag= nstAcm is in a BiosModule, it will be excluded from that.\n"); > printf ("\tBiosModuleAddress - Address of BiosModule. User should= ensure there is no overlap.\n"); > printf ("\tBiosModuleSize - Size of BiosModule.\n"); > printf ("\tMicrocodeAddress - Address of Microcode.\n"); > @@ -990,6 +996,17 @@ Returns: > gFitTableContext.StartupAcmVersion =3D BiosInfoStruct[BiosInf= oIndex].Version; > gFitTableContext.FitEntryNumber ++; > break; > + case FIT_TABLE_TYPE_DIAGNST_ACM: > + if (gFitTableContext.DiagnstAcm.Type !=3D 0) { > + Error (NULL, 0, 0, "-U Parameter incorrect, Duplicated Diagn= osticsAcm!", NULL); > + return 0; > + } > + gFitTableContext.DiagnstAcm.Type =3D FIT_TABLE_TYPE_DIAGNST= _ACM; > + gFitTableContext.DiagnstAcm.Address =3D (UINT32)BiosInfoStruct= [BiosInfoIndex].Address; > + gFitTableContext.DiagnstAcm.Size =3D 0; > + gFitTableContext.DiagnstAcmVersion =3D DEFAULT_FIT_ENTRY_VERS= ION; > + gFitTableContext.FitEntryNumber ++; > + break; > case FIT_TABLE_TYPE_BIOS_MODULE: > if ((BiosInfoStruct[BiosInfoIndex].Attributes & BIOS_INFO_STRU= CT_ATTRIBUTE_BIOS_POST_IBB) !=3D 0) { > continue; > @@ -1223,6 +1240,40 @@ Returns: > } while (FALSE); >=20 > // > + // 1.5. DiagnosticsAcm > + // > + do { > + if ((Index + 1 >=3D argc) || > + ((strcmp (argv[Index], "-U") !=3D 0) && > + (strcmp (argv[Index], "-u") !=3D 0)) ) { > + if (BiosInfoExist && (gFitTableContext.DiagnstAcm.Type =3D=3D FIT_= TABLE_TYPE_DIAGNST_ACM)) { > + break; > + } > + break; > + } > + if (IsGuidData (argv[Index + 1], &Guid)) { > + FileBuffer =3D FindFileFromFvByGuid (FdBuffer, FdSize, &Guid, &Fil= eSize); > + if (FileBuffer =3D=3D NULL) { > + Error (NULL, 0, 0, "-U Parameter incorrect, GUID not found!", "%= s", argv[Index + 1]); > + return 0; > + } > + FileBuffer =3D (UINT8 *)MEMORY_TO_FLASH (FileBuffer, FdBuffer, FdS= ize); > + Index +=3D 2; > + } else { > + FileBuffer =3D (UINT8 *) (UINTN) xtoi (argv[Index + 1]); > + Index +=3D 2; > + } > + if (gFitTableContext.DiagnstAcm.Type !=3D 0) { > + Error (NULL, 0, 0, "-U Parameter incorrect, Duplicated Diagnostics= Acm!", NULL); > + return 0; > + } > + gFitTableContext.DiagnstAcm.Type =3D FIT_TABLE_TYPE_DIAGNST_ACM; > + gFitTableContext.DiagnstAcm.Address =3D (UINT32) (UINTN) FileBuffer; > + gFitTableContext.DiagnstAcm.Size =3D 0; > + gFitTableContext.FitEntryNumber ++; > + gFitTableContext.DiagnstAcmVersion =3D DEFAULT_FIT_ENTRY_VERSION; > + } while (FALSE); > + > // 2. BiosModule > // > do { > @@ -1630,6 +1681,7 @@ Returns: > // Final: Check StartupAcm in BiosModule. > // > CheckOverlap (gFitTableContext.StartupAcm.Address, gFitTableContext.St= artupAcm.Size); > + CheckOverlap (gFitTableContext.DiagnstAcm.Address, gFitTableContext.Di= agnstAcm.Size); > FitEntryNumber =3D gFitTableContext.FitEntryNumber; > for (Index =3D 0; Index < (INTN)gFitTableContext.OptionalModuleNumber;= Index++) { > if ((gFitTableContext.OptionalModule[Index].Type =3D=3D FIT_TABLE_TY= PE_BIOS_POLICY) || > @@ -1896,6 +1948,9 @@ Returns: > if (gFitTableContext.StartupAcm.Address !=3D 0) { > printf ("StartupAcm - (0x%08x, 0x%08x, 0x%04x)\n", gFitTableContext.= StartupAcm.Address, gFitTableContext.StartupAcm.Size, > gFitTableContext.StartupAcmVersion); > } > + if (gFitTableContext.DiagnstAcm.Address !=3D 0) { > + printf ("DiagnosticAcm - (0x%08x, 0x%08x, 0x%04x)\n", gFitTableConte= xt.DiagnstAcm.Address, gFitTableContext.DiagnstAcm.Size, > gFitTableContext.DiagnstAcmVersion); > + } > for (Index =3D 0; Index < gFitTableContext.BiosModuleNumber; Index++) = { > printf ("BiosModule[%d] - (0x%08x, 0x%08x, 0x%04x)\n", Index, gFitTa= bleContext.BiosModule[Index].Address, > gFitTableContext.BiosModule[Index].Size, gFitTableContext.BiosModuleVersi= on); > } > @@ -1920,6 +1975,7 @@ CHAR8 *mFitTypeStr[] =3D { > " ", > "MICROCODE ", > "STARTUP_ACM", > + "DIAGNST_ACM", > " ", > " ", > " ", > @@ -2488,6 +2544,18 @@ Returns: > FitIndex++; > } >=20 > + // > + // 4.5. DiagnosticAcm > + // > + if (gFitTableContext.DiagnstAcm.Address !=3D 0) { > + FitEntry[FitIndex].Address =3D gFitTableContext.DiagnstA= cm.Address; > + *(UINT32 *)&FitEntry[FitIndex].Size[0] =3D 0; > + FitEntry[FitIndex].Version =3D (UINT16)gFitTableContext.= DiagnstAcmVersion; > + FitEntry[FitIndex].Type =3D FIT_TABLE_TYPE_DIAGNST_AC= M; > + FitEntry[FitIndex].C_V =3D 0; > + FitEntry[FitIndex].Checksum =3D 0; > + FitIndex++; > + } > // > // 5. BiosModule > // > -- > 2.14.3.windows.1