TianoCore EDK2 master
|
#include <IndustryStandard/IoRemappingTable.h>
#include <Library/AcpiLib.h>
#include <Library/BaseLib.h>
#include <Library/DebugLib.h>
#include <Library/MemoryAllocationLib.h>
#include <Protocol/AcpiTable.h>
#include <AcpiTableGenerator.h>
#include <ConfigurationManagerObject.h>
#include <ConfigurationManagerHelper.h>
#include <Library/TableHelperLib.h>
#include <Protocol/ConfigurationManagerProtocol.h>
#include "IortGenerator.h"
Go to the source code of this file.
Macros | |
#define | IORT_GENERATOR_REVISION CREATE_REVISION (1, 0) |
Variables | |
STATIC ACPI_IORT_GENERATOR | IortGenerator |
IORT Table Generator
Copyright (c) 2017 - 2022, Arm Limited. All rights reserved. SPDX-License-Identifier: BSD-2-Clause-Patent
Definition in file IortGenerator.c.
#define IORT_GENERATOR_REVISION CREATE_REVISION (1, 0) |
The IORT Table Generator revision.
Definition at line 2807 of file IortGenerator.c.
EFI_STATUS EFIAPI AcpiIortLibConstructor | ( | IN EFI_HANDLE | ImageHandle, |
IN EFI_SYSTEM_TABLE * | SystemTable | ||
) |
Register the Generator with the ACPI Table Factory.
[in] | ImageHandle | The handle to the image. |
[in] | SystemTable | Pointer to the System Table. |
EFI_SUCCESS | The Generator is registered. |
EFI_INVALID_PARAMETER | A parameter is invalid. |
EFI_ALREADY_STARTED | The Generator for the Table ID is already registered. |
Definition at line 2860 of file IortGenerator.c.
EFI_STATUS EFIAPI AcpiIortLibDestructor | ( | IN EFI_HANDLE | ImageHandle, |
IN EFI_SYSTEM_TABLE * | SystemTable | ||
) |
Deregister the Generator from the ACPI Table Factory.
[in] | ImageHandle | The handle to the image. |
[in] | SystemTable | Pointer to the System Table. |
EFI_SUCCESS | The Generator is deregistered. |
EFI_INVALID_PARAMETER | A parameter is invalid. |
EFI_NOT_FOUND | The Generator is not registered. |
Definition at line 2884 of file IortGenerator.c.
STATIC EFI_STATUS AddIdMappingArray | ( | IN CONST ACPI_TABLE_GENERATOR *CONST | This, |
IN CONST EDKII_CONFIGURATION_MANAGER_PROTOCOL *CONST | CfgMgrProtocol, | ||
IN EFI_ACPI_6_0_IO_REMAPPING_ID_TABLE * | IdMapArray, | ||
IN UINT32 | IdCount, | ||
IN CONST CM_OBJECT_TOKEN | IdMappingToken | ||
) |
Update the Id Mapping Array.
This function retrieves the Id Mapping Array object referenced by the IdMappingToken and updates the IdMapArray.
[in] | This | Pointer to the table Generator. |
[in] | CfgMgrProtocol | Pointer to the Configuration Manager Protocol Interface. |
[in] | IdMapArray | Pointer to an array of Id Mappings. |
[in] | IdCount | Number of Id Mappings. |
[in] | IdMappingToken | Reference Token for retrieving the Id Mapping Array object. |
EFI_SUCCESS | Table generated successfully. |
EFI_INVALID_PARAMETER | A parameter is invalid. |
EFI_NOT_FOUND | The required object was not found. |
Definition at line 754 of file IortGenerator.c.
STATIC EFI_STATUS AddItsGroupNodes | ( | IN CONST ACPI_TABLE_GENERATOR *CONST | This, |
IN CONST EDKII_CONFIGURATION_MANAGER_PROTOCOL *CONST | CfgMgrProtocol, | ||
IN CONST CM_STD_OBJ_ACPI_TABLE_INFO *CONST | AcpiTableInfo, | ||
IN CONST EFI_ACPI_6_0_IO_REMAPPING_TABLE * | Iort, | ||
IN CONST UINT32 | NodesStartOffset, | ||
IN CONST CM_ARM_ITS_GROUP_NODE * | NodeList, | ||
IN UINT32 | NodeCount | ||
) |
Update the ITS Group Node Information.
[in] | This | Pointer to the table Generator. |
[in] | CfgMgrProtocol | Pointer to the Configuration Manager Protocol Interface. |
[in] | AcpiTableInfo | Pointer to the ACPI table info structure. |
[in] | Iort | Pointer to IORT table structure. |
[in] | NodesStartOffset | Offset for the start of the ITS Group Nodes. |
[in] | NodeList | Pointer to an array of ITS Group Node Objects. |
[in] | NodeCount | Number of ITS Group Node Objects. |
EFI_SUCCESS | Table generated successfully. |
EFI_INVALID_PARAMETER | A parameter is invalid. |
EFI_NOT_FOUND | The required object was not found. |
Definition at line 846 of file IortGenerator.c.
STATIC EFI_STATUS AddMemRangeDescArray | ( | IN CONST ACPI_TABLE_GENERATOR *CONST | This, |
IN CONST EDKII_CONFIGURATION_MANAGER_PROTOCOL *CONST | CfgMgrProtocol, | ||
IN EFI_ACPI_6_0_IO_REMAPPING_MEM_RANGE_DESC * | DescArray, | ||
IN UINT32 | DescCount, | ||
IN CONST CM_OBJECT_TOKEN | DescToken | ||
) |
Update the Memory Range Descriptor Array.
This function retrieves the Memory Range Descriptor objects referenced by MemRangeDescToken and updates the Memory Range Descriptor array.
[in] | This | Pointer to the table Generator. |
[in] | CfgMgrProtocol | Pointer to the Configuration Manager Protocol Interface. |
[in] | DescArray | Pointer to an array of Memory Range Descriptors. |
[in] | DescCount | Number of Id Descriptors. |
[in] | DescToken | Reference Token for retrieving the Memory Range Descriptor Array. |
EFI_SUCCESS | Table generated successfully. |
EFI_INVALID_PARAMETER | A parameter is invalid. |
EFI_NOT_FOUND | The required object was not found. |
Definition at line 1789 of file IortGenerator.c.
STATIC EFI_STATUS AddNamedComponentNodes | ( | IN CONST ACPI_TABLE_GENERATOR *CONST | This, |
IN CONST EDKII_CONFIGURATION_MANAGER_PROTOCOL *CONST | CfgMgrProtocol, | ||
IN CONST CM_STD_OBJ_ACPI_TABLE_INFO *CONST | AcpiTableInfo, | ||
IN CONST EFI_ACPI_6_0_IO_REMAPPING_TABLE * | Iort, | ||
IN CONST UINT32 | NodesStartOffset, | ||
IN CONST CM_ARM_NAMED_COMPONENT_NODE * | NodeList, | ||
IN UINT32 | NodeCount | ||
) |
Update the Named Component Node Information.
This function updates the Named Component node information in the IORT table.
[in] | This | Pointer to the table Generator. |
[in] | CfgMgrProtocol | Pointer to the Configuration Manager Protocol Interface. |
[in] | AcpiTableInfo | Pointer to the ACPI table info structure. |
[in] | Iort | Pointer to IORT table structure. |
[in] | NodesStartOffset | Offset for the start of the Named Component Nodes. |
[in] | NodeList | Pointer to an array of Named Component Node Objects. |
[in] | NodeCount | Number of Named Component Node Objects. |
EFI_SUCCESS | Table generated successfully. |
EFI_INVALID_PARAMETER | A parameter is invalid. |
EFI_NOT_FOUND | The required object was not found. |
Definition at line 963 of file IortGenerator.c.
STATIC EFI_STATUS AddPmcgNodes | ( | IN CONST ACPI_TABLE_GENERATOR *CONST | This, |
IN CONST EDKII_CONFIGURATION_MANAGER_PROTOCOL *CONST | CfgMgrProtocol, | ||
IN CONST CM_STD_OBJ_ACPI_TABLE_INFO *CONST | AcpiTableInfo, | ||
IN CONST EFI_ACPI_6_0_IO_REMAPPING_TABLE * | Iort, | ||
IN CONST UINT32 | NodesStartOffset, | ||
IN CONST CM_ARM_PMCG_NODE * | NodeList, | ||
IN UINT32 | NodeCount | ||
) |
Update the PMCG Node Information.
This function updates the PMCG node information in the IORT table.
[in] | This | Pointer to the table Generator. |
[in] | CfgMgrProtocol | Pointer to the Configuration Manager Protocol Interface. |
[in] | AcpiTableInfo | Pointer to the ACPI table info structure. |
[in] | Iort | Pointer to IORT table structure. |
[in] | NodesStartOffset | Offset for the start of the PMCG Nodes. |
[in] | NodeList | Pointer to an array of PMCG Node Objects. |
[in] | NodeCount | Number of PMCG Node Objects. |
EFI_SUCCESS | Table generated successfully. |
EFI_INVALID_PARAMETER | A parameter is invalid. |
EFI_NOT_FOUND | The required object was not found. |
Definition at line 1651 of file IortGenerator.c.
STATIC EFI_STATUS AddRmrNodes | ( | IN CONST ACPI_TABLE_GENERATOR *CONST | This, |
IN CONST EDKII_CONFIGURATION_MANAGER_PROTOCOL *CONST | CfgMgrProtocol, | ||
IN CONST CM_STD_OBJ_ACPI_TABLE_INFO *CONST | AcpiTableInfo, | ||
IN CONST EFI_ACPI_6_0_IO_REMAPPING_TABLE * | Iort, | ||
IN CONST UINT32 | NodesStartOffset, | ||
IN CONST CM_ARM_RMR_NODE * | NodeList, | ||
IN UINT32 | NodeCount | ||
) |
Update the RMR Node Information.
This function updates the RMR node information in the IORT table.
[in] | This | Pointer to the table Generator. |
[in] | CfgMgrProtocol | Pointer to the Configuration Manager Protocol Interface. |
[in] | AcpiTableInfo | Pointer to the ACPI table info structure. |
[in] | Iort | Pointer to IORT table structure. |
[in] | NodesStartOffset | Offset for the start of the PMCG Nodes. |
[in] | NodeList | Pointer to an array of PMCG Node Objects. |
[in] | NodeCount | Number of PMCG Node Objects. |
EFI_SUCCESS | Table generated successfully. |
EFI_INVALID_PARAMETER | A parameter is invalid. |
EFI_NOT_FOUND | The required object was not found. |
Definition at line 1860 of file IortGenerator.c.
STATIC EFI_STATUS AddRootComplexNodes | ( | IN CONST ACPI_TABLE_GENERATOR *CONST | This, |
IN CONST EDKII_CONFIGURATION_MANAGER_PROTOCOL *CONST | CfgMgrProtocol, | ||
IN CONST CM_STD_OBJ_ACPI_TABLE_INFO *CONST | AcpiTableInfo, | ||
IN CONST EFI_ACPI_6_0_IO_REMAPPING_TABLE * | Iort, | ||
IN CONST UINT32 | NodesStartOffset, | ||
IN CONST CM_ARM_ROOT_COMPLEX_NODE * | NodeList, | ||
IN UINT32 | NodeCount | ||
) |
Update the Root Complex Node Information.
This function updates the Root Complex node information in the IORT table.
[in] | This | Pointer to the table Generator. |
[in] | CfgMgrProtocol | Pointer to the Configuration Manager Protocol Interface. |
[in] | AcpiTableInfo | Pointer to the ACPI table info structure. |
[in] | Iort | Pointer to IORT table structure. |
[in] | NodesStartOffset | Offset for the start of the Root Complex Nodes. |
[in] | NodeList | Pointer to an array of Root Complex Node Objects. |
[in] | NodeCount | Number of Root Complex Node Objects. |
EFI_SUCCESS | Table generated successfully. |
EFI_INVALID_PARAMETER | A parameter is invalid. |
EFI_NOT_FOUND | The required object was not found. |
Definition at line 1108 of file IortGenerator.c.
STATIC EFI_STATUS AddSmmuInterruptArray | ( | IN CONST EDKII_CONFIGURATION_MANAGER_PROTOCOL *CONST | CfgMgrProtocol, |
IN OUT EFI_ACPI_6_0_IO_REMAPPING_SMMU_INT * | InterruptArray, | ||
IN UINT32 | InterruptCount, | ||
IN CONST CM_OBJECT_TOKEN | InterruptToken | ||
) |
Update the SMMU Interrupt Array.
This function retrieves the InterruptArray object referenced by the InterruptToken and updates the SMMU InterruptArray.
[in] | CfgMgrProtocol | Pointer to the Configuration Manager Protocol Interface. |
[in,out] | InterruptArray | Pointer to an array of Interrupts. |
[in] | InterruptCount | Number of entries in the InterruptArray. |
[in] | InterruptToken | Reference Token for retrieving the SMMU InterruptArray object. |
EFI_SUCCESS | Table generated successfully. |
EFI_INVALID_PARAMETER | A parameter is invalid. |
EFI_NOT_FOUND | The required object was not found. |
Definition at line 1232 of file IortGenerator.c.
STATIC EFI_STATUS AddSmmuV1V2Nodes | ( | IN CONST ACPI_TABLE_GENERATOR *CONST | This, |
IN CONST EDKII_CONFIGURATION_MANAGER_PROTOCOL *CONST | CfgMgrProtocol, | ||
IN CONST CM_STD_OBJ_ACPI_TABLE_INFO *CONST | AcpiTableInfo, | ||
IN CONST EFI_ACPI_6_0_IO_REMAPPING_TABLE * | Iort, | ||
IN CONST UINT32 | NodesStartOffset, | ||
IN CONST CM_ARM_SMMUV1_SMMUV2_NODE * | NodeList, | ||
IN UINT32 | NodeCount | ||
) |
Update the SMMU v1/v2 Node Information.
[in] | This | Pointer to the table Generator. |
[in] | CfgMgrProtocol | Pointer to the Configuration Manager Protocol Interface. |
[in] | AcpiTableInfo | Pointer to the ACPI table info structure. |
[in] | Iort | Pointer to IORT table structure. |
[in] | NodesStartOffset | Offset for the start of the SMMU v1/v2 Nodes. |
[in] | NodeList | Pointer to an array of SMMU v1/v2 Node Objects. |
[in] | NodeCount | Number of SMMU v1/v2 Node Objects. |
EFI_SUCCESS | Table generated successfully. |
EFI_INVALID_PARAMETER | A parameter is invalid. |
EFI_NOT_FOUND | The required object was not found. |
Definition at line 1299 of file IortGenerator.c.
STATIC EFI_STATUS AddSmmuV3Nodes | ( | IN CONST ACPI_TABLE_GENERATOR *CONST | This, |
IN CONST EDKII_CONFIGURATION_MANAGER_PROTOCOL *CONST | CfgMgrProtocol, | ||
IN CONST CM_STD_OBJ_ACPI_TABLE_INFO *CONST | AcpiTableInfo, | ||
IN CONST EFI_ACPI_6_0_IO_REMAPPING_TABLE * | Iort, | ||
IN CONST UINT32 | NodesStartOffset, | ||
IN CONST CM_ARM_SMMUV3_NODE * | NodeList, | ||
IN UINT32 | NodeCount | ||
) |
Update the SMMUv3 Node Information.
This function updates the SMMUv3 node information in the IORT table.
[in] | This | Pointer to the table Generator. |
[in] | CfgMgrProtocol | Pointer to the Configuration Manager Protocol Interface. |
[in] | AcpiTableInfo | Pointer to the ACPI table info structure. |
[in] | Iort | Pointer to IORT table structure. |
[in] | NodesStartOffset | Offset for the start of the SMMUv3 Nodes. |
[in] | NodeList | Pointer to an array of SMMUv3 Node Objects. |
[in] | NodeCount | Number of SMMUv3 Node Objects. |
EFI_SUCCESS | Table generated successfully. |
EFI_INVALID_PARAMETER | A parameter is invalid. |
EFI_NOT_FOUND | The required object was not found. |
Definition at line 1512 of file IortGenerator.c.
STATIC EFI_STATUS EFIAPI BuildIortTable | ( | IN CONST ACPI_TABLE_GENERATOR *CONST | This, |
IN CONST CM_STD_OBJ_ACPI_TABLE_INFO *CONST | AcpiTableInfo, | ||
IN CONST EDKII_CONFIGURATION_MANAGER_PROTOCOL *CONST | CfgMgrProtocol, | ||
OUT EFI_ACPI_DESCRIPTION_HEADER **CONST | Table | ||
) |
Construct the IORT ACPI table.
This function invokes the Configuration Manager protocol interface to get the required hardware information for generating the ACPI table.
If this function allocates any resources then they must be freed in the FreeXXXXTableResources function.
[in] | This | Pointer to the table generator. |
[in] | AcpiTableInfo | Pointer to the ACPI Table Info. |
[in] | CfgMgrProtocol | Pointer to the Configuration Manager Protocol Interface. |
[out] | Table | Pointer to the constructed ACPI Table. |
EFI_SUCCESS | Table generated successfully. |
EFI_INVALID_PARAMETER | A parameter is invalid. |
EFI_NOT_FOUND | The required object was not found. |
EFI_BAD_BUFFER_SIZE | The size returned by the Configuration Manager is less than the Object size for the requested object. |
Definition at line 2062 of file IortGenerator.c.
STATIC EFI_STATUS FreeIortTableResources | ( | IN CONST ACPI_TABLE_GENERATOR *CONST | This, |
IN CONST CM_STD_OBJ_ACPI_TABLE_INFO *CONST | AcpiTableInfo, | ||
IN CONST EDKII_CONFIGURATION_MANAGER_PROTOCOL *CONST | CfgMgrProtocol, | ||
IN OUT EFI_ACPI_DESCRIPTION_HEADER **CONST | Table | ||
) |
Free any resources allocated for constructing the IORT
[in] | This | Pointer to the table generator. |
[in] | AcpiTableInfo | Pointer to the ACPI Table Info. |
[in] | CfgMgrProtocol | Pointer to the Configuration Manager Protocol Interface. |
[in,out] | Table | Pointer to the ACPI Table. |
EFI_SUCCESS | The resources were freed successfully. |
EFI_INVALID_PARAMETER | The table pointer is NULL or invalid. |
Definition at line 2771 of file IortGenerator.c.
GET_OBJECT_LIST | ( | EObjNameSpaceArm | , |
EArmObjGicItsIdentifierArray | , | ||
CM_ARM_ITS_IDENTIFIER | |||
) |
This macro expands to a function that retrieves the ITS Identifier Array information from the Configuration Manager.
GET_OBJECT_LIST | ( | EObjNameSpaceArm | , |
EArmObjIdMappingArray | , | ||
CM_ARM_ID_MAPPING | |||
) |
This macro expands to a function that retrieves the Id Mapping Array information from the Configuration Manager.
GET_OBJECT_LIST | ( | EObjNameSpaceArm | , |
EArmObjItsGroup | , | ||
CM_ARM_ITS_GROUP_NODE | |||
) |
ARM standard IORT Generator
Requirements: The following Configuration Manager Object(s) are required by this Generator:
GET_OBJECT_LIST | ( | EObjNameSpaceArm | , |
EArmObjMemoryRangeDescriptor | , | ||
CM_ARM_MEMORY_RANGE_DESCRIPTOR | |||
) |
This macro expands to a function that retrieves the Memory Range Descriptor Array information from the Configuration Manager.
GET_OBJECT_LIST | ( | EObjNameSpaceArm | , |
EArmObjNamedComponent | , | ||
CM_ARM_NAMED_COMPONENT_NODE | |||
) |
This macro expands to a function that retrieves the Named Component node information from the Configuration Manager.
GET_OBJECT_LIST | ( | EObjNameSpaceArm | , |
EArmObjPmcg | , | ||
CM_ARM_PMCG_NODE | |||
) |
This macro expands to a function that retrieves the PMCG node information from the Configuration Manager.
GET_OBJECT_LIST | ( | EObjNameSpaceArm | , |
EArmObjRmr | , | ||
CM_ARM_RMR_NODE | |||
) |
This macro expands to a function that retrieves the RMR node information from the Configuration Manager.
GET_OBJECT_LIST | ( | EObjNameSpaceArm | , |
EArmObjRootComplex | , | ||
CM_ARM_ROOT_COMPLEX_NODE | |||
) |
This macro expands to a function that retrieves the Root Complex node information from the Configuration Manager.
GET_OBJECT_LIST | ( | EObjNameSpaceArm | , |
EArmObjSmmuInterruptArray | , | ||
CM_ARM_SMMU_INTERRUPT | |||
) |
This macro expands to a function that retrieves the SMMU Interrupt Array information from the Configuration Manager.
GET_OBJECT_LIST | ( | EObjNameSpaceArm | , |
EArmObjSmmuV1SmmuV2 | , | ||
CM_ARM_SMMUV1_SMMUV2_NODE | |||
) |
This macro expands to a function that retrieves the SMMU v1/v2 node information from the Configuration Manager.
GET_OBJECT_LIST | ( | EObjNameSpaceArm | , |
EArmObjSmmuV3 | , | ||
CM_ARM_SMMUV3_NODE | |||
) |
This macro expands to a function that retrieves the SMMU v3 node information from the Configuration Manager.
STATIC UINT32 GetItsGroupNodeSize | ( | IN CONST CM_ARM_ITS_GROUP_NODE * | Node | ) |
Returns the size of the ITS Group node.
[in] | Node | Pointer to ITS Group node. |
Size | of the ITS Group Node. |
Definition at line 154 of file IortGenerator.c.
STATIC UINT32 GetNamedComponentNodeSize | ( | IN CONST CM_ARM_NAMED_COMPONENT_NODE * | Node | ) |
Returns the size of the Named Component node.
[in] | Node | Pointer to Named Component node. |
Size | of the Named Component node. |
Definition at line 228 of file IortGenerator.c.
STATIC EFI_STATUS GetNodeOffsetReferencedByToken | ( | IN IORT_NODE_INDEXER * | NodeIndexer, |
IN UINT32 | NodeCount, | ||
IN CM_OBJECT_TOKEN | Token, | ||
OUT UINT32 * | NodeOffset | ||
) |
Returns the offset of the Node referenced by the Token.
[in] | NodeIndexer | Pointer to node indexer array. |
[in] | NodeCount | Count of the nodes. |
[in] | Token | Reference token for the node. |
[out] | NodeOffset | Offset of the node from the start of the IORT table. |
EFI_SUCCESS | Success. |
EFI_NOT_FOUND | No matching token reference found in node indexer array. |
Definition at line 695 of file IortGenerator.c.
STATIC UINT32 GetPmcgNodeSize | ( | IN CONST CM_ARM_PMCG_NODE * | Node | ) |
Returns the size of the PMCG node.
[in] | Node | Pointer to PMCG node. |
Size | of the PMCG node. |
Definition at line 536 of file IortGenerator.c.
STATIC UINT32 GetRmrNodeSize | ( | IN CONST CM_ARM_RMR_NODE * | Node | ) |
Returns the size of the RMR node.
[in] | Node | Pointer to RMR node. |
Size | of the RMR node. |
Definition at line 611 of file IortGenerator.c.
STATIC UINT32 GetRootComplexNodeSize | ( | IN CONST CM_ARM_ROOT_COMPLEX_NODE * | Node | ) |
Returns the size of the Root Complex node.
[in] | Node | Pointer to Root Complex node. |
Size | of the Root Complex node. |
Definition at line 305 of file IortGenerator.c.
STATIC UINT64 GetSizeofItsGroupNodes | ( | IN CONST UINT32 | NodeStartOffset, |
IN CONST CM_ARM_ITS_GROUP_NODE * | NodeList, | ||
IN UINT32 | NodeCount, | ||
IN OUT IORT_NODE_INDEXER **CONST | NodeIndexer | ||
) |
Returns the total size required for the ITS Group nodes and updates the Node Indexer.
This function calculates the size required for the node group and also populates the Node Indexer array with offsets for the individual nodes.
[in] | NodeStartOffset | Offset from the start of the IORT where this node group starts. |
[in] | NodeList | Pointer to ITS Group node list. |
[in] | NodeCount | Count of the ITS Group nodes. |
[in,out] | NodeIndexer | Pointer to the next Node Indexer. |
Total | size of the ITS Group Nodes. |
Definition at line 184 of file IortGenerator.c.
STATIC UINT64 GetSizeofNamedComponentNodes | ( | IN CONST UINT32 | NodeStartOffset, |
IN CONST CM_ARM_NAMED_COMPONENT_NODE * | NodeList, | ||
IN UINT32 | NodeCount, | ||
IN OUT IORT_NODE_INDEXER **CONST | NodeIndexer | ||
) |
Returns the total size required for the Named Component nodes and updates the Node Indexer.
This function calculates the size required for the node group and also populates the Node Indexer array with offsets for the individual nodes.
[in] | NodeStartOffset | Offset from the start of the IORT where this node group starts. |
[in] | NodeList | Pointer to Named Component node list. |
[in] | NodeCount | Count of the Named Component nodes. |
[in,out] | NodeIndexer | Pointer to the next Node Indexer. |
Total | size of the Named Component nodes. |
Definition at line 261 of file IortGenerator.c.
STATIC UINT64 GetSizeofPmcgNodes | ( | IN CONST UINT32 | NodeStartOffset, |
IN CONST CM_ARM_PMCG_NODE * | NodeList, | ||
IN UINT32 | NodeCount, | ||
IN OUT IORT_NODE_INDEXER **CONST | NodeIndexer | ||
) |
Returns the total size required for the PMCG nodes and updates the Node Indexer.
This function calculates the size required for the node group and also populates the Node Indexer array with offsets for the individual nodes.
[in] | NodeStartOffset | Offset from the start of the IORT where this node group starts. |
[in] | NodeList | Pointer to PMCG node list. |
[in] | NodeCount | Count of the PMCG nodes. |
[in,out] | NodeIndexer | Pointer to the next Node Indexer. |
Total | size of the PMCG nodes. |
Definition at line 567 of file IortGenerator.c.
STATIC UINT64 GetSizeofRmrNodes | ( | IN CONST UINT32 | NodeStartOffset, |
IN CONST CM_ARM_RMR_NODE * | NodeList, | ||
IN UINT32 | NodeCount, | ||
IN OUT IORT_NODE_INDEXER **CONST | NodeIndexer | ||
) |
Returns the total size required for the RMR nodes and updates the Node Indexer.
This function calculates the size required for the node group and also populates the Node Indexer array with offsets for the individual nodes.
[in] | NodeStartOffset | Offset from the start of the IORT where this node group starts. |
[in] | NodeList | Pointer to RMR node list. |
[in] | NodeCount | Count of the RMR nodes. |
[in,out] | NodeIndexer | Pointer to the next Node Indexer. |
Total | size of the RMR nodes. |
Definition at line 645 of file IortGenerator.c.
STATIC UINT64 GetSizeofRootComplexNodes | ( | IN CONST UINT32 | NodeStartOffset, |
IN CONST CM_ARM_ROOT_COMPLEX_NODE * | NodeList, | ||
IN UINT32 | NodeCount, | ||
IN OUT IORT_NODE_INDEXER **CONST | NodeIndexer | ||
) |
Returns the total size required for the Root Complex nodes and updates the Node Indexer.
This function calculates the size required for the node group and also populates the Node Indexer array with offsets for the individual nodes.
[in] | NodeStartOffset | Offset from the start of the IORT where this node group starts. |
[in] | NodeList | Pointer to Root Complex node list. |
[in] | NodeCount | Count of the Root Complex nodes. |
[in,out] | NodeIndexer | Pointer to the next Node Indexer. |
Total | size of the Root Complex nodes. |
Definition at line 336 of file IortGenerator.c.
STATIC UINT64 GetSizeofSmmuV1V2Nodes | ( | IN CONST UINT32 | NodeStartOffset, |
IN CONST CM_ARM_SMMUV1_SMMUV2_NODE * | NodeList, | ||
IN UINT32 | NodeCount, | ||
IN OUT IORT_NODE_INDEXER **CONST | NodeIndexer | ||
) |
Returns the total size required for the SMMUv1/SMMUv2 nodes and updates the Node Indexer.
This function calculates the size required for the node group and also populates the Node Indexer array with offsets for the individual nodes.
[in] | NodeStartOffset | Offset from the start of the IORT where this node group starts. |
[in] | NodeList | Pointer to SMMUv1/SMMUv2 node list. |
[in] | NodeCount | Count of the SMMUv1/SMMUv2 nodes. |
[in,out] | NodeIndexer | Pointer to the next Node Indexer. |
Total | size of the SMMUv1/SMMUv2 nodes. |
Definition at line 417 of file IortGenerator.c.
STATIC UINT64 GetSizeofSmmuV3Nodes | ( | IN CONST UINT32 | NodeStartOffset, |
IN CONST CM_ARM_SMMUV3_NODE * | NodeList, | ||
IN UINT32 | NodeCount, | ||
IN OUT IORT_NODE_INDEXER **CONST | NodeIndexer | ||
) |
Returns the total size required for the SMMUv3 nodes and updates the Node Indexer.
This function calculates the size required for the node group and also populates the Node Indexer array with offsets for the individual nodes.
[in] | NodeStartOffset | Offset from the start of the IORT where this node group starts. |
[in] | NodeList | Pointer to SMMUv3 node list. |
[in] | NodeCount | Count of the SMMUv3 nodes. |
[in,out] | NodeIndexer | Pointer to the next Node Indexer. |
Total | size of the SMMUv3 nodes. |
Definition at line 492 of file IortGenerator.c.
STATIC UINT32 GetSmmuV1V2NodeSize | ( | IN CONST CM_ARM_SMMUV1_SMMUV2_NODE * | Node | ) |
Returns the size of the SMMUv1/SMMUv2 node.
[in] | Node | Pointer to SMMUv1/SMMUv2 node list. |
Size | of the SMMUv1/SMMUv2 node. |
Definition at line 380 of file IortGenerator.c.
STATIC UINT32 GetSmmuV3NodeSize | ( | IN CONST CM_ARM_SMMUV3_NODE * | Node | ) |
Returns the size of the SMMUv3 node.
[in] | Node | Pointer to SMMUv3 node list. |
Total | size of the SMMUv3 nodes. |
Definition at line 461 of file IortGenerator.c.
STATIC EFI_STATUS ValidateNodeIdentifiers | ( | IN CONST IORT_NODE_INDEXER *CONST | NodeIndexer, |
IN UINT32 | NodeCount | ||
) |
Validates that the IORT nodes Identifier are unique.
[in] | NodeIndexer | Pointer to the Node Indexer. |
[in] | NodeCount | Number of IORT Nodes. |
EFI_SUCCESS | Success. |
EFI_INVALID_PARAMETER | Identifier field not unique. |
Definition at line 2009 of file IortGenerator.c.
STATIC ACPI_IORT_GENERATOR IortGenerator |
The interface for the MADT Table Generator.
Definition at line 2812 of file IortGenerator.c.