[edk2] [staging/dynamictables PATCH] Branch to implement Dynamic Tables Framework

Sami Mujawar posted 1 patch 6 years, 1 month ago
Failed in applying to current master (apply log)
Readme.md | 150 ++++++++++++++++++++
1 file changed, 150 insertions(+)
[edk2] [staging/dynamictables PATCH] Branch to implement Dynamic Tables Framework
Posted by Sami Mujawar 6 years, 1 month ago
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 <sami.mujawar@arm.com>
Signed-off-by: Evan Lloyd <evan.lloyd@arm.com>
---

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 <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-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
+--------------
+
+<https://github.com/tianocore/edk2-platforms.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)'


_______________________________________________
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel
Re: [edk2] [staging/dynamictables PATCH] Branch to implement Dynamic Tables Framework
Posted by Leif Lindholm 6 years, 1 month ago
On Thu, Mar 15, 2018 at 07:09:16PM +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 'dynamictables' in edk2-staging.
> 
> 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>

Reviewed-by: Leif Lindholm <leif.lindholm@linaro.org>

But, adding Andrew and Mike to cc.
If they have no comments, I can create this branch tomorrow.

/
    Leif

> ---
> 
> 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 <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-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
> +--------------
> +
> +<https://github.com/tianocore/edk2-platforms.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)'
> 
> 
_______________________________________________
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel
Re: [edk2] [staging/dynamictables PATCH] Branch to implement Dynamic Tables Framework
Posted by Kinney, Michael D 6 years, 1 month ago
Leif,

Please create the branch in edk2-staging.

Reviewed-by: Michael D Kinney <michael.d.kinney@intel.com>

Mike

> -----Original Message-----
> From: Leif Lindholm [mailto:leif.lindholm@linaro.org]
> Sent: Thursday, March 15, 2018 12:31 PM
> 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; Andrew Fish <afish@apple.com>; Kinney,
> Michael D <michael.d.kinney@intel.com>
> Subject: Re: [staging/dynamictables PATCH] Branch to
> implement Dynamic Tables Framework
> 
> On Thu, Mar 15, 2018 at 07:09:16PM +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 'dynamictables' in
> edk2-staging.
> >
> > 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>
> 
> Reviewed-by: Leif Lindholm <leif.lindholm@linaro.org>
> 
> But, adding Andrew and Mike to cc.
> If they have no comments, I can create this branch
> tomorrow.
> 
> /
>     Leif
> 
> > ---
> >
> > 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..652b0e3060f75
> a2afe9506817d1745cd903b0cb2
> > --- /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 <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-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
> > +--------------
> > +
> > +<https://github.com/tianocore/edk2-platforms.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)'
> >
> >
_______________________________________________
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel
Re: [edk2] [staging/dynamictables PATCH] Branch to implement Dynamic Tables Framework
Posted by Leif Lindholm 6 years, 1 month ago
Thanks Mike,

Sami - requested branches created and pushed to edk2-platforms and
edk2-staging.

Regards,

Leif

On Thu, Mar 15, 2018 at 10:36:24PM +0000, Kinney, Michael D wrote:
> Leif,
> 
> Please create the branch in edk2-staging.
> 
> Reviewed-by: Michael D Kinney <michael.d.kinney@intel.com>
> 
> Mike
> 
> > -----Original Message-----
> > From: Leif Lindholm [mailto:leif.lindholm@linaro.org]
> > Sent: Thursday, March 15, 2018 12:31 PM
> > 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; Andrew Fish <afish@apple.com>; Kinney,
> > Michael D <michael.d.kinney@intel.com>
> > Subject: Re: [staging/dynamictables PATCH] Branch to
> > implement Dynamic Tables Framework
> > 
> > On Thu, Mar 15, 2018 at 07:09:16PM +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 'dynamictables' in
> > edk2-staging.
> > >
> > > 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>
> > 
> > Reviewed-by: Leif Lindholm <leif.lindholm@linaro.org>
> > 
> > But, adding Andrew and Mike to cc.
> > If they have no comments, I can create this branch
> > tomorrow.
> > 
> > /
> >     Leif
> > 
> > > ---
> > >
> > > 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..652b0e3060f75
> > a2afe9506817d1745cd903b0cb2
> > > --- /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 <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-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
> > > +--------------
> > > +
> > > +<https://github.com/tianocore/edk2-platforms.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)'
> > >
> > >
> _______________________________________________
> edk2-devel mailing list
> edk2-devel@lists.01.org
> https://lists.01.org/mailman/listinfo/edk2-devel
_______________________________________________
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel