diff options
author | Sami Mujawar <sami.mujawar@arm.com> | 2022-07-14 17:50:28 +0100 |
---|---|---|
committer | mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> | 2022-07-29 19:22:15 +0000 |
commit | 4c55f6394fafe0494ec24e7c05cb68c938d7852d (patch) | |
tree | 03cbf01d111e0ea9bee1a95ac79c6ef7d7abdcd7 /DynamicTablesPkg | |
parent | 238f903e8d5dbda0f9c0453c3623bfdcbd697304 (diff) | |
download | edk2-4c55f6394fafe0494ec24e7c05cb68c938d7852d.tar.gz edk2-4c55f6394fafe0494ec24e7c05cb68c938d7852d.tar.bz2 edk2-4c55f6394fafe0494ec24e7c05cb68c938d7852d.zip |
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>
Diffstat (limited to 'DynamicTablesPkg')
-rw-r--r-- | DynamicTablesPkg/Library/Acpi/Arm/AcpiIortLibArm/IortGenerator.c | 19 |
1 files changed, 9 insertions, 10 deletions
diff --git a/DynamicTablesPkg/Library/Acpi/Arm/AcpiIortLibArm/IortGenerator.c b/DynamicTablesPkg/Library/Acpi/Arm/AcpiIortLibArm/IortGenerator.c index abef9e5a7f..63381441e2 100644 --- a/DynamicTablesPkg/Library/Acpi/Arm/AcpiIortLibArm/IortGenerator.c +++ b/DynamicTablesPkg/Library/Acpi/Arm/AcpiIortLibArm/IortGenerator.c @@ -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
|