From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: 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 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 6C2E421E082B3 for ; Thu, 15 Mar 2018 12:03:00 -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 w2FJ9LlN021037; Thu, 15 Mar 2018 19:09:21 GMT From: Sami Mujawar To: edk2-devel@lists.01.org Cc: evan.lloyd@arm.com, leif.lindholm@linaro.org, Matteo.Carlini@arm.com, Stephanie.Hughes-Fitt@arm.com, nd@arm.com Date: Thu, 15 Mar 2018 19:09:16 +0000 Message-Id: <20180315190916.19956-1-sami.mujawar@arm.com> X-Mailer: git-send-email 2.11.0.windows.3 Subject: [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: , X-List-Received-Date: Thu, 15 Mar 2018 19:03:01 -0000 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 --- Apologies for sending the patch again. I had missed the staging tag in the subject line. Readme.md | 150 ++++++++++++++++++++ 1 file changed, 150 insertions(+) diff --git a/Readme.md b/Readme.md new file mode 100644 index 0000000000000000000000000000000000000000..652b0e3060f75a2afe9506817d1745cd903b0cb2 --- /dev/null +++ b/Readme.md @@ -0,0 +1,150 @@ +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 contains +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 containing +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 source +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 repositories: + +Example: + +> set PACKAGES_PATH=%CD%\edk2;%CD%\edk2-platforms;%CD%\edk2-non-osi + + or + +> export PACKAGES_PATH=$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 ***'Modify 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 +------------- + -- 'Guid(CE165669-3EF3-493F-B85D-6190EE5B9759)'