From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=134.134.136.65; helo=mga03.intel.com; envelope-from=liming.gao@intel.com; receiver=edk2-devel@lists.01.org Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) (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 13EF422183C6A for ; Fri, 1 Dec 2017 06:55:01 -0800 (PST) Received: from orsmga002.jf.intel.com ([10.7.209.21]) by orsmga103.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 01 Dec 2017 06:59:28 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.45,344,1508828400"; d="scan'208";a="14221941" Received: from shwde7172.ccr.corp.intel.com ([10.239.9.15]) by orsmga002.jf.intel.com with ESMTP; 01 Dec 2017 06:59:27 -0800 From: Liming Gao To: edk2-devel@lists.01.org Cc: star.zeng@intel.com, yonghong.zhu@intel.com Date: Fri, 1 Dec 2017 22:58:55 +0800 Message-Id: <1512140335-6932-1-git-send-email-liming.gao@intel.com> X-Mailer: git-send-email 2.8.0.windows.1 Subject: [Patch 00/14] Enable Structure PCD support in edk2 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: , X-List-Received-Date: Fri, 01 Dec 2017 14:55:02 -0000 All code are in https://github.com/tianocore/edk2-staging/tree/StructurePcdV3. Patches are 544d8e..dd79a7. Unit Test cases are 89e7c7..1b2d19. The patches will not be sent by mail. Please review them in edk2-staging. Structure PCD is to support the same C structure/Enum/Macro definition in PCD, and specify the value for individual fields in a VOID* PCD in DEC/DSC. It includes the group of the sub features. [BaseTools] Structure PCD value assignment in DEC/DSC https://bugzilla.tianocore.org/show_bug.cgi?id=542 [BaseTools] Extended SKU Support - Inheritance https://bugzilla.tianocore.org/show_bug.cgi?id=543 [BaseTools/PCD] Pcd Database size optimization for multi-SKU https://bugzilla.tianocore.org/show_bug.cgi?id=546 [BaseTools/PCD/HiiDataBase] Collect DynamicHii PCD value as the default setting for EFI Variable and HII VarStore. https://bugzilla.tianocore.org/show_bug.cgi?id=611 [BaseTools] Build report update for Structure PCD value and SKU, DefaultStore https://bugzilla.tianocore.org/show_bug.cgi?id=706 The main changes are in BaseTools to calculate structure PCD value. Firmware code Pcd driver, HiiDataBase and Variable driver are updated. And, PCD database format has been optimized. So, its version is changed from current 6 to 7. Besides it, others are compatible. There is no impact on current platform and current usage. If you find any breaking, please raise it to me. The detail changes are specified in each tracker and each RFC. Unit Test: 1) Windows VS2015 Build TestPkg and Nt32Pkg 2) Linux GCC5 Build OvmfPkg 3) Verify Strucutre PCD field value collection 4) Verify Strucutre PCD from the different SKUs 5) Structure DynamicHii PCD is saved as the default EFI variable 6) Structure DynamicHii PCD impacts HII IFR default setting 7) Strucutre PCD field value is shown in build report. 8) Multiple SKU PCD values is shown in build report. Liming Gao (14): BaseTools: Update Makefile to work at absolute path BaseTools: Add PcdValueCommon logic into C source CommonLib MdeModulePkg: Update PCD driver to support Dynamic PcdVpdBaseAddress MdeModulePkg: Enable Firmware to retrieve the default setting MdeModulePkg: Update PCD driver to support the optimized PcdDataBase MdeModulePkg: Pcd/HiiDatabase Update default setting format with max size BaseTools: Support Structure PCD value assignment in DEC/DSC BaseTools: Collect DynamicHii PCD values and assign it to VPD PCD Value BaseTools: Support Structure PCD value inherit between the different SKUs BaseTools: PcdDataBase Optimization for multiple SkuIds BaseTools: Report Structure PCD value and SKU, DefaultStore info BaseTools: Update NV Default Header format to include the max size BaseTools: Optimize VPD PCD value for the different SKUs BaseTools: Fixed the issue of Multiple Skus are always disables BaseTools/Source/C/Common/GNUmakefile | 3 +- BaseTools/Source/C/Common/Makefile | 3 +- BaseTools/Source/C/Common/PcdValueCommon.c | 607 +++++ BaseTools/Source/C/Common/PcdValueCommon.h | 78 + BaseTools/Source/C/Makefiles/app.makefile | 2 +- BaseTools/Source/C/Makefiles/ms.app | 4 +- BaseTools/Source/Python/AutoGen/AutoGen.py | 406 ++- BaseTools/Source/Python/AutoGen/GenC.py | 77 +- BaseTools/Source/Python/AutoGen/GenMake.py | 2 +- BaseTools/Source/Python/AutoGen/GenPcdDb.py | 260 +- BaseTools/Source/Python/AutoGen/GenVar.py | 341 +++ BaseTools/Source/Python/Common/BuildToolError.py | 3 + BaseTools/Source/Python/Common/DataType.py | 2 + BaseTools/Source/Python/Common/GlobalData.py | 6 + BaseTools/Source/Python/Common/Misc.py | 221 +- .../Source/Python/Common/ToolDefClassObject.py | 1 - BaseTools/Source/Python/Common/VpdInfoFile.py | 11 +- .../Source/Python/CommonDataClass/CommonClass.py | 5 +- .../Source/Python/CommonDataClass/DataClass.py | 11 + .../Source/Python/Workspace/BuildClassObject.py | 66 + BaseTools/Source/Python/Workspace/DecBuildData.py | 463 ++++ BaseTools/Source/Python/Workspace/DscBuildData.py | 1961 ++++++++++++++ BaseTools/Source/Python/Workspace/InfBuildData.py | 1212 +++++++++ .../Source/Python/Workspace/MetaFileParser.py | 311 ++- BaseTools/Source/Python/Workspace/MetaFileTable.py | 11 +- .../Source/Python/Workspace/WorkspaceCommon.py | 44 +- .../Source/Python/Workspace/WorkspaceDatabase.py | 2834 +------------------- BaseTools/Source/Python/build/BuildReport.py | 296 +- BaseTools/Source/Python/build/build.py | 2 + .../Include/Guid/PcdDataBaseSignatureGuid.h | 82 +- MdeModulePkg/MdeModulePkg.dec | 20 +- MdeModulePkg/Universal/HiiDatabaseDxe/Database.c | 470 ++++ .../Universal/HiiDatabaseDxe/HiiDatabase.h | 9 +- .../Universal/HiiDatabaseDxe/HiiDatabaseDxe.inf | 1 + MdeModulePkg/Universal/PCD/Dxe/Pcd.c | 29 +- MdeModulePkg/Universal/PCD/Dxe/Service.c | 322 +-- MdeModulePkg/Universal/PCD/Dxe/Service.h | 35 +- MdeModulePkg/Universal/PCD/Pei/Pcd.c | 343 ++- MdeModulePkg/Universal/PCD/Pei/Pcd.inf | 5 + MdeModulePkg/Universal/PCD/Pei/Service.c | 150 +- MdeModulePkg/Universal/PCD/Pei/Service.h | 33 +- .../Universal/Variable/RuntimeDxe/Variable.c | 106 +- 42 files changed, 7036 insertions(+), 3812 deletions(-) create mode 100644 BaseTools/Source/C/Common/PcdValueCommon.c create mode 100644 BaseTools/Source/C/Common/PcdValueCommon.h create mode 100644 BaseTools/Source/Python/AutoGen/GenVar.py create mode 100644 BaseTools/Source/Python/Workspace/DecBuildData.py create mode 100644 BaseTools/Source/Python/Workspace/DscBuildData.py create mode 100644 BaseTools/Source/Python/Workspace/InfBuildData.py -- 2.8.0.windows.1