mirror of https://github.com/acidanthera/audk.git
DynamicTablesPkg: Update ArmNameSpaceObjects for IORT Rev E.d
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 Arm namespace objects to: - add Identifier field to IORT nodes. - introduce enums to represent RMR nodes and Memory Range descriptors. - add definition of node type 6 - Reserved Memory Range node. - add definition for Memory Range Descriptors. - add PASID capabilities and flags field to Root Complex node. Signed-off-by: Sami Mujawar <sami.mujawar@arm.com> Reviewed-by: Pierre Gondois <pierre.gondois@arm.com>
This commit is contained in:
parent
cd67efa1b2
commit
de200b7e2c
|
@ -108,6 +108,7 @@
|
||||||
"lgreater",
|
"lgreater",
|
||||||
"lless",
|
"lless",
|
||||||
"MPIDR",
|
"MPIDR",
|
||||||
|
"PASID",
|
||||||
"PERIPHBASE",
|
"PERIPHBASE",
|
||||||
"phandle",
|
"phandle",
|
||||||
"pytool",
|
"pytool",
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
/** @file
|
/** @file
|
||||||
|
|
||||||
Copyright (c) 2017 - 2021, Arm Limited. All rights reserved.<BR>
|
Copyright (c) 2017 - 2022, Arm Limited. All rights reserved.<BR>
|
||||||
|
|
||||||
SPDX-License-Identifier: BSD-2-Clause-Patent
|
SPDX-License-Identifier: BSD-2-Clause-Patent
|
||||||
|
|
||||||
|
@ -61,6 +61,8 @@ typedef enum ArmObjectID {
|
||||||
EArmObjLpiInfo, ///< 37 - Lpi Info
|
EArmObjLpiInfo, ///< 37 - Lpi Info
|
||||||
EArmObjPciAddressMapInfo, ///< 38 - Pci Address Map Info
|
EArmObjPciAddressMapInfo, ///< 38 - Pci Address Map Info
|
||||||
EArmObjPciInterruptMapInfo, ///< 39 - Pci Interrupt Map Info
|
EArmObjPciInterruptMapInfo, ///< 39 - Pci Interrupt Map Info
|
||||||
|
EArmObjRmr, ///< 40 - Reserved Memory Range Node
|
||||||
|
EArmObjMemoryRangeDescriptor, ///< 41 - Memory Range Descriptor
|
||||||
EArmObjMax
|
EArmObjMax
|
||||||
} EARM_OBJECT_ID;
|
} EARM_OBJECT_ID;
|
||||||
|
|
||||||
|
@ -477,6 +479,9 @@ typedef struct CmArmItsGroupNode {
|
||||||
UINT32 ItsIdCount;
|
UINT32 ItsIdCount;
|
||||||
/// Reference token for the ITS identifier array
|
/// Reference token for the ITS identifier array
|
||||||
CM_OBJECT_TOKEN ItsIdToken;
|
CM_OBJECT_TOKEN ItsIdToken;
|
||||||
|
|
||||||
|
/// Unique identifier for this node.
|
||||||
|
UINT32 Identifier;
|
||||||
} CM_ARM_ITS_GROUP_NODE;
|
} CM_ARM_ITS_GROUP_NODE;
|
||||||
|
|
||||||
/** A structure that describes the
|
/** A structure that describes the
|
||||||
|
@ -509,6 +514,9 @@ typedef struct CmArmNamedComponentNode {
|
||||||
the entry in the namespace for this object.
|
the entry in the namespace for this object.
|
||||||
*/
|
*/
|
||||||
CHAR8 *ObjectName;
|
CHAR8 *ObjectName;
|
||||||
|
|
||||||
|
/// Unique identifier for this node.
|
||||||
|
UINT32 Identifier;
|
||||||
} CM_ARM_NAMED_COMPONENT_NODE;
|
} CM_ARM_NAMED_COMPONENT_NODE;
|
||||||
|
|
||||||
/** A structure that describes the
|
/** A structure that describes the
|
||||||
|
@ -537,6 +545,13 @@ typedef struct CmArmRootComplexNode {
|
||||||
UINT32 PciSegmentNumber;
|
UINT32 PciSegmentNumber;
|
||||||
/// Memory address size limit
|
/// Memory address size limit
|
||||||
UINT8 MemoryAddressSize;
|
UINT8 MemoryAddressSize;
|
||||||
|
/// PASID capabilities
|
||||||
|
UINT16 PasidCapabilities;
|
||||||
|
/// Flags
|
||||||
|
UINT32 Flags;
|
||||||
|
|
||||||
|
/// Unique identifier for this node.
|
||||||
|
UINT32 Identifier;
|
||||||
} CM_ARM_ROOT_COMPLEX_NODE;
|
} CM_ARM_ROOT_COMPLEX_NODE;
|
||||||
|
|
||||||
/** A structure that describes the
|
/** A structure that describes the
|
||||||
|
@ -579,6 +594,9 @@ typedef struct CmArmSmmuV1SmmuV2Node {
|
||||||
UINT32 SMMU_NSgCfgIrpt;
|
UINT32 SMMU_NSgCfgIrpt;
|
||||||
/// SMMU_NSgCfgIrpt interrupt flags
|
/// SMMU_NSgCfgIrpt interrupt flags
|
||||||
UINT32 SMMU_NSgCfgIrptFlags;
|
UINT32 SMMU_NSgCfgIrptFlags;
|
||||||
|
|
||||||
|
/// Unique identifier for this node.
|
||||||
|
UINT32 Identifier;
|
||||||
} CM_ARM_SMMUV1_SMMUV2_NODE;
|
} CM_ARM_SMMUV1_SMMUV2_NODE;
|
||||||
|
|
||||||
/** A structure that describes the
|
/** A structure that describes the
|
||||||
|
@ -615,6 +633,9 @@ typedef struct CmArmSmmuV3Node {
|
||||||
UINT32 ProximityDomain;
|
UINT32 ProximityDomain;
|
||||||
/// Index into the array of ID mapping
|
/// Index into the array of ID mapping
|
||||||
UINT32 DeviceIdMappingIndex;
|
UINT32 DeviceIdMappingIndex;
|
||||||
|
|
||||||
|
/// Unique identifier for this node.
|
||||||
|
UINT32 Identifier;
|
||||||
} CM_ARM_SMMUV3_NODE;
|
} CM_ARM_SMMUV3_NODE;
|
||||||
|
|
||||||
/** A structure that describes the
|
/** A structure that describes the
|
||||||
|
@ -639,6 +660,9 @@ typedef struct CmArmPmcgNode {
|
||||||
|
|
||||||
/// Reference token for the IORT node associated with this node
|
/// Reference token for the IORT node associated with this node
|
||||||
CM_OBJECT_TOKEN ReferenceToken;
|
CM_OBJECT_TOKEN ReferenceToken;
|
||||||
|
|
||||||
|
/// Unique identifier for this node.
|
||||||
|
UINT32 Identifier;
|
||||||
} CM_ARM_PMCG_NODE;
|
} CM_ARM_PMCG_NODE;
|
||||||
|
|
||||||
/** A structure that describes the
|
/** A structure that describes the
|
||||||
|
@ -1006,6 +1030,46 @@ typedef struct CmArmPciInterruptMapInfo {
|
||||||
CM_ARM_GENERIC_INTERRUPT IntcInterrupt;
|
CM_ARM_GENERIC_INTERRUPT IntcInterrupt;
|
||||||
} CM_ARM_PCI_INTERRUPT_MAP_INFO;
|
} CM_ARM_PCI_INTERRUPT_MAP_INFO;
|
||||||
|
|
||||||
|
/** A structure that describes the
|
||||||
|
RMR node for the Platform.
|
||||||
|
|
||||||
|
ID: EArmObjRmr
|
||||||
|
*/
|
||||||
|
typedef struct CmArmRmrNode {
|
||||||
|
/// An unique token used to identify this object
|
||||||
|
CM_OBJECT_TOKEN Token;
|
||||||
|
/// Number of ID mappings
|
||||||
|
UINT32 IdMappingCount;
|
||||||
|
/// Reference token for the ID mapping array
|
||||||
|
CM_OBJECT_TOKEN IdMappingToken;
|
||||||
|
|
||||||
|
/// Unique identifier for this node.
|
||||||
|
UINT32 Identifier;
|
||||||
|
|
||||||
|
/// Reserved Memory Range flags.
|
||||||
|
UINT32 Flags;
|
||||||
|
|
||||||
|
/// Memory range descriptor count.
|
||||||
|
UINT32 MemRangeDescCount;
|
||||||
|
/// Reference token for the Memory Range descriptor array
|
||||||
|
CM_OBJECT_TOKEN MemRangeDescToken;
|
||||||
|
} CM_ARM_RMR_NODE;
|
||||||
|
|
||||||
|
/** A structure that describes the
|
||||||
|
Memory Range descriptor.
|
||||||
|
|
||||||
|
ID: EArmObjMemoryRangeDescriptor
|
||||||
|
*/
|
||||||
|
typedef struct CmArmRmrDescriptor {
|
||||||
|
/// Base address of Reserved Memory Range,
|
||||||
|
/// aligned to a page size of 64K.
|
||||||
|
UINT64 BaseAddress;
|
||||||
|
|
||||||
|
/// Length of the Reserved Memory range.
|
||||||
|
/// Must be a multiple of the page size of 64K.
|
||||||
|
UINT64 Length;
|
||||||
|
} CM_ARM_MEMORY_RANGE_DESCRIPTOR;
|
||||||
|
|
||||||
#pragma pack()
|
#pragma pack()
|
||||||
|
|
||||||
#endif // ARM_NAMESPACE_OBJECTS_H_
|
#endif // ARM_NAMESPACE_OBJECTS_H_
|
||||||
|
|
Loading…
Reference in New Issue