From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by mx.groups.io with SMTP id smtpd.web12.32618.1653883024500332248 for ; Sun, 29 May 2022 20:57:05 -0700 Authentication-Results: mx.groups.io; dkim=fail reason="unable to parse pub key" header.i=@intel.com header.s=intel header.b=Ncjk9DNR; spf=pass (domain: intel.com, ip: 192.55.52.93, mailfrom: chasel.chiu@intel.com) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1653883024; x=1685419024; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=au5YG7arurkq4WgfBXTnQ5vvQCJ6umgdbdLiVDjd8Q4=; b=Ncjk9DNRZA69u2VjJIjnDu7a1yYDNL35ByxMCPW/FexKe6a2fa39kkYN uZnyZUZX1Zf/psLiDNKGOU4vh1+LeNAmBE1jt4hg2OVpaUKiYhAMJZ1hM 0lC2I1RFbemJpwLGXauLbwrx0l9g3QbuJ8KMz8x/SXoHO201r7tOhkZ8Z skeRA/4M1yD6/mpxjt0qMuE8YrCt62hmzS3BKwNBmRdHDSdPRbrSE1FVp Y1VagZmq1LTcNKExf0pYbmKqhSSmVuGe6XnTgKS4PyfPmNPrimY3hCes2 zDGOE5B8NdNCisbTonW7XRhMHvgTMq9r3hiPnevQqyJJ2OwoeLRaVJMmN g==; X-IronPort-AV: E=McAfee;i="6400,9594,10362"; a="272454016" X-IronPort-AV: E=Sophos;i="5.91,261,1647327600"; d="scan'208";a="272454016" Received: from fmsmga002.fm.intel.com ([10.253.24.26]) by fmsmga102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 29 May 2022 20:57:03 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.91,261,1647327600"; d="scan'208";a="678965497" Received: from fmsmsx601.amr.corp.intel.com ([10.18.126.81]) by fmsmga002.fm.intel.com with ESMTP; 29 May 2022 20:57:03 -0700 Received: from fmsmsx603.amr.corp.intel.com (10.18.126.83) by fmsmsx601.amr.corp.intel.com (10.18.126.81) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.27; Sun, 29 May 2022 20:57:02 -0700 Received: from fmsedg602.ED.cps.intel.com (10.1.192.136) by fmsmsx603.amr.corp.intel.com (10.18.126.83) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.27 via Frontend Transport; Sun, 29 May 2022 20:57:02 -0700 Received: from NAM12-MW2-obe.outbound.protection.outlook.com (104.47.66.44) by edgegateway.intel.com (192.55.55.71) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2308.27; Sun, 29 May 2022 20:57:01 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=JJCk1rG/gSWJK3zsPZZE/5EDTZw533qX5llZlsXmrUo9SetRYRyumbO7pfsDWCGCzx16wap6DYaY/UhDp9x6VqYIPPRN/pXswOtXCSf3KStfxYCKQ6DORx+vc4IrBeBBczWHQ2+mt7YlkhuTY5ORfuVowXtXT9+KGEWczcx6msLiBzQPbHEqU5iLGus4twU3KIJtSLlg68/ulrLOFgDrA7twlxa0rrjLarcAN16MDPYNveiWf0/DpDkKzY3zrPbHNX2o7QnSNA6RdJ4pgh5OM9JR2kNcGPSln8v7FJ+NP3rPOHcluqJXSoYYDrTCpDvLjmv5UcDongrY+YyKlyq9zQ== 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-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=MyqpWEnTD01/zrLzncnLyncyJnNXQ8ZRpew/dqp0Mj8=; b=idZlQLpSnjpwvBIS7xSp/Wm60bi//6qB71L7ZBlpVTAukhZj9iKUrt1VCFVWxKsjHEAgazGoSmB+TavbVrgs+2SJ0WIFZftpF9DWOObY3O8xLq/7u8F7zwQmvhzIMTEKCbsjN+Ro/9r/R92pxpyukuMIqkzINffgp3xDPJO1OH9tl5HTFSQM+PKmjW0PVVRujBMp7PX1e6MpG6VeTjOw875b4pFg451TXBorW5xI3ECYQmRgKJcgHhR64uFH0Oxhbe189uHkDJ4gGhbpOFDPEl5u+5dtw0s5xVRnNBud9fYE/yxwj6odcA4Xq7uapf0o9dvgPM+072IjYRZcCXQo8A== 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 Received: from BN9PR11MB5483.namprd11.prod.outlook.com (2603:10b6:408:104::10) by BN8PR11MB3780.namprd11.prod.outlook.com (2603:10b6:408:90::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5293.13; Mon, 30 May 2022 03:56:55 +0000 Received: from BN9PR11MB5483.namprd11.prod.outlook.com ([fe80::4d94:5d8b:51d7:d8b4]) by BN9PR11MB5483.namprd11.prod.outlook.com ([fe80::4d94:5d8b:51d7:d8b4%9]) with mapi id 15.20.5293.019; Mon, 30 May 2022 03:56:55 +0000 From: "Chiu, Chasel" To: "Loo, Tung Lun" , "devel@edk2.groups.io" CC: "Desimone, Nathaniel L" , "Zeng, Star" Subject: Re: [PATCH] IntelFsp2Pkg: Add FSP 2.3 header support Thread-Topic: [PATCH] IntelFsp2Pkg: Add FSP 2.3 header support Thread-Index: AQHYZY6Xgri5iDTlqE+7k+y4jCWQnq025xvw Date: Mon, 30 May 2022 03:56:55 +0000 Message-ID: References: <20220511232629.1941-1-tung.lun.loo@intel.com> In-Reply-To: <20220511232629.1941-1-tung.lun.loo@intel.com> Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-product: dlpe-windows dlp-reaction: no-action dlp-version: 11.6.500.17 authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 0f78f7f1-cfca-4dd0-8c4f-08da41f06ff6 x-ms-traffictypediagnostic: BN8PR11MB3780:EE_ x-microsoft-antispam-prvs: x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: nWDIS8OmjF7M6GTOk69iOXd8NI9b2JgF2Y/LkdOVOkFps0NvvOUwCNamx+6QXbwPM7GN5FSAJz+lA48v1gyr2Mu7OVxhfB+RAZLNEPJ7do61UOGTkVBbxNmo1txWMkK8YdpWrr6DLKbVssSqbdVImRjCYMaFcpxaoOQwALsX0EjIP0EQ1tnOGwOeOs5HnjsGflabTXbeOcRY5nDSyiKNnOs4nMkqIj9swjYqfnMBRanMZlCvQ8sYeJI90jHclgWajerkqVvNW12wAS5OCWFZAbzlkSXIvdalMwkqwAdXOU7S383Y6zlxhopT6FmJ1nL8OGWPa8DWtE3mMg0gC7BTFGh7CMYhDciHY6wW5dXkkHXG+XJPBa6a10+wknOFTepwG3o0F9cbF4YsTed0sHL6givjpBqcR5aFXVmwpPOHpspSSC+Gtw+44ylY6Gi5FHr4wGyV4zeqHsVTeYjxg6+S+dMRhDNWkdBZO66xfhvxlKpz2wUlbbjap/G6unt2KWvk1YKorcDEqybz4T9f69K+QT6sSnNmiCWOQ8LtxHnCZQ+2qXV8qiCAlJGYyH1WMXLAR1FDyfFvnYWFlnUxc2ngczjz0r6eGrQ3mBk3hfywd88e9jBwOPTUuJNwYGrISuSR6FV5B/EvMbcvKxAw2XF/ti8leTM4BJD6ia38gvV48c2+gwDZtHRB71CCibWCDhfDbMB6vkhPBbBtbYhrvPY7IU6x//VTeU2vVkZRIJgLkAenkyYaFkniFIFC0MZ41N+M/qcjIFgeOEMayO12TegWirXa9M5bV+2d9t8mJCBd73g= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BN9PR11MB5483.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230001)(366004)(508600001)(83380400001)(110136005)(54906003)(52536014)(7696005)(6506007)(8936002)(33656002)(5660300002)(966005)(38100700002)(66556008)(66946007)(86362001)(26005)(66476007)(186003)(64756008)(55016003)(53546011)(76116006)(107886003)(8676002)(66446008)(9686003)(38070700005)(4326008)(2906002)(71200400001)(122000001)(82960400001)(316002)(19627235002);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?C7D+Z8j7z9zb+QmgpCJozXWyGz3qu1Cua3z+kyHM21JQCUWbDjqL31cKta5Q?= =?us-ascii?Q?6YDWw3oTE+NZtu7r7N5wfxdxPlNwWvSluXIauB4S8y6b0jGOeIZPh9rNpVze?= =?us-ascii?Q?oQqe78IMwcIkEbBb7NPxcqkHuvSDgAFhCC35VhF8cZq8l3TdR6Q0dErdej1W?= =?us-ascii?Q?Ifs5wknQsAqfcIUTe7HqN9n8waaJ2L4841u0nz9MygwHCJ3tfdLoPx1uQpGU?= =?us-ascii?Q?0YiqPspl9SWpA7PrWHIjw4Bpan89cjWu6/6IEilqHPlaH5V7c2P77Xb4EgSA?= =?us-ascii?Q?lJAERaw8XlXqy2UDU2PIVYSXDFZwdi/fXJEDt+6QPATh5BY9tWEFAKyGYAdn?= =?us-ascii?Q?cFV2ciYxdAcToJHUPC8cFWHtoPyPsFmjYEqFcCYttoqmPPDSnmJ+J8cl5LSb?= =?us-ascii?Q?qi+/gwFuJLoeeNEbxxLiHm+AxTG0teN/eZ+5Cb7YQhKTqjbsbX1nVXeLPGfY?= =?us-ascii?Q?l7pMDJk1xONbz8ZZ690JcT2U4hmR56yV1O68KTrxGBd2eTZQqzL7moDoYJLn?= =?us-ascii?Q?IUntCy9iTUqEI5uahxYW7treQ+6+2l8qNgXz1ZAEjiLqAiqMuwIZ8+J6174p?= =?us-ascii?Q?Obw60Ce9CqqrKTxxVNr8YdXGXOfd2inyB6/9TGhJVHD0oVpuxno0dx/9bKtf?= =?us-ascii?Q?cBHIkMQE2XbEez9UMqL5AW7+q3Q8KyKlNM8pboUBSH4UAdA5eBNkmpDEonhm?= =?us-ascii?Q?JPktcuZM4CNFTLXuatOVGaZKPGpzxhZzBieYD4I5czpMqqHDGtCOHvoWJUZe?= =?us-ascii?Q?VdfvHmEYOgQLJN4aBGNXiYWFXjlyOtLpHfTC5yXVMNfoWyYWkxqk3VRAzuB+?= =?us-ascii?Q?I+ZQSNeW492ZSqf53uPcbHZSPMCUKRvD1A4M+9u9scV2TrGKhc8UhMmQ45QT?= =?us-ascii?Q?NJeiT5RDoNyiIk7qINgOPUCVZG5c9ndy/2Fd4tFX6tNs5pLehOnxswoa+wI5?= =?us-ascii?Q?t67wgGbfKYnKsEsBt3mJ7dcvLxqzIBPG7Rw8GdDxwdWCGsdoIeB7rFJfhuCs?= =?us-ascii?Q?pvLtcHqhlkbxctR3nMZjD8/Wzf4IloWLTEp792FE3Jjm2JkK0Ae4Q+FwSF4b?= =?us-ascii?Q?Fpnclo3sXFuI9jqoM+0SmZc9oZemlgS4fkHyksNlpnkFry0WqdQVzV7gfRv0?= =?us-ascii?Q?T+mbSStagovDfKXc7IdlbhvR4yxZsAwWnQuXVxUw/TKj0BklmA+UXi4+ga4M?= =?us-ascii?Q?fO60ViNcR4Ow5KHlFJaJcFrUkwkulnq1KkFxzeZCO2kD4ZGIyHY7oAakYUKi?= =?us-ascii?Q?f3/gG/T5sGdKLs+P+I5Fj624OLYgwxW5+6xQrpUiI8PSK/famfcNtyhlgZYa?= =?us-ascii?Q?Tw8WZmkdsFCoVx7jlJWnZk85m0heSIiw5voNMewPgar20qugZKJTsoe8OB3x?= =?us-ascii?Q?jwPcMkl2G7EtKrRbxDc63CLQ7ilzSYysOMkaGhh/XE89X/nqDN/6+aLyz0Rh?= =?us-ascii?Q?K72Mme04ccX45HjDl4FJfKMkzU+sOU38Yskn+dySGNa1sOOsPZbS90nYGQQx?= =?us-ascii?Q?90082oF2vGpZSpop2ZsJ4TkR41snRv086oCyurQ4b3e0pMXnLAZnG/l9tt3M?= =?us-ascii?Q?iJNuyR3Eg4l7OkeSU/HnmPVc0f4vNcuAUIPCRouJJJJ6NMcOIQgaJpEt6IUe?= =?us-ascii?Q?naedtkMuiv4GTkD7GzJCQGy+Zm9CydC8pjXUvPYIN4CoNBuzwEyKMUwOR6P8?= =?us-ascii?Q?OrMh17rHQruuNmEq1f00e8GpXp95dxrJ/bOlkad6sGgH/t0urBK7OX/MD+M2?= =?us-ascii?Q?l10halSPiQ=3D=3D?= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: BN9PR11MB5483.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 0f78f7f1-cfca-4dd0-8c4f-08da41f06ff6 X-MS-Exchange-CrossTenant-originalarrivaltime: 30 May 2022 03:56:55.2106 (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: WSep3SOGBjPeHOOnanwQyntoEfwMA0H79qhcMoIH1jKM5QK3BkJXSlqhmRx8vXMw3Pfpo7WVSeQJMv6m0FTH7A== X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN8PR11MB3780 Return-Path: chasel.chiu@intel.com X-OriginatorOrg: intel.com Content-Language: en-US Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Reviewed-by: Chasel Chiu Thanks TungLun! > -----Original Message----- > From: Loo, Tung Lun > Sent: Thursday, May 12, 2022 7:26 AM > To: devel@edk2.groups.io > Cc: Loo, Tung Lun ; Desimone, Nathaniel L > ; Zeng, Star ; Chiu, > Chasel > Subject: [PATCH] IntelFsp2Pkg: Add FSP 2.3 header support >=20 > BZ: https://bugzilla.tianocore.org/show_bug.cgi?id=3D3921 >=20 > This patch adds a couple of fields supported in FSP 2.3 header from both > header generation and tool support perspective. >=20 > Signed-off-by: Loo Tung Lun > Cc: Nate DeSimone > Cc: Star Zeng > Cc: Chasel Chiu > --- > IntelFsp2Pkg/Tools/ConfigEditor/ConfigEditor.py | 63 > ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++- > ---- > IntelFsp2Pkg/Tools/ConfigEditor/GenYamlCfg.py | 14 +++++++++++--- > 2 files changed, 69 insertions(+), 8 deletions(-) >=20 > diff --git a/IntelFsp2Pkg/Tools/ConfigEditor/ConfigEditor.py > b/IntelFsp2Pkg/Tools/ConfigEditor/ConfigEditor.py > index 680b90e09d..5271504282 100644 > --- a/IntelFsp2Pkg/Tools/ConfigEditor/ConfigEditor.py > +++ b/IntelFsp2Pkg/Tools/ConfigEditor/ConfigEditor.py > @@ -13,6 +13,7 @@ import tkinter.ttk as ttk > import tkinter.messagebox as messagebox import tkinter.filedialog as > filedialog +from pickle import FALSE, TRUE from pathlib import Path from > GenYamlCfg import CGenYamlCfg, bytes_to_value, \ > bytes_to_bracket_str, value_to_bytes, array_str_to_value@@ -458,7 > +459,10 @@ class FSP_INFORMATION_HEADER(Structure): > ('NotifyPhaseEntryOffset', c_uint32), > ('FspMemoryInitEntryOffset', c_uint32), ('TempRamExitEntryOffse= t', > c_uint32),- ('FspSiliconInitEntryOffset', c_uint32)+ > ('FspSiliconInitEntryOffset', c_uint32),+ > ('FspMultiPhaseSiInitEntryOffset', c_uint32),+ ('ExtendedImageRevi= sion', > c_uint16),+ ('Reserved4', c_uint16) ] @@ -700,6 +704,34 = @@ > class FirmwareDevice: > raise Exception("ERROR: Incorrect FV size in image != ") > self.CheckFsp() + def IsIntegerType(self, val):+ if sys.version= _info[0] < > 3:+ if type(val) in (int, long):+ return True+ = else:+ if > type(val) is int:+ return True+ return False++ d= ef > ConvertRevisionString(self, obj):+ for field in obj._fields_:+ = key =3D > field[0]+ val =3D getattr(obj, key)+ rep =3D ''++ = if > self.IsIntegerType(val):+ if (key =3D=3D 'ImageRevision'):= + > FspImageRevisionMajor =3D ((val >> 24) & 0xFF)+ > FspImageRevisionMinor =3D ((val >> 16) & 0xFF)+ > FspImageRevisionRevision =3D ((val >> 8) & 0xFF)+ > FspImageRevisionBuildNumber =3D (val & 0xFF)+ rep =3D = '0x%08X' % > val+ elif (key =3D=3D 'ExtendedImageRevision'):+ > FspImageRevisionRevision |=3D (val & 0xFF00)+ > FspImageRevisionBuildNumber |=3D ((val << 8) & 0xFF00)+ = rep =3D > "0x%04X ('%02X.%02X.%04X.%04X')" % (val, FspImageRevisionMajor, > FspImageRevisionMinor, FspImageRevisionRevision, > FspImageRevisionBuildNumber)+ return rep+ def > OutputFsp(self): def copy_text_to_clipboard(): > window.clipboard_clear()@@ -721,7 +753,8 @@ class FirmwareDevice: > self.OutputText =3D self.OutputText + "Fsp Header Details \n\n" > while i < len(self.FihList): try:- self.Output= Text +=3D > str(self.BuildList[i].decode()) + "\n"+ # self.OutputText = +=3D > str(self.BuildList[i].decode()) + "\n"+ self.OutputText += =3D > str(self.BuildList[i]) + "\n" except Exception: = self.OutputText > +=3D "No description found\n" self.OutputText +=3D "FSP Heade= r :\n > "@@ -729,6 +762,8 @@ class FirmwareDevice: > str(self.FihList[i].Signature.decode('utf-8')) + "\n " > self.OutputText +=3D "Header Length : " + \ > str(hex(self.FihList[i].HeaderLength)) + "\n "+ self.OutputTex= t +=3D > "Reserved1 : " + \+ str(hex(self.FihList[i].Reserved1)) + = "\n " > self.OutputText +=3D "Header Revision : " + \ > str(hex(self.FihList[i].HeaderRevision)) + "\n " self.OutputT= ext +=3D > "Spec Version : " + \@@ -743,15 +778,17 @@ class FirmwareDevice: > str(hex(self.FihList[i].ImageBase)) + "\n " = self.OutputText +=3D > "Image Attribute : " + \ str(hex(self.FihList[i].ImageAtt= ribute)) + "\n > "+ self.OutputText +=3D "Component Attribute : " + \+ > str(hex(self.FihList[i].ComponentAttribute)) + "\n " self.Out= putText > +=3D "Cfg Region Offset : " + \ str(hex(self.FihList[i].C= fgRegionOffset)) > + "\n " self.OutputText +=3D "Cfg Region Size : " + \ > str(hex(self.FihList[i].CfgRegionSize)) + "\n "- self.OutputTe= xt +=3D "API > Entry Num : " + \+ self.OutputText +=3D "Reserved2 : " + \ > str(hex(self.FihList[i].Reserved2)) + "\n " self.OutputText += =3D "Temp > Ram Init Entry : " + \ > str(hex(self.FihList[i].TempRamInitEntryOffset)) + "\n "- > self.OutputText +=3D "FSP Init Entry : " + \+ self.OutputText = +=3D > "Reserved3 : " + \ str(hex(self.FihList[i].Reserved3)) + = "\n " > self.OutputText +=3D "Notify Phase Entry : " + \ > str(hex(self.FihList[i].NotifyPhaseEntryOffset)) + "\n "@@ -760,7 +797,23 > @@ class FirmwareDevice: > self.OutputText +=3D "Temp Ram Exit Entry : " + \ > str(hex(self.FihList[i].TempRamExitEntryOffset)) + "\n " > self.OutputText +=3D "Fsp Silicon Init Entry : " + \- > str(hex(self.FihList[i].FspSiliconInitEntryOffset)) + "\n\n"+ > str(hex(self.FihList[i].FspSiliconInitEntryOffset)) + "\n "+ > self.OutputText +=3D "Fsp Multi Phase Si Init Entry : " + \+ > str(hex(self.FihList[i].FspMultiPhaseSiInitEntryOffset)) + "\n "++ = # > display ExtendedImageRevision & Reserved4 if HeaderRevision >=3D 6+ > for fsp in self.FihList:+ if fsp.HeaderRevision >=3D 6:+ > Display_ExtndImgRev =3D TRUE+ else:+ > Display_ExtndImgRev =3D FALSE+ self.OutputText +=3D "\= n"+ if > Display_ExtndImgRev =3D=3D TRUE:+ self.OutputText +=3D > "ExtendedImageRevision : " + \+ > str(self.ConvertRevisionString(self.FihList[i])) + "\n "+ > self.OutputText +=3D "Reserved4 : " + \+ > str(hex(self.FihList[i].Reserved4)) + "\n\n"+ self.OutputText= +=3D "FSP > Extended Header:\n " self.OutputText +=3D "Signature : " + \ > str(self.FspExtList[i].Signature.decode('utf-8')) + "\n "diff --git > a/IntelFsp2Pkg/Tools/ConfigEditor/GenYamlCfg.py > b/IntelFsp2Pkg/Tools/ConfigEditor/GenYamlCfg.py > index b593885807..90d7a11184 100644 > --- a/IntelFsp2Pkg/Tools/ConfigEditor/GenYamlCfg.py > +++ b/IntelFsp2Pkg/Tools/ConfigEditor/GenYamlCfg.py > @@ -929,17 +929,25 @@ into %d bytes !" % (value_str, length)) > ]]= : > tmp_list.append((op_val, op_str)) else:- opt_l= ist =3D > item['option'].split(',')+ if item['option'].find(';') != =3D -1:+ > opt_list =3D item['option'].split(';')+ else:+ = opt_list =3D > re.split(', ', item['option']) for option in opt_list: = option > =3D option.strip() try:- (op_v= al, op_str) =3D > option.split(':')+ if option.find(':') !=3D -1:+ > (op_val, op_str) =3D option.split(':')+ else:+ > op_val =3D option+ op_str =3D option = except > Exception:- raise SystemExit("Exception: Invalide = \+ > raise SystemExit("Exception: Invalid \ option format '%s' !" % option) > tmp_list.append((op_val, op_str)) return tmp_list + def > get_page_title(self, page_id, top=3DNone): if top is None: = top =3D > self.get_cfg_page()['root']-- > 2.28.0.windows.1