From nobody Sun May 5 03:32:16 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) client-ip=66.175.222.108; envelope-from=bounce+27952+89687+1787277+3901457@groups.io; helo=mail02.groups.io; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce+27952+89687+1787277+3901457@groups.io; dmarc=fail(p=none dis=none) header.from=intel.com ARC-Seal: i=1; a=rsa-sha256; t=1652311608; cv=none; d=zohomail.com; s=zohoarc; b=O1kBs3RB5bUv8qAppUWOQ9wr2Iih8dmFgbSx5+r/O69hf+UTTTKjkYcL8ekt1cP9I8Ac7MsQs+3/noIA794ltBXcJPfaPLlkp/jVgnh8i+SHKn4ocy6nm5fXgvigPMb/hqakkkYQBqhnghOLmXU813bxiOKIA89E9RzpVveMkNs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1652311608; h=Content-Transfer-Encoding:Cc:Date:From:List-Subscribe:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:Sender:Subject:To; bh=0ql5CzVrD9s2Goano0O0J1i28qPs185KXV15e0mN1CU=; b=Evyhi0qkomfweCGIjiRxx0DmJXbfTYR0iPKJgbHXkLl6MZLhfgcVfC2OHYyyNBnYjk8OCmGcb4a98rxsmAk0OCnCpIQ1zmqbNAYwng68cAM693RQmSSAFHheghNBmaqPdUdoFUbza4lAhFlrQ+UOh0POB7hz8RsxNRArJERR804= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce+27952+89687+1787277+3901457@groups.io; dmarc=fail header.from= (p=none dis=none) Received: from mail02.groups.io (mail02.groups.io [66.175.222.108]) by mx.zohomail.com with SMTPS id 1652311608873914.7662357002828; Wed, 11 May 2022 16:26:48 -0700 (PDT) Return-Path: X-Received: by 127.0.0.2 with SMTP id GmuiYY1788612xSX2LilSwUs; Wed, 11 May 2022 16:26:48 -0700 X-Received: from mga06.intel.com (mga06.intel.com [134.134.136.31]) by mx.groups.io with SMTP id smtpd.web08.817.1652311606422659191 for ; Wed, 11 May 2022 16:26:47 -0700 X-IronPort-AV: E=McAfee;i="6400,9594,10344"; a="330441336" X-IronPort-AV: E=Sophos;i="5.91,218,1647327600"; d="scan'208";a="330441336" X-Received: from orsmga005.jf.intel.com ([10.7.209.41]) by orsmga104.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 11 May 2022 16:26:44 -0700 X-IronPort-AV: E=Sophos;i="5.91,218,1647327600"; d="scan'208";a="739430879" X-Received: from tunglunl-mobl.gar.corp.intel.com ([10.213.32.179]) by orsmga005-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 11 May 2022 16:26:42 -0700 From: "Tung Lun" To: devel@edk2.groups.io Cc: "Loo, Tung Lun" , Nate DeSimone , Star Zeng , Chasel Chiu Subject: [edk2-devel] [PATCH] IntelFsp2Pkg: Add FSP 2.3 header support Date: Thu, 12 May 2022 07:26:29 +0800 Message-Id: <20220511232629.1941-1-tung.lun.loo@intel.com> MIME-Version: 1.0 Precedence: Bulk List-Unsubscribe: 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,tung.lun.loo@intel.com X-Gm-Message-State: RQSAD809b3WBwlGT4uuUqrkpx1787277AA= Content-Transfer-Encoding: quoted-printable DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1652311608; bh=aBrV6tQ3rkGQD00yExBYb2d7P30sjeYpuvpZdrdasFM=; h=Cc:Date:From:Reply-To:Subject:To; b=SW+cKaYEOS0e2jPFTGVueQDljsdzJ/KX5xV78MiY/vHnlqtx6R6ltWSH+XbQPUfxxPM 0NiW9Gr59v3wpAlYEuUtrIfhnrVzd0IOdzxBGoTQjYxKwRFGRh+VlTwtKQ05DmKh1lTKs i5+MlgwJh2YrBWcWOEn+eOt6nVOgvk6OybU= X-ZohoMail-DKIM: pass (identity @groups.io) X-ZM-MESSAGEID: 1652311610065100003 Content-Type: text/plain; charset="utf-8" BZ: https://bugzilla.tianocore.org/show_bug.cgi?id=3D3921 This patch adds a couple of fields supported in FSP 2.3 header from both header generation and tool support perspective. Signed-off-by: Loo Tung Lun Cc: Nate DeSimone Cc: Star Zeng Cc: Chasel Chiu Reviewed-by: Chasel Chiu --- IntelFsp2Pkg/Tools/ConfigEditor/ConfigEditor.py | 63 +++++++++++++++++++++= +++++++++++++++++++++++++++++++++++++----- IntelFsp2Pkg/Tools/ConfigEditor/GenYamlCfg.py | 14 +++++++++++--- 2 files changed, 69 insertions(+), 8 deletions(-) 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 =20 +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), ('TempRamExitEntryOffset', c_uint32), - ('FspSiliconInitEntryOffset', c_uint32) + ('FspSiliconInitEntryOffset', c_uint32), + ('FspMultiPhaseSiInitEntryOffset', c_uint32), + ('ExtendedImageRevision', c_uint16), + ('Reserved4', c_uint16) ] =20 =20 @@ -700,6 +704,34 @@ class FirmwareDevice: raise Exception("ERROR: Incorrect FV size in image !") self.CheckFsp() =20 + 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 + + def 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, FspIm= ageRevisionMajor, FspImageRevisionMinor, FspImageRevisionRevision, FspImage= RevisionBuildNumber) + 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.OutputText +=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 Header :\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.OutputText +=3D "Reserved1 : " + \ + str(hex(self.FihList[i].Reserved1)) + "\n " self.OutputText +=3D "Header Revision : " + \ str(hex(self.FihList[i].HeaderRevision)) + "\n " self.OutputText +=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].ImageAttribute)) + "\n " + self.OutputText +=3D "Component Attribute : " + \ + str(hex(self.FihList[i].ComponentAttribute)) + "\n " self.OutputText +=3D "Cfg Region Offset : " + \ str(hex(self.FihList[i].CfgRegionOffset)) + "\n " self.OutputText +=3D "Cfg Region Size : " + \ str(hex(self.FihList[i].CfgRegionSize)) + "\n " - self.OutputText +=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/T= ools/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_list =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_val, 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 =20 + def get_page_title(self, page_id, top=3DNone): if top is None: top =3D self.get_cfg_page()['root'] --=20 2.28.0.windows.1 -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#89687): https://edk2.groups.io/g/devel/message/89687 Mute This Topic: https://groups.io/mt/91047875/1787277 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org] -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-