The Dynamic tables framework automates the generation of firmware tables that describe the hardware to a standard-based operating system. Traditionally, Advanced Configuration and Power Interface (ACPI) tables were generated manually, which was time consuming and prone to human error. The dynamic tables framework is a suitable alternative that can:

  • Validate and generate firmware tables that comply with the relevant specifications
  • Unify firmware builds for similar platforms
  • Provide configurable firmware builds

The dynamic tables framework also provides the ability to implement custom and OEM generators, which facilitates support for custom tables. Custom generators can use the existing standard generators and can override any functionality if needed.


Dynamic tables framework architecture

The dynamic tables framework is divided into two parts:

  • A configuration manager, which is a platform-specific implementation
  • A dynamic table framework core, which is a standard implementation

The framework works by parsing a text file or a similar binary specification. This parsing generates configuration information for the platform. By providing a configurable list of tables, the firmware can fit the necessary platform-specific requirements. 

The table manager oversees the generation of the dynamic tables. It retrieves the list of tables to install from the configuration manager. The table manager gets the required generators from the table factory and invokes a table generator to build the tables. The tables are then installed.

The general table sequence is:

  1. The table manager asks the configuration manager what tables it wants to build.
  2. For each table, the table manager asks for a generator.
  3. The generator gets the required information for building the table from the configuration manager and builds the table.
  4. Once generated, the tables are installed and the EDKII framework passes them to the operating system.

The diagram below shows the framework architecture.

Dynamic framework architecture image


Configuration manager

The configuration manager is a platform-specific component that collates the platform hardware information and populates an abstract platform information repository.

The configuration manager can:

  • Probe the hardware
  • Load information from the firmware
  • Parse a hardware information file
Platform information repository

The platform information repository contains the platform hardware information that is required for constructing the firmware tables.

Hardware information parser

The hardware information parser is an optional module that can parse a hardware configuration file, for example. an XML or JSON file or a device tree, and populate the platform information repository.

Configuration manager protocol

The configuration manager also implements the configuration manager protocol that provides an interface to access information from the platform information repository.

Table manager

The table manager is responsible for driving the table generation and installation process.

The table manager uses the configuration manager protocol to obtain a list of firmware tables to install.
For each table in the list it queries the appropriate table factory for a table generator. It then invokes the generator interfaces to build the table.
Once the table has been constructed it uses the ACPI table protocol to install the table.

ACPI/SMBIOS table factory

The ACPI/SMBIOS table factory maintains a list of registered ACPI/SMBIOS table generators.

ACPI/SMBIOS table generators

The generators implement the core logic for constructing the respective firmware tables.
The generators use the configuration manager protocol to obtain the required hardware information from the platform information repository for building the table.

The framework implements a set of standard ACPI table generators for the Arm architecture. These table generators aim to comply with the Server Base Boot Requirement (SBBR).  The framework is also extensible, and support for other architectures can be added easily.

Learn more about the UEFI specification, EDKII and the ACPI framework.