From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by mx.groups.io with SMTP id smtpd.web10.24528.1591304327266882850 for ; Thu, 04 Jun 2020 13:58:47 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@intel.onmicrosoft.com header.s=selector2-intel-onmicrosoft-com header.b=OvvFNGdl; spf=pass (domain: intel.com, ip: 134.134.136.65, mailfrom: jorge.hernandez.beltran@intel.com) IronPort-SDR: C2ThIJs/cgSsXhLmE+lk2F3m7MrplQ+3eYx4EfSuN8RfunRQj8NrojbVpTqOvrTod5tYfSisTH JYpiRpOk9wqg== X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga008.fm.intel.com ([10.253.24.58]) by orsmga103.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 04 Jun 2020 13:58:46 -0700 IronPort-SDR: iRTXCwOxfQYI/43wiQkivAYOEemm5a4aigwd9ebaIxBfuYnhlF3TLRmDtIKz9lNjkRvztU3DqV qlvtPJxzBG4g== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.73,472,1583222400"; d="scan'208";a="258996213" Received: from orsmsx102.amr.corp.intel.com ([10.22.225.129]) by fmsmga008.fm.intel.com with ESMTP; 04 Jun 2020 13:58:45 -0700 Received: from orsmsx601.amr.corp.intel.com (10.22.229.14) by ORSMSX102.amr.corp.intel.com (10.22.225.129) with Microsoft SMTP Server (TLS) id 14.3.439.0; Thu, 4 Jun 2020 13:58:42 -0700 Received: from orsmsx607.amr.corp.intel.com (10.22.229.20) by ORSMSX601.amr.corp.intel.com (10.22.229.14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5; Thu, 4 Jun 2020 13:58:42 -0700 Received: from ORSEDG001.ED.cps.intel.com (10.7.248.4) by orsmsx607.amr.corp.intel.com (10.22.229.20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256) id 15.1.1713.5 via Frontend Transport; Thu, 4 Jun 2020 13:58:42 -0700 Received: from NAM12-MW2-obe.outbound.protection.outlook.com (104.47.66.48) by edgegateway.intel.com (134.134.137.100) with Microsoft SMTP Server (TLS) id 14.3.439.0; Thu, 4 Jun 2020 13:58:40 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=hlJuiHSL2Zl14fUCXP2JW7KXiD5ms9YInE3JKw4z6QO9w7g78jP9/qnxewvgUVOsim8/YIt48JDQzs8DctW81DBjVefBmTAIh/P28IqcVK7mg1BYyXYIdNQicxe7kOsG10dzqpnf9+MnOmm9M2Dndu1p6OH1+LEHvvSMyck32phOT2POqjfpvtRL6H46D8S/B2CkqRo7DWJjmDE2g2z+LrzyWb8mEdWdCls7j/QUo8b+1LfrotPbxSBT1xwEoxF4i9X5jq1prTtjtH14a2LA763DtJBJLTC0IBhaHxesWHU8jsIIra63hG/MLTnh/HOSRTkbwncHPsvO1tjM7edN1w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=IWQL3bIYzZi830zx+NqqmZtqyB7lwyU+PKshAPZMKA0=; b=dP7fSi4Xi/HPBUgclwlztvczKQ4O6CnypqnB+ZdV/4ooVW0PeaZl0ZYSQhxZYVXM0JiClGj8vm0P8V3edYfnOfcy1r/aqPFzBkkmyPxxsUKySM0inQXAQ57jM71ogB+Js2DuLElqxAej3sC0FOaBy/f+0AVzKb1Fto4jDFYgVHfeV0z/m4lUoM6vuRgB82LkGvCkCZ5T/fW5X6fVdMWOk7XvDIBnHximJnJQZEbPdzMwyj/xtpLOtcG8Qkqk0J2tQscOgo8z/iM/QG7/t/ZbSaIy1NWQprhn0EoGAkXEgPs1zGeR7ZJQZliEI8NEL8OxbTUXjadYxyN7rU+pEKxbqA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=intel.onmicrosoft.com; s=selector2-intel-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=IWQL3bIYzZi830zx+NqqmZtqyB7lwyU+PKshAPZMKA0=; b=OvvFNGdl+aS4fUdXoFt6qd+a4DPQi+BTLHByeCEtzlheizTcaHx3CF6k42ejyVmXwKoEl3XtL04IM/DPBj8d7t/whOY3ENjKgK6r0II9XKgHPgr9vlPsd5XSzelzYttlyWaDdtEA55nCPgoyv9W26PCXfMqeIvv5b5Rr5uEAzuk= Received: from MW3PR11MB4588.namprd11.prod.outlook.com (2603:10b6:303:54::19) by MW3PR11MB4729.namprd11.prod.outlook.com (2603:10b6:303:5d::24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3066.20; Thu, 4 Jun 2020 20:58:39 +0000 Received: from MW3PR11MB4588.namprd11.prod.outlook.com ([fe80::61c5:809c:cd86:d4c1]) by MW3PR11MB4588.namprd11.prod.outlook.com ([fe80::61c5:809c:cd86:d4c1%7]) with mapi id 15.20.3066.019; Thu, 4 Jun 2020 20:58:39 +0000 From: "Hernandez Beltran, Jorge" To: "Gao, Liming" , "devel@edk2.groups.io" CC: "Lohr, Paul A" Subject: Re: [Patch 1/1] [Edk2Platforms] FitGen: Update tool to meet FIT specification revision 1.2 Thread-Topic: [Patch 1/1] [Edk2Platforms] FitGen: Update tool to meet FIT specification revision 1.2 Thread-Index: AQHWOeos2WIXajlzXE6y5xRV9TQpJKjHneCAgAFTJEA= Date: Thu, 4 Jun 2020 20:58:39 +0000 Message-ID: References: <20200603210102.34076-1-jorge.hernandez.beltran@intel.com> <20200603210102.34076-2-jorge.hernandez.beltran@intel.com> In-Reply-To: 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 authentication-results: intel.com; dkim=none (message not signed) header.d=none;intel.com; dmarc=none action=none header.from=intel.com; x-originating-ip: [189.205.200.38] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 0a273ea3-1ede-4b78-df6e-08d808ca0ebe x-ms-traffictypediagnostic: MW3PR11MB4729: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:95; x-forefront-prvs: 04244E0DC5 x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: D0keoLu3h9ea+AqmkCHH8gPSnG5lWVkLr1dfWYSVGHlnkRv1wNsHrBTECQ/eJn91vj5WJTtrfYzzGGbbLE8Pnu8Ftg+jl5NfsCI/TqB26BaaRjlhkoKUV+Q+LRWdjr2MKmGqp/03Z1pXWEAyY/YLnxYsPceWP6nyTUC8BUoI2DOV0uajAJjeLUDTCW+v3KzxaQ3IjckqkMrSTanUBvROxWw06d+Vt+HutVupX5HmmmeD/ntaGdtTmd/Q3/mxq916MCpib0SGUUywVeQrzZX/j10xsG0zST5g1iYTLljs23GgV9mCJCLe6KkZMEHDZ1KLvnHftvx1VyRzL1xhuWvpGE1Mfdz8Fr9Zx7Ql1sp5eG40YSsh040arMDhijMASmc7ePuIbPzK/Njwl7NKzS2jeQ== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:MW3PR11MB4588.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFTY:;SFS:(39860400002)(376002)(346002)(366004)(396003)(136003)(53546011)(107886003)(9686003)(110136005)(6506007)(33656002)(26005)(478600001)(52536014)(83380400001)(2906002)(55016002)(5660300002)(8936002)(66556008)(66446008)(66476007)(966005)(71200400001)(66946007)(186003)(4326008)(76116006)(86362001)(15650500001)(316002)(7696005)(8676002)(64756008);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata: CqHtmHqZvxUnLUP2jnvcFKLYh73IcmK9lKcPjMeRrmZZMdyNnkQ3PpnFySzRdEe7yzd6LA4VRgLMt/Gt83yNl2b7o6qesp3LDf9grLpwqHPxrGq7XAT1UmrjC9Ccn6RjuH6qB0G6Bi1S7lW+cSOiR8a9RXoFw/CiQxP8aC566FgdVw3p4bFdmLwW1JDcNTTFMxnasLImCHlgEja3AC/jOfzpGYuDKkDoYXUu7nuoiTWzTrA8tWFgr7euF/mnzAu8gZ5n5iauRhYgSIpgykgnG5UJTq6ojqFSzQeCtrnu+wma4F+ok225BP/PH2GpUn7sITaGiNYITCCAKrnmotOLlEkibjCrSPAF4c53Rou1YrOLYhDDd/s8kudohJrvpWyVdVfaIJ78gEo/H60bzJ186CzmNI6doZfOzdqhdtwohvay4mS9uPf9hiv5rvc+An7NbGrYKX0AG9ofZwrAqwm2/PpVj96z6Be2QJ/Zfp30oKaO3iBEG8AMprS6Op+xa/hN MIME-Version: 1.0 X-MS-Exchange-CrossTenant-Network-Message-Id: 0a273ea3-1ede-4b78-df6e-08d808ca0ebe X-MS-Exchange-CrossTenant-originalarrivaltime: 04 Jun 2020 20:58:39.5267 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: Cm0AkUdQdp4jOq4nacKs+30QP2mBcadzAVDSQHiCy0RsL4JzL3ANxyhMk/ub95nPmJB3JnnQyq1FDOVfGjEA0KCS1jcTUSG1iSL+BUC2eNOriwg8nY6lZ9+4eNGmjgkf X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW3PR11MB4729 Return-Path: jorge.hernandez.beltran@intel.com X-OriginatorOrg: intel.com Content-Language: en-US Content-Type: text/plain; charset="iso-2022-jp" Content-Transfer-Encoding: quoted-printable Thanks Liming for the integration. Change is now visible in the edk2platfor= ms repo: (https://github.com/tianocore/edk2-platforms/commit/4a937016142ea084a2aad1= 9e9bd8f1b50fab38d4) -----Original Message----- From: Gao, Liming =20 Sent: Wednesday, June 3, 2020 7:41 PM To: Hernandez Beltran, Jorge ; devel@edk= 2.groups.io Cc: Lohr, Paul A Subject: RE: [Patch 1/1] [Edk2Platforms] FitGen: Update tool to meet FIT sp= ecification revision 1.2 Push @4a937016142ea084a2aad19e9bd8f1b50fab38d4 -----Original Message----- From: Hernandez Beltran, Jorge Sent: 2020=1B$BG/=1B(B6=1B$B7n=1B(B4=1B$BF|=1B(B 5:01 To: devel@edk2.groups.io Cc: Gao, Liming ; Lohr, Paul A ; Hernandez Beltran, Jorge Subject: [Patch 1/1] [Edk2Platforms] FitGen: Update tool to meet FIT specif= ication revision 1.2 BZ: https://bugzilla.tianocore.org/show_bug.cgi?id=3D2687 FIT specification revision 1.2 was released to the open community. Revision 1.2 updates CSE Secure Boot Rules (section 4.12) and adds 2 new entry sub-types used to distinguish the CSE entries. Signed-off-by: Jorge Hernandez Beltran Reviewed-by: Liming Gao --- Silicon/Intel/Tools/FitGen/FitGen.c | 152 +++++++++++++++++++++++++++-----= ---- Silicon/Intel/Tools/FitGen/FitGen.h | 2 +- 2 files changed, 114 insertions(+), 40 deletions(-) diff --git a/Silicon/Intel/Tools/FitGen/FitGen.c b/Silicon/Intel/Tools/FitG= en/FitGen.c index 75d8932d90ac..c4006e69c822 100644 --- a/Silicon/Intel/Tools/FitGen/FitGen.c +++ b/Silicon/Intel/Tools/FitGen/FitGen.c @@ -226,6 +226,8 @@ typedef struct { #define FIT_TABLE_TYPE_BOOT_POLICY_MANIFEST 12 #define FIT_TABLE_TYPE_BIOS_DATA_AREA 13 #define FIT_TABLE_TYPE_CSE_SECURE_BOOT 16 +#define FIT_TABLE_SUBTYPE_FIT_PATCH_MANIFEST 12 +#define FIT_TABLE_SUBTYPE_ACM_MANIFEST 13 =20 // // With OptionalModule Address isn't known until free space has been @@ -2= 36,6 +238,7 @@ typedef struct { // typedef struct { UINT32 Type; + UINT32 SubType; // Used by OptionalModule only UINT32 Address; UINT8 *Buffer; // Used by OptionalModule only UINT32 Size; @@ -295,7 +298,7 @@ Returns: --*/ { printf ( - "%s - Tiano IA32/X64 FIT table generation Utility for FIT spec revisio= n 1.1."" Version %i.%i\n\n", + "%s - Tiano IA32/X64 FIT table generation Utility for FIT spec=20 + revision 1.2."" Version %i.%i\n\n", UTILITY_NAME, UTILITY_MAJOR_VERSION, UTILITY_MINOR_VERSION @@ -334,7 +337,7 @@ Returns: "\t[-U |]\n" "\t[-B ] [-B ...] [-V ]\n" "\t[-M ] [-M ...]|[-U ||] [-V ]\n" - "\t[-O RecordType ||| [-V ]] [-O ..= . [-V ...]]\n" + "\t[-O RecordType |||| [-V ]] [-O ... [-V ...]]\n" "\t[-P RecordType [-V ]] [-P ... [-V ...]]\n" , UTILITY_NAME); printf (" Where:\n"); @@ -366,6 +369,7 @@ Returns: printf ("\tRecordDataSize - FIT entry record data size.\n"); printf ("\tRecordDataGuid - FIT entry record data GUID.\n"); printf ("\tRecordBinFile - FIT entry record data binary file.\n= "); + printf ("\tCseRecordSubType - FIT entry record subtype. Use to fur= ther distinguish CSE entries (see FIT spec revision 1.2 chapter 4.12).\n"); printf ("\tFitEntryDefaultVersion - The default version for all FIT tabl= e entries. 0x%04x is used if this is not specified.\n", DEFAULT_FIT_ENTRY_V= ERSION); printf ("\tFitHeaderVersion - The version for FIT header. (Overrid= e default version)\n"); printf ("\tStartupAcmVersion - The version for StartupAcm. (Overrid= e default version)\n"); @@ -857,6 +861,7 @@ Returns: UINT8 *FileBuffer; UINT32 FileSize; UINT32 Type; + UINT32 SubType; UINT8 *MicrocodeFileBuffer; UINT8 *MicrocodeFileBufferRaw; UINT32 MicrocodeFileSize; @@ -1608,26 +1613,22 @@ Returns: } Type =3D xtoi (argv[Index + 1]); // - // 1st, try GUID + // 1st, try CSE entry sub-type // - if (IsGuidData (argv[Index + 2], &Guid)) { - FileBuffer =3D FindFileFromFvByGuid (FdBuffer, FdSize, &Guid, &FileS= ize); - if (FileBuffer =3D=3D NULL) { - Error (NULL, 0, 0, "-O Parameter incorrect, GUID not found!", "%s"= , argv[Index + 2]); - // not found - return 0; - } - if (FileSize >=3D 0x80000000) { - Error (NULL, 0, 0, "-O Parameter incorrect, FileSize too large!", = NULL); - return 0; + SubType =3D 0; + if (Type =3D=3D FIT_TABLE_TYPE_CSE_SECURE_BOOT) { + if (Index + 3 >=3D argc) { + break; } - FileBuffer =3D (UINT8 *)MEMORY_TO_FLASH (FileBuffer, FdBuffer, FdSiz= e); - Index +=3D 3; - } else { + SubType =3D xtoi (argv[Index + 2]); // - // 2nd, try file + // try file // - Status =3D ReadInputFile (argv[Index + 2], &FileBuffer, &FileSize, N= ULL); + if (SubType !=3D FIT_TABLE_SUBTYPE_FIT_PATCH_MANIFEST && SubType != =3D FIT_TABLE_SUBTYPE_ACM_MANIFEST) { + Error (NULL, 0, 0, "-O Parameter incorrect, SubType unsupported!",= NULL); + return 0; + } + Status =3D ReadInputFile (argv[Index + 3], &FileBuffer, &FileSize,=20 + NULL); if (Status =3D=3D STATUS_SUCCESS) { if (FileSize >=3D 0x80000000) { Error (NULL, 0, 0, "-O Parameter incorrect, FileSize too large!"= , NULL); @@ -1640,48 +1641,90 @@ Returns: // Assume the file size should < 2G. // FileSize |=3D 0x80000000; + Index +=3D 4; + } else { + if (Status =3D=3D STATUS_WARNING) { + Error (NULL, 0, 0, "-O Parameter incorrect, Unable to open file"= , argv[Index + 3]); + } + return 0; + } + } else { + // + // 2nd, try GUID + // + if (IsGuidData (argv[Index + 2], &Guid)) { + FileBuffer =3D FindFileFromFvByGuid (FdBuffer, FdSize, &Guid, &Fil= eSize); + if (FileBuffer =3D=3D NULL) { + Error (NULL, 0, 0, "-O Parameter incorrect, GUID not found!", "%= s", argv[Index + 2]); + // not found + return 0; + } + if (FileSize >=3D 0x80000000) { + Error (NULL, 0, 0, "-O Parameter incorrect, FileSize too large!"= , NULL); + return 0; + } + FileBuffer =3D (UINT8 *)MEMORY_TO_FLASH (FileBuffer, FdBuffer,=20 + FdSize); Index +=3D 3; } else { // - // 3rd, try + // 3rd, try file // - if (Index + 3 >=3D argc) { - break; - } - if ((strcmp (argv[Index + 2], "RESERVE") =3D=3D 0) || - (strcmp (argv[Index + 2], "reserve") =3D=3D 0)) { - FileSize =3D xtoi (argv[Index + 3]); + Status =3D ReadInputFile (argv[Index + 2], &FileBuffer, &FileSize,= NULL); + if (Status =3D=3D STATUS_SUCCESS) { if (FileSize >=3D 0x80000000) { Error (NULL, 0, 0, "-O Parameter incorrect, FileSize too large= !", NULL); + free (FileBuffer); return 0; } - FileBuffer =3D malloc (FileSize); - if (FileBuffer =3D=3D NULL) { - Error (NULL, 0, 0, "No sufficient memory to allocate!", NULL); - return 0; - } - SetMem (FileBuffer, FileSize, 0xFF); // // Set the most significant bit // It means the data in memory, not in flash yet. // Assume the file size should < 2G. // FileSize |=3D 0x80000000; - Index +=3D 4; + Index +=3D 3; } else { // - // 4th, try + // 4th, try // if (Index + 3 >=3D argc) { break; } - FileBuffer =3D (UINT8 *) (UINTN) xtoi (argv[Index + 2]); - FileSize =3D xtoi (argv[Index + 3]); - if (FileSize >=3D 0x80000000) { - Error (NULL, 0, 0, "-O Parameter incorrect, FileSize too large= !", NULL); - return 0; + if ((strcmp (argv[Index + 2], "RESERVE") =3D=3D 0) || + (strcmp (argv[Index + 2], "reserve") =3D=3D 0)) { + FileSize =3D xtoi (argv[Index + 3]); + if (FileSize >=3D 0x80000000) { + Error (NULL, 0, 0, "-O Parameter incorrect, FileSize too lar= ge!", NULL); + return 0; + } + FileBuffer =3D malloc (FileSize); + if (FileBuffer =3D=3D NULL) { + Error (NULL, 0, 0, "No sufficient memory to allocate!", NULL= ); + return 0; + } + SetMem (FileBuffer, FileSize, 0xFF); + // + // Set the most significant bit + // It means the data in memory, not in flash yet. + // Assume the file size should < 2G. + // + FileSize |=3D 0x80000000; + Index +=3D 4; + } else { + // + // 5th, try + // + if (Index + 3 >=3D argc) { + break; + } + FileBuffer =3D (UINT8 *) (UINTN) xtoi (argv[Index + 2]); + FileSize =3D xtoi (argv[Index + 3]); + if (FileSize >=3D 0x80000000) { + Error (NULL, 0, 0, "-O Parameter incorrect, FileSize too lar= ge!", NULL); + return 0; + } + Index +=3D 4; } - Index +=3D 4; } } } @@ -1691,6 +1734,9 @@ Returns: return 0; } gFitTableContext.OptionalModule[gFitTableContext.OptionalModuleNumber]= .Type =3D Type; + if (gFitTableContext.OptionalModule[gFitTableContext.OptionalModuleNum= ber].Type =3D=3D FIT_TABLE_TYPE_CSE_SECURE_BOOT) { + gFitTableContext.OptionalModule[gFitTableContext.OptionalModuleNumbe= r].SubType =3D SubType; + } gFitTableContext.OptionalModule[gFitTableContext.OptionalModuleNumber]= .Address =3D (UINT32) (UINTN) FileBuffer; gFitTableContext.OptionalModule[gFitTableContext.OptionalModuleNumber]= .Buffer =3D FileBuffer; gFitTableContext.OptionalModule[gFitTableContext.OptionalModuleNumber]= .Size =3D FileSize; @@ -2055,6 +2101,23 @@ Returns: return ; } =20 +CHAR8 *mFitCseSubTypeStr[] =3D { + "CSE_RSVD ", + "CSE_K_HASH1", + "CSE_M_HASH ", + "CSE_BPOLICY", + "CSE_OTHR_BP", + "CSE_OEMSMIP", + "CSE_MRCDATA", + "CSE_IBBL_H ", + "CSE_IBB_H ", + "CSE_OEM_ID ", + "CSEOEMSKUID", + "CSE_BD_IND ", + "CSE_FPM ", + "CSE_ACMM " +}; + CHAR8 *mFitTypeStr[] =3D { " ", "MICROCODE ", @@ -2103,6 +2166,14 @@ Returns: return mFitSignatureInHeader; } if (FitEntry->Type < sizeof (mFitTypeStr)/sizeof(mFitTypeStr[0])) { + if (FitEntry->Type =3D=3D FIT_TABLE_TYPE_CSE_SECURE_BOOT) { + // + // "Reserved" field is used to distinguish CSE Secure Boot entries (= see FIT spec revision 1.2) + // + if (FitEntry->Rsvd < sizeof (mFitCseSubTypeStr)/sizeof(mFitCseSubTyp= eStr[0])) { + return mFitCseSubTypeStr[FitEntry->Rsvd]; + } + } return mFitTypeStr[FitEntry->Type]; } else { return " "; @@ -2675,6 +2746,9 @@ Returns: *(UINT32 *)&FitEntry[FitIndex].Size[0] =3D gFitTableContext.OptionalMo= dule[Index].Size; FitEntry[FitIndex].Version =3D (UINT16)gFitTableContext.Op= tionalModule[Index].Version; FitEntry[FitIndex].Type =3D (UINT8)gFitTableContext.Opt= ionalModule[Index].Type; + if (FitEntry[FitIndex].Type =3D=3D FIT_TABLE_TYPE_CSE_SECURE_BOOT) { + FitEntry[FitIndex].Rsvd =3D (UINT8)gFitTableContext.Opt= ionalModule[Index].SubType; + } FitEntry[FitIndex].C_V =3D 0; FitEntry[FitIndex].Checksum =3D 0; FitIndex++; diff --git a/Silicon/Intel/Tools/FitGen/FitGen.h b/Silicon/Intel/Tools/FitG= en/FitGen.h index cb9274b4175e..abad2d8799c8 100644 --- a/Silicon/Intel/Tools/FitGen/FitGen.h +++ b/Silicon/Intel/Tools/FitGen/FitGen.h @@ -31,7 +31,7 @@ SPDX-License-Identifier: BSD-2-Clause-Patent // Utility = version information // #define UTILITY_MAJOR_VERSION 0 -#define UTILITY_M= INOR_VERSION 61 +#define UTILITY_MINOR_VERSION 62 #define UTILITY_DATE __DATE__ =20 // -- 2.16.2.windows.1