summaryrefslogtreecommitdiff
path: root/DynamicTablesPkg/Include/AcpiTableGenerator.h
AgeCommit message (Collapse)AuthorFilesLines
10 daysDynamicTablesPkg: Add ACPI ERST table generatorAmrathesh1-0/+4
Add a common Error Record Serialization Table (ERST) generator based on the ACPI 6.6 definition. Introduce an architecture-common Configuration Manager object to provide serialization instruction entries. Validate actions, instructions, flags, register masks, action grouping, and GOTO targets before generating the table. Signed-off-by: Amrathesh <amrathesh@arm.com>
11 daysDynamicTablesPkg: Add ACPI BERT table generatorAmrathesh1-0/+3
Add a common Boot Error Record Table (BERT) generator based on the ACPI 6.6 definition. Introduce an architecture-common Configuration Manager object that provides the boot error region address and length. Signed-off-by: Amrathesh <amrathesh@arm.com>
2026-09-10DynamicTablesPkg: Generalize the CMN SSDT generatorVarshit Pandya1-5/+5
Extend the CMN Configuration Manager object with an implementation type and optional root-node region length. Map the implementation type to the ACPI hardware IDs for CMN-600, CMN-650, CMN-700 and CMN-S3. Apply CMN-600-specific address restrictions only when the CMN-600 implementation type is selected. Rename the CMN-600 generator, identifiers and files to reflect support for multiple CMN implementations. Signed-off-by: Varshit Pandya <varshit.pandya@arm.com>
2026-09-09DynamicTablesPkg: Rename the DMC 620 PMU generatorVarshitPandya1-4/+4
Rename the DMC-620 PMU generator and its Configuration Manager objects to remove the DMC-620-specific naming. Update the generator ID, library paths, parser definitions and associated documentation to use generic DMC PMU terminology. Signed-off-by: Varshit Pandya <Varshit.Pandya@arm.com>
2026-08-31DynamicTablesPkg: Add ACPI MSCT table generatorAbdul Lateef Attar1-0/+4
Add MSCT table ID to the ESTD_ACPI_TABLE_ID enumeration. Introduces an ACPI MSCT (Maximum System Characteristics Table) generator library that retrieves the following information from the configuration manager: - Maximum physical address - Processor proximity information - Memory proximity information - Clock proximity information The generator calculates: - Maximum memory length per memory domain - Maximum contiguous processor domain - Maximum memory and processor domain combination Signed-off-by: Abdul Lateef Attar <AbdulLateef.Attar@amd.com>
2026-08-27DynamicTablesPkg: add APMT generatorYeoreum Yun1-0/+1
Add Arm Performance Monitoring Unit Table (APMT) generator. Signed-off-by: Yeoreum Yun <yeoreum.yun@arm.com>
2026-07-06DynamicTablesPkg: Add HMAT generatorOleksandr Tymoshenko1-0/+1
- Generate HMAT table from ConfigurationManager objects. Co-authored-by: Ryan Heise <heiserya@google.com> Co-authored-by: Sophia Wang <yodagump@google.com> Signed-off-by: Oleksandr Tymoshenko <ovt@google.com>
2026-05-27DynamicTablesPkg: Adds ACPI EINJ Table generation supportGlen Yeldho1-0/+3
Add an ACPI Error Injection (EINJ) table generator that uses the Configuration Manager to obtain the platform error-injection instruction entries. Ref: ACPI Specification, Section 18.6 (Error Injection—EINJ table). Co-authored-by: Varshit Pandya <varshit.pandya@arm.com> Signed-off-by: Varshit Pandya <varshit.pandya@arm.com>
2026-04-30DynamicTablesPkg: add Hest table generatorYeoreum Yun1-1/+4
Add ACPI Hardware Error Source Table (HEST) generator. Signed-off-by: Yeoreum Yun <yeoreum.yun@arm.com>
2026-02-24DynamicTablesPkg: Replace include guards with #pragma onceMichael Kubacki1-4/+1
Replace traditional `#ifndef`/`#define`/`#endif` include guards with `#pragma` once. `#pragma once` is a widely supported preprocessor directive that prevents header files from being included multiple times. It is supported by all toolchains used to build edk2: GCC, Clang/LLVM, and MSVC. Compared to macro-based include guards, `#pragma once`: - Eliminates the risk of macro name collisions or copy/paste errors where two headers inadvertently use the same guard macro. - Eliminate inconsistency in the way include guard macros are named (e.g., some files use `__FILE_H__`, others use `FILE_H_`, etc.). - Reduces boilerplate (three lines replaced by one). - Avoids polluting the macro namespace with guard symbols. - Can improve build times as the preprocessor can skip re-opening the file entirely, rather than re-reading it to find the matching `#endif` ("multiple-include optimization"). - Note that some compilers may already optimize traditional include guards, by recognzining the idiomatic pattern. This change is made acknowledging that overall portability of the code will technically be reduced, as `#pragma once` is not part of the C/C++ standards. However, this is considered acceptable given: 1. edk2 already defines a subset of supported compilers in BaseTools/Conf/tools_def.template, all of which have supported `#pragma once` for over two decades. 2. There have been concerns raised to the project about inconsistent include guard naming and potential macro collisions. Approximate compiler support dates: - MSVC: Supported since Visual C++ 4.2 (1996) - GCC: Supported since 3.4 (2004) (http://gnu.ist.utl.pt/software/gcc/gcc-3.4/changes.html) - Clang (LLVM based): Since initial release in 2007 Signed-off-by: Michael Kubacki <michael.kubacki@microsoft.com>
2026-01-16DynamicTablesPkg: add SSDT DMC620 PMU table generatorSughosh Ganu1-0/+5
The Generic ACPI for Arm Components 1.2 Platform Design Document [1], section 2.6.1.2 "ASL reference code for the DMC620 PMU" provides information to describe the Arm Corelink DMC620 Dynamic Memory Controller's Performance Monitoring Unit (PMU) block using an ASL definition block table. Add support for a table generator for the DMC620 PMU block. The table generator uses the Configuration Manager protocol to obtain the following information. - Number of sockets on the platform - DMC620 devices per socket After obtaining the socket based topology, information is obtained on individual DMC620 devices. This includes - PMU register base address and length - Information on the associated PMU interrupt The table generator uses the Dynamic AML CodeGen API's for generating the table from the information obtained through the Configuration Manager protocol. [1] - https://developer.arm.com/documentation/den0093/1-2eac1/ Signed-off-by: Sughosh Ganu <sughosh.ganu@arm.com>
2025-12-02DynamicTablesPkg/RISC-V: Add AcpiSsdtPlicAplicLib librarySunil V L1-0/+1
Add AcpiSsdtPlicAplicLib to create PLIC and APLIC device entries in the RISC-V namespace. These interrupt controller devices are essential for accurate ACPI namespace representation on RISC-V platforms. This library facilitates SSDT generation for PLIC and APLIC, enabling proper OS discovery and configuration. Signed-off-by: Sunil V L <sunilvl@ventanamicro.com>
2025-12-02DynamicTablesPkg/Acpi: Add RHCT generator for RISC-VSunil V L1-0/+1
Add a generator for the RISC-V Hart Capabilities Table (RHCT), a new ACPI table used to convey CPU feature information to the operating system. This generator enables firmware to describe RISC-V hart capabilities in a standardized way as part of the ACPI table set. Signed-off-by: Sunil V L <sunilvl@ventanamicro.com>
2025-06-16DynamicTablesPkg: Add SLIT table generator libraryabdattar1-0/+3
Introduce a common architecture SLIT table generator library that retrieves locality domain distance information from the configuration manager and generates the table accordingly. Signed-off-by: abdattar <AbdulLateef.Attar@amd.com>
2025-05-25DynamicTablesPkg: Add CEDT generatorNick Graves1-0/+3
- Generate CEDT table from ConfigurationManager objects. - Only CHBS and CFMWS sub-tables are supported currently. Signed-off-by: Nick Graves <nicholasgraves@google.com>
2025-01-24DynamicTablesPkg: Adds X64 FACS generator libraryAbdul Lateef Attar1-1/+4
Adds a library to generate the ACPI FACS table for X64 architecture. It gathers the necessary FACS information from the configuration manager. Additionally, it includes an event to update the hardware signature in the FACS table, where the hardware signature is the CRC of all ACPI table's CRC Cc: Sami Mujawar <Sami.Mujawar@arm.com> Cc: Pierre Gondois <pierre.gondois@arm.com> Signed-off-by: Abdul Lateef Attar <AbdulLateef.Attar@amd.com>
2024-10-03DynamicTablesPkg: Adds SPMI table generatorAbdul Lateef Attar1-0/+4
Adds ACPI SPMI table generator library. Updates acpi standard table enum with spmi. Updates arch common namespace object and parser. Updates the Readme. Cc: Michael D Kinney <michael.d.kinney@intel.com> Cc: Liming Gao <gaoliming@byosoft.com.cn> Cc: Zhiguang Liu <zhiguang.liu@intel.com> Cc: Sami Mujawar <Sami.Mujawar@arm.com> Cc: Pierre Gondois <pierre.gondois@arm.com> Signed-off-by: Abdul Lateef Attar <AbdulLateef.Attar@amd.com>
2024-09-18DynamicTablesPkg: Adds ACPI SSDT HPET table generatorAbdul Lateef Attar1-0/+1
Adds X64 ACPI SSDT HPET table generator library. Updates acpi standard table enum with hpet. Generate ACPI HPET device as per specification. Cc: Sami Mujawar <Sami.Mujawar@arm.com> Cc: Pierre Gondois <pierre.gondois@arm.com> Signed-off-by: Abdul Lateef Attar <AbdulLateef.Attar@amd.com>
2024-09-18DynamicTablesPkg: Adds ACPI HPET table generatorAbdul Lateef Attar1-0/+1
Adds X64 ACPI HPET table generator library. Updates acpi standard table enum with hpet. Updates X64 namespace object. Updates the object parser. Updates the Readme. Cc: Sami Mujawar <Sami.Mujawar@arm.com> Cc: Pierre Gondois <pierre.gondois@arm.com> Signed-off-by: Abdul Lateef Attar <AbdulLateef.Attar@amd.com>
2024-09-02DynamicTablesPkg: Adds generic ACPI Creator IDAbdul Lateef Attar1-1/+6
Adds generic creator id as DYNT. Updates the common ACPI tables with generic CreatorId. Cc: Sami Mujawar <Sami.Mujawar@arm.com> Cc: Pierre Gondois <pierre.gondois@arm.com> Signed-off-by: Abdul Lateef Attar <AbdulLateef.Attar@amd.com>
2024-09-02DynamicTablesPkg: Adds WSMT generator for X64Abdul Lateef Attar1-0/+4
Adds ACPI WSMT table generator library. Updates acpi standard table enum with wsmt. Updates X64 namespace object. Updates the object parser. Updates the Readme. Cc: Sami Mujawar <Sami.Mujawar@arm.com> Cc: Pierre Gondois <pierre.gondois@arm.com> Signed-off-by: Abdul Lateef Attar <AbdulLateef.Attar@amd.com>
2024-08-08DynamicTablesPkg: ACPI TPM2 generatorDat Mach1-0/+2
Generate ACPI TPM2 table using the information obtained from Tpm2InterfaceInfo CM object. Signed-off-by: Dat Mach <dmach@nvidia.com>
2024-07-29DynamicTablesPkg: Add EFIAPI to generators hooksPierre Gondois1-4/+4
For X64 builds, the EFIAPI is replaced by '(__attribute__((ms_abi))'. This might lead to build error for some ACPI tablte generators due to function prototype mismatch. Add the EFIAPI to ACPI table generator hooks: - ACPI_TABLE_GENERATOR_BUILD_TABLEEX - ACPI_TABLE_GENERATOR_FREE_TABLEEX Signed-off-by: Pierre Gondois <pierre.gondois@arm.com> Reviewed-by: Sami Mujawar <sami.mujawar@arm.com>
2022-10-31DynamicTablesPkg: Add PCCT GeneratorPierre Gondois1-1/+2
The Platform Communication Channel Table (PCCT) generator collates the relevant information required for generating a PCCT table from configuration manager using the configuration manager protocol. The DynamicTablesManager then install the PCCT table. From ACPI 6.4, s14 PLATFORM COMMUNICATIONS CHANNEL (PCC): The platform communication channel (PCC) is a generic mechanism for OSPM to communicate with an entity in the platform. Signed-off-by: Pierre Gondois <pierre.gondois@arm.com> Reviewed-by: Sami Mujawar <sami.mujawar@arm.com>
2021-12-13DynamicTablesPkg: SSDT Pci express generatorPierre Gondois1-0/+5
This generator allows to generate a SSDT table describing a Pci express Bus. It uses the following CmObj: - EArmObjCmRef - EArmObjPciConfigSpaceInfo - EArmObjPciAddressMapInfo - EArmObjPciInterruptMapInfo REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3682 To: Sami Mujawar <sami.mujawar@arm.com> To: Alexei Fedorov <Alexei.Fedorov@arm.com> Signed-off-by: Pierre Gondois <Pierre.Gondois@arm.com> Reviewed-by: Sami Mujawar <sami.mujawar@arm.com>
2021-12-07DynamicTablesPkg: Apply uncrustify changesMichael Kubacki1-33/+32
REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3737 Apply uncrustify changes to .c/.h files in the DynamicTablesPkg package Cc: Andrew Fish <afish@apple.com> Cc: Leif Lindholm <leif@nuviainc.com> Cc: Michael D Kinney <michael.d.kinney@intel.com> Signed-off-by: Michael Kubacki <michael.kubacki@microsoft.com> Reviewed-by: Sami Mujawar <sami.mujawar@arm.com>
2021-10-08DynamicTablesPkg: SSDT CPU topology and LPI state generatorPierre Gondois1-1/+6
In the GIC interrupt model, logical processors are required to have a Processor Device object in the DSDT and must convey each processor's GIC information to the OS using the GICC structure. Additionally, _LPI objects may be needed as they provide a method to describe Low Power Idle states that defines the local power states for each node in a hierarchical processor topology. Therefore, add support to generate the CPU topology and the LPI state information in an SSDT table. Reviewed-by: Sami Mujawar <sami.mujawar@arm.com> Signed-off-by: Pierre Gondois <Pierre.Gondois@arm.com>
2020-11-03DynamicTablesPkg: Add SSDT CMN-600 Table generatorPierre Gondois1-0/+5
The Generic ACPI for Arm Components 1.0 Platform Design Document, s2.6.4 "ASL code examples" provides information to describe an Arm CoreLink CMN-600 Coherent Mesh Network using an ASL definition block table. The SSDT CMN-600 Table Generator uses the Configuration Manager protocol to obtain the following information about the CMN-600 device on the platform: - the PERIPHBASE address location and address range; - the ROOTNODEBASE address location; - the number of Debug and Trace Controller (DTC) and their respective interrupt number; The CMN-600 mesh is described using the CM_ARM_CMN_600_INFO and CM_ARM_EXTENDED_INTERRUPT structures in the Configuration Manager. The SSDT CMN-600 Table generator: - gets the CMN-600 hardware information from the configuration manager. - uses the AmlLib interfaces to parse the AML template BLOB and construct an AML tree. - uses the AmlLib to update: - the "_UID" value; - the address location and range of the PERIPHBASE; - the address location of the ROOTNODEBASE; - the number of Debug and Trace Controller (DTC) and their respective interrupt number; - serializes the AML tree to an output buffer. This output buffer contains the fixed-up AML code, which is then installed as an ACPI SSDT table. Signed-off-by: Pierre Gondois <pierre.gondois@arm.com> Co-authored-by: Sami Mujawar <sami.mujawar@arm.com> Reviewed-by: Alexei Fedorov <Alexei.Fedorov@arm.com>
2020-08-13DynamicTablesPkg: SSDT Serial Port Fixup libraryPierre Gondois1-1/+6
According to Arm Server Base Boot Requirements, Platform Design Document version 1.2 revision D, September 2, 2019, section '4.2.1.8 SPCR'; The SPCR console device must be included in the DSDT. Additionally, it is often desirable to describe the serial ports available on a platform so that they are available for use by a rich OS. To facilitate the description of serial ports on a platform a common SSDT Serial Port Fixup library is introduced. It provides interfaces to build a SSDT serial port definition block table based on the serial port information. The SSDT Serial Port Fixup library is used by the SPCR, DBG2 and SSDT Serial Port generator to describe the serial port information in a definition block. +------------+ +------------+ +------------+ | SPCR Gen | | DBG2 Gen | | SERIAL Gen | +------------+ +------------+ +------------+ +----------------------------------+ | SSDT Serial Port Fixup library | +----------------------------------+ The SSDT Serial Port Fixup library: - Parses the SSDT Serial Port template using the AmlLib library to generate an AML tree. - Updates the _UID, _HID and _CID values. - Fixes up the Serial port base address, length and the interrupt number in the _CRS descriptor. - Fixes up the serial-port name. - Serialises the AML Tree to a buffer containing the definition block data. The definition block data is then installed by the corresponding table generator. Signed-off-by: Pierre Gondois <pierre.gondois@arm.com> Signed-off-by: Sami Mujawar <sami.mujawar@arm.com> Reviewed-by: Alexei Fedorov <Alexei.Fedorov@arm.com>
2020-03-29DynamicTablesPkg: Fix ACPI table rev field widthSami Mujawar1-2/+2
The VS2017 compiler reports 'warning C4244: '=': conversion from 'const UINT32' to 'UINT8', possible loss of data' when the ACPI table revision field is being updated. The width of the revision field in the EFI_ACPI_DESCRIPTION_HEADER struct is 8-bit wide. Therefore, to fix the above warning make the ACPI Table revision field usage 8-bit wide across Dynamic Tables Framework. Signed-off-by: Sami Mujawar <sami.mujawar@arm.com> Reviewed-by: Alexei Fedorov <Alexei.Fedorov@arm.com>
2019-10-21DynamicTablesPkg: Arm SRAT Table GeneratorSami Mujawar1-0/+3
The SRAT generator uses the configuration manager protocol to obtain the affinity information for the GICC, GIC ITS, Memory, Generic Initiator, etc. and generates the SRAT table. The table generator supports ACPI 6.3, SRAT table revision 3. The ACPI and PCI device handles of the Generic Initiator Affinity structures are represented using tokens. The generator invokes the configuration manager protocol interfaces and requests for objects referenced by tokens to get the device handle information. The Configuration Manager object definition for the GICC has been updated to include the Proximity Domain, Clock Domain and associated flag information. Similarly the Configuration Manager object for the GIC ITS has been updated to include the Proximity Domain information. These changes should not impact any existing implementations as the new fields have been added towards the end of the Configuration Manager Objects. Signed-off-by: Sami Mujawar <sami.mujawar@arm.com> Reviewed-by: Alexei Fedorov <Alexei.Fedorov@arm.com>
2019-06-11DynamicTablesPkg: Add dynamic PPTT table generation supportKrzysztof Koch1-0/+3
The PPTT generator uses the configuration manager protocol to obtain information about platform's processor topology and caches. This data is then used to generate the PPTT table. The table generator supports ACPI 6.3, PPTT table revision 2. The dynamic PPTT generator also carries out extensive input validation which includes cycle detection and MADT-PPTT cross-validation. A number of architectural compliance checks are also performed. Signed-off-by: Krzysztof Koch <krzysztof.koch@arm.com> Reviewed-by: Alexei Fedorov <Alexei.Fedorov@arm.com> Reviewed-by: Sami Mujawar <sami.mujawar@arm.com>
2019-04-09DynamicTablesPkg: Replace BSD License with BSD+Patent LicenseMichael D Kinney1-7/+1
https://bugzilla.tianocore.org/show_bug.cgi?id=1373 Replace BSD 2-Clause License with BSD+Patent License. This change is based on the following emails: https://lists.01.org/pipermail/edk2-devel/2019-February/036260.html https://lists.01.org/pipermail/edk2-devel/2018-October/030385.html RFCs with detailed process for the license change: V3: https://lists.01.org/pipermail/edk2-devel/2019-March/038116.html V2: https://lists.01.org/pipermail/edk2-devel/2019-March/037669.html V1: https://lists.01.org/pipermail/edk2-devel/2019-March/037500.html Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Michael D Kinney <michael.d.kinney@intel.com> Reviewed-by: Sami Mujawar <sami.mujawar@arm.com>
2019-02-19DynamicTablesPkg: Acpi Table GeneratorSami Mujawar1-0/+360
This patch introduces the required interfaces and definitions for implementing an ACPI table generator. Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Sami Mujawar <sami.mujawar@arm.com> Reviewed-by: Alexei Fedorov <alexei.fedorov@arm.com>