From nobody Mon Apr 29 02:36:20 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; spf=none (zoho.com: 198.145.21.10 is neither permitted nor denied by domain of lists.01.org) smtp.mailfrom=edk2-devel-bounces@lists.01.org Return-Path: Received: from ml01.01.org (ml01.01.org [198.145.21.10]) by mx.zohomail.com with SMTPS id 1506334479384804.932533633042; Mon, 25 Sep 2017 03:14:39 -0700 (PDT) Received: from [127.0.0.1] (localhost [IPv6:::1]) by ml01.01.org (Postfix) with ESMTP id E308C21E43B63; Mon, 25 Sep 2017 03:11:26 -0700 (PDT) Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id 9662221D046AB for ; Mon, 25 Sep 2017 03:11:26 -0700 (PDT) Received: from orsmga001.jf.intel.com ([10.7.209.18]) by orsmga101.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 25 Sep 2017 03:14:37 -0700 Received: from shwdeopenpsi068.ccr.corp.intel.com ([10.239.9.31]) by orsmga001.jf.intel.com with ESMTP; 25 Sep 2017 03:14:35 -0700 X-Original-To: edk2-devel@lists.01.org Received-SPF: none (zoho.com: 198.145.21.10 is neither permitted nor denied by domain of lists.01.org) client-ip=198.145.21.10; envelope-from=edk2-devel-bounces@lists.01.org; helo=ml01.01.org; Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=134.134.136.20; helo=mga02.intel.com; envelope-from=star.zeng@intel.com; receiver=edk2-devel@lists.01.org X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.42,435,1500966000"; d="scan'208";a="1175513494" From: Star Zeng To: edk2-devel@lists.01.org Date: Mon, 25 Sep 2017 18:14:33 +0800 Message-Id: <1506334473-56524-1-git-send-email-star.zeng@intel.com> X-Mailer: git-send-email 2.7.0.windows.1 Subject: [edk2] [PATCH] IntelFrameworkModulePkg FwVolDxe: Support FFS_ATTRIB_DATA_ALIGNMENT_2 X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.22 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Liming Gao , Star Zeng MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Errors-To: edk2-devel-bounces@lists.01.org Sender: "edk2-devel" X-ZohoMail: RSF_4 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" Follow PI 1.6 spec to support FFS_ATTRIB_DATA_ALIGNMENT_2 for FFS alignment extended to support maximum 16MB. Cc: Liming Gao Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Star Zeng Note: This patch is to update IntelFrameworkModulePkg as a supplement of https://lists.01.org/pipermail/edk2-devel/2017-September/015165.html. Reviewed-by: Liming Gao --- .../Universal/FirmwareVolume/FwVolDxe/FwVolRead.c | 37 +++++++++++++-----= -- .../Universal/FirmwareVolume/FwVolDxe/FwVolWrite.c | 39 ++++++++++++++++++= ++-- 2 files changed, 62 insertions(+), 14 deletions(-) diff --git a/IntelFrameworkModulePkg/Universal/FirmwareVolume/FwVolDxe/FwVo= lRead.c b/IntelFrameworkModulePkg/Universal/FirmwareVolume/FwVolDxe/FwVolRe= ad.c index 0d9021914f33..987c92c16be3 100644 --- a/IntelFrameworkModulePkg/Universal/FirmwareVolume/FwVolDxe/FwVolRead.c +++ b/IntelFrameworkModulePkg/Universal/FirmwareVolume/FwVolDxe/FwVolRead.c @@ -1,7 +1,7 @@ /** @file Implements functions to read firmware file. =20 - Copyright (c) 2006 - 2016, Intel Corporation. All rights reserved.
+ Copyright (c) 2006 - 2017, Intel Corporation. All rights reserved.
=20 This program and the accompanying materials are licensed and made available under the terms and conditions @@ -17,18 +17,27 @@ #include "FwVolDriver.h" =20 /** -Required Alignment Alignment Value in FFS Alignment Va= lue in -(bytes) Attributes Field Firmware Vol= ume Interfaces -1 0 = 0 -16 1 = 4 -128 2 = 7 -512 3 = 9 -1 KB 4 = 10 -4 KB 5 = 12 -32 KB 6 = 15 -64 KB 7 = 16 +Required Alignment Alignment Value in FFS FFS_ATTRIB_DATA_ALIGNMENT2 = Alignment Value in +(bytes) Attributes Field in FFS Attributes Field = Firmware Volume Interfaces +1 0 0 = 0 +16 1 0 = 4 +128 2 0 = 7 +512 3 0 = 9 +1 KB 4 0 = 10 +4 KB 5 0 = 12 +32 KB 6 0 = 15 +64 KB 7 0 = 16 +128 KB 0 1 = 17 +256 KB 1 1 = 18 +512 KB 2 1 = 19 +1 MB 3 1 = 20 +2 MB 4 1 = 21 +4 MB 5 1 = 22 +8 MB 6 1 = 23 +16 MB 7 1 = 24 **/ UINT8 mFvAttributes[] =3D {0, 4, 7, 9, 10, 12, 15, 16}; +UINT8 mFvAttributes2[] =3D {17, 18, 19, 20, 21, 22, 23, 24}; =20 /** Convert the FFS File Attributes to FV File Attributes. @@ -49,7 +58,11 @@ FfsAttributes2FvFileAttributes ( DataAlignment =3D (UINT8) ((FfsAttributes & FFS_ATTRIB_DATA_ALIGNMENT) >= > 3); ASSERT (DataAlignment < 8); =20 - FileAttribute =3D (EFI_FV_FILE_ATTRIBUTES) mFvAttributes[DataAlignment]; + if ((FfsAttributes & FFS_ATTRIB_DATA_ALIGNMENT_2) !=3D 0) { + FileAttribute =3D (EFI_FV_FILE_ATTRIBUTES) mFvAttributes2[DataAlignmen= t]; + } else { + FileAttribute =3D (EFI_FV_FILE_ATTRIBUTES) mFvAttributes[DataAlignment= ]; + } =20 if ((FfsAttributes & FFS_ATTRIB_FIXED) =3D=3D FFS_ATTRIB_FIXED) { FileAttribute |=3D EFI_FV_FILE_ATTRIB_FIXED; diff --git a/IntelFrameworkModulePkg/Universal/FirmwareVolume/FwVolDxe/FwVo= lWrite.c b/IntelFrameworkModulePkg/Universal/FirmwareVolume/FwVolDxe/FwVolW= rite.c index 99385e0f579b..e95b75326c6e 100644 --- a/IntelFrameworkModulePkg/Universal/FirmwareVolume/FwVolDxe/FwVolWrite.c +++ b/IntelFrameworkModulePkg/Universal/FirmwareVolume/FwVolDxe/FwVolWrite.c @@ -1,7 +1,7 @@ /** @file Implements write firmware file. =20 - Copyright (c) 2006 - 2015, Intel Corporation. All rights reserved.
+ Copyright (c) 2006 - 2017, Intel Corporation. All rights reserved.
=20 This program and the accompanying materials are licensed and made available under the terms and conditions @@ -202,9 +202,11 @@ FvFileAttrib2FfsFileAttrib ( { UINT8 FvFileAlignment; UINT8 FfsFileAlignment; + UINT8 FfsFileAlignment2; =20 FvFileAlignment =3D (UINT8) (FvFileAttrib & EFI_FV_FILE_ATTRIB_ALIGNME= NT); FfsFileAlignment =3D 0; + FfsFileAlignment2 =3D 0; =20 switch (FvFileAlignment) { case 0: @@ -289,9 +291,42 @@ FvFileAttrib2FfsFileAttrib ( case 16: FfsFileAlignment =3D 7; break; + + case 17: + FfsFileAlignment =3D 0; + FfsFileAlignment2 =3D 1; + break; + case 18: + FfsFileAlignment =3D 1; + FfsFileAlignment2 =3D 1; + break; + case 19: + FfsFileAlignment =3D 2; + FfsFileAlignment2 =3D 1; + break; + case 20: + FfsFileAlignment =3D 3; + FfsFileAlignment2 =3D 1; + break; + case 21: + FfsFileAlignment =3D 4; + FfsFileAlignment2 =3D 1; + break; + case 22: + FfsFileAlignment =3D 5; + FfsFileAlignment2 =3D 1; + break; + case 23: + FfsFileAlignment =3D 6; + FfsFileAlignment2 =3D 1; + break; + case 24: + FfsFileAlignment =3D 7; + FfsFileAlignment2 =3D 1; + break; } =20 - *FfsFileAttrib =3D (UINT8) (FfsFileAlignment << 3); + *FfsFileAttrib =3D (UINT8) ((FfsFileAlignment << 3) | (FfsFileAlignment2= << 1)); =20 return ; } --=20 2.7.0.windows.1 _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel