IHI0088F Amba Dti Protocol Spec
IHI0088F Amba Dti Protocol Spec
IHI0088F Amba Dti Protocol Spec
Protocol Specification
Copyright © 2016-2018, 2020-2023 Arm Limited or its affiliates. All rights reserved.
ARM IHI 0088F (ID092723)
AMBA DTI
Protocol Specification
Copyright © 2016-2018, 2020-2023 Arm Limited or its affiliates. All rights reserved.
Release Information
Change history
Proprietary Notice
This document is NON-CONFIDENTIAL and any use by you is subject to the terms of this notice and the Arm AMBA
Specification Licence set about below.
This document is protected by copyright and other related rights and the practice or implementation of the information contained
in this document may be protected by one or more patents or pending patent applications. No part of this document may be
reproduced in any form by any means without the express prior written permission of Arm. No license, express or implied, by
estoppel or otherwise to any intellectual property rights is granted by this document unless specifically stated.
Your access to the information in this document is conditional upon your acceptance that you will not use or permit others to use
the information for the purposes of determining whether implementations infringe any third party patents.
THIS DOCUMENT IS PROVIDED "AS IS". ARM PROVIDES NO REPRESENTATIONS AND NO WARRANTIES,
EXPRESS, IMPLIED OR STATUTORY, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
MERCHANTABILITY, SATISFACTORY QUALITY, NON-INFRINGEMENT OR FITNESS FOR A PARTICULAR
PURPOSE WITH RESPECT TO THE DOCUMENT. For the avoidance of doubt, Arm makes no representation with respect to,
and has undertaken no analysis to identify or understand the scope and content of, patents, copyrights, trade secrets, or other rights.
TO THE EXTENT NOT PROHIBITED BY LAW, IN NO EVENT WILL ARM BE LIABLE FOR ANY DAMAGES,
INCLUDING WITHOUT LIMITATION ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL, PUNITIVE, OR
CONSEQUENTIAL DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, ARISING
OUT OF ANY USE OF THIS DOCUMENT, EVEN IF ARM HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
DAMAGES.
This document consists solely of commercial items. You shall be responsible for ensuring that any use, duplication or disclosure
of this document complies fully with any relevant export laws and regulations to assure that this document or any portion thereof
is not exported, directly or indirectly, in violation of such export laws. Use of the word "partner" in reference to Arm's customers
is not intended to create or refer to any partnership relationship with any other company. Arm may make changes to this document
at any time and without notice.
This document may be translated into other languages for convenience, and you agree that if there is any conflict between the
English version of this document and any translation, the terms of the English version of the Agreement shall prevail.
ii Copyright © 2016-2018, 2020-2023 Arm Limited or its affiliates. All rights reserved. ARM IHI 0088F
Non-Confidential ID092723
The Arm corporate logo and words marked with ® or ™ are registered trademarks or trademarks of Arm Limited (or its subsidiaries)
in the US and/or elsewhere. All rights reserved. Other brands and names mentioned in this document may be the trademarks of
their respective owners. Please follow Arm's trademark usage guidelines at http://www.arm.com/company/policies/trademarks.
Copyright © 2016-2018, 2020-2023 Arm Limited (or its affiliates). All rights reserved.
ARM IHI 0088F Copyright © 2016-2018, 2020-2023 Arm Limited or its affiliates. All rights reserved. iii
ID092723 Non-Confidential
AMBA SPECIFICATION LICENCE
THIS END USER LICENCE AGREEMENT ("LICENCE") IS A LEGAL AGREEMENT BETWEEN YOU (EITHER A
SINGLE INDIVIDUAL, OR SINGLE LEGAL ENTITY) AND ARM LIMITED ("ARM") FOR THE USE OF ARM'S
INTELLECTUAL PROPERTY (INCLUDING, WITHOUT LIMITATION, ANY COPYRIGHT) IN THE RELEVANT AMBA
SPECIFICATION ACCOMPANYING THIS LICENCE. ARM LICENSES THE RELEVANT AMBA SPECIFICATION TO
YOU ON CONDITION THAT YOU ACCEPT ALL OF THE TERMS IN THIS LICENCE. BY CLICKING "I AGREE" OR
OTHERWISE USING OR COPYING THE RELEVANT AMBA SPECIFICATION YOU INDICATE THAT YOU AGREE TO
BE BOUND BY ALL THE TERMS OF THIS LICENCE.
"Subsidiary" means, if You are a single entity, any company the majority of whose voting shares is now or hereafter owned or
controlled, directly or indirectly, by You. A company shall be a Subsidiary only for the period during which such control exists.
1. Subject to the provisions of Clauses 2, 3 and 4, Arm hereby grants to LICENSEE a perpetual, non-exclusive,
non-transferable, royalty free, worldwide licence to:
(i) use and copy the relevant AMBA Specification for the purpose of developing and having developed products
that comply with the relevant AMBA Specification;
(ii) manufacture and have manufactured products which either: (a) have been created by or for LICENSEE under
the licence granted in Clause 1(i); or (b) incorporate a product(s) which has been created by a third party(s)
under a licence granted by Arm in Clause 1(i) of such third party's AMBA Specification Licence; and
(iii) offer to sell, sell, supply or otherwise distribute products which have either been (a) created by or for
LICENSEE under the licence granted in Clause 1(i); or (b) manufactured by or for LICENSEE under the
licence granted in Clause 1(ii).
2. LICENSEE hereby agrees that the licence granted in Clause 1 is subject to the following restrictions:
(i) where a product created under Clause 1(i) is an integrated circuit which includes a CPU then either: (a) such
CPU shall only be manufactured under licence from Arm; or (b) such CPU is neither substantially compliant
with nor marketed as being compliant with the Arm instruction sets licensed by Arm from time to time;
(ii) the licences granted in Clause 1(iii) shall not extend to any portion or function of a product that is not itself
compliant with part of the relevant AMBA Specification; and
(iii) no right is granted to LICENSEE to sublicense the rights granted to LICENSEE under this Agreement.
3. Except as specifically licensed in accordance with Clause 1, LICENSEE acquires no right, title or interest in any Arm
technology or any intellectual property embodied therein. In no event shall the licences granted in accordance with Clause
1 be construed as granting LICENSEE, expressly or by implication, estoppel or otherwise, a licence to use any Arm
technology except the relevant AMBA Specification.
6. No licence, express, implied or otherwise, is granted to LICENSEE, under the provisions of Clause 1, to use the Arm
tradename, or AMBA trademark in connection with the relevant AMBA Specification or any products based thereon.
Nothing in Clause 1 shall be construed as authority for LICENSEE to make any representations on behalf of Arm in respect
of the relevant AMBA Specification.
7. This Licence shall remain in force until terminated by you or by Arm. Without prejudice to any of its other rights if
LICENSEE is in breach of any of the terms and conditions of this Licence then Arm may terminate this Licence
immediately upon giving written notice to You. You may terminate this Licence at any time. Upon expiry or termination
iv Copyright © 2016-2018, 2020-2023 Arm Limited or its affiliates. All rights reserved. ARM IHI 0088F
Non-Confidential ID092723
of this Licence by You or by Arm LICENSEE shall stop using the relevant AMBA Specification and destroy all copies of
the relevant AMBA Specification in your possession together with all documentation and related materials. Upon expiry
or termination of this Licence, the provisions of clauses 6 and 7 shall survive.
8. The validity, construction and performance of this Agreement shall be governed by English Law.
Confidentiality Status
This document is Non-Confidential. The right to use, copy and disclose this document may be subject to license restrictions in
accordance with the terms of the agreement entered into by Arm and the party that Arm delivered this document to.
Product Status
Web Address
http://www.arm.com
ARM IHI 0088F Copyright © 2016-2018, 2020-2023 Arm Limited or its affiliates. All rights reserved. v
ID092723 Non-Confidential
vi Copyright © 2016-2018, 2020-2023 Arm Limited or its affiliates. All rights reserved. ARM IHI 0088F
Non-Confidential ID092723
Contents
AMBA DTI Protocol Specification
Preface
About this specification .............................................................................................. xii
Intended audience ....................................................................................... xii
Using this specification ................................................................................ xii
Conventions ................................................................................................. xii
Typographic conventions ............................................................................. xii
Signals ........................................................................................................ xiii
Numbers ..................................................................................................... xiii
Additional reading ..................................................................................................... xiv
Arm publications ......................................................................................... xiv
Other publications ....................................................................................... xiv
Feedback on this specification .................................................................................. xv
Inclusive language commitment .................................................................. xv
Chapter 1 Introduction
1.1 About DTI protocols ............................................................................................... 1-18
1.1.1 Protocol interaction .................................................................................. 1-18
1.1.2 Field references ....................................................................................... 1-19
1.2 DTI protocol specification terminology ................................................................... 1-20
ARM IHI 0088F Copyright © 2016-2018, 2020-2023 Arm Limited or its affiliates. All rights reserved. vii
ID092723 Non-Confidential
2.2 Managing DTI connections .................................................................................... 2-28
2.2.1 Channel states ......................................................................................... 2-28
2.2.2 Handshaking ............................................................................................ 2-28
2.2.3 Initialization and disconnection ................................................................ 2-30
2.2.4 Connecting multiple TBUs or PCIe RPs to a TCU ................................... 2-30
viii Copyright © 2016-2018, 2020-2023 Arm Limited or its affiliates. All rights reserved. ARM IHI 0088F
Non-Confidential ID092723
Chapter 5 Transport Layer
5.1 Introduction .......................................................................................................... 5-122
5.2 AXI4-Stream transport protocol ............................................................................ 5-123
5.2.1 AXI4-Stream signals .............................................................................. 5-123
5.2.2 Interleaving ............................................................................................ 5-124
5.2.3 Usage of the TID and TDEST signals .................................................... 5-124
Appendix A Pseudocode
A.1 Memory attributes ............................................................................................... A-126
A.1.1 Memory attribute types ......................................................................... A-126
A.1.2 Memory attribute decoding ................................................................... A-127
A.1.3 Memory attribute processing ................................................................. A-128
A.2 Cache lookup ...................................................................................................... A-132
A.2.1 MatchTranslation .................................................................................. A-132
A.2.2 MatchFault ............................................................................................ A-133
A.2.3 PermissionCheck .................................................................................. A-133
A.2.4 Shared pseudocode .............................................................................. A-134
Appendix B Revisions
ARM IHI 0088F Copyright © 2016-2018, 2020-2023 Arm Limited or its affiliates. All rights reserved. ix
ID092723 Non-Confidential
x Copyright © 2016-2018, 2020-2023 Arm Limited or its affiliates. All rights reserved. ARM IHI 0088F
Non-Confidential ID092723
Preface
This preface introduces the AMBA Distributed Translation Interface protocol specification.
ARM IHI 0088F Copyright © 2016-2018, 2020-2023 Arm Limited or its affiliates. All rights reserved. xi
ID092723 Non-Confidential
Preface
About this specification
Intended audience
This specification is intended for the following audiences:
• Root Complex designers implementing ATS functionality
• Designers of components implementing TBU functionality
Chapter 1 Introduction
This chapter introduces the DTI protocol.
Appendix A Pseudocode
This appendix provides example implementations of the requirements specified in this
specification.
Appendix B Revisions
Information about the technical changes between released issues of this specification.
Conventions
The following sections describe conventions that this specification can use:
• Typographic conventions
• Signals on page xiii
• Numbers on page xiii
Typographic conventions
The typographical conventions are:
italic Highlights important notes, introduces special terminology, and indicates internal
cross-references and citations.
bold Denotes signal names, and is used for terms in descriptive lists, where appropriate.
monospace Used for assembler syntax descriptions, pseudocode, and source code examples.
Also used in the main text for instruction mnemonics and for references to other items
appearing in assembler syntax descriptions, pseudocode, and source code examples.
xii Copyright © 2016-2018, 2020-2023 Arm Limited or its affiliates. All rights reserved. ARM IHI 0088F
Non-Confidential ID092723
Preface
About this specification
SMALL CAPITALS Used for a few terms that have specific technical meanings.
Signals
The signal conventions are:
Signal level The level of an asserted signal depends on whether the signal is active-HIGH or
active-LOW. Asserted means:
• HIGH for active-HIGH signals
• LOW for active-LOW signals
Lowercase x At the second letter of a signal name denotes a collective term for both Read and Write.
Numbers
Numbers are normally written in decimal. Binary numbers are preceded by 0b, and hexadecimal numbers by 0x. In
both cases, the prefix and the associated value are written in a monospace font, for example, 0xFFFF0000.
ARM IHI 0088F Copyright © 2016-2018, 2020-2023 Arm Limited or its affiliates. All rights reserved. xiii
ID092723 Non-Confidential
Preface
Additional reading
Additional reading
This section lists relevant publications from Arm. See Arm Developer, https://developer.arm.com/documentation
for access to Arm documentation.
Arm publications
• AMBA® LTI Protocol Specification (ARM IHI 0089)
• Arm® System Memory Management Unit Architecture Specification SMMU architecture version 3 (ARM IHI
0070)
• AMBA® AXI-Stream Protocol Specification (ARM IHI 0051)
Other publications
• PCI Express Base Specification, Revision 6, PCI-SIG
• Compute Express Link Specification, Compute Express LinkTM Consortium, Inc., Revision 1
xiv Copyright © 2016-2018, 2020-2023 Arm Limited or its affiliates. All rights reserved. ARM IHI 0088F
Non-Confidential ID092723
Preface
Feedback on this specification
Note
Arm tests PDFs only in Adobe Acrobat and Acrobat Reader, and cannot guarantee the appearance or behavior of
any document when viewed with any other PDF reader.
Arm strives to lead the industry and create change. Previous issues of this document included terms that can be
offensive. We have replaced these terms.
ARM IHI 0088F Copyright © 2016-2018, 2020-2023 Arm Limited or its affiliates. All rights reserved. xv
ID092723 Non-Confidential
Preface
Feedback on this specification
xvi Copyright © 2016-2018, 2020-2023 Arm Limited or its affiliates. All rights reserved. ARM IHI 0088F
Non-Confidential ID092723
Chapter 1
Introduction
ARM IHI 0088F Copyright © 2016-2018, 2020-2023 Arm Limited or its affiliates. All rights reserved. 1-17
ID092723 Non-Confidential
1 Introduction
1.1 About DTI protocols
The DTI protocol is used by implementations of the Arm® System MMUv3 (SMMUv3) Architecture Specification.
An SMMUv3 implementation that is built using the DTI interface consists of the following components:
• A Translation Control Unit (TCU) that performs translation table walks and implements the SMMUv3
programmers' model.
• At least one Translation Buffer Unit (TBU). The TBU intercepts transactions in need of translation and
provides translations for them. The TBU requests translations from the TCU and caches those translations
for use by other transactions.
The TCU communicates with the TBU to invalidate cached translations when necessary.
• A PCI Express (PCIe) Root Port with Address Translation Services (ATS) support. For more information, see
the PCI Express Base Specification. When PCIe ATS functionality is required, this component communicates
directly with the TCU to retrieve ATS translations, and then uses a TBU to:
— Translate transactions that have not already been translated using ATS.
— Perform stage 2 translation for transactions that have been subject to stage 1 translation using ATS.
— Ensure that only trusted PCIe endpoints can issue transactions with ATS translations, by performing
security checks on ATS translated traffic.
• A DTI interconnect that manages the communication between TBUs and the TCU, and between PCIe Root
Ports implementing ATS and the TCU.
These two protocols are collectively referred to as the DTI protocol. There are currently three versions of each
protocol, which are named as follows:
Note
This specification describes only DTI-TBUv3, DTI-ATSv1, DTI-ATSv2, and DTI-ATSv3. It does not describe
DTI-TBUv1 and DTI-TBUv2. For information on DTI-TBUv1 and DTI-TBUv2, see Arm Developer,
https://developer.arm.com/documentation.
Components using the SMMU must provide the correct StreamID and SubstreamID. For ATS translated
transactions, a PCIe Root Port must provide additional information.
Figure 1-1 on page 1-19 shows an example SMMU system that implements DTI.
1-18 Copyright © 2016-2018, 2020-2023 Arm Limited or its affiliates. All rights reserved. ARM IHI 0088F
Non-Confidential ID092723
1 Introduction
1.1 About DTI protocols
DTI-TBU DTI-TBU
DTI interconnect
DTI
Translated Translated
transactions transactions
TCU
Memory interconnect
Transactions
It is possible for a device to implement its own TBU functionality. This allows the following behavior:
• A device can incorporate advanced or specialized prefetching or translation caching requirements that cannot
be met by a general-purpose TBU design.
• A device that can require a fully coherent connection to the memory interconnect and require very low
latency translation. For fully coherent operations, all caches in the device must be tagged with physical
addresses. This requires that translation is performed before the first level of caching. In such systems, the
translation must be fast and is normally tightly integrated into the design of the device.
ARM IHI 0088F Copyright © 2016-2018, 2020-2023 Arm Limited or its affiliates. All rights reserved. 1-19
ID092723 Non-Confidential
1 Introduction
1.2 DTI protocol specification terminology
ASID
Address Space ID, distinguishing TLB entries for separate address spaces. For example, address
spaces of different PE processes are distinguished by ASID.
ATS
PCI Express term, Address Translation Services, which are provided for remote endpoint TLBs.
Downstream
A direction of information flow where the information is flowing away from the TBU or the Root
Complex.
DTI-ATSv1
Describes characteristics of DTI-ATS version 1.
DTI-ATSv2
Describes characteristics of DTI-ATS version 2.
DTI-ATSv3
Describes characteristics of DTI-ATS version 3.
DTI-TBUv1
Describes characteristics of DTI-TBU version 1.
DTI-TBUv2
Describes characteristics of DTI-TBU version 2.
DTI-TBUv3
Describes characteristics of DTI-TBU version 3.
E2H
EL2 Host mode. The Virtualization Host Extensions, introduced in the Arm Architecture Reference
Manual for A-profile architecture, Issue B, extend the EL2 translation regime providing
ASID-tagged translations.
Endpoint
A PCI Express function, which is used in the context of a device that is a client of the SMMU.
HTTU
Hardware Translation Table Update. The act of updating the Access flag or Dirty state of a page in
a given TTD that is automatically done in hardware on an access or write to the corresponding page.
IMPLEMENTATION DEFINED
Means that the behavior is not architecturally defined, but must be defined and documented by
individual implementations.
IPA
Intermediate Physical Address.
PA
Physical Address.
PASID
PCI Express term: Process Address Space ID, an endpoint-local ID. There might be many distinct
uses of a specific PASID value in a system.
1-20 Copyright © 2016-2018, 2020-2023 Arm Limited or its affiliates. All rights reserved. ARM IHI 0088F
Non-Confidential ID092723
1 Introduction
1.2 DTI protocol specification terminology
PCI
Peripheral Component Interconnect specification.
PCIe
PCI Express.
PCIe RP
A port on a PCIe Root Complex.
PRI
ATS Page Request Interface mechanism.
SMMU
System MMU. Unless otherwise specified, this term is used to mean SMMUv3.
StreamWorld
SMMUv3 translations have a StreamWorld property that denotes the translation regime and is
directly equivalent to an Exception level on a PE.
StreamID
A StreamID uniquely identifies a stream of transactions that can originate from different devices,
but are associated with the same context.
SubstreamID
A SubstreamID might optionally be provided to an SMMU implementing stage 1 translation.
The SubstreamID differentiates streams of traffic originating from the same logical block to
associate different application address translations to each.
Upstream
A direction of information flow where the information is flowing towards the TBU or Root
Complex.
VA
Virtual address.
VMID
Virtual Machine ID, distinguishing TLB entries for addresses from separate virtual machines.
ARM IHI 0088F Copyright © 2016-2018, 2020-2023 Arm Limited or its affiliates. All rights reserved. 1-21
ID092723 Non-Confidential
1 Introduction
1.2 DTI protocol specification terminology
1-22 Copyright © 2016-2018, 2020-2023 Arm Limited or its affiliates. All rights reserved. ARM IHI 0088F
Non-Confidential ID092723
Chapter 2
DTI Protocol Overview
This chapter is an overview of the DTI protocol. It contains the following sections:
• DTI protocol messages on page 2-24
• Managing DTI connections on page 2-28
Note
This issue includes only DTI-TBUv3, DTI-ATSv1, DTI-ATSv2, and DTI-ATSv3 protocols. It does not describe
DTI-TBUv1 and DTI-TBUv2 protocols. For information on DTI-TBUv1 and DTI-TBUv2, see Arm Developer,
https://developer.arm.com/documentation.
ARM IHI 0088F Copyright © 2016-2018, 2020-2023 Arm Limited or its affiliates. All rights reserved. 2-23
ID092723 Non-Confidential
2 DTI Protocol Overview
2.1 DTI protocol messages
The four least significant bits of every message are used to encode the message type.
Some message types include a protocol field. In that case, the message is identified by the combination of its
message type and protocol field values.
The message type encodings are defined independently for upstream and downstream messages.
2-24 Copyright © 2016-2018, 2020-2023 Arm Limited or its affiliates. All rights reserved. ARM IHI 0088F
Non-Confidential ID092723
2 DTI Protocol Overview
2.1 DTI protocol messages
DTI_TBU_REG_RDATA 0x7 64
IMPLEMENTATION - 0xE -
DEFINED
- 0xF -
DTI_TBU_REG_READ 0x7 32
IMPLEMENTATION - 0xE -
DEFINED
- 0xF -
ARM IHI 0088F Copyright © 2016-2018, 2020-2023 Arm Limited or its affiliates. All rights reserved. 2-25
ID092723 Non-Confidential
2 DTI Protocol Overview
2.1 DTI protocol messages
DTI_ATS_SYNC_ACK 0xD 8
DTI_ATS_PAGE_RESPACKb 0x9 8
IMPLEMENTATION - 0xE -
DEFINED
- 0xF -
a. DTI-ATSv3 only.
b. DTI-ATSv2 onwards.
DTI_ATS_PAGE_RESP 0x9 96
IMPLEMENTATION - 0xE -
DEFINED
- 0xF -
2-26 Copyright © 2016-2018, 2020-2023 Arm Limited or its affiliates. All rights reserved. ARM IHI 0088F
Non-Confidential ID092723
2 DTI Protocol Overview
2.1 DTI protocol messages
IMPLEMENTATION DEFINED messages must only be exchanged between components that are designed to expect
them when in permitted channel states. See Channel states on page 2-28.
Translation tokens
Used in translation requests to limit the number of outstanding translation requests.
Invalidation tokens
Used in invalidation and synchronization messages to limit the number of outstanding invalidation
requests.
Request messages consume tokens and response messages return them. See Flow control result section of respective
message. If a response message is received over multiple cycles, then the token is only returned when the complete
message has been received.
IDs are used to track some outstanding messages. A new request message cannot reuse an ID until a response
message with that ID is received. If a response message is received over multiple cycles when the width of DTI
interface is narrower than width of the response message, then the ID can only be reused when the complete message
has been received. If a request message has multiple response messages associated with it, then the ID can only be
reused when the final response message has been received. More details can be found in the Flow control result
section of each message.
The recipient of a message with Reserved fields must ignore these fields. It is recommended that the sender drive a
Reserved field to 0 if it is described as SBZ, and 1 if it is described as SBO.
These fields are treated as Reserved by components that do not require them.
ARM IHI 0088F Copyright © 2016-2018, 2020-2023 Arm Limited or its affiliates. All rights reserved. 2-27
ID092723 Non-Confidential
2 DTI Protocol Overview
2.2 Managing DTI connections
DISCONNECTED
The TBU or PCIe RP might be powered down. A TCU must always be able to accept a Connect
Request whenever a TBU or PCIe RP is powered up and able to send one. The method that is used
to meet this requirement is outside the scope of this specification.
REQ_CONNECT
The TBU or PCIe RP has issued a Connect Request. The TCU must provide a handshaking response
to either establish or reject the connection.
CONNECTED
The channel is connected.
REQ_DISCONNECT
The TBU or PCIe RP has issued a Disconnect Request. The TCU issues a Disconnect Accept in
response.
2.2.2 Handshaking
On power up, the channel is initially in the DISCONNECTED state. Figure 2-1 on page 2-29 shows how the
channel state changes in response to connect and disconnect messages.
2-28 Copyright © 2016-2018, 2020-2023 Arm Limited or its affiliates. All rights reserved. ARM IHI 0088F
Non-Confidential ID092723
2 DTI Protocol Overview
2.2 Managing DTI connections
DISCONNECTED
DISCONNECTED
Conne
ct Req
uest
REQ_CONNECT
REQ_CONNECT
pt
ct Acce
Conne
CONNECTED
CONNECTED
Discon
nect R
equest
REQ_DISCONNECT
REQ_DISCONNECT
cept
nect Ac
Discon
DISCONNECTED
DISCONNECTED
DISCONNECTED
DISCONNECTED
Conne
ct Req
uest
REQ_CONNECT
REQ_CONNECT
y
ct Den
Conne
DISCONNECTED
DISCONNECTED
A Connect Deny indicates a system failure, for example, due to a badly configured system. Subsequent attempts to
connect are also likely to be denied until there is a system configuration change.
ARM IHI 0088F Copyright © 2016-2018, 2020-2023 Arm Limited or its affiliates. All rights reserved. 2-29
ID092723 Non-Confidential
2 DTI Protocol Overview
2.2 Managing DTI connections
Table 2-6 describes the connection or disconnection messages that are permitted in each channel state.
CONNECTED Any, subject to the protocol rules Any, subject to the protocol rules
• Any outstanding invalidation or synchronization responses are not returned. All invalidation requests are
considered to be completed when the TBU or PCIe RP enters DISCONNECTED state and invalidates its
caches.
• The TBU or PCIe RP must continue to accept protocol-appropriate requests from the TCU. No response is
given to the requests and they can be ignored.
The DTI channel must not be disconnected while ATS is enabled in any PCIe Endpoint. DTI-ATS has no register
messages.
Therefore:
• If a TCU is required to send a message to multiple TBUs or PCIe RPs, then it must issue multiple messages.
• Each channel has its own flow control tokens.
• Outstanding message IDs, for example DTI_TBU_TRANS_REQ.TRANSLATION_ID, are specific to a
channel. Multiple channels can have messages outstanding with the same ID at the same time.
• A DTI channel has a single connection state. It cannot be connected as both DTI-TBU and DTI-ATS at the
same time.
2-30 Copyright © 2016-2018, 2020-2023 Arm Limited or its affiliates. All rights reserved. ARM IHI 0088F
Non-Confidential ID092723
Chapter 3
DTI-TBU Messages
ARM IHI 0088F Copyright © 2016-2018, 2020-2023 Arm Limited or its affiliates. All rights reserved. 3-31
ID092723 Non-Confidential
3 DTI-TBU Messages
3.1 Connection and disconnection message group
However, in practice it is normal for all TBUs connected to a TCU to use the same version of DTI-TBU as TCU
because the SMMU architecture does not permit some TBUs to support features that other TBUs do not.
SMMUv3.2 requires DTI-TBUv2 or later. SMMU extensions for RME Device Assignment require DTI-TBUv3 or
later.
3.1.1 DTI_TBU_CONDIS_REQ
The DTI_TBU_CONDIS_REQ message is used to initiate a connection or disconnection handshake.
Description
Connection state change request.
Source
TBU
Usage constraints
The TBU can only send a disconnect request when:
• The channel is in the CONNECTED state.
• There are no outstanding translation requests.
• The conditions for completing any future invalidation and synchronization are met. In
practice, the result is that all downstream transactions must be complete.
The TBU can only send a connect request when the channel is in the DISCONNECTED state.
Field descriptions
The DTI_TBU_CONDIS_REQ bit assignments are:
7 6 5 4 3 2 1 0 LSB
TOK_TRANS_REQ[11:8] STAGES SPD SUP_REG 24
TOK_INV_GNT TOK_TRANS_REQ[7:4] 16
TOK_TRANS_REQ[3:0] VERSION 8
IMP DEF Reserved PROTOCOL STATE M_MSG_TYPE 0
3-32 Copyright © 2016-2018, 2020-2023 Arm Limited or its affiliates. All rights reserved. ARM IHI 0088F
Non-Confidential ID092723
3 DTI-TBU Messages
3.1 Connection and disconnection message group
The number of translation tokens requested is equal to the value of this field
plus one.
STAGES, bits [27:26]
This field indicates the security stages. STAGES[1:0] is encoded as follows:
0b00 M: SMMUv3 defined translation stages only.
0b01 MG: SMMUv3 defined translation stages, plus Granule Protection Checks
(GPC).
0b10 G: GPC only.
0b11 Reserved.
When STATE is 0, this field is ignored.
SPD, bit [25]
Same Power Domain (SPD). This extension is micro-architectural to make it easier to
integrate power control.
0 The TBU and TCU are in different power domains.
1 The TBU and TCU are in the same power domain.
When STATE is 0, this field is ignored.
Note
This field is Reserved in versions prior to DTI-TBUv3 and will be ignored by TCUs that
do not support DTI-TBUv3.
A TBU can request any protocol version it supports. A DTI-TBU TCU must process
requests for all protocol versions, including those not yet defined.
The DTI_TBU_CONDIS_ACK message indicates the protocol version to use.
For the version of DTI-TBU described in this specification, VERSION must be
DTI-TBUv3.
ARM IHI 0088F Copyright © 2016-2018, 2020-2023 Arm Limited or its affiliates. All rights reserved. 3-33
ID092723 Non-Confidential
3 DTI-TBU Messages
3.1 Connection and disconnection message group
Bit [6]
Reserved, SBZ.
PROTOCOL, bit [5]
This bit identifies the protocol that is used by this TBU.
0 DTI-TBU.
This bit must be 0.
STATE, bit [4]
This bit identifies the new channel state requested.
0 Disconnect request.
1 Connect request.
A Disconnect request can only be issued when the channel is in the CONNECTED state.
A Connect request can only be issued when the channel is in the DISCONNECTED
state.
M_MSG_TYPE, bits [3:0]
This field identifies the message type. The value of this field is taken from the list of
encodings for downstream messages, see DTI-TBU protocol downstream messages on
page 2-25.
0b0000 DTI_TBU_CONDIS_REQ.
3.1.2 DTI_TBU_CONDIS_ACK
The DTI_TBU_CONDIS_ACK message is used to accept or deny a request as part of the connection or
disconnection handshake process.
Description
A connection state change acknowledgment.
Source
TCU
Usage constraints
The TBU must have previously issued an unacknowledged DTI_TBU_CONDIS_REQ message.
Field descriptions
The DTI_TBU_CONDIS_ACK bit assignments are:
7 6 5 4 3 2 1 0 LSB
TOK_TRANS_GNT[11:8] Reserved OAS[3] 24
OAS[2:0] Reserved TOK_TRANS_GNT[7:4] 16
TOK_TRANS_GNT[3:0] VERSION 8
IMP DEF Reserved STATE S_MSG_TYPE 0
3-34 Copyright © 2016-2018, 2020-2023 Arm Limited or its affiliates. All rights reserved. ARM IHI 0088F
Non-Confidential ID092723
3 DTI-TBU Messages
3.1 Connection and disconnection message group
Bits [6:5]
Reserved, SBZ.
STATE, bit [4]
Identifies the new state. The possible values of this bit are:
0 DISCONNECTED.
1 CONNECTED.
When the value of STATE in the unacknowledged DTI_TBU_CONDIS_REQ message
is 0, the value of this bit must be 0.
ARM IHI 0088F Copyright © 2016-2018, 2020-2023 Arm Limited or its affiliates. All rights reserved. 3-35
ID092723 Non-Confidential
3 DTI-TBU Messages
3.1 Connection and disconnection message group
3-36 Copyright © 2016-2018, 2020-2023 Arm Limited or its affiliates. All rights reserved. ARM IHI 0088F
Non-Confidential ID092723
3 DTI-TBU Messages
3.2 Translation request message group
Note
Unless the description indicates otherwise, behavior and reference to DTI_TBU_TRANS_RESP and
DTI_TBU_TRANS_RESPEX messages are equivalent.
3.2.1 DTI_TBU_TRANS_REQ
The DTI_TBU_TRANS_REQ message is used to initiate a translation request.
Description
A translation request.
Source
TBU
Usage constraints
The TBU must have at least one translation token.
ARM IHI 0088F Copyright © 2016-2018, 2020-2023 Arm Limited or its affiliates. All rights reserved. 3-37
ID092723 Non-Confidential
3 DTI-TBU Messages
3.2 Translation request message group
Field descriptions
The DTI_TBU_TRANS_REQ bit assignments are:
7 6 5 4 3 2 1 0 LSB
152
144
136
128
IA
120
112
104
96
88
SSID[19:4]
80
SSID[3:0] IMP DEF 72
FLOW[1] Reserved MMUV REQEX Reserved 64
56
48
SID
40
32
TRANSLATION_ID[11:8] IDENT SEC_SID[1] NSE NS 24
PERM[1] FLOW[0] SSV SEC_SID[0] PERM[0] InD PnU PROTOCOL 16
TRANSLATION_ID[7: 0] 8
QOS M_MSG_TYPE 0
3-38 Copyright © 2016-2018, 2020-2023 Arm Limited or its affiliates. All rights reserved. ARM IHI 0088F
Non-Confidential ID092723
3 DTI-TBU Messages
3.2 Translation request message group
Rules dependent on the value of fields that are Reserved when MMUV=0, are valid only
when MMUV=1.
REQEX, bit [68]
This field controls whether the TCU can return a DTI_TBU_TRANS_RESPEX
response.
When REQEX=0, the translation response cannot be DTI_TBU_TRANS_RESPEX.
When REQEX=1, the translation response can be DTI_TBU_TRANS_RESPEX.
The response is never required by DTI to be DTI_TBU_TRANS_RESPEX. It can
always be DTI_TBU_TRANS_RESP or DTI_TBU_TRANS_FAULT.
Bits [67:64]
Reserved, SBZ.
SID, bits [63:32]
This field indicates the StreamID value that is used for the translation.
When MMUV is 0, SID is Reserved, SBZ.
TRANSLATION_ID[11:8], bits [31:28]
TRANSLATION_ID[7:0] is bits [15:8].
This field gives the identification number of this translation.
The value of this field must not be in use by any translation request that has not yet
received a DTI_TBU_TRANS_RESP or DTI_TBU_TRANS_FAULT with
FAULT_TYPE != TranslationStall response.
Any 12-bit translation ID can be used, if the maximum number of outstanding
translation requests is not exceeded.
IDENT, bit [27]
This field indicates whether an identity translation is required.
When IDENT is 1, DTI_TBU_TRANS_RESP.OA must always be equal to IA.
The encodings of IDENT are as follows:
0 Identity translation is not required.
1 Identity translation is required.
ARM IHI 0088F Copyright © 2016-2018, 2020-2023 Arm Limited or its affiliates. All rights reserved. 3-39
ID092723 Non-Confidential
3 DTI-TBU Messages
3.2 Translation request message group
3-40 Copyright © 2016-2018, 2020-2023 Arm Limited or its affiliates. All rights reserved. ARM IHI 0088F
Non-Confidential ID092723
3 DTI-TBU Messages
3.2 Translation request message group
3.2.2 DTI_TBU_TRANS_RESP
The DTI_TBU_TRANS_RESP message is used to respond to a successful translation request.
The TCU can only return this message when permission is granted for the transaction that is described in the
translation request. If permission is not granted, a DTI_TBU_TRANS_FAULT response must be issued. For more
information, see Faulting expressions of the translation request message on page 3-57.
Description
A DTI translation response.
Source
TCU
Usage constraints
The TBU must have previously issued a translation request that has not yet generated either a
translation response or a fault message with FAULT_TYPE != TranslationStall.
ARM IHI 0088F Copyright © 2016-2018, 2020-2023 Arm Limited or its affiliates. All rights reserved. 3-41
ID092723 Non-Confidential
3 DTI-TBU Messages
3.2 Translation request message group
Field descriptions
The DTI_TBU_TRANS_RESP bit assignments are:
7 6 5 4 3 2 1 0 LSB
IMP DEF PARTID[3:0] 152
PARTID[7:4] OA[51:48] 144
136
128
OA[47:16] 120
112
OA[15:12] PARTID[8] PMG SH 104
ATTR 96
HWATTR Reserved MPAMNSE NSE 88
INVAL_RNG TRANS_RNG 80
TRANSLATION_ID[11:8] COMB_ALLOC COMB_SH MPAMNS GLOBAL 72
ALLOW_PX or
TBI NS ALLOW_NSX ALLOW_PW ALLOW_PR ALLOW_UX ALLOW_UW ALLOW_UR 64
56
ASID or ATTR_OVR
48
40
VMID 32
ALLOCCFG COMB_MT ASET INSTCFG 24
PRIVCFG DCP DRE STRW or BP_TYPE BYPASS CONT[3] 16
CONT[2:0] DO_NOT_CACHE TRANSLATION_ID[7:4] 8
TRANSLATION_ID[3:0] S_MSG_TYPE 0
3-42 Copyright © 2016-2018, 2020-2023 Arm Limited or its affiliates. All rights reserved. ARM IHI 0088F
Non-Confidential ID092723
3 DTI-TBU Messages
3.2 Translation request message group
Note
This value represents the Shareability attribute that is stored in the translation tables. In
some cases, the resulting Shareability of the translation might be different from the
value that is shown here. For more information, see Consistency check on combination
of translation attributes on page 3-62.
Where R is the Inner Read-Allocate Policy and W is the Inner Write-Allocate Policy.
The R and W bits have the following encoding:
0 Do not allocate.
1 Allocate.
When the value of BYPASS is 1, this field is Reserved, SBZ.
HWATTR, bits [95:92]
This field gives IMPLEMENTATION DEFINED hardware attributes from the translation
tables. These are otherwise known as Page-Based Hardware Attributes (PBHA).
Bits that are not enabled for use by hardware must be 0.
If a TCU does not support this feature, it can return 0 for this field.
ARM IHI 0088F Copyright © 2016-2018, 2020-2023 Arm Limited or its affiliates. All rights reserved. 3-43
ID092723 Non-Confidential
3 DTI-TBU Messages
3.2 Translation request message group
3-44 Copyright © 2016-2018, 2020-2023 Arm Limited or its affiliates. All rights reserved. ARM IHI 0088F
Non-Confidential ID092723
3 DTI-TBU Messages
3.2 Translation request message group
0b1011 512GB.
0b1000 4TB.
0b1111 The full address range provided in
DTI_TBU_CONDIS_ACK.OAS.
All other values are Reserved.
When BYPASS is 0, TRANS_RNG must not be 0b1111.
When DTI_TBU_CONDIS_REQ.STAGES is M and
DTI_TBU_TRANS_RESP.BYPASS is 1, DTI_TBU_TRANS_RESP.TRANS_RNG
must be 0b1111.
A cache entry matches future transactions irrespective of input PAS if
DTI_TBU_TRANS_RESP.TRANS_RNG == 0b1111, and
DTI_TBU_TRANS_RESP.BP_TYPE == GlobalBypass.
A cache entry matches future transactions with the same input PAS as
DTI_TBU_TRANS_REQ.{NSE,NS} if either of the following is true:
• DTI_TBU_TRANS_RESP.TRANS_RNG != 0b1111.
• DTI_TBU_TRANS_RESP.BYPASS == 1 and
DTI_TBU_TRANS_RESP.BP_TYPE == StreamBypass.
This field must not be greater than the size indicated by the OAS field of the
DTI_TBU_CONDIS_ACK message received during the connecting sequence. For
example, if the value of the OAS field is 4GB, this field must indicate a range of 1GB
or less.
TRANSLATION_ID [11:8], bits [79:76]
This field gives the identification number for the translation. This field must have a
value corresponding to an outstanding translation request.
COMB_ALLOC, bit [75]
This field indicates how the translation allocation hints should be handled:
0 The allocation hints in the ATTR field override the transaction attributes.
1 The allocation hints in the ATTR field are combined with the transaction
attributes.
When BYPASS is 0 and STRW is EL1_S2, COMB_ALLOC must be 1.
When BYPASS is 1, COMB_ALLOC is Reserved, SBZ.
For more information, see Calculating transaction attributes on page 3-57.
COMB_SH, bit [74]
This field indicates how the translation Shareability should be handled:
0 The Shareability in the SH field overrides the transaction attributes.
1 The Shareability in the SH field is combined with the transaction attributes.
When BYPASS is 0 and STRW is EL1, EL2, or EL3, COMB_SH must be 0.
When BYPASS is 0 and STRW is EL1_S2, COMB_SH must be 1.
When BYPASS is 1, COMB_SH is Reserved, SBZ.
For more information, see Calculating transaction attributes on page 3-57.
MPAMNS, bit [73]
{MPAMNSE, MPAMNS} indicates the PARTID set. The encodings of {MPAMNSE,
MPAMNS} are as follows:
0b00 Secure.
0b01 Non-secure.
0b10 Root.
0b11 Realm.
When MMUV is 0, {MPAMNSE,MPAMNS} must match
DTI_TBU_TRANS_REQ.{NSE, NS}.
When MMUV is 1 and DTI_TBU_TRANS_REQ.SEC_SID is Non-secure,
{MPAMNSE,MPAMNS} must be Non-secure.
ARM IHI 0088F Copyright © 2016-2018, 2020-2023 Arm Limited or its affiliates. All rights reserved. 3-45
ID092723 Non-Confidential
3 DTI-TBU Messages
3.2 Translation request message group
3-46 Copyright © 2016-2018, 2020-2023 Arm Limited or its affiliates. All rights reserved. ARM IHI 0088F
Non-Confidential ID092723
3 DTI-TBU Messages
3.2 Translation request message group
ARM IHI 0088F Copyright © 2016-2018, 2020-2023 Arm Limited or its affiliates. All rights reserved. 3-47
ID092723 Non-Confidential
3 DTI-TBU Messages
3.2 Translation request message group
1 Permitted.
When the value of STRW is EL3, this bit must be equal to the value of ALLOW_PR.
When BYPASS is 1, this field is Reserved, SBZ.
It is expected that TCU should drive this field to 1 if the permission is granted by the
translation.
ASID/ATTR_OVR, bits [63:48]
This field is ASID when the value of BYPASS is 0, and the value of STRW is not
EL1-S2.
Note
When the ASID field is valid, stage 1 translation is enabled, which overrides the
incoming attributes. Therefore, the ATTR_OVR field is unnecessary when the ASID
field is valid.
This field is ATTR_OVR when either of the following conditions are met:
• The value of BYPASS is 1.
• The value of BYPASS is 0 and the value of STRW is EL1-S2.
ASID
This field holds the ASID to be used for stage 1 translation.
When the value of STRW is EL3, this field must be 0.
ATTR_OVR
This field is used to override the incoming attributes.
When the value of FLOW is ATST in the DTI_TBU_TRANS_REQ
message, ATTR_OVR.MTCFG must be 0 and ATTR_OVR.SHCFG must
be 0b01. The effect of this encoding is to cause the incoming attributes to be
used, as stage 1 translation has already been performed.
This field might be combined with the ATTR and SH field to give different
values for the attributes of this translation. For more information about this
and the subfields of this field, see Calculating transaction attributes on
page 3-57.
When the value of MTCFG is 0, the MemAttr component of this field is
ignored.
When MMUV is 0, ATTR_OVR is Reserved, SBZ. The corresponding
fields all behave according to the Use Incoming encoding.
VMID, bits [47:32]
This field indicates the VMID value that is used for the translation.
When BYPASS is 0 and the value of STRW is either EL2 or EL3, this field must be 0.
When BYPASS is 1, this field is Reserved, SBZ.
ALLOCCFG, bits [31:28]
This field indicates the override for the allocation hints of incoming transactions.
For the encoding and the effects of this field Calculating transaction attributes on
page 3-57.
When MMUV is 0, ALLOCCFG is Reserved, SBZ. The corresponding fields all behave
according to the Use Incoming encoding.
COMB_MT, bit [27]
This field indicates how the translation memory type and Cacheability should be
handled.
0 The memory type and Cacheability in the ATTR field override the
transaction attributes.
1 The memory type and Cacheability in the ATTR field are combined with the
transaction attributes.
When BYPASS is 1, COMB_MT is Reserved, SBZ.
3-48 Copyright © 2016-2018, 2020-2023 Arm Limited or its affiliates. All rights reserved. ARM IHI 0088F
Non-Confidential ID092723
3 DTI-TBU Messages
3.2 Translation request message group
When BYPASS is 0 and STRW is EL1, EL2, or EL3, COMB_MT must be 0. For more
information, see Calculating transaction attributes on page 3-57.
ASET, bit [26]
This bit indicates the Shareability of the ASID set.
0 Shared set.
1 Non-shared set.
Note
This field is still valid when the ASID value is not valid.
ARM IHI 0088F Copyright © 2016-2018, 2020-2023 Arm Limited or its affiliates. All rights reserved. 3-49
ID092723 Non-Confidential
3 DTI-TBU Messages
3.2 Translation request message group
If a destructive read is not permitted, and reads are permitted, then the read must be
converted into a non-destructive read.
For example, a MakeInvalid transaction must be converted into a CleanInvalid
transaction and a ReadOnceMakeInvalid transaction must be converted into a
ReadOnceCleanInvalid or ReadOnce transaction. There is no communication with the
TCU to indicate that this conversion has occurred.
When the value of BYPASS is 1, this field is Reserved, SBZ, and destructive reads are
permitted.
STRW, bits [19:18] when BYPASS=0
These bits indicate the SMMU StreamWorld, which is the Exception level that is used
by the translation context.
0b00 EL1.
0b01 EL1-S2.
0b10 EL2.
0b11 EL3.
The permitted encodings of this field depend on the values of the SEC_SID and FLOW
fields in the translation request:
• When DTI_TBU_TRANS_REQ.SEC_SID is Non-secure or Realm, this field is
not permitted to be EL3.
• When the value of FLOW is ATST, this field must be EL1-S2.
• When the value of SSV is 1, this field must not be EL1-S2.
• When STAGES is MG, DTI_TBU_TRANS_RESP.STRW must not be EL3.
BP_TYPE, bits [19:18] when BYPASS=1
This field has the following encodings:
• 0b00: Reserved.
• 0b01: GlobalBypass:
— Not permitted if REQ.SEC_SID == Realm.
— The translation can be used for future transactions with the same values of
REQ.SEC_SID and REQ.FLOW==ATST.
• 0b10: StreamBypass:
— Not permitted when REQ.SSV == 1.
— The translation can be used for future transactions with the same values of
REQ.SEC_SID, REQ.SSV, and REQ.FLOW==ATST.
• 0b11: Reserved.
3-50 Copyright © 2016-2018, 2020-2023 Arm Limited or its affiliates. All rights reserved. ARM IHI 0088F
Non-Confidential ID092723
3 DTI-TBU Messages
3.2 Translation request message group
All Bypass translations are subject to the address range defined in RESP.TRANS_RNG.
Table 3-2 shows the fields of the translation request that must match for this translation
to apply to future transactions.
ARM IHI 0088F Copyright © 2016-2018, 2020-2023 Arm Limited or its affiliates. All rights reserved. 3-51
ID092723 Non-Confidential
3 DTI-TBU Messages
3.2 Translation request message group
EL3 - Yes -
3-52 Copyright © 2016-2018, 2020-2023 Arm Limited or its affiliates. All rights reserved. ARM IHI 0088F
Non-Confidential ID092723
3 DTI-TBU Messages
3.2 Translation request message group
Note
A TBU can use this field to simplify invalidation, by not caching any translations that
have a value of 1 for this field.
This information is used when determining the scope of invalidation operations. NSCFG is not used by cache
lookups during translation.
- Secure Secure
- Non-secure Non-secure
3.2.3 DTI_TBU_TRANS_RESPEX
DTI_TBU_TRANS_RESPEX encapsulates DTI_TBU_TRANS_RESP message and adds new fields.
Description
A DTI translation response expected.
Source
TCU
Usage constraints
The TBU must have previously issued a translation request that has not yet generated either a
translation response or a fault message with FAULT_TYPE != TranslationStall.
ARM IHI 0088F Copyright © 2016-2018, 2020-2023 Arm Limited or its affiliates. All rights reserved. 3-53
ID092723 Non-Confidential
3 DTI-TBU Messages
3.2 Translation request message group
Field descriptions
The DTI_TBU_TRANS_RESPEX bit assignments are:
7 6 5 4 3 2 1 0 LSB
184
Reserved
176
168
MECID
160
152
144
136
128
120
112
DTI_TBU_TRANS_RESP 104
96
88
80
72
64
56
48
40
32
24
16
8
DTI_TBU_TRANS_RESP S_MSG_TYPE 0
Bits [191:176]
Reserved, SBZ.
MECID, bits [175:160]
Memory Encryption Context Identifier (MECID) to support Realm Management
Extension (RME) and RME-Device Assignment (RME-DA).
When DTI_TBU_TRANS_RESP.{NSE,NS} != Realm, MECID must be 0.
When DTI_TBU_TRANS_REQ.MMUV=0, MECID must be 0.
If DTI_TBU_TRANS_REQ.REQEX=1 and DTI_TBU_TRANS_RESP is returned, it's
equivalent to a DTI_TBU_TRANS_RESPEX with all bits 0 in [191:160].
Bits [159:4]
Same as DTI_TBU_TRANS_RESP. See DTI_TBU_TRANS_RESP on page 3-41.
S_MSG_TYPE, bits [3:0]
This field identifies the message type. The value of this field is 0x3.
Note
All protocol rules for DTI_TBU_TRANS_RESP apply to DTI_TBU_TRANS_RESPEX unless stated otherwise.
3.2.4 DTI_TBU_TRANS_FAULT
The DTI_TBU_TRANS_FAULT message is used to provide a fault response to a translation request.
Description
A translation fault response.
Source
TCU
3-54 Copyright © 2016-2018, 2020-2023 Arm Limited or its affiliates. All rights reserved. ARM IHI 0088F
Non-Confidential ID092723
3 DTI-TBU Messages
3.2 Translation request message group
Usage constraints
The TBU must have previously issued a translation request that has not yet generated either a
translation response or a fault message.
This message must be used in the case of a translation request that has failed a permission check.
Field descriptions
The DTI_TBU_TRANS_FAULT bit assignments are:
7 6 5 4 3 2 1 0 LSB
TRANSLATION_ID[11:8] Reserved 24
Reserved FAULT_TYPE CONT[3] 16
CONT[2:0] DO_NOT_CACHE TRANSLATION_ID[7,4] 8
TRANSLATION_ID[3:0] S_MSG_TYPE 0
ARM IHI 0088F Copyright © 2016-2018, 2020-2023 Arm Limited or its affiliates. All rights reserved. 3-55
ID092723 Non-Confidential
3 DTI-TBU Messages
3.2 Translation request message group
• DO_NOT_CACHE is not 1.
0b011 GlobalDisabled.
The translation has failed and the transaction must be terminated with an
abort.
The TBU can abort subsequent transactions, if all the following are true:
• The value of DTI_TBU_TRANS_REQ.SEC_SID is the same for
both transactions.
• DTI_TBU_TRANS_REQ.FLOW is not ATST for either transaction.
• DO_NOT_CACHE is not 1.
FAULT_TYPE must not be GlobalDisabled when
DTI_TBU_TRANS_REQ.FLOW=ATST.
0b100 TranslationPRI.
This response is only permitted when
DTI_TBU_TRANS_REQ.FLOW=PRI and
DTI_TBU_TRANS_REQ.PERM!=SPEC. A translation-related fault has
occurred, which might be resolved by a PRI request.
0b101 TranslationStall.
The purpose of this response is to simplify deadlock handling when a
DTI_TBU_SYNC_REQ message is received.
This response is only permitted when
DTI_TBU_TRANS_REQ.FLOW=Stall and
DTI_TBU_TRANS_REQ.PERM!=SPEC. A translation fault has occurred,
which has resulted in the transaction being stalled.
This does not complete the translation. The translation token is not returned,
and the translation request is still outstanding.
A TranslationStall response must not occur more than once for the same
translation request.
0b110 Reserved.
0b111 Reserved.
When MMUV is 0, FAULT_TYPE must be NonAbort if
DTI_TBU_TRANS_REQ.PERM is SPEC, and Abort otherwise.
Note
TBU implementation might have mechanisms to re-transmit the translation request for
the same transaction after it has received a translation response. If it receives a
DTI_TBU_TRANS_FAULT message with FAULT_TYPE!=TranslationStall and
DO_NOT_CACHE=1, TBU is not expected to re-transmit the translation request again
in order to avoid the possibility of multiple event reports for the same transaction.
3-56 Copyright © 2016-2018, 2020-2023 Arm Limited or its affiliates. All rights reserved. ARM IHI 0088F
Non-Confidential ID092723
3 DTI-TBU Messages
3.2 Translation request message group
A DTI_TBU_TRANS_FAULT message with TYPE = TranslationStall does not complete the transaction and
therefore is not affected by the rules above.
For example, if the TCU receives a translation request with DTI_TBU_TRANS_REQ.IA[55:52] != 0x0:
• The TCU is not permitted to return a DTI_TBU_TRANS_FAULT message with TYPE = TranslationStall,
followed by a DTI_TBU_TRANS_RESP message.
Though these rules were not specified in the DTI-TBUv1 specification, they do not change the behavior of
DTI-TBUv1 systems because the SMMUv3 architecture requires this behavior.
In addition to the requested permissions in the translation request, TCU is expected to return all permissions granted
by the translation. This not only avoids unnecessary misses in TBU cache lookup by future transactions but also it
might be relied upon by some transactions to function correctly, such as transactions related to cache maintenance
or cache stash.
The set of possible transaction attributes is the same as those described in the Arm Architecture Reference Manual
for A-profile architecture. The transaction attributes are composed of:
• Memory type
• Shareability
• Allocation hints
ARM IHI 0088F Copyright © 2016-2018, 2020-2023 Arm Limited or its affiliates. All rights reserved. 3-57
ID092723 Non-Confidential
3 DTI-TBU Messages
3.2 Translation request message group
Note
The ATTR_OVR field is not always present because it uses the same bits as the ASID field.
The ATTR_OVR field is composed of subfields that are shown in Table 3-6.
[3:0] MemAttr
[4] MTCFG
[6:5] SHCFG
[8:7] NSCFG
1. If the untranslated transaction does not have allocation hints, then they are treated as Read-Allocate,
Write-Allocate, non-transient.
2. If ATTR_OVR is valid and MTCFG is set, then the memory type is replaced by the values in the
ATTR_OVR.MemAttr field. For more information, see The MemAttr and MTCFG fields on page 3-59.
3. The allocation hints are modified based on the value of ALLOCCFG. For more information, see The
ALLOCCFG field on page 3-60.
4. The Shareability domain is modified based on the value of SHCFG. For more information, see The SHCFG
field on page 3-60.
5. The attributes are combined with the attributes in the ATTR and SH fields. For more information, see
Combining the translation response attributes on page 3-61.
6. A consistency check is applied to eliminate illegal attribute combinations. For more information, see
Consistency check on combination of translation attributes on page 3-62.
MemoryAttributes attr_out;
attr_out = attr_in;
// The is_cmo_trans bit is set if the transaction is a Destructive Hint or Cache Maintenance
3-58 Copyright © 2016-2018, 2020-2023 Arm Limited or its affiliates. All rights reserved. ARM IHI 0088F
Non-Confidential ID092723
3 DTI-TBU Messages
3.2 Translation request message group
if (is_cmo_trans) then
attr_out = ApplyCMOAttributes(attr_out);
return attr_out;
current_attr.type = MemType_Normal;
current_attr.inner.attrs = MemAttr_WB;
current_attr.inner.ReadAllocate = ‘1’;
current_attr.inner.WriteAllocate = ‘1’;
current_attr.inner.Transient = ‘0’;
current_attr.outer.attrs = MemAttr_WB;
current_attr.outer.ReadAllocate = ‘1’;
current_attr.outer.WriteAllocate = ‘1’;
current_attr.outer.Transient = ‘0’;
return current_attr;
0b0000 Device-nGnRnE - -
0b0001 Device-nGnRE - -
0b0010 Device-nGRE - -
0b0011 Device-GRE - -
ARM IHI 0088F Copyright © 2016-2018, 2020-2023 Arm Limited or its affiliates. All rights reserved. 3-59
ID092723 Non-Confidential
3 DTI-TBU Messages
3.2 Translation request message group
// Override type
current_attr.type = memattr_attributes.type;
// Override cacheability
current_attr.inner.attrs = memattr_attributes.inner.attrs;
current_attr.outer.attrs = memattr_attributes.outer.attrs;
current_attr.inner.Transient = T;
current_attr.inner.ReadAllocate = RA;
current_attr.inner.WriteAllocate = WA;
current_attr.outer.Transient = T;
current_attr.outer.ReadAllocate = RA;
current_attr.outer.WriteAllocate = WA;
return current_attr;
3-60 Copyright © 2016-2018, 2020-2023 Arm Limited or its affiliates. All rights reserved. ARM IHI 0088F
Non-Confidential ID092723
3 DTI-TBU Messages
3.2 Translation request message group
return attr_txn;
When memory type, Shareability and allocation hints are combined, the result is the strongest of each, as shown in
Table 3-8.
Weakest Strongest
ARM IHI 0088F Copyright © 2016-2018, 2020-2023 Arm Limited or its affiliates. All rights reserved. 3-61
ID092723 Non-Confidential
3 DTI-TBU Messages
3.2 Translation request message group
Weakest Strongest
Non-transient Transient
See Memory attributes on page A-126 for the pseudocode implementation of this table.
if (current_attr.type != MemType_Normal ||
(current_attr.inner.attrs == MemAttr_NC &&
current_attr.outer.attrs == MemAttr_NC)) then
current_attr.SH = OuterShareable;
if (current_attr.type != MemType_Normal ||
(current_attr.type == MemType_Normal &&
current_attr.inner.attrs == MemAttr_NC)) then
current_attr.inner.ReadAllocate = ‘1’;
current_attr.inner.WriteAllocate = ‘1’;
current_attr.inner.Transient = ‘0’;
if (current_attr.type != MemType_Normal ||
(current_attr.type == MemType_Normal &&
current_attr.outer.attrs == MemAttr_NC)) then
current_attr.outer.ReadAllocate = ‘1’;
current_attr.outer.WriteAllocate = ‘1’;
current_attr.outer.Transient = ‘0’;
return current_attr;
In addition to these architectural attribute consistency rules, an implementation might include interconnect-specific
consistency rules.
As a speculative translation request never results in a fault that is visible to software, it is permitted to be used for
the prefetching of translations. A successful speculative translation request that is marked as cacheable can be used
for future non-speculative transactions.
Note
A translation is permitted to be cached when the value of the DO_NOT_CACHE bit in the translation response
message is 0.
3-62 Copyright © 2016-2018, 2020-2023 Arm Limited or its affiliates. All rights reserved. ARM IHI 0088F
Non-Confidential ID092723
3 DTI-TBU Messages
3.2 Translation request message group
When a speculative translation is not successful or it is non-cacheable, no translation is cached, and future
non-speculative transactions will generate a new non-speculative translation request.
A speculative read transaction is permitted to use the cached translations of previous non-speculative translation
requests, but is not permitted to cause a non-speculative translation request. When a speculative read transaction
cannot be translated with cached translations that pass their permission check, then the TBU must either terminate
the transaction with an abort, or request a new speculative translation.
Note
A speculative translation request does not have a specific transaction that is associated with it. As such, the PnU and
InD fields in DTI_TBU_TRANS_REQ of the speculative translation request are not used and no permission check
is performed as part of the translation. If a speculative translation is requested as a result of a speculative read
transaction, the TBU must ensure that the transaction that caused it passes the permission check.
A speculative read transaction is never terminated as read 0, write ignored, even though the
DTI_TBU_TRANS_FAULT.FAULT_TYPE field is always NonAbort for a speculative translation. A faulting
speculative read transaction is always terminated with an abort.
It is possible for multiple translations to match a transaction. In this case, a TBU can use any matching translation
that has not been invalidated. The TBU is not required to use the most recent matching translation.
If a GlobalDisabled or StreamDisabled entry matches a transaction, then the transaction is always aborted.
See MatchTranslation on page A-132 and MatchFault on page A-133 for precise cache lookup matching functions.
ARM IHI 0088F Copyright © 2016-2018, 2020-2023 Arm Limited or its affiliates. All rights reserved. 3-63
ID092723 Non-Confidential
3 DTI-TBU Messages
3.3 Invalidation and synchronization message group
3.3.1 DTI_TBU_INV_REQ
The DTI_TBU_INV_REQ message is used to request the invalidation of data that is stored in a cache.
Description
An invalidation request.
Source
TCU
Usage constraints
The TCU must have at least one invalidation token.
Field descriptions
The DTI_TBU_INV_REQ bit assignments are:
7 6 5 4 3 2 1 0 LSB
120
112
104
ADDR[63:16]
96
88
80
ADDR[15:12] Reserved 72
SCALE[5] OPERATION[8] INC_ASET1 RANGE 64
56
ASID or SID[31:16]
48
40
VMID or SID[15:0]
32
SSID[19:14] SCALE[4:3] or SSID[13:12] 24
SCALE[2:0] or SSID[11:9] NUM[4:0] or SSID[8:4] 16
TG or SSID[3:2] or SIZE[3:2] TTL or SSID[1:0] or SIZE[1:0] OPERATION[7:4] 8
OPERATION[3:0] S_MSG_TYPE 0
3-64 Copyright © 2016-2018, 2020-2023 Arm Limited or its affiliates. All rights reserved. ARM IHI 0088F
Non-Confidential ID092723
3 DTI-TBU Messages
3.3 Invalidation and synchronization message group
This field is valid for all TLB invalidate operations apart from TLBI_PA. For all other
invalidate operations, this field is ignored and is Reserved, SBZ.
This field must be 1 for the following TLB invalidate operations:
• TLBI_S_EL1_ALL
• TLBI_S_EL1_VAA
• TLBI_NS_EL1_ALL
• TLBI_NS_EL1_S1_VMID
• TLBI_NS_EL1_S12_VMID
• TLBI_NS_EL1_VAA
• TLBI_NS_EL1_S2_IPA
• TLBI_NS_EL2_ALL
• TLBI_NS_EL2_VAA
• TLBI_S_EL3_ALL
• TLBI_S_EL1_S1_VMID
• TLBI_S_EL1_S12_VMID
• TLBI_S_EL1_S2_S_IPA
• TLBI_S_EL1_S2_NS_IPA
• TLBI_S_EL2_ALL
• TLBI_S_EL2_VAA
• TLBI_RL_EL1_ALL
• TLBI_RL_EL1_S1_VMID
• TLBI_RL_EL1_S12_VMID
• TLBI_RL_EL1_VAA
• TLBI_RL_EL1_S2_IPA
• TLBI_RL_EL2_ALL
• TLBI_RL_EL2_VAA
RANGE, bits [68:64]
This field indicates the range of SIDs or VMIDs for invalidation.
ARM IHI 0088F Copyright © 2016-2018, 2020-2023 Arm Limited or its affiliates. All rights reserved. 3-65
ID092723 Non-Confidential
3 DTI-TBU Messages
3.3 Invalidation and synchronization message group
When the value of the OPERATION field identifies this message as a CFGI_SID
invalidate operation, the bottom RANGE number of bits of the SID field are ignored in
both this message and the translations being considered for invalidation.
When the value of the OPERATION field identifies this message as a translation
invalidate operation, and the VMID field is valid for the operation:
• The bottom RANGE number of bits of the VMID field are ignored in both this
message and the translations being considered for invalidation.
• The value of this field must not be greater than four.
The encoding of the OPERATION field might cause this field to be invalid. When this
field is invalid, it is Reserved, SBZ.
ASID, bits [63:48], when OPERATION is a TLB invalidate operation.
This field indicates the ASID value to invalidate.
The encoding of the OPERATION field might cause this field to be invalid. When no
OPERATION is using this field, it is Reserved, SBZ.
VMID, bits [47:32], when OPERATION is a TLB invalidate operation.
This field indicates the VMID value to invalidate.
The encoding of the OPERATION field might cause this field to be invalid. When no
OPERATION is using this field, it is Reserved, SBZ.
SID, bits [63:32], when OPERATION is a configuration invalidate operation.
This field indicates the StreamID to invalidate.
The encoding of the OPERATION field might cause this field to be invalid. When no
OPERATION is using this field, it is Reserved, SBZ.
SSID, bits [31:12], when OPERATION is a configuration invalidate operation.
This field indicates the SubstreamID to invalidate.
The encoding of the OPERATION field might cause this field to be invalid. When no
OPERATION is using this field, it is Reserved, SBZ.
SCALE[4:0], bits [25:21], when OPERATION is a TLB invalidate operation.
This field relates to Range invalidate operations. The encoding of the OPERATION
field might cause this field to be invalid. When no OPERATION is using this field, it is
Reserved, SBZ. For more information, see DTI-TBU invalidation operations on
page 3-71.
NUM, bits [20:16], when OPERATION is a TLB invalidate operation.
This field relates to Range invalidate operations. The encoding of the OPERATION
field might cause this field to be invalid. When no OPERATION is using this field, it is
Reserved, SBZ. For more information, see DTI-TBU invalidation operations on
page 3-71.
TG, bits 15:14], when OPERATION is a TLB invalidate operation.
This field relates to Range invalidate operations. The encoding of the OPERATION
field might cause this field to be invalid. When no OPERATION is using this field, it is
Reserved, SBZ. For more information, see DTI-TBU invalidation operations on
page 3-71.
SIZE, bits [15:12], when OPERATION is a TLBI_PA invalidate operation.
The SIZE field overlaps with TG, TTL, and SSID fields.
This field relates to GPC invalidate operations. The encoding of the OPERATION field
might cause this field to be invalid. When no OPERATION is using this field, it is
Reserved, SBZ. For more information, see GPC invalidate operations on page 3-76.
TTL, bits [13:12], when OPERATION is a TLB invalidate operation.
This field relates to Range invalidate operations. The encoding of the OPERATION
field might cause this field to be invalid. When no OPERATION is using this field, it is
Reserved, SBZ. For more information, see DTI-TBU invalidation operations on
page 3-71.
3-66 Copyright © 2016-2018, 2020-2023 Arm Limited or its affiliates. All rights reserved. ARM IHI 0088F
Non-Confidential ID092723
3 DTI-TBU Messages
3.3 Invalidation and synchronization message group
3.3.2 DTI_TBU_INV_ACK
The DTI_TBU_INV_ACK message is used to acknowledge an invalidation request.
Description
An invalidation acknowledgment.
Source
TBU
Usage constraints
The TCU must have previously issued an invalidation request that has not yet been acknowledged.
Field descriptions
The DTI_TBU_INV_ACK bit assignments are:
7 6 5 4 3 2 1 0 LSB
Reserved M_MSG_TYPE 0
Bits [7:4]
Reserved, SBZ.
M_MSG_TYPE, bits [3:0]
This field identifies the message type. The value of this field is taken from the list of
encodings for downstream messages, see DTI-ATS protocol downstream messages on
page 2-26.
0b0100 DTI_TBU_INV_ACK.
3.3.3 DTI_TBU_SYNC_REQ
The DTI_TBU_SYNC_REQ message is used to request synchronization of the TBU and TCU.
Description
A synchronization request.
Source
TCU
Usage constraints
There must be no currently unacknowledged synchronization requests.
ARM IHI 0088F Copyright © 2016-2018, 2020-2023 Arm Limited or its affiliates. All rights reserved. 3-67
ID092723 Non-Confidential
3 DTI-TBU Messages
3.3 Invalidation and synchronization message group
Note
It is legal to receive the message even when there are no prior invalidation requests to synchronize.
Field descriptions
The DTI_TBU_SYNC_REQ bit assignments are:
7 6 5 4 3 2 1 0 LSB
Reserved S_MSG_TYPE 0
Bits [7:4]
Reserved, SBZ.
S_MSG_TYPE, bits [3:0]
This field identifies the message type. The value of this field is taken from the list of
encodings for upstream messages, see DTI-TBU protocol upstream messages on
page 2-25.
0b0101 DTI_TBU_SYNC_REQ.
3.3.4 DTI_TBU_SYNC_ACK
The DTI_TBU_SYNC_ACK message is used to acknowledge a synchronization request.
Description
A synchronization acknowledge.
Source
TBU
Usage constraints
There must currently be an unacknowledged synchronization request.
Field descriptions
The DTI_TBU_SYNC_ACK bit assignments are:
7 6 5 4 3 2 1 0 LSB
Reserved M_MSG_TYPE 0
Bits [7:4]
Reserved, SBZ.
M_MSG_TYPE, bits [3:0]
This field identifies the message type. The value of this field is taken from the list of
encodings for downstream messages, see DTI-TBU protocol downstream messages on
page 2-25.
0b0101 DTI_TBU_SYNC_ACK.
3-68 Copyright © 2016-2018, 2020-2023 Arm Limited or its affiliates. All rights reserved. ARM IHI 0088F
Non-Confidential ID092723
3 DTI-TBU Messages
3.3 Invalidation and synchronization message group
For all translations that are affected by the invalidation, the order in which they arrive at the TBU determines how
they are handled. Figure 3-1 shows the invalidation phases in which an affected DTI_TBU_TRANS_RESP can
arrive.
DTI_TB Phase 1
U_INV
_REQ
Can issue affected
DTI_TBU_TRANS_RESP
messages
Phase 2
DTI_TB
U_SYN
C_REQ
Phase 3
C_ACK
U_SYN
DTI_TB
The invalidation phases of the invalidation sequence are delimited by the following events:
1. A DTI_TBU_INV_REQ message
2. The following DTI_TBU_SYNC_REQ
3. The following DTI_TBU_SYNC_ACK
Note
Each DTI_TBU_INV_REQ message is followed by a DTI_TBU_INV_ACK message. The
DTI_TBU_INV_ACK message is only used for flow control, it does not affect the invalidation sequence or
indicate completion of the invalidate operation.
Note
A transaction is effectively completed downstream if it receives a DTI_TBU_TRANS_FAULT message with
FAULT_TYPE!=TranslationStall.
ARM IHI 0088F Copyright © 2016-2018, 2020-2023 Arm Limited or its affiliates. All rights reserved. 3-69
ID092723 Non-Confidential
3 DTI-TBU Messages
3.3 Invalidation and synchronization message group
When both are ensured, the TBU can return a DTI_TBU_SYNC_ACK message. The actions that must be taken
depend upon in what phase of the invalidation sequence, the affected DTI_TBU_TRANS_RESP messages arrived.
Table 3-9 describes the phases and required actions.
Before the corresponding The TBU must identify which translations must be invalidated and
DTI_TBU_INV_REQ. which transactions must be completed before returning the
DTI_TBU_SYNC_ACK message. These translations might or might
not be marked as DO_NOT_CACHE.
After the corresponding If the translation is based on invalidated data, then it is marked as
DTI_TBU_INV_REQ but before DO_NOT_CACHE.
the DTI_TBU_SYNC_REQ. The TBU must invalidate translations marked as DO_NOT_CACHE
and complete transactions using those translations before returning a
DTI_TBU_SYNC_ACK.
After the DTI_TBU_SYNC_REQ. These translations are out of scope of the current invalidation
synchronization operation and play no part in the timing of the
DTI_TBU_SYNC_ACK.
The TCU delays issuing the DTI_TBU_SYNC_REQ if necessary to
ensure this.
Overlapping invalidations
New DTI_TBU_INV_REQ messages can be sent after the DTI_TBU_SYNC_REQ has been sent even if this is
before the expected DTI_TBU_SYNC_ACK response is received. In all cases, an invalidation is only included in
a synchronization if it is sent before the DTI_TBU_SYNC_REQ message.
In this case, the invalidation is within scope of the synchronization operation. The DTI_TBU_INV_ACK message
is solely for the purposes of returning invalidation tokens and does not affect synchronization operations.
• The DTI_TBU_INV_REQ and DTI_TBU_INV_ACK messages must not wait for an outstanding
DTI_TBU_SYNC_ACK message to be returned. Invalidation operations must be able to proceed without
waiting for downstream transactions to complete, this is because those transactions might not be able to
complete until the invalidation has been accepted.
3-70 Copyright © 2016-2018, 2020-2023 Arm Limited or its affiliates. All rights reserved. ARM IHI 0088F
Non-Confidential ID092723
3 DTI-TBU Messages
3.3 Invalidation and synchronization message group
2. Transaction B is received, which must be ordered behind transaction A according to the bus protocol, and a
translation request is issued.
3. The translation request for transaction A results in a stalling fault in the TCU, which cannot progress further
until system software instructs the TCU to either retry or abort the translation. No response can be returned
to the TBU until this occurs.
5. A DTI_TBU_SYNC_REQ is received.
In this case, the DTI_TBU_SYNC_ACK cannot be returned until the transaction B completes. This cannot occur
until transaction A is issued, which cannot occur until the translation is received for transaction A, which would
break the above requirement. Instead, the TBU should discard the translation for transaction B so that the
DTI_TBU_SYNC_ACK can be returned, and re-request the translation for transaction B.
StreamWorld SEC_SID
Code Invalidation operation Valid fields
affected affected
ARM IHI 0088F Copyright © 2016-2018, 2020-2023 Arm Limited or its affiliates. All rights reserved. 3-71
ID092723 Non-Confidential
3 DTI-TBU Messages
3.3 Invalidation and synchronization message group
StreamWorld SEC_SID
Code Invalidation operation Valid fields
affected affected
3-72 Copyright © 2016-2018, 2020-2023 Arm Limited or its affiliates. All rights reserved. ARM IHI 0088F
Non-Confidential ID092723
3 DTI-TBU Messages
3.3 Invalidation and synchronization message group
StreamWorld SEC_SID
Code Invalidation operation Valid fields
affected affected
a. Only matches translations with a Non-secure IPA. For more information, see Determination of IPA space.
b. Only matches translations with a Secure IPA. For more information, see Determination of IPA space.
If the value of the GLOBAL bit in the translation response is 1, the ASID field in that translation is ignored during
invalidate operations. Invalidate operations that include an ASID are treated as follows:
• Invalidate operations including an ASID, but without a VA, do not invalidate the translation.
• Invalidate operations, including a VA and ASID, invalidate the translation regardless of the ASID being
invalidated.
The following invalidation operations will invalidate GlobalBypass translations with MMUV=1 and GlobalDisable
translations of the appropriate security level:
• CFGI_NS_ALL
• CFGI_RL_ALL
• CFGI_S_ALL
• INV_ALL
Note
Invalidation operations can be issued without a corresponding SMMUv3 invalidate command. A TCU issues
CFGI_NS_ALL and CFGI_S_ALL, and CFGI_RL_ALL invalidation and sync operations to invalidate
GlobalBypass translations with MMUV=1, and GlobalDisable translations as part of the process for changing
certain SMMUv3 control registers.
Translations with TRANS_RNG!=0b1111 are invalidated by TLBI_PA irrespective of the value of MMUV.
The INV_ALL operation invalidates all caches, including Secure, Non-secure, and Realm translations and
translations with MMUV=0.
ARM IHI 0088F Copyright © 2016-2018, 2020-2023 Arm Limited or its affiliates. All rights reserved. 3-73
ID092723 Non-Confidential
3 DTI-TBU Messages
3.3 Invalidation and synchronization message group
Range = ((NUM+1)*2SCALE)*Translation_Granule_Size
TG Translation_Granule_Size
0b01 4KB
0b10 16KB
0b11 64KB
An invalidation affects a translation if any address to be invalidated is within the range of the translation, as defined
by INVAL_RNG in the translation response.
When TG == 0b00:
• The range is a single address.
• The SCALE and NUM fields are Reserved, SBZ.
An invalidation might be limited to translations with specific values of INVAL_RNG in the translation response.
Table 3-12 indicates encodings of INVAL_RNG that are within scope of an invalidation, dependent upon the TG
and TTL fields:
3-74 Copyright © 2016-2018, 2020-2023 Arm Limited or its affiliates. All rights reserved. ARM IHI 0088F
Non-Confidential ID092723
3 DTI-TBU Messages
3.3 Invalidation and synchronization message group
• The combination TG == 0b00, TTL != 0b00 is legal in SMMUv3.2 invalidation commands but not legal in
DTI, and must be mapped to TG == 0b00, TTL == 0b00 in DTI.
A TCU must return INVAL_RNG values that ensure correct invalidation by a TBU implementing the above rules.
That means that INVAL_RNG must correctly identify the translation granule and level of the translation at the first
encountered stage of translation and its value must not depend on the Contiguous bit in the leaf translation table
entry.
When the fields of the invalidation operation match any of the following, no invalidation is required to occur.
Although not required, an implementation is permitted to perform invalidation as a result of such malformed
invalidation operations.
• TG == 0b01 && TTL == 0b01 && Address[29:12] != 0
• TG == 0b01 && TTL == 0b10 && Address[20:12] != 0
• TG == 0b10 && TTL == 0b01 && Address[35:14] != 0
• TG == 0b10 && TTL == 0b10 && Address[24:14] != 0
• TG == 0b10 && Address[13:12] != 0
• TG == 0b11 && TTL == 0b01 && Address[41:16] != 0
• TG == 0b11 && TTL == 0b10 && Address[28:16] != 0
• TG == 0b11 && Address[15:12] != 0
The following combination of field values is illegal:
TG != 0b00 && TTL == 0b00 && NUM == 0 && SCALE == 0. A single address without TTL or range information
should instead be encoded with TG == 0b00.
DTI_TBU_INV_REQ[71] is SCALE[5]. This extends the SCALE field to 6 bits, to enable larger ranges to be
specified for invalidation.
Stage 1 translations can be defined for low from address 0 upwards, and high address ranges from address (2^64)-1
downwards. A range invalidation never crosses from one range to the other:
• A range invalidation operation whose upper address exceeds (2^64)-1 does not wrap around to cover
addresses from address 0.
• A range invalidation operation starting at an address with ADDR[63]==0 is not required to invalidate any
entries with ADDR[63]==1.
For any translation that has 0 as the value of DTI_TBU_TRANS_REQ.SSV, the value of
DTI_TBU_TRANS_REQ.SSID is treated as being 0 for CFGI_S_SID_SSID, CFGI_RL_SID_SSID, and
CFG_NS_SID_SSID operations.
ARM IHI 0088F Copyright © 2016-2018, 2020-2023 Arm Limited or its affiliates. All rights reserved. 3-75
ID092723 Non-Confidential
3 DTI-TBU Messages
3.3 Invalidation and synchronization message group
Realm Invalidation
Each code operates on SEC_SID=Realm. The operations are otherwise identical to the corresponding Non-secure
invalidation operation. See Table 3-10 for the list of DTI-TBUv3 invalidation operations.
Note
The TLBI_PA operation invalidates previous translations based on their output address in the
DTI_TBU_TRANS_RESP.OA field, not the input address.
Note
The encodings here do not match those used in DTI_TBU_TRANS_RESP. The encodings here are chosen to match
DVM.
TLBI_PA operation performs range-based invalidation and invalidates translations starting from the address in
ADDR, within the range as specified in the SIZE field.
The set of addresses A to be invalidated is given by: ADDR <= A < ADDR + "region size given by SIZE".
Note
The TLBI_PA invalidate range is given by SIZE which is different than the range calculation for TLBI_S_*,
TLBI_NS_*, and TLBI_RL_*.
TLBI_PA operation affects a translation if any address to be invalidated is within the range of the translation, as
defined by TRANS_RNG in the translation response.
Note
It's TRANS_RNG instead of INVAL_RNG because TRANS_RNG reflects the size of GPC performed for this
translation.
If ADDR is not aligned to the size of the value of SIZE field, no translations are required to be invalidated.
3-76 Copyright © 2016-2018, 2020-2023 Arm Limited or its affiliates. All rights reserved. ARM IHI 0088F
Non-Confidential ID092723
3 DTI-TBU Messages
3.3 Invalidation and synchronization message group
When DTI_TBU_CONDIS_REQ.STAGES is G, the only invalidation operations permitted are TLBI_PA and
INV_ALL.
Note
There is no TLBI_PA_ALL operation required by the TBU because the existing INV_ALL operation can be used.
ARM IHI 0088F Copyright © 2016-2018, 2020-2023 Arm Limited or its affiliates. All rights reserved. 3-77
ID092723 Non-Confidential
3 DTI-TBU Messages
3.4 Register access message group
The DTI protocol supports 32-bit register accesses only. If 64-bit registers are implemented, they must be updated
using multiple 32-bit accesses. A TBU can implement up to 512KB of register space.
3.4.1 DTI_TBU_REG_WRITE
The DTI_TBU_REG_WRITE message is used to request a write to a register.
Description
A register write request.
Source
TCU
Usage constraints
• The TCU must have no outstanding register reads or writes.
• DTI_TBU_CONDIS_REQ.SUP_REG was 1 during the connect sequence.
Field descriptions
The DTI_TBU_REG_WRITE bit assignments are:
7 6 5 4 3 2 1 0 LSB
56
48
DATA
40
32
Reserved NSE 24
NS ADDR[18:12] 16
ADDR[11:4] 8
ADDR[3:2] Reserved S_MSG_TYPE 0
3-78 Copyright © 2016-2018, 2020-2023 Arm Limited or its affiliates. All rights reserved. ARM IHI 0088F
Non-Confidential ID092723
3 DTI-TBU Messages
3.4 Register access message group
0b01 Non-secure.
0b10 Root.
0b11 Realm.
For more information, see NSE, bit [24].
ADDR, bits [22:6]
This field indicates the address of the register to be written to. Writes to unimplemented
registers must be ignored.
Bits [5:4]
Reserved, SBZ.
S_MSG_TYPE, bits [3:0]
This field identifies the message type. The value of this field is taken from the list of
encodings for upstream messages, see DTI-TBU protocol upstream messages on
page 2-25.
0b0110 DTI_TBU_REG_WRITE.
3.4.2 DTI_TBU_REG_WACK
The DTI_TBU_REG_WACK message is used to acknowledge a register write request. Receipt of this message
indicates a write has taken effect.
Description
A register write acknowledgment.
Source
TBU
Usage constraints
The TCU must have previously issued a register write request that has not yet been acknowledged.
Field descriptions
The DTI_TBU_REG_WACK bit assignments are:
7 6 5 4 3 2 1 0 LSB
Reserved M_MSG_TYPE 0
Bits [7:4]
Reserved, SBZ.
M_MSG_TYPE, bits [3:0]
This field identifies the message type. The value of this field is taken from the list of
encodings for downstream messages, see DTI-TBU protocol downstream messages on
page 2-25.
0b0110 DTI_TBU_REG_WACK.
3.4.3 DTI_TBU_REG_READ
The DTI_TBU_REG_READ message is used to request a read from a register.
Description
A register read request.
Source
TCU
ARM IHI 0088F Copyright © 2016-2018, 2020-2023 Arm Limited or its affiliates. All rights reserved. 3-79
ID092723 Non-Confidential
3 DTI-TBU Messages
3.4 Register access message group
Usage constraints
• The TCU must have no outstanding register reads or writes.
• DTI_TBU_CONDIS_REQ.SUP_REG was 1 during the connect sequence.
Field descriptions
The DTI_TBU_REG_READ bit assignments are:
7 6 5 4 3 2 1 0 LSB
Reserved NSE 24
NS ADDR[18:12] 16
ADDR[11:4] 8
ADDR[3:2] Reserved S_MSG_TYPE 0
Bits [31:25]
Reserved, SBZ.
NSE, bit [24]
{NSE, NS} indicates the physical address space of the register access. For more
information, see NSE, bit [23].
NS, bit [23]
{NSE, NS} indicates the physical address space of the register access. The encodings
of {NSE, NS} are as follows:
0b00 Secure.
0b01 Non-secure.
0b10 Root.
0b11 Realm.
ADDR, bits [22:6]
This field indicates the address of the register to be written to. Reads from
unimplemented registers must return 0 and have no other effect.
Bits [5:4]
Reserved, SBZ.
S_MSG_TYPE, bits [3:0]
This field identifies the message type. The value of this field is taken from the list of
encodings for upstream messages, see DTI-TBU protocol upstream messages on
page 2-25.
0b0111 DTI_TBU_REG_READ.
3.4.4 DTI_TBU_REG_RDATA
The DTI_TBU_REG_RDATA message is used to return the data from a register read request.
Description
A register read response.
Source
TBU
Usage constraints
The TCU must have previously issued a register read request that has not yet received a response.
3-80 Copyright © 2016-2018, 2020-2023 Arm Limited or its affiliates. All rights reserved. ARM IHI 0088F
Non-Confidential ID092723
3 DTI-TBU Messages
3.4 Register access message group
Field descriptions
The DTI_TBU_REG_RDATA bit assignments are:
7 6 5 4 3 2 1 0 LSB
56
48
DATA
40
32
24
Reserved 16
8
Reserved M_MSG_TYPE 0
ARM IHI 0088F Copyright © 2016-2018, 2020-2023 Arm Limited or its affiliates. All rights reserved. 3-81
ID092723 Non-Confidential
3 DTI-TBU Messages
3.5 Message dependencies for DTI-TBU
REG_WRITE REG_WACK
REG_READ REG_RDATA
CONDIS_REQ CONDIS_ACK
TRANS_RESP
TRANS_REQ TRANS_RESPEX
TRANS_FAULT
SYNC_REQ SYNC_ACK
TBU
translated INV_REQ INV_ACK
transaction
3-82 Copyright © 2016-2018, 2020-2023 Arm Limited or its affiliates. All rights reserved. ARM IHI 0088F
Non-Confidential ID092723
3 DTI-TBU Messages
3.5 Message dependencies for DTI-TBU
ARM IHI 0088F Copyright © 2016-2018, 2020-2023 Arm Limited or its affiliates. All rights reserved. 3-83
ID092723 Non-Confidential
3 DTI-TBU Messages
3.5 Message dependencies for DTI-TBU
3-84 Copyright © 2016-2018, 2020-2023 Arm Limited or its affiliates. All rights reserved. ARM IHI 0088F
Non-Confidential ID092723
Chapter 4
DTI-ATS Messages
ARM IHI 0088F Copyright © 2016-2018, 2020-2023 Arm Limited or its affiliates. All rights reserved. 4-85
ID092723 Non-Confidential
4 DTI-ATS Messages
4.1 Connection and disconnection message group
4.1.1 DTI_ATS_CONDIS_REQ
The DTI_ATS_CONDIS_REQ message is used to initiate a connection or disconnection handshake.
Description
Connection state change request.
Source
PCIe RP
Usage constraints
The PCIe RP can only send a disconnect request when:
• The channel is in the CONNECTED state.
• There are no outstanding translation requests.
• There are no outstanding page requests.
• The conditions for completing any future invalidation and sync are already met. In practice,
the result is that all downstream transactions must be complete and all ATCs must be disabled
and invalidated.
The PCIe RPs can only send a connect request when:
• The channel is in the DISCONNECTED state.
Field descriptions
The DTI_ATS_CONDIS_REQ bit assignments are:
7 6 5 4 3 2 1 0 LSB
Reserved SUP_T NO_TRANS 24
TOK_INV_GNT TOK_TRANS_REQ[7:4] 16
TOK_TRANS_REQ[3:0] VERSION 8
Reserved PROTOCOL STATE M_MSG_TYPE 0
Bits [31:26]
Reserved, SBZ.
SUP_T, bit [25]
DTI-ATSv1
Reserved, SBZ.
DTI-ATSv2
Reserved, SBZ.
DTI-ATSv3
• When DTI_ATS_CONDIS_REQ.STATE==1, this bit indicates the
requested T bit usage in DTI_ATS_TRANS_REQ,
DTI_ATS_INV_REQ, DTI_ATS_PAGE_REQ, and
DTI_ATS_PAGE_RESP messages.
— 0: T must be 0.
— 1: T can be 0 or 1.
4-86 Copyright © 2016-2018, 2020-2023 Arm Limited or its affiliates. All rights reserved. ARM IHI 0088F
Non-Confidential ID092723
4 DTI-ATS Messages
4.1 Connection and disconnection message group
• When DTI_ATS_CONDIS_REQ.STATE==0:
— This field is ignored.
NO_TRANS, bit [24]
DTI-ATSv1
Reserved, SBZ.
DTI-ATSv2, DTI-ATSv3
When this bit is 1 and DTI_ATS_CONDIS_ACK.VERSION >
DTI-ATSv1:
• The number of translation tokens requested is zero.
• The number of invalidation tokens granted is zero.
• None of the following messages are permitted to be sent:
— DTI_ATS_TRANS_*
— DTI_ATS_INV_*
— DTI_ATS_SYNC_*
When STATE is 0 and the VERSION field in the DTI_ATS_CONDIS_ACK
message that established the connection was greater than DTI-ATSv1, then
the value of this field must match with the value of NO_TRANS in the
previous connect request with STATE == 1.
When STATE is 0 and the VERSION field in the DTI_ATS_CONDIS_ACK
message that established the connection was DTI-ATSv1, then the value of
this field must be 0.
ARM IHI 0088F Copyright © 2016-2018, 2020-2023 Arm Limited or its affiliates. All rights reserved. 4-87
ID092723 Non-Confidential
4 DTI-ATS Messages
4.1 Connection and disconnection message group
4.1.2 DTI_ATS_CONDIS_ACK
The DTI_ATS_CONDIS_ACK message is used to accept or deny a request as part of the connect or disconnect
handshake process.
Description
A connection state change acknowledgment.
Source
TCU
Usage constraints
The PCIe RP must have previously issued an unacknowledged DTI_ATS_CONDIS_REQ message.
4-88 Copyright © 2016-2018, 2020-2023 Arm Limited or its affiliates. All rights reserved. ARM IHI 0088F
Non-Confidential ID092723
4 DTI-ATS Messages
4.1 Connection and disconnection message group
Field descriptions
The DTI_ATS_CONDIS_ACK bit assignments are:
7 6 5 4 3 2 1 0 LSB
Reserved SUP_T OAS[3]/Reserved 24
OAS[2:0]/Reserved SUP_PRI TOK_TRANS_GNT[7:4] 16
TOK_TRANS_GNT[3:0] VERSION 8
Reserved STATE S_MSG_TYPE 0
Bits [31:26]
Reserved, SBZ.
SUP_T, bit [25]
DTI-ATSv1
Reserved, SBZ.
DTI-ATSv2
Reserved, SBZ.
DTI-ATSv3
• When DTI_ATS_CONDIS_ACK.STATE==1 and
DTI_ATS_CONDIS_REQ.SUP_T==1, this bit indicates the granted
T bit usage in DTI_ATS_TRANS_REQ, DTI_ATS_INV_REQ,
DTI_ATS_PAGE_REQ, and DTI_ATS_PAGE_RESP messages.
— 0: T must be 0.
— 1: T can be 0 or 1.
• When DTI_ATS_CONDIS_ACK.STATE==1 and
DTI_ATS_CONDIS_REQ.SUP_T==0:
— This field is Reserved, SBZ.
• When DTI_ATS_CONDIS_ACK.STATE==0:
— This field is Reserved, SBZ.
OAS, bits [24:21]
DTI-ATSv1
Indicates the output address size, which is the maximum address size
permitted for translated addresses.
0b0000 32 bits (4GB).
0b0001 36 bits (64GB).
0b0010 40 bits (1TB).
0b0011 42 bits (4TB).
0b0100 44 bits (16TB).
0b0101 48 bits (256TB).
0b0110 52 bits (4PB).
All other values are Reserved.
DTI-ATSv2, DTI-ATSv3
Reserved, SBZ.
SUP_PRI, Bit [20]
Indicates that the PCIe ATS PRI messages are supported.
If the value of this bit is 0, then DTI_ATS_PAGE_REQ messages must not be issued.
When the value of STATE is 0, this bit is ignored.
DTI-ATSv2, DTI-ATSv3
If this bit is 0, then DTI_ATS_PAGE_RESP messages must not be issued.
ARM IHI 0088F Copyright © 2016-2018, 2020-2023 Arm Limited or its affiliates. All rights reserved. 4-89
ID092723 Non-Confidential
4 DTI-ATS Messages
4.1 Connection and disconnection message group
4-90 Copyright © 2016-2018, 2020-2023 Arm Limited or its affiliates. All rights reserved. ARM IHI 0088F
Non-Confidential ID092723
4 DTI-ATS Messages
4.2 Translation request message group
4.2.1 DTI_ATS_TRANS_REQ
The DTI_ATS_TRANS_REQ message is used to initiate a translation request.
Description
A translation request.
Source
PCIe RP
Usage constraints
The PCIe RP must have at least one translation token.
Field descriptions
The DTI_ATS_TRANS_REQ bit assignments are:
7 6 5 4 3 2 1 0 LSB
152
144
136
IA[63:16]
128
120
112
IA[15:12] Reserved 104
Reserved 96
88
SSID[19:4] 80
SSID[3:0] Reserved 72
Reserved 64
56
48
SID
40
32
Reserved 24
Reserved CXL SSV T nW InD PnU Protocol 16
TRANSLATION_ID 8
QOS M_MSG_TYPE 0
ARM IHI 0088F Copyright © 2016-2018, 2020-2023 Arm Limited or its affiliates. All rights reserved. 4-91
ID092723 Non-Confidential
4 DTI-ATS Messages
4.2 Translation request message group
Bits [75:64]
Reserved, SBZ.
SID, bits [63:32]
This field indicates the StreamID value that is used for the translation.
Bits [31:23]
Reserved, SBZ.
CXL, bit [22]
DTI-ATSv1
Reserved, SBZ.
DTI-ATSv2
Reserved, SBZ.
DTI-ATSv3
This is set to the value of the Source_CXL bit in the ATS request.
SSV, bit [21]
This bit indicates whether a valid SubstreamID is associated with this translation.
0 SSID not valid.
1 SSID valid.
T, bit [20]
DTI-ATSv1
Reserved, SBZ.
DTI-ATSv2
Reserved, SBZ.
DTI-ATSv3
When DTI_ATS_CONDIS_REQ.SUP_T and
DTI_ATS_CONDIS_ACK.SUP_T are both 1 for the connection, various
messages include a T bit to indicate that the message corresponds to a
trusted entity. In each case:
0 Indicates a Non-secure StreamID.
1 Indicates a Realm StreamID.
If DTI_ATS_CONDIS_REQ.SUP_T and
DTI_ATS_CONDIS_ACK.SUP_T are not both 1 during the connection
sequence, this field must be 0.
nW, bit [19]
This bit indicates whether write access is requested.
0 Read and write access.
1 Read-only access.
When HTTU is enabled, a value of 0 in this field marks the translation table entry as
Dirty.
InD, bit [18]
This bit indicates whether execute (instruction) access is requested.
0 The translation will only be used for data accesses.
1 The translation might be used for instruction and data accesses.
When the value of SSV is 0, this bit must be 0.
PnU, bit [17]
This bit indicates whether this translation represents privileged or unprivileged access.
0 Unprivileged.
1 Privileged.
When the value of SSV is 0, this bit must be 0.
4-92 Copyright © 2016-2018, 2020-2023 Arm Limited or its affiliates. All rights reserved. ARM IHI 0088F
Non-Confidential ID092723
4 DTI-ATS Messages
4.2 Translation request message group
SID SID[15:0] is the Requester ID, otherwise known as BDF (Bus, Device,
Function).
Higher-order bits of SID uniquely identify the PCIe segment in the
StreamID space that is used by the SMMU.
SSV If the request has a PASID TLP prefix, this field is 1. Otherwise, this field
is 0.
PnU If the request has a PASID TLP prefix, this field is Priv. Otherwise, this
field is 0.
InD If the request has a PASID TLP prefix, this field is Exe. Otherwise, this
field is 0.
SSID If the request has a PASID TLP prefix, this field is PASID. Otherwise, this
field is 0.
T T
4.2.2 DTI_ATS_TRANS_RESP
The DTI_ATS_TRANS_RESP message is used to respond to a translation request.
Description
A DTI translation response.
ARM IHI 0088F Copyright © 2016-2018, 2020-2023 Arm Limited or its affiliates. All rights reserved. 4-93
ID092723 Non-Confidential
4 DTI-ATS Messages
4.2 Translation request message group
Source
TCU
Usage constraints
The PCIe RP must have previously issued a translation request that has not yet generated either a
response or a fault message.
Field descriptions
The DTI_ATS_TRANS_RESP bit assignments are:
7 6 5 4 3 2 1 0 LSB
152
144
136
OA[63:16]
128
120
112
OA[15:12] Reserved 104
Reserved 96
Reserved AMA Reserved 88
Reserved TRANS_RNG 80
Reserved 72
Reserved TE Reserved ALLOW_X ALLOW_W ALLOW_R 64
56
48
Reserved 40
32
24
Reserved BYPASS Reserved 16
Reserved CXL_IO UNTRANSLATED TRANSLATION_ID[7:4] 8
TRANSLATION_ID[3:0] S_MSG_TYPE 0
OA, bits [159:108]
This field holds the output address, OA[63:12], of the translated address.
DTI-ATSv1
The address in this field must be within the larger of the following address
sizes:
• The size indicated by the OAS field of the
DTI_ATS_CONDIS_ACK message received during the connection
sequence.
• 40 bits.
This address must be to the first byte in a region of the size that is given by
TRANS_RNG. For example, if the value of TRANS_RNG is 2, then
OA[15:12] must be zero.
When BYPASS is 1, this field must be zero.
DTI-ATSv2, DTI-ATSv3
Bits within the range given by the TRANS_RNG field must match
DTI_ATS_TRANS_REQ.IA.
For example, if the value of TRANS_RNG is 2, then OA[15:12] must equal
DTI_ATS_TRANS_REQ.IA[15:12].
When the value of BYPASS is 1, this field must equal the value of IA in the
translation request.
When the value of UNTRANSLATED is 1, this field is Reserved, SBZ.
4-94 Copyright © 2016-2018, 2020-2023 Arm Limited or its affiliates. All rights reserved. ARM IHI 0088F
Non-Confidential ID092723
4 DTI-ATS Messages
4.2 Translation request message group
Bits [107:95]
Reserved, SBZ.
AMA, bits [94:92]
DTI-ATSv1
Reserved, SBZ.
DTI-ATSv2, DTI-ATSv3
This field indicates the translation attributes in a form that is designed for
use by the PCIe ATS Memory Attributes field.
0b000 Normal-WB-RA-WA.
0b001 Normal-WB-nRA-WA.
0b010 Normal-WB-RA-nWA.
0b011 Normal-WB-nRA-nWA.
0b100 Device-nRnE.
0b101 Device-nRE.
0b110 Device-RE.
0b111 Normal-NC.
Bits [91:84]
Reserved, SBZ.
TRANS_RNG, bits [83:80]
The meaning of this field depends on the value of the
DTI_ATS_TRANS_RESP.BYPASS field:
BYPASS=0
DTI-ATSv1, DTI-ATSv2
This field indicates the aligned range of addresses translation is
valid for.
0b0000 4KB.
0b0001 16KB.
0b0010 64KB.
0b0011 2MB.
0b0100 32MB.
0b0101 512MB.
0b0110 1GB.
0b0111 16GB.
0b1000 4TB.
0b1001 128TB.
All other values are Reserved.
Note
When DTI-ATSv1 or DTI-ATSv2 is used and translated page
size is 64GB or 512GB, the TCU uses a value of 0b0111 instead,
indicating a 16GB range.
DTI-ATSv3
This field indicates the aligned range of addresses translation is
valid for.
0b0000 4KB.
0b0001 16KB.
0b0010 64KB.
0b0011 2MB.
ARM IHI 0088F Copyright © 2016-2018, 2020-2023 Arm Limited or its affiliates. All rights reserved. 4-95
ID092723 Non-Confidential
4 DTI-ATS Messages
4.2 Translation request message group
0b0100 32MB.
0b0101 512MB.
0b0110 1GB.
0b0111 16GB.
0b1010 64GB.
0b1011 512GB.
0b1000 4TB.
0b1001 128TB.
All other values are Reserved.
4-96 Copyright © 2016-2018, 2020-2023 Arm Limited or its affiliates. All rights reserved. ARM IHI 0088F
Non-Confidential ID092723
4 DTI-ATS Messages
4.2 Translation request message group
BYPASS=1
DTI-ATSv1
This field indicates the maximum output address size of the
system.
0b000 32 bits (4GB).
0b0001 36 bits (64GB).
0b0010 40 bits (1TB).
0b0011 42 bits (4TB).
0b0100 44 bits (16TB).
0b0101 48 bits (256TB).
0b0110 52 bits (4PB).
All other values are Reserved.
This information is also given in the OAS field of the
DTI_ATS_CONDIS_ACK message and uses the same
encodings. When BYPASS=1, this field must match
DTI_ATS_CONDIS_ACK.OAS.
This value is a static property of the system; every transaction
in which the value of the BYPASS field is 1 must return the
same value for this field.
DTI-ATSv2, DTI-ATSv3
Reserved, SBZ.
Bits [79:71]
Reserved, SBZ.
TE, bit [70]
DTI-ATSv1
Reserved, SBZ.
DTI-ATSv2
Reserved, SBZ.
DTI-ATSv3
Indicates the security space of the address.
0 OA is a Non-secure address.
1 OA is a Realm address.
When DTI_ATS_TRANS_REQ.T is 0, TE is Reserved, SBZ.
Bits [69:67]
Reserved, SBZ.
ALLOW_X, bit [66]
This bit indicates permissions for instruction reads.
0 Not permitted.
1 Permitted.
When the value of ALLOW_R is 0, this bit must be 0.
When the value of InD in the DTI_ATS_TRANS_REQ translation request message was
0, this bit must be 0.
It is expected that TCU should drive this field to 1 if the permission is granted by the
translation.
ALLOW_W, bit [65]
This bit indicates permissions for data write accesses.
0 Not permitted.
1 Permitted.
ARM IHI 0088F Copyright © 2016-2018, 2020-2023 Arm Limited or its affiliates. All rights reserved. 4-97
ID092723 Non-Confidential
4 DTI-ATS Messages
4.2 Translation request message group
It is expected that TCU should drive this field to 1 if the permission is granted by the
translation.
ALLOW_R, bit [64]
This bit indicates permissions for data read accesses.
0 Not permitted.
1 Permitted.
If the value of ALLOW_W is 0, the value of this field must be 1.
It is expected that TCU should drive this field to 1 if the permission is granted by the
translation.
Bits [63:18]
Reserved, SBZ.
BYPASS, bit [17]
This field indicates that translation for this StreamID is bypassed.
0 Normal translation.
1 Translation bypassed.
When the value of this field is 1, the VA and the PA of the translation are the same.
This bit must be 0 if the value of IA in the translation request is greater than the range
shown in the OAS field of the DTI_ATS_CONDIS_ACK message that was received
during the connection sequence.
Bits [16:14]
Reserved, SBZ.
CXL_IO, bit [13]
DTI-ATSv1
Reserved, SBZ.
DTI-ATSv2, DTI-ATSv3
Used by root ports implementing CXL:
0 The translation response can be used by CXL.cache or CXL.io
transactions.
1 The translation response cannot be used by CXL.cache
transactions and must only be used by CXL.io translated
transactions.
When DTI_ATS_TRANS_REQ.CXL
= 0, DTI_ATS_TRANS_RESP.CXL_IO is Reserved, SBZ. This is
applicable to only DTI-ATSv3.
UNTRANSLATED, bit [12]
Indicates whether ATS translations should be used for this page.
0 The U bit in the PCIe ATS Translation Completion Data message must be 0.
1 The U bit in the PCIe ATS Translation Completion Data message must be 1.
This bit might be set when the TCU is not able to provide an ATS translation for the
page, for example, because of the memory attributes of the translated page.
When the value of this bit is 1, the PCIe Endpoint must access the page using
untranslated transactions.
The ALLOW_R, ALLOW_W, and ALLOW_X values are unaffected by the value of
this bit.
TRANSLATION_ID, bits [11:4]
This field gives the identification number for the translation.
This field must have a value corresponding to an outstanding translation request.
4-98 Copyright © 2016-2018, 2020-2023 Arm Limited or its affiliates. All rights reserved. ARM IHI 0088F
Non-Confidential ID092723
4 DTI-ATS Messages
4.2 Translation request message group
N 0b0
Global 0b0a
Exe DTI_ATS_TRANS_RESP.ALLOW_X
Priv DTI_ATS_TRANS_REQ.PnU
U DTI_ATS_TRANS_RESP.UNTRANSLATED
R DTI_ATS_TRANS_RESP.ALLOW_R
W DTI_ATS_TRANS_RESP.ALLOW_W
CXL.io DTI-ATSv2
— If Source_CXL set in PCIe translation request: DTI_ATS_TRANS_RESP.CXL_IO
— Else: 0b0
DTI-ATSv3
— DTI_ATS_TRANS_RESP.CXL_IO
AMA DTI_ATS_TRANS_RESP.AMA
T DTI_ATS_TRANS_REQ.T
a. Previous versions of this specification included a GLOBAL field in DTI_ATS_TRANS_RESP. This was in
error, since the SMMUv3 architecture requires the Global field in a Translation Completion to be 0.
4.2.3 DTI_ATS_TRANS_FAULT
The DTI_ATS_TRANS_FAULT message is used to provide a fault response to a translation request.
Description
A translation fault response.
Source
TCU
Usage constraints
The PCIe RP must have previously issued a translation request that has not yet generated either a
response or a fault message.
ARM IHI 0088F Copyright © 2016-2018, 2020-2023 Arm Limited or its affiliates. All rights reserved. 4-99
ID092723 Non-Confidential
4 DTI-ATS Messages
4.2 Translation request message group
Field descriptions
The DTI_ATS_TRANS_FAULT bit assignments are:
7 6 5 4 3 2 1 0 LSB
Reserved 24
Reserved FAULT_TYPE Reserved 16
Reserved TRANSLATION_ID[7:4] 8
TRANSLATION_ID[3:0] S_MSG_TYPE 0
Bits [31:19]
Reserved, SBZ.
FAULT_TYPE, bits [18:17]
This field is used to tell the PCIe RP how to handle the fault.
0b00 InvalidTranslation.
0b01 CompleterAbort.
0b10 UnsupportedRequest.
0b11 Reserved.
When the value of this field is InvalidTranslation, this field indicates that ATS requests
are permitted but that the translation resulted in a fault. The PCIe RP returns a
Translation Completion message with the status value as Success and with the Read and
Write bits clear.
When the value of this field is CompleterAbort, this field indicates that there was an
error during the translation process. The PCIe RP returns a Translation Completion
message with the status value as Completer Abort (CA).
When the value of this field is UnsupportedRequest, this field indicates that ATS is
disabled for this or all StreamIDs. The PCIe RP returns a Translation Completion
message with a status value as Unsupported Request (UR).
Bits [16:12]
Reserved, SBZ.
TRANSLATION_ID, bits [11:4]
This field gives the identification number for the translation.
This field must have a value corresponding to an outstanding translation request.
S_MSG_TYPE, bits [3:0]
This field identifies the message type. The value of this field is taken from the list of
encodings for upstream messages, see DTI-ATS protocol upstream message on
page 2-26.
0b0001 DTI_ATS_TRANS_FAULT.
4-100 Copyright © 2016-2018, 2020-2023 Arm Limited or its affiliates. All rights reserved. ARM IHI 0088F
Non-Confidential ID092723
4 DTI-ATS Messages
4.2 Translation request message group
Figure 4-1 shows the steps required in a full ATS translation process that is supported by DTI.
2
ATS
translation
3
ATS 6
translated
check 7
9c
9a / 9b
Downstream
transaction
ARM IHI 0088F Copyright © 2016-2018, 2020-2023 Arm Limited or its affiliates. All rights reserved. 4-101
ID092723 Non-Confidential
4 DTI-ATS Messages
4.2 Translation request message group
• Prohibit ATS translation for individual streams. In this case, the TBU translation check prevents untrusted
Endpoints from issuing physically addressed transactions into the system.
• Return stage 1 translation over ATS and perform stage 2 translation in the TBU. In this case, the TBU
translation fetched in steps 7 and 8 performs stage 2 translation.
• Perform all translation using ATS. In this case, the TBU translation step is performed once to ensure that ATS
is permitted for this stream and can then be cached for all future transactions. This can be done per-stream or
globally for all streams depending on the SMMU configuration.
• Convert it into multiple individual DTI_ATS_TRANS_REQ messages and combine the responses.
• Convert it into a single DTI_ATS_TRANS_REQ message and respond with a single translation. This is legal
behavior in PCIe ATS, in effect the Root Complex has denied the request to prefetch additional translations.
4-102 Copyright © 2016-2018, 2020-2023 Arm Limited or its affiliates. All rights reserved. ARM IHI 0088F
Non-Confidential ID092723
4 DTI-ATS Messages
4.3 Invalidation and synchronization message group
ATS Invalidation operations are passed to the PCIe Endpoints to invalidate their ATC.
Invalidation SYNC operations ensure that the invalidation and transactions associated with them are complete.
4.3.1 DTI_ATS_INV_REQ
The DTI_ATS_INV_REQ message is used to request the invalidation of data that is stored in a cache.
Description
An invalidation request.
Source
TCU
Usage constraints
The TCU must have at least one invalidation token.
Field descriptions
The DTI_ATS_INV_REQ bit assignments are:
7 6 5 4 3 2 1 0 LSB
120
112
104
VA[63:16]
96
88
80
VA[15:12] ITAG 72
ITAG T RANGE 64
56
48
SID
40
32
24
SSID[19:4]
16
SSID[3:0] OPERATION[7:4] 8
OPERATION[3:0] S_MSG_TYPE 0
ARM IHI 0088F Copyright © 2016-2018, 2020-2023 Arm Limited or its affiliates. All rights reserved. 4-103
ID092723 Non-Confidential
4 DTI-ATS Messages
4.3 Invalidation and synchronization message group
4-104 Copyright © 2016-2018, 2020-2023 Arm Limited or its affiliates. All rights reserved. ARM IHI 0088F
Non-Confidential ID092723
4 DTI-ATS Messages
4.3 Invalidation and synchronization message group
The encoding of this field might cause other fields in this message to be invalid, for
more information see DTI-ATS invalidation operations on page 4-110.
S_MSG_TYPE, bits [3:0]
This field identifies the message type. The value of this field is taken from the list of
encodings for upstream messages, see DTI-ATS protocol upstream message on
page 2-26.
0b1100 DTI_ATS_INV_REQ.
T DTI_ATS_INV_REQ.T
ITag DTI_ATS_INV_REQ.ITAG
4.3.2 DTI_ATS_INV_ACK
The DTI_ATS_INV_ACK message is used to acknowledge a cache invalidation request.
Description
A cache data invalidate acknowledgment.
Source
PCIe RP
Usage constraints
The TCU must have previously issued an invalidation request that has not yet been acknowledged.
Field descriptions
The DTI_ATS_INV_ACK bit assignments are:
7 6 5 4 3 2 1 0 LSB
Reserved M_MSG_TYPE 0
Bits [7:4]
Reserved, SBZ.
ARM IHI 0088F Copyright © 2016-2018, 2020-2023 Arm Limited or its affiliates. All rights reserved. 4-105
ID092723 Non-Confidential
4 DTI-ATS Messages
4.3 Invalidation and synchronization message group
4.3.3 DTI_ATS_INV_COMP
When an Endpoint returns an invalidation completion message, the RP must return a DTI_ATS_INV_COMP
message. This is a 96-bit message that has the following fields:
Description
A cache data invalidate completion.
Source
PCIe RP.
Usage constraints
Protocol version is DTI-ATSv3 or greater.
The TCU must have previously issued a DTI_ATS_INV_REQ that has not yet had a corresponding
DTI_ATS_INV_COMP.
Field descriptions
The DTI_ATS_INV_COMP bit assignments are:
7 6 5 4 3 2 1 0 LSB
88
Reserved 80
Reserved ITAG 72
ITAG T Reserved 64
56
48
SID
40
32
24
Reserved 16
8
Reserved ERROR M_MSG_TYPE 0
Bits [95:76]
Reserved, SBZ.
ITAG, bits [75:71]
Must match the corresponding DTI_ATS_INV_REQ.
T, bit [70]
Must match the corresponding DTI_ATS_INV_REQ.
Bits [69:64]
Reserved, SBZ.
SID, bits [63:32]
Must match the corresponding DTI_ATS_INV_REQ.
4-106 Copyright © 2016-2018, 2020-2023 Arm Limited or its affiliates. All rights reserved. ARM IHI 0088F
Non-Confidential ID092723
4 DTI-ATS Messages
4.3 Invalidation and synchronization message group
Bits [31:5]
Reserved, SBZ.
ERROR, bit [4]
0 Invalidation completion return successfully.
1 Invalidation could not be completed.
Note
The PCIe RP must be aware of the StreamID range which it occupies. When
the StreamID is outside of its range, it is not an error case and must not cause
this bit to be 1.
There can only be one DTI_ATS_INV_COMP message for each DTI_ATS_INV_REQ message.
If multiple PCIe invalidate completion messages are sent for the same invalidation to cover multiple Traffic Classes,
these must be coalesced by the Root Port into a single DTI_ATS_INV_COMP message, which sets ERROR if any
error occurred.
A DTI_ATS_INV_COMP does not require any invalidation tokens.
It is possible to have more DTI_ATS_INV_COMP messages outstanding than available invalidation tokens.
4.3.4 DTI_ATS_SYNC_REQ
The DTI_ATS_SYNC_REQ message is used to request synchronization between the PCIe RP and TCU.
Description
A synchronization request.
Source
TCU
Usage constraints
DTI-ATSv1, DTI-ATSv2
The TCU must have received a DTI_ATS_INV_ACK for all previous
DTI_ATS_INV_REQ messages.
The TCU must have received a DTI_ATS_SYNC_ACK for all previous
DTI_ATS_SYNC_REQ messages.
DTI-ATSv3
The TCU must have received a DTI_ATS_SYNC_ACK for all previous
DTI_ATS_SYNC_REQ messages.
Note
It is legal to receive the message even when there are no prior invalidation requests to synchronize.
ARM IHI 0088F Copyright © 2016-2018, 2020-2023 Arm Limited or its affiliates. All rights reserved. 4-107
ID092723 Non-Confidential
4 DTI-ATS Messages
4.3 Invalidation and synchronization message group
Field descriptions
The DTI_ATS_SYNC_REQ bit assignments are:
7 6 5 4 3 2 1 0 LSB
Reserved S_MSG_TYPE 0
Bits [7:4]
Reserved, SBZ.
S_MSG_TYPE, bits [3:0]
This field identifies the message type. The value of this field is taken from the list of
encodings for upstream messages, see DTI-ATS protocol upstream message on
page 2-26.
0b1101 DTI_ATS_SYNC_REQ.
4.3.5 DTI_ATS_SYNC_ACK
The DTI_ATS_SYNC_ACK message is used to acknowledge a synchronization request.
Description
A synchronization acknowledge.
Source
PCIe RP
Usage constraints
There must currently be an outstanding synchronization request.
Field descriptions
The DTI_ATS_SYNC_ACK bit assignments are:
7 6 5 4 3 2 1 0 LSB
Reserved ERROR M_MSG_TYPE 0
Bits [7:5]
Reserved, SBZ.
ERROR, bit [4]
DTI-ATSv1, DTI-ATSv2
This bit indicates that a PCIe error has occurred.
0 Success.
1 Error.
Note
The PCIe RP must be aware of the StreamID range which it
occupies. When the StreamID is outside of its range, it is not an
error case and must not cause this bit to be 1.
DTI-ATSv3
Reserved, SBZ.
4-108 Copyright © 2016-2018, 2020-2023 Arm Limited or its affiliates. All rights reserved. ARM IHI 0088F
Non-Confidential ID092723
4 DTI-ATS Messages
4.3 Invalidation and synchronization message group
SMMUv3 requires that a TCU that intends to invalidate entries in an ATC must first invalidate the equivalent TBU
entries. This results in an invalidation sequence shown in Figure 4-2.
DTI_TB
U_INV
_REQ
_ACK
U_INV
DTI_TB
DTI-TBU invalidation
sequence DTI_TB
U_SYN
C_REQ
C_ACK
U_SYN
DTI_TB
DTI_ATS_INV_RE
Q
K
DTI_ATS_INV_AC
MP
DTI_ATS_INV_CO
DTI_ATS_SYNC_REQ
ACK
DTI_ATS_SYNC_
• Responses have been received from the appropriate Endpoints for DTI_ATS_INV_REQ messages that were
received before the corresponding DTI_ATS_SYNC_REQ was received.
ARM IHI 0088F Copyright © 2016-2018, 2020-2023 Arm Limited or its affiliates. All rights reserved. 4-109
ID092723 Non-Confidential
4 DTI-ATS Messages
4.3 Invalidation and synchronization message group
• No further accesses to memory are made using those translations, that is, transactions using those translations
are complete.
• No further accesses to memory are made using translations invalidated by DTI_ATS_INV_REQ messages
which returned a DTI_ATS_INV_COMP message before the DTI_ATS_SYNC_REQ was received.
Note
A DTI_ATS_SYNC_ACK message is likely to be dependent on completion of outstanding translations in the
downstream TBU. This does not cause deadlocks because SMMUv3 stalling faults are not permitted for PCIe RPs.
This dependency is likely because DTI_ATS_SYNC_ACK depends on the Root Complex receiving invalidation
completion messages from Endpoints, and those completion messages are ordered behind posted writes that might
need translating.
However, not all Endpoints can consume this number of invalidation operations without back pressure. For
performance reasons, the number of invalidate operations that should be outstanding in an Endpoint at one time
might be less.
A PCIe RPs indicates in DTI_ATS_CONDIS_REQ.TOK_INV_GNT how many invalidation messages it can accept
without giving back pressure on the DTI interface. It should buffer these locally so that the DTI interface is not
stalled waiting for an Endpoint to progress an invalidation.
DTI-ATS invalidation tokens are only used for flow control of invalidation messages on the DTI channel. The Root
Complex does not need to receive an Invalidation Completion message from an Endpoint before it returns a
DTI_ATS_INV_ACK message on DTI-ATS. It can return a DTI_ATS_INV_ACK message as soon as it has
successfully sent an Invalidation Request message to the Endpoint and is able to buffer a new DTI_ATS_INV_REQ
message.
The Endpoint must return all Invalidation Completion messages before the Root Complex returns a
DTI_ATS_SYNC_ACK message. If a new DTI_ATS_INV_REQ message is received after a
DTI_ATS_SYNC_REQ, the Root Complex must do both of the following:
• Issue an Invalidation Request message to the Endpoint without waiting for the DTI_ATS_SYNC_ACK to be
returned.
• Not wait for a corresponding Invalidation Completion message from the Endpoint for this invalidation before
returning the currently outstanding DTI_ATS_SYNC_ACK message.
It does not guarantee that the posted write requests are complete, as memory writes in PCIe do not receive a
response.
To ensure correct ordering, the Root Complex must ensure that posted writes intended for the AMBA system that
were received before the Invalidation Completion, have been issued downstream and are complete. A Root
Complex can only return a DTI_ATS_SYNC_ACK message when this requirement has been met. The Root
Complex is not required to ensure that reads are complete because this has already been ensured by the Endpoint.
4-110 Copyright © 2016-2018, 2020-2023 Arm Limited or its affiliates. All rights reserved. ARM IHI 0088F
Non-Confidential ID092723
4 DTI-ATS Messages
4.3 Invalidation and synchronization message group
SMMUv3 Command SSValid field value Global field value DTI-ATS Operation
CMD_ATC_INV 0 - ATCI_NOPASID
CMD_ATC_INV 1 0 ATCI_PASID
CMD_ATC_INV 1 1 ATCI_PASID_GLOBAL
For more information, see the Arm® System Memory Management Unit Architecture Specification, SMMU
architecture version 3.
ARM IHI 0088F Copyright © 2016-2018, 2020-2023 Arm Limited or its affiliates. All rights reserved. 4-111
ID092723 Non-Confidential
4 DTI-ATS Messages
4.4 Page request message group
The full details of the PCIe ATS PRI operations are not described here. For further information, see the PCIe
Address Translation Service specification.
4.4.1 DTI_ATS_PAGE_REQ
The DTI_ATS_PAGE_REQ message is used to request that a page is made available.
Description
A speculative page request.
Source
PCIe RP
Usage constraints
• There must be no current outstanding unacknowledged DTI_ATS_PAGE_REQ message.
• DTI_ATS_CONDIS_ACK.SUP_PRI was 1 during the connect sequence.
Field descriptions
The DTI_ATS_PAGE_REQ bit assignments are:
7 6 5 4 3 2 1 0 LSB
120
112
104
ADDR[63:16]
96
88
80
ADDR[15:12] Reserved PRG_INDEX[8] 72
PRG_INDEX[7:0] 64
56
48
SID
40
32
24
SSID[19:4]
16
SSID[3:0] SSV LAST WRITE READ 8
INST PRIV T PROTOCOL M_MSG_TYPE 0
4-112 Copyright © 2016-2018, 2020-2023 Arm Limited or its affiliates. All rights reserved. ARM IHI 0088F
Non-Confidential ID092723
4 DTI-ATS Messages
4.4 Page request message group
ARM IHI 0088F Copyright © 2016-2018, 2020-2023 Arm Limited or its affiliates. All rights reserved. 4-113
ID092723 Non-Confidential
4 DTI-ATS Messages
4.4 Page request message group
SID SID[15:0] is the Requester ID, otherwise known as BDF (Bus, Device,
Function).Higher-order bits of SID uniquely identify the PCIe segment in
the StreamID space that is used by the SMMU.
SSID If the request has a PASID TLP prefix, this field is PASID. Otherwise, this
field is 0.
SSV If the request has a PASID TLP prefix, this field is 1. Otherwise, this field
is 0.
Inst If the request has a PASID TLP prefix, this field is Exe. Otherwise, this
field is 0.
Priv If the request has a PASID TLP prefix, this field is Priv. Otherwise, this
field is 0.
Last This is L.
Write This is W.
Read This is R.
T This is T.
4.4.2 DTI_ATS_PAGE_ACK
The DTI_ATS_PAGE_ACK message is used to acknowledge a page request.
Description
A page request acknowledgment.
Source
TCU
Usage constraints
The PCIe RP must have previously issued a DTI_ATS_PAGE_REQ message that has not yet been
acknowledged.
4-114 Copyright © 2016-2018, 2020-2023 Arm Limited or its affiliates. All rights reserved. ARM IHI 0088F
Non-Confidential ID092723
4 DTI-ATS Messages
4.4 Page request message group
Field descriptions
The DTI_ATS_PAGE_ACK bit assignments are:
7 6 5 4 3 2 1 0 LSB
Reserved S_MSG_TYPE 0
Bits [7:4]
Reserved, SBZ.
S_MSG_TYPE, bits [3:0]
This field identifies the message type. The value of this field is taken from the list of
encodings for upstream messages, see DTI-ATS protocol upstream message on
page 2-26.
0b1000 DTI_ATS_PAGE_ACK.
4.4.3 DTI_ATS_PAGE_RESP
The DTI_ATS_PAGE_RESP message is used to respond to an ATS page request.
Description
An ATS page response.
Source
TCU
Usage constraints
DTI-ATSv1: None.
DTI-ATSv2, DTI-ATSv3: There must be no current unacknowledged DTI_ATS_PAGE_RESP
message.
Field descriptions
The DTI_ATS_PAGE_RESP bit assignments are:
7 6 5 4 3 2 1 0 LSB
88
Reserved 80
Reserved RESP Reserved PRG_INDEX[8] 72
PRG_INDEX[7:0] 64
56
48
SID
40
32
24
SSID[19:4]
16
SSID[3:0] SSV Reserved 8
Reserved T Reserved S_MSG_TYPE 0
Bits [95:78]
Reserved, SBZ.
ARM IHI 0088F Copyright © 2016-2018, 2020-2023 Arm Limited or its affiliates. All rights reserved. 4-115
ID092723 Non-Confidential
4 DTI-ATS Messages
4.4 Page request message group
4-116 Copyright © 2016-2018, 2020-2023 Arm Limited or its affiliates. All rights reserved. ARM IHI 0088F
Non-Confidential ID092723
4 DTI-ATS Messages
4.4 Page request message group
T DTI_ATS_PAGE_RESP.T
The mapping of DTI_ATS_PAGE_RESP.RESP with the PCIe PRG Response is shown in Table 4-8:
Success Success
4.4.4 DTI_ATS_PAGE_RESPACK
The DTI_ATS_PAGE_RESPACK message is used to acknowledge DTI_ATS_PAGE_RESP messages.
Description
Acknowledges DTI_ATS_PAGE_RESP messages.
Source
PCIe RP
Usage constraints
There must be at least one current outstanding unacknowledged DTI_ATS_PAGE_RESP message.
Protocol version is DTI-ATSv2 or greater.
ARM IHI 0088F Copyright © 2016-2018, 2020-2023 Arm Limited or its affiliates. All rights reserved. 4-117
ID092723 Non-Confidential
4 DTI-ATS Messages
4.4 Page request message group
Field descriptions
The DTI_ATS_PAGE_RESPACK bit assignments are:
7 6 5 4 3 2 1 0 LSB
Reserved M_MSG_TYPE 0
Bits [7:4]
Reserved, SBZ.
M_MSG_TYPE, bits [3:0]
This field identifies the message type. The value of this field is taken from the list of
encodings for downstream messages, see DTI-ATS protocol downstream messages on
page 2-26.
0b1001 DTI_ATS_PAGE_RESPACK.
It is a software-level protocol error if a DTI_ATS_PAGE_RESP message with a StreamID used by the TBU or PCIe
RP does not match an unanswered DTI_ATS_PAGE_REQ, when the value of LAST is 1, with the same
PRG_INDEX value that is not a Stop PASID marker.
DTI_ATS_PAGE_RESP messages can be broadcast to all DTI_ATS TBU or PCIe RPs. As such, a
DTI_ATS_PAGE_RESP message might be received with a StreamID that is not used by the TBU or PCIe RP and
that does not match any of the StreamIDs from its unanswered DTI_ATS_PAGE_REQ messages.
Note
If a DTI_ATS_PAGE_RESP message is received with its RESP field as ResponseFailure, this requirement is
suspended for the StreamID until the Page Request Interface can be re-enabled for that StreamID. For more
information, see PCI Express Address Translation Services Revision 1.1.
4-118 Copyright © 2016-2018, 2020-2023 Arm Limited or its affiliates. All rights reserved. ARM IHI 0088F
Non-Confidential ID092723
4 DTI-ATS Messages
4.5 Message dependencies for DTI-ATS
PAGE_RESP PAGE_RESPACK
PAGE_REQ PAGE_REQACK
CONDIS_REQ CONDIS_ACK
TRANS_RESP
TRANS_REQ
TRANS_FAULT
SYNC_REQ SYNC_ACK
ARM IHI 0088F Copyright © 2016-2018, 2020-2023 Arm Limited or its affiliates. All rights reserved. 4-119
ID092723 Non-Confidential
4 DTI-ATS Messages
4.5 Message dependencies for DTI-ATS
• DTI_ATS_SYNC_REQ message must wait for any outstanding DTI_ATS_INV_COMP messages for
invalidates that are in scope of the SYNC.
• DTI_ATS_SYNC_ACK and DTI_ATS_INV_COMP messages can wait for translated transactions using
translations obtained from DTI-ATS.
4-120 Copyright © 2016-2018, 2020-2023 Arm Limited or its affiliates. All rights reserved. ARM IHI 0088F
Non-Confidential ID092723
Chapter 5
Transport Layer
ARM IHI 0088F Copyright © 2016-2018, 2020-2023 Arm Limited or its affiliates. All rights reserved. 5-121
ID092723 Non-Confidential
5 Transport Layer
5.1 Introduction
5.1 Introduction
The DTI protocol can be conveyed over different transport layer mediums. This specification uses AXI4-Stream as
an example transport medium.
5-122 Copyright © 2016-2018, 2020-2023 Arm Limited or its affiliates. All rights reserved. ARM IHI 0088F
Non-Confidential ID092723
5 Transport Layer
5.2 AXI4-Stream transport protocol
Table 5-1 shows the mapping of AXI4-Stream signals for the DTI protocol.
TDATA Message data Multi-cycle messages are permitted if the data is larger than the
width of TDATA.
A new message must always start on TDATA[0].
It is recommended that TDATA is driven to zero for null bytes
indicated by TKEEP being LOW.
TKEEP Indicates valid bytes Indicates which bytes contain valid data, with one bit for each byte
of TDATA.
Valid bytes must be packed towards the least significant byte. The
least significant byte must always be valid.
All bytes must be valid if TLAST is LOW.
TSTRB Not implemented Uses default value of all bits equal to the corresponding bit of
TKEEP.
TLAST Last cycle of message Each DTI message is transported as a number of AXI4-Stream
transfers. This signal is used to indicate the last transfer of a
message.
Even if this interface is wide enough to carry all messages in a single
cycle, this signal must be implemented.
TID Originator node ID or The meaning of this signal depends on the direction of the interface:
not implemented • For a downstream interface, this signal indicates the source of
the message.
• For an upstream interface, this signal is not implemented.
There is only one TCU in the network.
TDEST Destination node ID The meaning of this signal depends on the direction of the interface:
or not implemented • For a downstream interface, this signal is not implemented.
There is only one TCU in the network.
• For an upstream interface, this signal indicates the destination
of the message.
TUSER Not implemented The DTI protocol does not require this signal.
ARM IHI 0088F Copyright © 2016-2018, 2020-2023 Arm Limited or its affiliates. All rights reserved. 5-123
ID092723 Non-Confidential
5 Transport Layer
5.2 AXI4-Stream transport protocol
The signal names of the AXI4-Stream interface are given a suffix to indicate the direction of the interface they are
using. Table 5-2 shows how the signals are suffixed.
Direction Suffix
5.2.2 Interleaving
Message of the DTI protocol must not be interleaved when TID and TDEST are different. When an AXI4-Stream
transfer is received with TLAST LOW, subsequent AXI4-Stream transfers must continue the same message with
the same TID, and TDEST until TLAST is HIGH. After TLAST is HIGH, a new message is permitted.
• An interconnect that connects multiple DTI interfaces to a single TCU adds additional bits, as required, to
the TID signal. The interconnect accepts messages from the TCU and redirects them to the appropriate
component by IMPLEMENTATION DEFINED mapping of the TID signal.
This scheme can be extended to support hierarchical interconnects, with each layer of interconnect adding additional
ID bits to the TID signal if necessary.
5-124 Copyright © 2016-2018, 2020-2023 Arm Limited or its affiliates. All rights reserved. ARM IHI 0088F
Non-Confidential ID092723
Appendix A
Pseudocode
This appendix provides example implementations of the requirements specified in this document.
The pseudocode language is as described in the Arm Architecture Reference Manual for A-profile architecture.
ARM IHI 0088F Copyright © 2016-2018, 2020-2023 Arm Limited or its affiliates. All rights reserved. A-125
ID092723 Non-Confidential
Appendix A Pseudocode
A.1 Memory attributes
enumeration MemoryType {
MemType_Normal,
MemoryType_GRE,
MemoryType_nGRE,
MemoryType_nGnRE,
MemoryType_nGnRnE
};
type MemAttrHints is (
bits(2) attrs, // The possible encodings for each attributes field are as below
bit ReadAllocate,
bit WriteAllocate,
bit Transient
)
constant bits(2) MemAttr_NC = ‘00’; // Non-cacheable
constant bits(2) MemAttr_WT = ‘10’; // Write-through
constant bits(2) MemAttr_WB = ‘11’; // Write-back
type MemoryAttributes is (
MemoryType type,
MemAttrHints inner, // Inner hints and attributes
MemAttrHints outer, // Outer hints and attributes
SH_e SH
)
A-126 Copyright © 2016-2018, 2020-2023 Arm Limited or its affiliates. All rights reserved. ARM IHI 0088F
Non-Confidential ID092723
Appendix A Pseudocode
A.1 Memory attributes
MemAttrHintsDecode()
// MemAttrHintsDecode()
// ====================
// Converts the attribute fields for Normal memory as used in stage 2
// descriptors to orthogonal attributes and hints.
MemAttrHints MemAttrHintsDecode(bits(2) attr)
MemAttrHints result;
case attr of
when ‘01’ // Non-cacheable (no allocate)
result.attrs = MemAttr_NC;
result.ReadAllocate = ‘0’;
result.WriteAllocate = ‘0’;
when ‘10’ // Write-through
result.attrs = MemAttr_WT;
result.ReadAllocate = ‘1’;
result.WriteAllocate = ‘1’;
when ‘11’ // Write-back
result.attrs = MemAttr_WB;
result.ReadAllocate = ‘1’;
result.WriteAllocate = ‘1’;
result.Transient = ‘0’;
return result;
DecodeMemAttr()
// DecodeMemAttr()
// ===============
// Converts the MemAttr short-from field from stage 2 descriptors
// into the unpacked MemoryAttributes type.
MemoryAttributes memattrs;
if memattr<3:2> == ‘00’ then // Device
case memattr<1:0> of
when ‘00’ memattrs.type = MemoryType_nGnRnE;
when ‘01’ memattrs.type = MemoryType_nGnRE;
when ‘10’ memattrs.type = MemoryType_nGRE;
when ‘11’ memattrs.type = MemoryType_GRE;
memattrs.inner = MemAttrHints UNKNOWN;
memattrs.outer = MemAttrHints UNKNOWN;
memattrs.SH = OuterShareable;
else
// Unreachable
assert(FALSE);
return memattrs;
ARM IHI 0088F Copyright © 2016-2018, 2020-2023 Arm Limited or its affiliates. All rights reserved. A-127
ID092723 Non-Confidential
Appendix A Pseudocode
A.1 Memory attributes
LongConvertAttrsHints()
// LongConvertAttrsHints()
// =======================
// Decodes the attribute fields for Normal memory as used in stage 1
// descriptors to orthogonal attributes and hints.
MemAttrHints LongConvertAttrsHints(bits(4) attrfield)
MemAttrHints result;
DecodeAttr()
// DecodeAttr()
// ============
// Converts the long-from ATTR field from stage 1 descriptors
// into the unpacked MemoryAttributes type.
MemoryAttributes DecodeAttr(bits(8) attrfield)
MemoryAttributes memattrs;
return memattrs;
A-128 Copyright © 2016-2018, 2020-2023 Arm Limited or its affiliates. All rights reserved. ARM IHI 0088F
Non-Confidential ID092723
Appendix A Pseudocode
A.1 Memory attributes
DefaultMemAttrHints()
// DefaultMemAttrHints()
// =====================
// Populate MemoryAttribute sub-fields with default values that might be
// required later in combine/modify operations.
MemoryAttributes DefaultMemAttrHints(MemoryAttributes current_attr)
if (current_attr.type != MemType_Normal
|| current_attr.inner.attrs == MemAttr_NC) then
current_attr.inner.ReadAllocate = ‘1’;
current_attr.inner.WriteAllocate = ‘1’;
current_attr.inner.Transient = ‘0’;
if (current_attr.type != MemType_Normal
|| current_attr.outer.attrs == MemAttr_NC) then
current_attr.outer.ReadAllocate = ‘1’;
current_attr.outer.WriteAllocate = ‘1’;
current_attr.outer.Transient = ‘0’;
return current_attr;
CombineMemoryType()
// CombineMemoryType()
// ===================
// Return the stronger of two memory types.
else
attr_a.type = MemType_Normal;
attr_a.inner.attrs = (attr_a.inner.attrs AND attr_b.inner.attrs);
attr_a.outer.attrs = (attr_a.outer.attrs AND attr_b.outer.attrs);
return attr_a;
CombineShareability()
// CombineShareability()
// =====================
// Return the stronger of two shareability values.
SH_e CombineShareability(SH_e sh_a, SH_e sh_b)
if sh_a == OuterShareable || sh_b == OuterShareable then
return OuterShareable;
elsif sh_a == InnerShareable || sh_b == InnerShareable then
return InnerShareable;
elsif sh_a == NonShareable || sh_b == NonShareable then
return NonShareable;
ARM IHI 0088F Copyright © 2016-2018, 2020-2023 Arm Limited or its affiliates. All rights reserved. A-129
ID092723 Non-Confidential
Appendix A Pseudocode
A.1 Memory attributes
CombineAllocHints()
// CombineAllocHints()
// ===================
// Return the stronger transient, read, and write allocation hints of
// two sets of memory attributes.
ModifyShareability()
// ModifyShareability()
// ====================
// Override shareability using the SHCFG field.
ReplaceMemoryType()
// ReplaceMemoryType()
// ===================
// Replace the memory type and Cacheability in the first parameter
// with that from the second parameter.
return current_attr;
A-130 Copyright © 2016-2018, 2020-2023 Arm Limited or its affiliates. All rights reserved. ARM IHI 0088F
Non-Confidential ID092723
Appendix A Pseudocode
A.1 Memory attributes
ReplaceAllocHints()
// ReplaceAllocHints()
// ===================
// Replace the allocation hints in the first parameter
// with that from the second parameter.
return current_attr;
ARM IHI 0088F Copyright © 2016-2018, 2020-2023 Arm Limited or its affiliates. All rights reserved. A-131
ID092723 Non-Confidential
Appendix A Pseudocode
A.2 Cache lookup
A.2.1 MatchTranslation
This section provides an example implementation for matching an incoming translation request against a translation
in cache.
// MatchTranslation()
// ==================
// Match an incoming translation request reqIN with a cached translation formed by (reqC,respC). The
// incoming request can use the translation if the result is True.
transrngbits = DecodeTransRng(respC.TRANS_RNG);
bit hit_gpc_only_bypass_full_rng = !reqIN.MMUV && !reqC.MMUV && TRANS_RNG == 0b1111 && oas_match;
bit hit_gpc_only_bypass_not_full = !reqIN.MMUV && !reqC.MMUV && TRANS_RNG != 0b1111 && oas_match &&
pas_match && addr_match;
A-132 Copyright © 2016-2018, 2020-2023 Arm Limited or its affiliates. All rights reserved. ARM IHI 0088F
Non-Confidential ID092723
Appendix A Pseudocode
A.2 Cache lookup
bit hit_non_bypass = reqIN.MMUV && reqC.MMUV && !respC.BYPASS && !reqIN.IDENT &&
PermissionCheck(reqIN,respC) &&
secsid_match && flow_match && sid_match && ssid_match &&
pas_match && tbi_addr_match;
if hit_gpc_only_bypass_full_rng ||
hit_gpc_only_bypass_not_full ||
hit_non_gpc_globalbypass_full_rng ||
hit_non_gpc_globalbypass_not_full ||
hit_streambypass_full_rng ||
hit_streambypass_not_full ||
hit_non_bypass then
return True
else
return False
A.2.2 MatchFault
This section provides an example implementation for matching an incoming translation request against a fault
transaction in cache.
// MatchFault()
// ==================
// Match an incoming translation request reqIN with a cached fault
// formed by (reqC,respC). The incoming request can use the fault
// translation if the result is True.
boolean MatchFault(DTI_TBU_TRANS_REQ reqIN, // Incoming request to match with the cached fault
DTI_TBU_TRANS_REQ reqC, // Translation request for the cached fault
DTI_TBU_TRANS_FAULT respC) // Translation response for the cached fault
A.2.3 PermissionCheck
// PermissionCheck()
// =================
// Check Non-secure instruction read permission for GlobalBypass or StreamBypass
// translations when MMUV=1. And check the RWX permissions for Non-bypass translation.
// No permission check required for a translation with MMUV=0.
boolean PermissionCheck(DTI_TBU_TRANS_REQ req, DTI_TBU_TRANS_RESP resp)
bit effective_InD = ((resp.INSTCFG == "Use incoming") && req.InD) || (resp.INSTCFG == "Instruction")
bit effective_PnU = ((resp.PRIVCFG == "Use incoming") && req.PnU) || (resp.PRIVCFG == "Privileged")
bit Secure_bypass_effective_ns_pas = ((resp.ATTR_OVR.NSCFG == "Use incoming") && req.NS) ||
(resp.ATTR_OVR.NSCFG == "Non-secure");
bit Realm_bypass_effective_ns_pas = (resp.BP_TYPE == StreamBypass) ?
((resp.ATTR_OVR.NSCFG == "Use incoming") && !req.NSE) ||
(resp.ATTR_OVR.NSCFG == "Non-secure") :
!resp.NSE;
bit req_R = ((req.PERM == "R") && !effective_InD) || (req.PERM == "RW")
bit req_W = (req.PERM == "W") || (req.PERM == "RW")
ARM IHI 0088F Copyright © 2016-2018, 2020-2023 Arm Limited or its affiliates. All rights reserved. A-133
ID092723 Non-Confidential
Appendix A Pseudocode
A.2 Cache lookup
// DecodeTransRng()
// =================
// Decode the address size indicated by DTI_TBU_TRANS_RESP.TRANS_RNG
int DecodeTransRng(bits(4) trans_rng)
case trans_rng of
when ‘0000’
page_sz = 12
when ‘0001’
page_sz = 14
when ‘0010’
page_sz = 16
when ‘0011’
page_sz = 21
when ‘0100’
page_sz = 25
when ‘0101’
page_sz = 29
when ‘0110’
page_sz = 30
when ‘0111’
page_sz = 34
when ‘1010’
page_sz = 36
when ‘1011’
page_sz = 39
when ‘1000’
page_sz = 42
return page_sz
// MatchSECSID()
// ==================
// Match SECSID in two translation requests
boolean MatchSECSID(DTI_TBU_TRANS_REQ req1, DTI_TBU_TRANS_REQ req2)
return (req1.SEC_SID == req2.SEC_SID)
// MatchSID()
// ==================
// Match SID between translation request1 and translation2 considering CONT field
boolean MatchSID(DTI_TBU_TRANS_REQ req1, DTI_TBU_TRANS_REQ req2, bits (4) cont)
return (req1.SID[31:cont] == req2.SID[31:cont])
// MatchSSID()
// ==================
// Match SSID and SSV in two translation requests
A-134 Copyright © 2016-2018, 2020-2023 Arm Limited or its affiliates. All rights reserved. ARM IHI 0088F
Non-Confidential ID092723
Appendix A Pseudocode
A.2 Cache lookup
// MatchFlow()
// ==================
// Match FLOW=ATST in two translation requests
boolean MatchFlow(DTI_TBU_TRANS_REQ req1, DTI_TBU_TRANS_REQ req2)
return ((req1.FLOW != ATST && req2.FLOW != ATST) || (req1.FLOW == ATST && req2.FLOW == ATST))
ARM IHI 0088F Copyright © 2016-2018, 2020-2023 Arm Limited or its affiliates. All rights reserved. A-135
ID092723 Non-Confidential
Appendix A Pseudocode
A.2 Cache lookup
A-136 Copyright © 2016-2018, 2020-2023 Arm Limited or its affiliates. All rights reserved. ARM IHI 0088F
Non-Confidential ID092723
Appendix B
Revisions
This appendix describes the technical changes between released issues of this specification.
Change Location
ARM IHI 0088F Copyright © 2016-2018, 2020-2023 Arm Limited or its affiliates. All rights reserved. B-137
ID092723 Non-Confidential
Appendix B Revisions
Change Location
Change Location
This issue describes only DTI-TBUv3, DTI-ATSv1, DTI-ATSv2, Throughout the specification
and DTI-ATSv3. For information on DTI-TBUv1 and DTI-TBUv2,
see Arm Developer, https://developer.arm.com/documentation.
New feature: Granule Protection Checks Message groups of the DTI Protocol on
page 2-24
Update: Range Invalidate operations section Range Invalidate operations on page 3-74
New feature: GPC invalidate operations GPC invalidate operations on page 3-76
B-138 Copyright © 2016-2018, 2020-2023 Arm Limited or its affiliates. All rights reserved. ARM IHI 0088F
Non-Confidential ID092723
Appendix B Revisions
Change Location
Update: Mapping of AXI4-Stream to the DTI protocol table Mapping of AXI4-Stream to the DTI
protocol on page 5-123
Addition: DTI-ATS and PCIe TLP mappings for DTI_ATS_TRANS_REQ on page 4-91
DTI_ATS_TRANS_REQ, DTI_ATS_INV_REQ, DTI_ATS_INV_REQ on page 4-103
DTI_ATS_PAGE_REQ, and DTI_ATS_PAGE_RESP DTI_ATS_PAGE_REQ on page 4-112
DTI_ATS_PAGE_RESP on page 4-115
ARM IHI 0088F Copyright © 2016-2018, 2020-2023 Arm Limited or its affiliates. All rights reserved. B-139
ID092723 Non-Confidential
Appendix B Revisions
B-140 Copyright © 2016-2018, 2020-2023 Arm Limited or its affiliates. All rights reserved. ARM IHI 0088F
Non-Confidential ID092723