public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
From: Leif Lindholm <leif.lindholm@linaro.org>
To: Sami Mujawar <sami.mujawar@arm.com>
Cc: edk2-devel@lists.01.org, evan.lloyd@arm.com,
	Matteo.Carlini@arm.com, Stephanie.Hughes-Fitt@arm.com,
	nd@arm.com, Michael D Kinney <michael.d.kinney@intel.com>
Subject: Re: [PATCH][platforms/devel-dynamictables] Branch to implement Dynamic Tables Framework
Date: Thu, 15 Mar 2018 19:32:46 +0000	[thread overview]
Message-ID: <20180315193246.tp4tmgv46y4s7p2w@bivouac.eciton.net> (raw)
In-Reply-To: <20180315191256.29004-1-sami.mujawar@arm.com>

On Thu, Mar 15, 2018 at 07:12:56PM +0000, Sami Mujawar wrote:
> This patch introduces a branch for implementing Dynamic Tables
> Framework. The description is in the Readme.md file.
> 
> Please create a branch called 'devel-dynamictables' in edk2-platforms.
> 
> Contributed-under: TianoCore Contribution Agreement 1.1
> Signed-off-by: Sami Mujawar <sami.mujawar@arm.com>
> Signed-off-by: Evan Lloyd <evan.lloyd@arm.com>

>From my view,
Reviewed-by: Leif Lindholm <leif.lindholm@linaro.org>

Adding Mike to cc. Can create branch tomorrow if he has no objections.

/
    Leif

> ---
>  Readme.md | 150 ++++++++++++++++++++
>  1 file changed, 150 insertions(+)
> 
> diff --git a/Readme.md b/Readme.md
> new file mode 100644
> index 0000000000000000000000000000000000000000..b72efca18e8ab5de17cab06f0a1a0725991256d4
> --- /dev/null
> +++ b/Readme.md
> @@ -0,0 +1,150 @@
> +This branch will be used to develop the Configuration Manager,
> +which is the platform specific component of 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 <evan.lloyd@arm.com> \
> +   Sami Mujawar <sami.mujawar@arm.com>
> +
> +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-staging
> +The *dynamictables* branch in the **edk2-staging** repository
> +contains the Dynamic Tables Framework.
> +
> +### 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
> +--------------
> +
> +<https://github.com/tianocore/edk2-staging.git>
> +
> +<https://github.com/acpica/acpica.git>
> +
> +
> +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.
> +<https://lists.acpica.org/pipermail/devel/2018-March/001755.html>
> +
> +Documentation
> +-------------
> +A description document is in preparation, and should be available in the
> +near future.
> +
> +Miscellaneous
> +-------------
> -- 
> 'Guid(CE165669-3EF3-493F-B85D-6190EE5B9759)'
> 
> 


  reply	other threads:[~2018-03-15 19:26 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-03-15 19:12 [PATCH][platforms/devel-dynamictables] Branch to implement Dynamic Tables Framework Sami Mujawar
2018-03-15 19:32 ` Leif Lindholm [this message]
  -- strict thread matches above, loose matches on Subject: below --
2018-03-14 18:51 Sami Mujawar
2018-03-15 18:58 ` Leif Lindholm

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-list from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20180315193246.tp4tmgv46y4s7p2w@bivouac.eciton.net \
    --to=devel@edk2.groups.io \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox