The TCU Quality of Service (QoS) register specifies AxQOS values for each transaction type that is issued on the QTW/DVM interface. The MMU-600 does not use this value internally, but a downstream interconnect can use the value to control how it prioritizes transactions.
The AxQOS value that is associated with each transaction does not take account of other transactions that are blocked behind it. For example, although higher priority translations are normally progressed before lower priority translations, a low priority translation table walk might prevent the TCU from issuing a translation table walk with a higher priority.
The TCU_QOS characteristics are:
- Usage constraints
When TCU_SCR.NS_UARCH = 0, Non-secure accesses to this register are RAZ/WI.
Writes to this register are possible only when both SMMU_CR0.SMMUEN = 0 and SMMU_S_CR0.SMMUEN = 0. Writes at other times are ignored.
After modifying this register, software must issue an INV_ALL operation using the SMMU_S_INIT register, before it sets SMMUEN to 1. Failure to issue an INV_ALL operation results in unpredictable behavior.
This register exists in all TCU configurations.
The following figure shows the bit assignments.
Figure 3-2 TCU_QOS register bit assignments
The following table shows the bit assignments.
Table 3-16 TCU_QOS register bit assignments
|[27:24]||QOS_DVMSYNC||The AxQOS value that is used for DVM Sync Completion messages.|
|[23:20]||QOS_MSI||The AxQOS value that is used for MSIs.|
|[19:16]||QOS_QUEUE||The AxQOS value that is used for queue accesses.|
|[15:12]||QOS_PTW3||The AxQOS value that is used for translation table walks for translations where TCU_NODE_CTRLn.PRIORITY = 3 for the requesting node.|
|[11:8]||QOS_PTW2||The AxQOS value that is used for translation table walks for translations where TCU_NODE_CTRLn.PRIORITY = 2 for the requesting node.|
|[7:4]||QOS_PTW1||The AxQOS value that is used for translation table walks for translations where TCU_NODE_CTRLn.PRIORITY = 1 for the requesting node.|
|[3:0]||QOS_PTW0||The AxQOS value that is used for translation table walks for translations where TCU_NODE_CTRLn.PRIORITY = 0 for the requesting node.|