From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) by mx.groups.io with SMTP id smtpd.web09.39992.1656688211066291732 for ; Fri, 01 Jul 2022 08:10:13 -0700 Authentication-Results: mx.groups.io; dkim=fail reason="unable to parse pub key" header.i=@intel.com header.s=intel header.b=QDK5DXpC; spf=pass (domain: intel.com, ip: 134.134.136.100, mailfrom: jason1.lin@intel.com) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1656688213; x=1688224213; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=DIWWm10LxF5rgxq1HX5a8XlsnhznPdI6VM1bSMiO9RI=; b=QDK5DXpC5HzAoWCrOB9s+tg0+7kBm3/M3CDm3okkT2spSOIHnW1Qi9Ic uTv0IOuLA2u6vnWEbKdMbfW79vBIPdFkGvauHVudHeU7Z3PehKr3KPtYf +Iz3ypXXyx2HCDprEdiIu+q1hQ1GJPQndJNADQF6cWb6Pn+F395cilAwI t4wBhhxoAahWvOlwW3PoDcQBeQN14ihGk4EFirSyIC7OjzsUKBAVg8rvD N65oGnb6HfDChAImZrDramKOSDVoy4jvP4OkIGBTGZP0uo1nWZ0SfN6nd nI5bSQ1nSNhO1f3N/wlme1HhnCbBQRXh3KcNRFlk+2APdzBYdQeldRN2U A==; X-IronPort-AV: E=McAfee;i="6400,9594,10394"; a="346658184" X-IronPort-AV: E=Sophos;i="5.92,237,1650956400"; d="scan'208";a="346658184" Received: from fmsmga005.fm.intel.com ([10.253.24.32]) by orsmga105.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 01 Jul 2022 08:10:12 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.92,237,1650956400"; d="scan'208";a="918502032" Received: from linjaso1-desk1.gar.corp.intel.com ([10.5.215.41]) by fmsmga005.fm.intel.com with ESMTP; 01 Jul 2022 08:10:10 -0700 From: "Lin, Jason1" To: devel@edk2.groups.io Cc: Jason1 Lin , Bob Feng , Liming Gao , Yuwei Chen , Isaac W Oram , Rangasai V Chaganty , Dakota Chiang Subject: [PATCH v3 2/3] [edk2-platforms] Silicon/Intel/FitGen: Reduce the typecasting and pointer usage Date: Fri, 1 Jul 2022 23:10:04 +0800 Message-Id: <20220701151005.189-2-jason1.lin@intel.com> X-Mailer: git-send-email 2.37.0.windows.1 In-Reply-To: <20220701151005.189-1-jason1.lin@intel.com> References: <20220701151005.189-1-jason1.lin@intel.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable From: Jason1 Lin REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3D3958 FitGen tool exists lots of typecasting and pointer usage. This code change is used to reduce these in FillFitTable () and GetFitEntryInfo (). To make code more clearly and easy to read. Signed-off-by: Jason1 Lin Cc: Bob Feng Cc: Liming Gao Cc: Yuwei Chen Cc: Isaac W Oram Cc: Rangasai V Chaganty Cc: Dakota Chiang --- Silicon/Intel/Tools/FitGen/FitGen.c | 125 ++++++++++++-------- 1 file changed, 78 insertions(+), 47 deletions(-) diff --git a/Silicon/Intel/Tools/FitGen/FitGen.c b/Silicon/Intel/Tools/FitG= en/FitGen.c index eac8fa8715..01b4f82518 100644 --- a/Silicon/Intel/Tools/FitGen/FitGen.c +++ b/Silicon/Intel/Tools/FitGen/FitGen.c @@ -2768,6 +2768,7 @@ Returns: {=0D FIRMWARE_INTERFACE_TABLE_ENTRY *FitEntry;=0D UINT32 FitIndex;=0D + UINT32 FitEntrySizeValue;=0D UINT32 Index;=0D UINT8 Checksum;=0D UINTN SubIndex;=0D @@ -2788,27 +2789,35 @@ Returns: //=0D // 2. FitHeader=0D //=0D - FitEntry[FitIndex].Address =3D *(UINT64 *)"_FIT_ ";=0D - *(UINT32 *)&FitEntry[FitIndex].Size[0] =3D gFitTableContext.FitEntryNumb= er;=0D - FitEntry[FitIndex].Version =3D (UINT16)gFitTableContext.FitH= eaderVersion;=0D - FitEntry[FitIndex].Type =3D FIT_TABLE_TYPE_HEADER;=0D - FitEntry[FitIndex].C_V =3D 1;=0D + FitEntrySizeValue =3D gFitTableContext.FitEntryNumber;=0D + FitEntry[FitIndex].Address =3D *(UINT64 *)"_FIT_ ";=0D + FitEntry[FitIndex].Size[0] =3D (UINT8)FitEntrySizeValue;=0D + FitEntry[FitIndex].Size[1] =3D (UINT8)(FitEntrySizeValue >> 8);=0D + FitEntry[FitIndex].Size[2] =3D (UINT8)(FitEntrySizeValue >> 16);=0D + FitEntry[FitIndex].Rsvd =3D 0;=0D + FitEntry[FitIndex].Version =3D (UINT16)gFitTableContext.FitHeaderVersio= n;=0D + FitEntry[FitIndex].Type =3D FIT_TABLE_TYPE_HEADER;=0D + FitEntry[FitIndex].C_V =3D 1;=0D //=0D // Checksum will be updated later...=0D //=0D - FitEntry[FitIndex].Checksum =3D 0;=0D + FitEntry[FitIndex].Checksum =3D 0;=0D =0D //=0D // 3. Microcode=0D //=0D FitIndex++;=0D for (Index =3D 0; Index < gFitTableContext.MicrocodeNumber; Index++) {=0D - FitEntry[FitIndex].Address =3D gFitTableContext.Microcode[= Index].Address;=0D - *(UINT32 *)&FitEntry[FitIndex].Size[0] =3D 0; //gFitTableContext.Micro= code[Index].Size / 16;=0D - FitEntry[FitIndex].Version =3D (UINT16)gFitTableContext.Mi= crocodeVersion;=0D - FitEntry[FitIndex].Type =3D FIT_TABLE_TYPE_MICROCODE;=0D - FitEntry[FitIndex].C_V =3D 0;=0D - FitEntry[FitIndex].Checksum =3D 0;=0D + FitEntrySizeValue =3D 0; // gFitTableContext.Microcode[Index= ].Size / 16=0D + FitEntry[FitIndex].Address =3D gFitTableContext.Microcode[Index].Addr= ess;=0D + FitEntry[FitIndex].Size[0] =3D (UINT8)FitEntrySizeValue;=0D + FitEntry[FitIndex].Size[1] =3D (UINT8)(FitEntrySizeValue >> 8);=0D + FitEntry[FitIndex].Size[2] =3D (UINT8)(FitEntrySizeValue >> 16);=0D + FitEntry[FitIndex].Rsvd =3D 0;=0D + FitEntry[FitIndex].Version =3D (UINT16)gFitTableContext.MicrocodeVers= ion;=0D + FitEntry[FitIndex].Type =3D FIT_TABLE_TYPE_MICROCODE;=0D + FitEntry[FitIndex].C_V =3D 0;=0D + FitEntry[FitIndex].Checksum =3D 0;=0D FitIndex++;=0D }=0D =0D @@ -2816,12 +2825,16 @@ Returns: // 4. StartupAcm=0D //=0D for (Index =3D 0; Index < gFitTableContext.StartupAcmNumber; Index++) {= =0D - FitEntry[FitIndex].Address =3D gFitTableContext.StartupAcm= [Index].Address;=0D - *(UINT32 *)&FitEntry[FitIndex].Size[0] =3D 0; //gFitTableContext.Start= upAcm.Size / 16;=0D - FitEntry[FitIndex].Version =3D (UINT16)gFitTableContext.St= artupAcmVersion;=0D - FitEntry[FitIndex].Type =3D FIT_TABLE_TYPE_STARTUP_ACM;= =0D - FitEntry[FitIndex].C_V =3D 0;=0D - FitEntry[FitIndex].Checksum =3D 0;=0D + FitEntrySizeValue =3D 0; // gFitTableContext.StartupAcm.Size= / 16=0D + FitEntry[FitIndex].Address =3D gFitTableContext.StartupAcm[Index].Add= ress;=0D + FitEntry[FitIndex].Size[0] =3D (UINT8)FitEntrySizeValue;=0D + FitEntry[FitIndex].Size[1] =3D (UINT8)(FitEntrySizeValue >> 8);=0D + FitEntry[FitIndex].Size[2] =3D (UINT8)(FitEntrySizeValue >> 16);=0D + FitEntry[FitIndex].Rsvd =3D 0;=0D + FitEntry[FitIndex].Version =3D (UINT16)gFitTableContext.StartupAcmVer= sion;=0D + FitEntry[FitIndex].Type =3D FIT_TABLE_TYPE_STARTUP_ACM;=0D + FitEntry[FitIndex].C_V =3D 0;=0D + FitEntry[FitIndex].Checksum =3D 0;=0D FitIndex++;=0D }=0D =0D @@ -2829,19 +2842,23 @@ Returns: // 4.5. DiagnosticAcm=0D //=0D if (gFitTableContext.DiagnstAcm.Address !=3D 0) {=0D - FitEntry[FitIndex].Address =3D gFitTableContext.DiagnstAcm= .Address;=0D - *(UINT32 *)&FitEntry[FitIndex].Size[0] =3D 0;=0D - FitEntry[FitIndex].Version =3D (UINT16)gFitTableContext.Di= agnstAcmVersion;=0D - FitEntry[FitIndex].Type =3D FIT_TABLE_TYPE_DIAGNST_ACM;= =0D - FitEntry[FitIndex].C_V =3D 0;=0D - FitEntry[FitIndex].Checksum =3D 0;=0D + FitEntrySizeValue =3D 0; // gFitTableContext.DiagnstAcmVersi= on.Size / 16=0D + FitEntry[FitIndex].Address =3D gFitTableContext.DiagnstAcm.Address;=0D + FitEntry[FitIndex].Size[0] =3D (UINT8)FitEntrySizeValue;=0D + FitEntry[FitIndex].Size[1] =3D (UINT8)(FitEntrySizeValue >> 8);=0D + FitEntry[FitIndex].Size[2] =3D (UINT8)(FitEntrySizeValue >> 16);=0D + FitEntry[FitIndex].Rsvd =3D 0;=0D + FitEntry[FitIndex].Version =3D (UINT16)gFitTableContext.DiagnstAcmVer= sion;=0D + FitEntry[FitIndex].Type =3D FIT_TABLE_TYPE_DIAGNST_ACM;=0D + FitEntry[FitIndex].C_V =3D 0;=0D + FitEntry[FitIndex].Checksum =3D 0;=0D FitIndex++;=0D }=0D //=0D // 5. BiosModule=0D //=0D //=0D - // BiosModule segments order needs to be put from low addresss to high f= or Btg requirement=0D + // BiosModule segments order needs to be put from low address to high fo= r Btg requirement=0D //=0D if (gFitTableContext.BiosModuleNumber > 1) {=0D for (Index =3D 0; Index < (UINTN)gFitTableContext.BiosModuleNumber - 1= ; Index++){=0D @@ -2855,12 +2872,16 @@ Returns: }=0D }=0D for (Index =3D 0; Index < gFitTableContext.BiosModuleNumber; Index++) {= =0D - FitEntry[FitIndex].Address =3D gFitTableContext.BiosModule= [Index].Address;=0D - *(UINT32 *)&FitEntry[FitIndex].Size[0] =3D gFitTableContext.BiosModule= [Index].Size / 16;=0D - FitEntry[FitIndex].Version =3D (UINT16)gFitTableContext.Bi= osModuleVersion;=0D - FitEntry[FitIndex].Type =3D FIT_TABLE_TYPE_BIOS_MODULE;= =0D - FitEntry[FitIndex].C_V =3D 0;=0D - FitEntry[FitIndex].Checksum =3D 0;=0D + FitEntrySizeValue =3D gFitTableContext.BiosModule[Index].Siz= e / 16;=0D + FitEntry[FitIndex].Address =3D gFitTableContext.BiosModule[Index].Add= ress;=0D + FitEntry[FitIndex].Size[0] =3D (UINT8)FitEntrySizeValue;=0D + FitEntry[FitIndex].Size[1] =3D (UINT8)(FitEntrySizeValue >> 8);=0D + FitEntry[FitIndex].Size[2] =3D (UINT8)(FitEntrySizeValue >> 16);=0D + FitEntry[FitIndex].Rsvd =3D 0;=0D + FitEntry[FitIndex].Version =3D (UINT16)gFitTableContext.BiosModuleVer= sion;=0D + FitEntry[FitIndex].Type =3D FIT_TABLE_TYPE_BIOS_MODULE;=0D + FitEntry[FitIndex].C_V =3D 0;=0D + FitEntry[FitIndex].Checksum =3D 0;=0D FitIndex++;=0D }=0D =0D @@ -2868,15 +2889,18 @@ Returns: // 6. Optional module=0D //=0D for (Index =3D 0; Index < gFitTableContext.OptionalModuleNumber; Index++= ) {=0D - FitEntry[FitIndex].Address =3D gFitTableContext.OptionalMo= dule[Index].Address;=0D - *(UINT32 *)&FitEntry[FitIndex].Size[0] =3D gFitTableContext.OptionalMo= dule[Index].Size;=0D - FitEntry[FitIndex].Version =3D (UINT16)gFitTableContext.Op= tionalModule[Index].Version;=0D - FitEntry[FitIndex].Type =3D (UINT8)gFitTableContext.Opt= ionalModule[Index].Type;=0D + FitEntrySizeValue =3D gFitTableContext.OptionalModule[Index]= .Size;=0D + FitEntry[FitIndex].Address =3D gFitTableContext.OptionalModule[Index]= .Address;=0D + FitEntry[FitIndex].Size[0] =3D (UINT8)FitEntrySizeValue;=0D + FitEntry[FitIndex].Size[1] =3D (UINT8)(FitEntrySizeValue >> 8);=0D + FitEntry[FitIndex].Size[2] =3D (UINT8)(FitEntrySizeValue >> 16);=0D + FitEntry[FitIndex].Version =3D (UINT16)gFitTableContext.OptionalModul= e[Index].Version;=0D + FitEntry[FitIndex].Type =3D (UINT8)gFitTableContext.OptionalModule= [Index].Type;=0D if (FitEntry[FitIndex].Type =3D=3D FIT_TABLE_TYPE_CSE_SECURE_BOOT) {=0D - FitEntry[FitIndex].Rsvd =3D (UINT8)gFitTableContext.Opt= ionalModule[Index].SubType;=0D + FitEntry[FitIndex].Rsvd =3D (UINT8)gFitTableContext.OptionalModule= [Index].SubType;=0D }=0D - FitEntry[FitIndex].C_V =3D 0;=0D - FitEntry[FitIndex].Checksum =3D 0;=0D + FitEntry[FitIndex].C_V =3D 0;=0D + FitEntry[FitIndex].Checksum =3D 0;=0D FitIndex++;=0D }=0D =0D @@ -2884,12 +2908,16 @@ Returns: // 7. Port module=0D //=0D for (Index =3D 0; Index < gFitTableContext.PortModuleNumber; Index++) {= =0D - FitEntry[FitIndex].Address =3D gFitTableContext.PortModule= [Index].Address + ((UINT64)gFitTableContext.PortModule[Index].Size << 32);= =0D - *(UINT32 *)&FitEntry[FitIndex].Size[0] =3D 0;=0D - FitEntry[FitIndex].Version =3D (UINT16)gFitTableContext.Po= rtModule[Index].Version;=0D - FitEntry[FitIndex].Type =3D (UINT8)gFitTableContext.Por= tModule[Index].Type;=0D - FitEntry[FitIndex].C_V =3D 0;=0D - FitEntry[FitIndex].Checksum =3D 0;=0D + FitEntrySizeValue =3D 0;=0D + FitEntry[FitIndex].Address =3D gFitTableContext.PortModule[Index].Add= ress + ((UINT64)gFitTableContext.PortModule[Index].Size << 32);=0D + FitEntry[FitIndex].Size[0] =3D (UINT8)FitEntrySizeValue;=0D + FitEntry[FitIndex].Size[1] =3D (UINT8)(FitEntrySizeValue >> 8);=0D + FitEntry[FitIndex].Size[2] =3D (UINT8)(FitEntrySizeValue >> 16);=0D + FitEntry[FitIndex].Rsvd =3D 0;=0D + FitEntry[FitIndex].Version =3D (UINT16)gFitTableContext.PortModule[In= dex].Version;=0D + FitEntry[FitIndex].Type =3D (UINT8)gFitTableContext.PortModule[Ind= ex].Type;=0D + FitEntry[FitIndex].C_V =3D 0;=0D + FitEntry[FitIndex].Checksum =3D 0;=0D FitIndex++;=0D }=0D =0D @@ -3130,6 +3158,7 @@ Returns: --*/=0D {=0D FIRMWARE_INTERFACE_TABLE_ENTRY *FitEntry;=0D + UINT32 FitEntrySizeValue;=0D UINT32 FitIndex;=0D UINT32 FitTableOffset;=0D =0D @@ -3155,7 +3184,8 @@ Returns: if (FitEntry[FitIndex].Type !=3D FIT_TABLE_TYPE_HEADER) {=0D return 0;=0D }=0D - gFitTableContext.FitEntryNumber =3D *(UINT32 *)&FitEntry[FitIndex].Size[= 0];=0D + FitEntrySizeValue =3D (((UINT32)FitEntry[FitIndex].Size[2]) << 16) + (((= UINT32)FitEntry[FitIndex].Size[1]) << 8) + ((UINT32)FitEntry[FitIndex].Size= [0]);=0D + gFitTableContext.FitEntryNumber =3D FitEntrySizeValue;=0D gFitTableContext.FitHeaderVersion =3D FitEntry[FitIndex].Version;=0D =0D //=0D @@ -3163,6 +3193,7 @@ Returns: //=0D FitIndex++;=0D for (; FitIndex < gFitTableContext.FitEntryNumber; FitIndex++) {=0D + FitEntrySizeValue =3D (((UINT32)FitEntry[FitIndex].Size[2]) << 16) + (= ((UINT32)FitEntry[FitIndex].Size[1]) << 8) + ((UINT32)FitEntry[FitIndex].Si= ze[0]);=0D switch (FitEntry[FitIndex].Type) {=0D case FIT_TABLE_TYPE_MICROCODE:=0D gFitTableContext.Microcode[gFitTableContext.MicrocodeNumber].Address= =3D (UINT32)FitEntry[FitIndex].Address;=0D @@ -3175,7 +3206,7 @@ Returns: break;=0D case FIT_TABLE_TYPE_BIOS_MODULE:=0D gFitTableContext.BiosModule[gFitTableContext.BiosModuleNumber].Addre= ss =3D (UINT32)FitEntry[FitIndex].Address;=0D - gFitTableContext.BiosModule[gFitTableContext.BiosModuleNumber].Size = =3D *(UINT32 *)&FitEntry[FitIndex].Size[0] * 16;=0D + gFitTableContext.BiosModule[gFitTableContext.BiosModuleNumber].Size = =3D FitEntrySizeValue * 16;=0D gFitTableContext.BiosModuleVersion = =3D FitEntry[FitIndex].Version;=0D gFitTableContext.BiosModuleNumber ++;=0D break;=0D @@ -3192,7 +3223,7 @@ Returns: // Not Port Configure, pass through=0D default: // Others=0D gFitTableContext.OptionalModule[gFitTableContext.OptionalModuleNumbe= r].Address =3D (UINT32)FitEntry[FitIndex].Address;=0D - gFitTableContext.OptionalModule[gFitTableContext.OptionalModuleNumbe= r].Size =3D *(UINT32 *)&FitEntry[FitIndex].Size[0];=0D + gFitTableContext.OptionalModule[gFitTableContext.OptionalModuleNumbe= r].Size =3D FitEntrySizeValue;=0D gFitTableContext.OptionalModule[gFitTableContext.OptionalModuleNumbe= r].Version =3D FitEntry[FitIndex].Version;=0D gFitTableContext.OptionalModule[gFitTableContext.OptionalModuleNumbe= r].Type =3D FitEntry[FitIndex].Type;=0D gFitTableContext.OptionalModuleNumber ++;=0D --=20 2.37.0.windows.1