MdePkg: IORT header update for IORT Rev E.d spec
Bugzilla: 3458 - Add support IORT Rev E.d specification updates (https://bugzilla.tianocore.org/show_bug.cgi?id=3458) The IO Remapping Table, Platform Design Document, Revision E.d, Feb 2022 (https://developer.arm.com/documentation/den0049/) introduces the following updates, collectively including the updates and errata fixes to Rev E, Rev E.a, Rev E.b, Rev E.c: - increments the IORT table revision to 5. - updates the node definition to add an 'Identifier' field. - adds definition of node type 6 - Reserved Memory Range node. - adds definition for Memory Range Descriptors. - adds flag to indicate PRI support for root complexes. - adds flag to indicate if the root complex supports forwarding of PASID information on translated transactions to the SMMU. - adds flag to indicate if the root complex supports PASID. - adds flags to define access privilege and attributes for the memory ranges. Therefore, update the IORT header file to reflect these changes, and also rename the EFI_ACPI_IO_REMAPPING_TABLE_REVISION macro to EFI_ACPI_IO_REMAPPING_TABLE_REVISION_00. Also update the IORT generator in DynamicTablesPkg to fix the compilation errors so that Git Bisect can work. Signed-off-by: Sami Mujawar <sami.mujawar@arm.com> Reviewed-by: Liming Gao <gaoliming@byosoft.com.cn> Reviewed-by: Pierre Gondois <pierre.gondois@arm.com> Reviewed-by: Zhichao Gao <zhichao.gao@intel.com>
This commit is contained in:
committed by
mergify[bot]
parent
238f903e8d
commit
4c55f6394f
@@ -766,7 +766,7 @@ AddItsGroupNodes (
|
||||
ItsGroupNode->Node.Type = EFI_ACPI_IORT_TYPE_ITS_GROUP;
|
||||
ItsGroupNode->Node.Length = (UINT16)NodeLength;
|
||||
ItsGroupNode->Node.Revision = 0;
|
||||
ItsGroupNode->Node.Reserved = EFI_ACPI_RESERVED_DWORD;
|
||||
ItsGroupNode->Node.Identifier = EFI_ACPI_RESERVED_DWORD;
|
||||
ItsGroupNode->Node.NumIdMappings = 0;
|
||||
ItsGroupNode->Node.IdReference = 0;
|
||||
|
||||
@@ -872,7 +872,7 @@ AddNamedComponentNodes (
|
||||
NcNode->Node.Type = EFI_ACPI_IORT_TYPE_NAMED_COMP;
|
||||
NcNode->Node.Length = (UINT16)NodeLength;
|
||||
NcNode->Node.Revision = 2;
|
||||
NcNode->Node.Reserved = EFI_ACPI_RESERVED_DWORD;
|
||||
NcNode->Node.Identifier = EFI_ACPI_RESERVED_DWORD;
|
||||
NcNode->Node.NumIdMappings = NodeList->IdMappingCount;
|
||||
|
||||
ObjectNameLength = AsciiStrLen (NodeList->ObjectName) + 1;
|
||||
@@ -1005,7 +1005,7 @@ AddRootComplexNodes (
|
||||
RcNode->Node.Type = EFI_ACPI_IORT_TYPE_ROOT_COMPLEX;
|
||||
RcNode->Node.Length = (UINT16)NodeLength;
|
||||
RcNode->Node.Revision = 1;
|
||||
RcNode->Node.Reserved = EFI_ACPI_RESERVED_DWORD;
|
||||
RcNode->Node.Identifier = EFI_ACPI_RESERVED_DWORD;
|
||||
RcNode->Node.NumIdMappings = NodeList->IdMappingCount;
|
||||
RcNode->Node.IdReference = (NodeList->IdMappingCount == 0) ?
|
||||
0 : sizeof (EFI_ACPI_6_0_IO_REMAPPING_RC_NODE);
|
||||
@@ -1018,9 +1018,8 @@ AddRootComplexNodes (
|
||||
RcNode->AtsAttribute = NodeList->AtsAttribute;
|
||||
RcNode->PciSegmentNumber = NodeList->PciSegmentNumber;
|
||||
RcNode->MemoryAddressSize = NodeList->MemoryAddressSize;
|
||||
RcNode->PasidCapabilities = EFI_ACPI_RESERVED_WORD;
|
||||
RcNode->Reserved1[0] = EFI_ACPI_RESERVED_BYTE;
|
||||
RcNode->Reserved1[1] = EFI_ACPI_RESERVED_BYTE;
|
||||
RcNode->Reserved1[2] = EFI_ACPI_RESERVED_BYTE;
|
||||
|
||||
if (NodeList->IdMappingCount > 0) {
|
||||
if (NodeList->IdMappingToken == CM_NULL_TOKEN) {
|
||||
@@ -1188,7 +1187,7 @@ AddSmmuV1V2Nodes (
|
||||
SmmuNode->Node.Type = EFI_ACPI_IORT_TYPE_SMMUv1v2;
|
||||
SmmuNode->Node.Length = (UINT16)NodeLength;
|
||||
SmmuNode->Node.Revision = 0;
|
||||
SmmuNode->Node.Reserved = EFI_ACPI_RESERVED_DWORD;
|
||||
SmmuNode->Node.Identifier = EFI_ACPI_RESERVED_DWORD;
|
||||
SmmuNode->Node.NumIdMappings = NodeList->IdMappingCount;
|
||||
SmmuNode->Node.IdReference = (NodeList->IdMappingCount == 0) ?
|
||||
0 : (sizeof (EFI_ACPI_6_0_IO_REMAPPING_SMMU_NODE) +
|
||||
@@ -1387,7 +1386,7 @@ AddSmmuV3Nodes (
|
||||
SmmuV3Node->Node.Type = EFI_ACPI_IORT_TYPE_SMMUv3;
|
||||
SmmuV3Node->Node.Length = (UINT16)NodeLength;
|
||||
SmmuV3Node->Node.Revision = 2;
|
||||
SmmuV3Node->Node.Reserved = EFI_ACPI_RESERVED_DWORD;
|
||||
SmmuV3Node->Node.Identifier = EFI_ACPI_RESERVED_DWORD;
|
||||
SmmuV3Node->Node.NumIdMappings = NodeList->IdMappingCount;
|
||||
SmmuV3Node->Node.IdReference = (NodeList->IdMappingCount == 0) ?
|
||||
0 : sizeof (EFI_ACPI_6_0_IO_REMAPPING_SMMU3_NODE);
|
||||
@@ -1518,7 +1517,7 @@ AddPmcgNodes (
|
||||
PmcgNode->Node.Type = EFI_ACPI_IORT_TYPE_PMCG;
|
||||
PmcgNode->Node.Length = (UINT16)NodeLength;
|
||||
PmcgNode->Node.Revision = 1;
|
||||
PmcgNode->Node.Reserved = EFI_ACPI_RESERVED_DWORD;
|
||||
PmcgNode->Node.Identifier = EFI_ACPI_RESERVED_DWORD;
|
||||
PmcgNode->Node.NumIdMappings = NodeList->IdMappingCount;
|
||||
PmcgNode->Node.IdReference = (NodeList->IdMappingCount == 0) ?
|
||||
0 : sizeof (EFI_ACPI_6_0_IO_REMAPPING_PMCG_NODE);
|
||||
@@ -2258,9 +2257,9 @@ ACPI_IORT_GENERATOR IortGenerator = {
|
||||
// ACPI Table Signature
|
||||
EFI_ACPI_6_2_IO_REMAPPING_TABLE_SIGNATURE,
|
||||
// ACPI Table Revision supported by this Generator
|
||||
EFI_ACPI_IO_REMAPPING_TABLE_REVISION,
|
||||
EFI_ACPI_IO_REMAPPING_TABLE_REVISION_00,
|
||||
// Minimum supported ACPI Table Revision
|
||||
EFI_ACPI_IO_REMAPPING_TABLE_REVISION,
|
||||
EFI_ACPI_IO_REMAPPING_TABLE_REVISION_00,
|
||||
// Creator ID
|
||||
TABLE_GENERATOR_CREATOR_ID_ARM,
|
||||
// Creator Revision
|
||||
|
Reference in New Issue
Block a user