From nobody Sat May 4 06:50:43 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 1521052522577586.4383906931218; Wed, 14 Mar 2018 11:35:22 -0700 (PDT) Received: from [127.0.0.1] (localhost [IPv6:::1]) by ml01.01.org (Postfix) with ESMTP id A6298220C2A67; Wed, 14 Mar 2018 11:28:57 -0700 (PDT) Received: from cam-smtp0.cambridge.arm.com (fw-tnat.cambridge.arm.com [217.140.96.140]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id 462E720954BAF for ; Wed, 14 Mar 2018 11:28:54 -0700 (PDT) Received: from E107187.Emea.Arm.com (e107187.emea.arm.com [10.1.211.8]) by cam-smtp0.cambridge.arm.com (8.13.8/8.13.8) with ESMTP id w2EIZE5q025257; Wed, 14 Mar 2018 18:35:15 GMT 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=217.140.96.140; helo=cam-smtp0.cambridge.arm.com; envelope-from=sami.mujawar@arm.com; receiver=edk2-devel@lists.01.org From: Sami Mujawar To: edk2-devel@lists.01.org Date: Wed, 14 Mar 2018 18:35:09 +0000 Message-Id: <20180314183509.16224-1-sami.mujawar@arm.com> X-Mailer: git-send-email 2.11.0.windows.3 Subject: [edk2] [staging/dynamictables PATCH] Branch to implement Dynamic Tables Framework X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: nd@arm.com, leif.lindholm@linaro.org, Stephanie.Hughes-Fitt@arm.com 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" This patch introduces a branch for implementing Dynamic Tables Framework. The description is in the Readme.md file. Please create a branch called 'dynamictables' in edk2-staging. Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Sami Mujawar Signed-off-by: Evan Lloyd --- Readme.md | 149 ++++++++++++++++++++ 1 file changed, 149 insertions(+) diff --git a/Readme.md b/Readme.md new file mode 100644 index 0000000000000000000000000000000000000000..9779dae812aff7cc05cdfe1d4ac= d5b5c2d197483 --- /dev/null +++ b/Readme.md @@ -0,0 +1,149 @@ +This branch will be used to develop the Dynamic Tables Framework. + +Dynamic Tables Framework +------------------------ + +To reduce the amount of effort required in porting firmware to new +platforms, we propose this "Dynamic Tables" framework. The aim is +to provide an example implementation capable of generating the +firmware tables from an external source. This is potentially a +management node, either local or remote, or, where suitable, a file +that might be generated from the system construction. This initial +"proof of concept" release does not fully implement that - the +configuration is held in local UEFI modules. + +Branch Owners +------------- + Evan Lloyd \ + Sami Mujawar + +Feature Summary +--------------- +The dynamic tables framework is designed to generate standardised +firmware tables that describe the hardware information at +run-time. A goal of standardised firmware is to have a common +firmware for a platform capable of booting both Windows and Linux +operating systems. + +Traditionally the firmware tables are handcrafted using ACPI +Source Language (ASL), Table Definition Language (TDL) and +C-code. This approach can be error prone and involves time +consuming debugging. In addition, it may be desirable to configure +platform hardware at runtime such as: configuring the number of +cores available for use by the OS, or turning SoC features ON or +OFF. + +The dynamic tables framework simplifies this by providing a set +of standard table generators, that are implemented as libraries. +These generators query a platform specific component, the +'Configuration Manager', to collate the information required +for generating the tables at run-time. + +The framework also provides the ability to implement custom/OEM +generators; thereby facilitating support for custom tables. The +custom generators can also utilize the existing standard generators +and override any functionality if needed. + +The framework currently implements a set of standard ACPI table +generators for ARM architecture, that can generate Server Base Boot +Requirement (SBBR) compliant tables. Although, the set of standard +generators implement the functionality required for ARM architecture; +the framework is extensible, and support for other architectures can +be added easily. + +The framework currently supports the following table generators for ARM: +* DBG2 - Debug Port Table 2 +* DSDT - Differentiated system description table. This is essentially + a RAW table generator. +* FADT - Fixed ACPI Description Table +* GTDT - Generic Timer Description Table +* IORT - IO Remapping Table +* MADT - Multiple APIC Description Table +* MCFG - PCI Express memory mapped configuration space base address + Description Table +* SPCR - Serial Port Console Redirection Table +* SSDT - Secondary System Description Table. This is essentially + a RAW table generator. + +Roadmap +------- +The current implementation of the Configuration Manager populates the +platform information statically as a C structure. Further enhancements +to introduce runtime loading of platform information from a platform +information file is planned. + +Also support for generating SMBIOS tables is planned and will be added +subsequently. + +Related Modules +--------------- + +### edk2-platforms +The *devel-dynamictables* branch in the **edk2-platform** repository conta= ins +the Configuration Manager implementation (the platform specific component) +for Juno and Fixed Virtual Platform models. + +### ACPICA iASL compiler +The RAW table generator, used to process the DSDT/SSDT files depends on +the iASL compiler to convert the DSDT/SSDT ASL files to a C array containi= ng +the hex AML code. The current implementation of the iASL compiler does not +support generation of a C header file suitable for including from a C sour= ce +file. + +Related Links +-------------- + + + + + +Supported Platforms +------------------- +1. Juno +2. FVP Models + +Build Instructions +------------------ +1. Set path for the iASL compiler with support for generating a C header + file as output. + +2. Set PACKAGES_PATH to point to the locations of the following repositori= es: + +Example: + +> set PACKAGES_PATH=3D%CD%\edk2;%CD%\edk2-platforms;%CD%\edk2-non-osi + + or + +> export PACKAGES_PATH=3D$PWD/edk2:$PWD/edk2-platforms:$PWD/edk2-non-osi + +3. To enable Dynamic tables framework the *'DYNAMIC_TABLES_FRAMEWORK'* +option must be defined. This can be passed as a command line +parameter to the edk2 build system. + +Example: + +>build -a AARCH64 -p Platform\ARM\JunoPkg\ArmJuno.dsc + -t GCC5 **-D DYNAMIC_TABLES_FRAMEWORK** + +or + +>build -a AARCH64 -p Platform\ARM\VExpressPkg\ArmVExpress-FVP-AArch64.dsc + -t GCC5 **-D DYNAMIC_TABLES_FRAMEWORK** + + +Prerequisites +------------- +ACPICA iASL compiler with support for generating a C header file. + +A patch ***'Add support for hex AML C header file generation'***, to enable +this support has been submitted to the ACPICA source repository. + +Documentation +------------- +A description document is in preparation, and should be available in the +near future. + +Miscellaneous +------------- + --=20 'Guid(CE165669-3EF3-493F-B85D-6190EE5B9759)' _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel