This communication is for everyone in the ACPI/UEFI computing platform ecosystem: those who develop platforms and firmware using ACPI (Advanced Configuration and Power Interface), and those who provide hardware description tables for ACPI implementations. During the development of the ACPI Specification, Version 6.4, the specification working group noted that all ACPI tables in a platform must conform to the same specification version. The specification text is as follows:
“It is the intention that everything contained in the ACPI table would comply with what is contained in the ACPI specification itself. The FADT Major and Minor version follow in lock-step with the version of the ACPI Specification. Conforming to a given ACPI specification means that each and every ACPI-related table conforms to the version number for that table that is listed in that version of the specification.”
This makes it clear that all tables in the platform’s ACPI Namespace must conform to the same specification version that is recorded in the FADT. Many participating in the working group discussion felt that existing platforms may not have the revision of all tables in their namespace conform to this requirement. In other words, there are platforms in existence where the FADT “claims” conformance with a particular ACPI specification version, but not all tables in their namespace have table revision numbers that conform to the revision required for that specification version.
In addition, it is possible to add a table at run time via EFI_ACPI_TABLE_PROTOCOL.InstallAcpiTable(). If firmware that installs additional tables does not check their revision numbers before requesting their installation, they may not be compliant with this requirement.
The major concerns raised were the following.
- The open-source FWTS (FirmWare Test Suite), used for self-certification testing, will be validating that all tables contained in a platform namespace comply with this requirement. Many platforms will fail this updated test.
- The Tianocore open-source firmware implementation may choose to validate table revisions for conformance when InstallAcpiTable() is called. This may cause platform firmware to fail to install tables unexpectedly.
- Because platform developers may receive pre-coded ACPI tables from hardware vendors for inclusion in their namespace, it may be hard to obtain compliance with a specific ACPI spec version from all their suppliers.
- OS implementations as well as attestation verifiers may come to rely on non-conformant table implementations and could result in incorrect behaviors as table implementations change.
The consensus of the working group was that it was valid for the specification to require that all ACPI tables to have revisions that match the specification version to which the platform claims conformance.
The “call to action” is this: Platform developers who build ACPI tables need to concern themselves with the revisions of all tables on their platform and make sure that they match the specification version declared in the FADT. This includes tables installed dynamically by firmware.
General questions on this requirement may be addressed to the chair of the UEFI Industry Communications Working Group, Dick Wilkins (Dick_Wilkins at Phoenix dot com). Detailed technical questions should be taken to the UEFI ACPI specification working group (ASWG) by your company’s UEFI technical representative.