4.109 SMMUv3AEM - trace

This section describes the trace sources.

ArchMsg.Error.error

These messages are about activity occurring on the SMMU that is considered an error. Messages will only come out here if parameter all_error_messages_through_trace is true. Fields:

output string
The stream output

ArchMsg.Error.fetch_from_memory_type_not_supporting_httu

A descriptor fetch from an HTTU-enabled translation regime to an unsupported memory type was made. Whilst the fetch itself may succeed, if an update to the descriptor was attempted then it would fail. Fields:

address unsigned int
The address of the descriptor fetch.
desc_inner enum
Inner cacheability of descriptor
desc_outer enum
Outer cacheability of descriptor
desc_prot enum
The instruction/data, bus-ns/s and privileged/user marking
desc_sh enum
Shareability of descriptor
ssd_ns bool
Is the Security State Determination of the transaction non-secure.
stage unsigned int
The stage at which we had a problem.
streamid unsigned int
The StreamID of the transaction
substreamid unsigned int
The SubstreamID of the transaction (or ~0u if no substreamid)
trans_id unsigned int
Transaction id.

ArchMsg.Error.ns_cmdq

There is an error associated with the command queue. Fields:

cmd_id unsigned int
Command ID of the command in error.
cons unsigned int
CONS of the command.
what string
What is wrong.

ArchMsg.Error.priq_streamid_truncated

The SMMU received a PCIe PRI request with a StreamID) that was larger than that which the SMMU has been configured for. The StreamID that appears in the PRIQ entry will be truncated. Fields:

actual_streamid unsigned int
The actual StreamID that this request has.
sidsize unsigned int
The bit width of the SMMU for StreamIDs, as indicated by SMMU_IDR1.SIDSIZE.
trans_id unsigned int
The transaction ID that identifies this request.
trunc_streamid unsigned int
The truncated StreamID that will appear in the PRIQ entry.

ArchMsg.Error.priq_substreamid_truncated

The SMMU received a PCIe PRI request with a PASID prefix (SubstreamID) that was larger than that which the SMMU has been configured for. The SubstreamID that appears in the PRIQ entry will be truncated. Fields:

actual_substreamid unsigned int
The actual SubstreamID that this request has.
ssidsize unsigned int
The bit width of the SMMU for SubstreamIDs, as indicated by SMMU_IDR1.SSIDSIZE.
trans_id unsigned int
The transaction ID that identifies this request.
trunc_substreamid unsigned int
The truncated SubstreamID that will appear in the PRIQ entry.

ArchMsg.Error.s_cmdq

There is an error associated with the command queue. Fields:

cmd_id unsigned int
Command ID of the command in error.
cons unsigned int
CONS of the command.
what string
What is wrong.

ArchMsg.Error.tlb_entries_overlap

A TLB entry was attempted to be inserted into the TLB and was determined that it overlaps an existing entry. This check is not perfect but will catch simple errors. Fields:

do_f_tlb_conflict bool
Chosen to perform an F_TLB_CONFLICT.
end_address_of_new_entry unsigned int
End address of new entry.
end_address_of_old_entry unsigned int
End address of old entry.
index_of_new_entry unsigned int
Index of new entry.
index_of_old_entry unsigned int
Index of old entry.
start_address_of_new_entry unsigned int
Start address of new entry.
start_address_of_old_entry unsigned int
Start address of old entry.
why enum
Why it is an error for these two entries to overlap.

ArchMsg.Error.tlb_entry_not_invalidated_due_to_ril

An entry in the cache was not invalidated even though in the right address range because of the RIL fields of the command the entry do not match. Fields:

cmd_num unsigned int
The NUM field of the RIL part of the command.
cmd_ril_tg enum
The RIL_TG field of the RIL part of the command.
cmd_ril_ttl unsigned int
The TTL field of the RIL part of the command, zero means any level.
cmd_scale unsigned int
The SCALE field of the RIL part of the command.
entry_id unsigned int
The entry id that is being invalidated.
tlb_entry string
The TLB entry.

ArchMsg.Error.vatos_sel_vmid_out_of_range

The SMMU_(S_)VATOS_SEL.VMID field was programmed with a VMID that was too wide for this implementation (SMMU_IDR0.VMID16 == 0). Fields:

ssd_ns bool
The security state of the VATOS interface
vmid unsigned int
The VMID programmed.

ArchMsg.Info.info

These are information messages about what is happening in the SMMU. Fields:

output string
The stream output

ArchMsg.Warning.CMD_RESUME_no_transaction_resumed

A CMD_RESUME was issued that matched no transaction. Fields:

stag unsigned int
STAG in the CMD_RESUME.
streamid unsigned int
StreamID in the CMD_RESUME.
streamid_ns bool
The StreamID was for the non-secure world.

ArchMsg.Warning.atc_inv_strange

Something was odd about the CMD_ATC_INV. Fields:

cmd_id unsigned int
Command id
why string
Why the CMD_ATC_INV was strange

ArchMsg.Warning.bad_conf_reset_of_SMMU_GBPA_ABORT

The signal was not driven at reset by the external system, but was driven after we first started using the default value we had assumed. The external system, if it is going to drive the signal, must do so at first reset so that both sides of the connection can agree on the value of this signal. Fields:

default_value bool
The default value of the signal we have been assuming.
value bool
The value of the signal.

ArchMsg.Warning.bad_conf_reset_of_SMMU_S_GBPA_ABORT

The signal was not driven at reset by the external system, but was driven after we first started using the default value we had assumed. The external system, if it is going to drive the signal, must do so at first reset so that both sides of the connection can agree on the value of this signal. Fields:

default_value bool
The default value of the signal we have been assuming.
value bool
The value of the signal.

ArchMsg.Warning.bad_conf_system_supports_btm

The signal was not driven at reset by the external system, but was driven after we first started using the default value we had assumed. The external system, if it is going to drive the signal, must do so at first reset so that both sides of the connection can agree on the value of this signal. Fields:

default_value bool
The default value of the signal we have been assuming.
value bool
The value of the signal.

ArchMsg.Warning.bad_conf_system_supports_cohacc

The signal was not driven at reset by the external system, but was driven after we first started using the default value we had assumed. The external system, if it is going to drive the signal, must do so at first reset so that both sides of the connection can agree on the value of this signal. Fields:

default_value bool
The default value of the signal we have been assuming.
value bool
The value of the signal.

ArchMsg.Warning.bad_conf_system_supports_httu

The signal was not driven at reset by the external system, but was driven after we first started using the default value we had assumed. The external system, if it is going to drive the signal, must do so at first reset so that both sides of the connection can agree on the value of this signal. Fields:

default_value bool
The default value of the signal we have been assuming.
value bool
The value of the signal.

ArchMsg.Warning.bad_conf_system_supports_sev

The signal was not driven at reset by the external system, but was driven after we first started using the default value we had assumed. The external system, if it is going to drive the signal, must do so at first reset so that both sides of the connection can agree on the value of this signal. Fields:

default_value bool
The default value of the signal we have been assuming.
value bool
The value of the signal.

ArchMsg.Warning.bad_reset_in

The signal was not driven at reset by the external system, but was driven after we first started using the default value we had assumed. The external system, if it is going to drive the signal, must do so at first reset so that both sides of the connection can agree on the value of this signal. Fields:

default_value bool
The default value of the signal we have been assuming.
value bool
The value of the signal.

ArchMsg.Warning.contig_bit_gives_too_large_region_for_TxSZ

If the contig bit was used then the size of the contig region would be larger than that indicated by TxSZ. Fields:

desc_kind enum
Descriptor kind
el enum
Exception level
input_address unsigned int
Input address
log2_contig_region_size unsigned int
Log2(contig region size in bytes)
output_address unsigned int
Output address
stage_and_level unsigned int
The stage in bits [7:4] and the level in [3:0].
vmid unsigned int
VMID if appropriate

ArchMsg.Warning.contig_bit_has_inconsistent_input_and_output_address

If the contig bit was used then the some bits of the output address held in the descriptor and the input address must match. Fields:

desc_kind enum
Descriptor kind
el enum
Exception level
input_address unsigned int
Input address
log2_contig_region_size unsigned int
Log2(contig region size in bytes)
match_mask unsigned int
Bits that must match.
output_address unsigned int
Output address
stage_and_level unsigned int
The stage in bits [7:4] and the level in [3:0].
vmid unsigned int
VMID if appropriate

ArchMsg.Warning.fetch_from_memory_type_not_supporting_httu

A descriptor fetch from an HTTU-enabled translation regime to an unsupported memory type was made. Whilst the fetch itself may succeed, if an update to the descriptor was attempted then it would fail. Fields:

address unsigned int
The address of the descriptor fetch.
desc_inner enum
Inner cacheability of descriptor
desc_outer enum
Outer cacheability of descriptor
desc_prot enum
The instruction/data, bus-ns/s and privileged/user marking
desc_sh enum
Shareability of descriptor
ssd_ns bool
Is the Security State Determination of the transaction non-secure.
stage unsigned int
The stage at which we had a problem.
streamid unsigned int
The StreamID of the transaction
substreamid unsigned int
The SubstreamID of the transaction (or ~0u if no substreamid)
trans_id unsigned int
Transaction id.

ArchMsg.Warning.msi_address_truncated

An MSI was generated, but the address was silently truncated due to the limited downstream address bus width. Fields:

pmcg_index_and_counter unsigned int
If this is a PMCG interrupt, then the top 16 bits are the PMCG index, the lower 16 bits are counter index.
truncated_address unsigned int
The truncated address.
untruncated_address unsigned int
The untruncated address.
which enum
Which MSI this is

ArchMsg.Warning.msi_lost

An MSI was attempted to be sent, but the implementation doesn't support it. Fields:

id unsigned int
ID of this interrupt transaction.
kind enum
What kind of interrupt.

ArchMsg.Warning.priq_auto_response_failed_to_find_STE

The PRIQ was going to generate an auto-response, but failed to find an STE and so is returning a Failure message to the EndPoint which should disable the PRI interface of the EndPoint. Fields:

trans_id unsigned int
The ID of the PPR that is being lost.
why enum
Why the PPR is being lost.

ArchMsg.Warning.priq_overflow_bad_acking

Indicates that an overflow condition was acknowledged by writing to:- SMMU_PRIQ_CONS.OVACKFLG but an overflow condition did not exist. Fields:

new_ovackflg bool
The new value of the SMMU_PRIQ_CONS.OVACKFLG.

ArchMsg.Warning.priq_smmuen_forces_effective_priqen_low

If SMMUEN == 0, then the effective value of PRIQEN is 0. This warning is triggered when PRIQEN == 1 && SMMUEN == 0; which may not be what was intended. The PRIQ cannot be active if SMMUEN == 0.

ArchMsg.Warning.sev_lost

A SEV was lost because it isn't supported according to SMMU_IDR0.SEV. Fields:

why enum
Why the SEV was generated.

ArchMsg.Warning.warning

These messages are about unusual (but not necessarily incorrect) activity occurring on the SMMU. Fields:

output string
The stream output

EVENTQ_config

Configuration of interrupt updated. Fields:

address unsigned int
Address of the MSI.
data unsigned int
Data payload of the MSI.
irqen bool
Appropriate bit of SMMU_s_IRQ_CTRL controlling this interrupt.
memattr enum
Memory type
ns bool
Non-secure bus attribute.
ra bool
read-allocate attribute.
sh enum
Shareability.
smmu_idr0_msi bool
Are MSIs supported for this security world.
tr bool
transient attribute
wa bool
write-allocate attributes.

EVENTQ_irqen

The IRQEN has been changed. Fields:

new_value bool
The new value of IRQEN.

EVENTQ_irqen_ack

The IRQEN change has been acked. Fields:

new_value bool
The new value of IRQEN.

GERROR_config

Configuration of interrupt updated. Fields:

address unsigned int
Address of the MSI.
data unsigned int
Data payload of the MSI.
irqen bool
Appropriate bit of SMMU_s_IRQ_CTRL controlling this interrupt.
memattr enum
Memory type
ns bool
Non-secure bus attribute.
ra bool
read-allocate attribute.
sh enum
Shareability.
smmu_idr0_msi bool
Are MSIs supported for this security world.
tr bool
transient attribute
wa bool
write-allocate attributes.

GERROR_irqen

The IRQEN has been changed. Fields:

new_value bool
The new value of IRQEN.

GERROR_irqen_ack

The IRQEN change has been acked. Fields:

new_value bool
The new value of IRQEN.

PRIQ_config

Configuration of interrupt updated. Fields:

address unsigned int
Address of the MSI.
data unsigned int
Data payload of the MSI.
irqen bool
Appropriate bit of SMMU_s_IRQ_CTRL controlling this interrupt.
memattr enum
Memory type
ns bool
Non-secure bus attribute.
ra bool
read-allocate attribute.
sh enum
Shareability.
smmu_idr0_msi bool
Are MSIs supported for this security world.
tr bool
transient attribute
wa bool
write-allocate attributes.

PRIQ_irqen

The IRQEN has been changed. Fields:

new_value bool
The new value of IRQEN.

PRIQ_irqen_ack

The IRQEN change has been acked. Fields:

new_value bool
The new value of IRQEN.

SMMU_CR0ACK_SMMUEN_hazarded_by_priq

The SMMU_CR0ACK.SMMUEN cannot acknowledge the change to SMMUEN because there are outstanding PRIQ writes.

SMMU_CR0ACK_SMMUEN_update

The acknowledge to SMMU_CR0.SMMUEN was performed. Fields:

new_value bool
The new value of the register.

SMMU_CR0_SMMUEN_old_set_complete

A set of transactions associated with the old value of SMMU_CR0.SMMUEN completed. Fields:

last bool
This is the last set completing.
old_value bool
The old value of the set completing.

SMMU_CR0_SMMUEN_write

A write to SMMU_CR0.SMMUEN occurred. Fields:

new_value bool
The new value of the register.
old_value bool
The old value of the register.

SMMU_GBPA_old_set_complete

A set of transactions associated with the old value of SMMU_GBPA completed. Fields:

last bool
This is the last set completing.
old_value unsigned int
The old value of the set completing.

SMMU_GBPA_update

The Update flag to SMMU_GBPA was lowered. Fields:

new_value unsigned int
The new value of the register.

SMMU_GBPA_write

A write to SMMU_GBPA occurred. Fields:

new_value unsigned int
The new value of the register.
old_value unsigned int
The old value of the register.

SMMU_S_CR0ACK_SMMUEN_update

The acknowledge to SMMU_S_CR0.SMMUEN was performed. Fields:

new_value bool
The new value of the register.

SMMU_S_CR0_SMMUEN_old_set_complete

A set of transactions associated with the old value of SMMU_S_CR0.SMMUEN completed. Fields:

last bool
This is the last set completing.
old_value bool
The old value of the set completing.

SMMU_S_CR0_SMMUEN_write

A write to SMMU_S_CR0.SMMUEN occurred. Fields:

new_value bool
The new value of the register.
old_value bool
The old value of the register.

SMMU_S_GBPA_old_set_complete

A set of transactions associated with the old value of SMMU_S_GBPA completed. Fields:

last bool
This is the last set completing.
old_value unsigned int
The old value of the set completing.

SMMU_S_GBPA_update

The Update flag to SMMU_S_GBPA was lowered. Fields:

new_value unsigned int
The new value of the register.

SMMU_S_GBPA_write

A write to SMMU_S_GBPA occurred. Fields:

new_value unsigned int
The new value of the register.
old_value unsigned int
The old value of the register.

S_EVENTQ_config

Configuration of interrupt updated. Fields:

address unsigned int
Address of the MSI.
data unsigned int
Data payload of the MSI.
irqen bool
Appropriate bit of SMMU_s_IRQ_CTRL controlling this interrupt.
memattr enum
Memory type
ns bool
Non-secure bus attribute.
ra bool
read-allocate attribute.
sh enum
Shareability.
smmu_idr0_msi bool
Are MSIs supported for this security world.
tr bool
transient attribute
wa bool
write-allocate attributes.

S_EVENTQ_irqen

The IRQEN has been changed. Fields:

new_value bool
The new value of IRQEN.

S_EVENTQ_irqen_ack

The IRQEN change has been acked. Fields:

new_value bool
The new value of IRQEN.

S_GERROR_config

Configuration of interrupt updated. Fields:

address unsigned int
Address of the MSI.
data unsigned int
Data payload of the MSI.
irqen bool
Appropriate bit of SMMU_s_IRQ_CTRL controlling this interrupt.
memattr enum
Memory type
ns bool
Non-secure bus attribute.
ra bool
read-allocate attribute.
sh enum
Shareability.
smmu_idr0_msi bool
Are MSIs supported for this security world.
tr bool
transient attribute
wa bool
write-allocate attributes.

S_GERROR_irqen

The IRQEN has been changed. Fields:

new_value bool
The new value of IRQEN.

S_GERROR_irqen_ack

The IRQEN change has been acked. Fields:

new_value bool
The new value of IRQEN.

TLB.tlb_commentary

A commentary from the cache about what is going on. Fields:

output string
The stream output.

TLB.tlb_entry_invalidated

An entry in the cache has been invalidated. Fields:

entry_id unsigned int
The entry id that is being invalidated.
reason enum
Why the entry is being invalidated.

atc_inv_nop

The CMD_ATC_INV command is ignored as a NOP. This may be emitted multiple times if the CMD_ATC_INV is being ignored for multiple reasons. Fields:

address unsigned int
Untranslated Address to invalidate.
cmd_id unsigned int
Command id, if top-bit is set then was issued from the Non-secure CMDQ.
cons unsigned int
CONS of the command.
global bool
Global flag.
log2_size_in_bytes unsigned int
Log 2 of the size in bytes of the region to invalidate.
streamid unsigned int
StreamID in the invalidate command.
substreamid unsigned int
SubstreamID or ~0u if SSValid == false.
why enum
Why was NOPped

atos_complete_fault

The ATOS operation completed with a fault. Fields:

effective_st1translate bool
Because of the settings and/or the ATOS type then the effective st1translate can be different.
fault_faddr unsigned int
The fault FADDR.
fault_faultcode enum
The fault code.
fault_reason enum
The fault reason.
ssd_ns bool
This is a non-secure ATOS operation.
st1translate bool
The StreamID/SubstreamID combination should have been translated by stage 1.
st2translate bool
The translation suffered a stage 2 translation.
state enum
The final transaction state of the ATOS operation.
vatos_vmid unsigned int
The VMID of the VATOS operation, or ~0u if not a VATOS operation.

atos_complete_fault_inv_req

The ATOS operation completed, faulted and generated an INV_REQ response. Fields:

ssd_ns bool
This is a non-secure ATOS operation.
vatos_vmid unsigned int
The VMID of the VATOS operation, or ~0u if not a VATOS operation.
why enum
Why the ATOS operation generated an INV_REQ

atos_complete_success

The ATOS operation completed successfully. Fields:

base_addr unsigned int
The actual base address of region.
effective_st1translate bool
Because of the settings and/or the ATOS type then the effective st1translate can be different.
par_addr unsigned int
The PAR.ADDR field.
par_mair unsigned int
The memory attributes encoded as a MAIR
par_ns bool
The PAR.NS field, for an SSD-ns request then this will always be 0.
par_sh enum
Shareability
par_size bool
The PAR.Size field.
size_in_bytes unsigned int
The actual size in bytes of the region.
ssd_ns bool
This is a non-secure ATOS operation.
st1translate bool
The StreamID/SubstreamID combination should have been translated by stage 1.
st2translate bool
The translation suffered a stage 2 translation.
state enum
The final transaction state of the ATOS operation.
vatos_vmid unsigned int
The VMID of the VATOS operation, or ~0u if not a VATOS operation.

atos_run_set

The SMMU_s_GATOS_CTRL.RUN field was set to start the ATOS operation. Fields:

ssd_ns bool
This is a non-secure ATOS operation.
vatos bool
This is a VATOS operation

atos_starting

The ATOS operation is starting. Fields:

addr unsigned int
The input address to the ATOS operation.
httui bool
Inhibit HTTU update.
ind bool
Instruction Data.
pnu bool
Privileged not User.
rnw bool
Read not Write.
ssd_ns bool
This is a non-secure ATOS operation.
ssec bool
If this is a secure ATOS operation then this is if it is secure or not.
streamid unsigned int
The StreamID requested.
substreamid unsigned int
The SubstreamID requested, or ~0u if no SubstreamID.
type enum
The requested ATOS type.
vatos_vmid unsigned int
The VMID of the VATOS operation, or ~0u if not a VATOS operation.

cd_cc.CD_commentary

A commentary from the cache about what is going on. Fields:

output string
The stream output.

cd_cc.CD_entry_invalidated

An entry in the cache has been invalidated. Fields:

entry_id unsigned int
The entry id that is being invalidated.
reason enum
Why the entry is being invalidated.

cd_entry_allocated

An CD entry has been allocated. Fields:

cd string
A textual description of the CD.
entry_id unsigned int
The id of the cache entry. Top bit is set if is a debug entry.
ns enum
For the non-secure world
streamid unsigned int
The StreamID of the entry this will match.
substreamid unsigned int
The SubstreamID of the entry this will match. This may be zero for transactions without a SubstreamID.

conf_reset_of_SMMU_GBPA_ABORT

The reset value of SMMU_GBPA.ABORT. Fields:

value bool
The value of the signal.

conf_reset_of_SMMU_S_GBPA_ABORT

The reset value of SMMU_S_GBPA.ABORT. Fields:

value bool
The value of the signal.

conf_system_supports_btm

The system supports BTM. Fields:

value bool
The value of the signal.

conf_system_supports_cohacc

The system supports cohacc. Fields:

value bool
The value of the signal.

conf_system_supports_httu

The system supports HTTU. Fields:

value bool
The value of the signal.

conf_system_supports_sev

The system supports SEV. Fields:

value bool
The value of the signal.

dvm_tlbinvalidate_complete

The DVM TLB Invalidate message completed. Fields:

id unsigned int
The unique id of this DVM message.
ok bool
The DVM message was OK.

dvm_tlbinvalidate_received

A DVM message for a TLB Invalidate has been received. Fields:

address unsigned int
The VA or IPA to use if match_address.
asid unsigned int
The ASID to match if match_asid.
by_ipa bool
The operation is for an IPA operation if match_address.
id unsigned int
The unique id of this DVM message.
ignored enum
The DVM message was ignored
last_level bool
The operation is for last level if supported.
match_address bool
Match the address field.
match_asid bool
Match the asid field.
match_vmid bool
Match the vmid field.
num unsigned int
If a range operation, the NUM field. If a single-address operation this is 0.
prot enum
The protection level for which this TLB Invalidate will operate on.
security_world enum
The security world that this will apply to.
smmu_scale unsigned int
If a range operation, then the SCALE field with the meaning in the SMMU architecture which is different to the PE architecture. If a single-address operation this is 0.
stage1_only bool
The operation is for stage 1 only if supported.
tg enum
If a single-address or address-range operation, then the Translation Granule hint. Address-range operations always supply a Translation Granule.
translation_table_level enum
The leaf level of the translation table.
vmid unsigned int
The VMID to match if match_vmid.

found_tlb_entry_has_different_aset

Architecturally, a particular ASID either should be ASET0 or ASET1. However, we have managed to find a TLB entry that has a different ASET than that which we were searching for. This indicates a programming error. You should examine all contexts with this particular ASID/VMID and ensure they are consistent. Fields:

aset unsigned int
The ASET of this entry.
asid unsigned int
ASID if appropriate.
index unsigned int
Index of TLB entry.
input_start_address unsigned int
The start address of the input range that this matches.
scheme enum
The tagging scheme used
ssd_ns enum
Security State
vmid unsigned int
VMID if appropriate.

gerror_inverted

A GERROR bit was attempted to be inverted to record a fault. Fields:

already_different_to_gerrorn bool
True if the bit was already different to the corresponding bit in GERRORN and so it was not inverted.
gerrorn unsigned int
GERRORN register value.
interrupt_potentially_sent bool
An interrupt is potentially sent, depending on IRQEN. GERROR(N).MSI_GERROR_ABT_ERR does not send an interupt.
new_gerror unsigned int
GERROR register value after any invertion.
which enum
Which bit was attempted to be inverted.

gerrorn_acknowledge

A GERROR was acknowledged by SW. Fields:

which enum
Which GERROR was acknowledged.

httu_update_abandoned_update

The HTTU update of a descriptor in memory was potentially possible, but it was behind an update that failed to apply cleanly. Fields:

AF enum
Whether an AF update should/could occur.
DBM enum
Whether a DBM update should/could occur.
address unsigned int
Address of HTTU update.
httu_inner enum
Inner cacheability of descriptor to update
httu_outer enum
Outer cacheability of descriptor to update
httu_prot enum
The instruction/data, bus-ns/s and privileged/user marking
httu_sh enum
Shareability of descriptor to update
mpam_pmg_and_partid unsigned int
Bits[23:16] are the MPAM PMG. Bits[15:0] are the physical PARTID.
original_descriptor unsigned int
The original descriptor that the model observed.
stage_and_level unsigned int
The stage (bits[7:4]) and level (bits[3:0]).
trans_id unsigned int
The transaction id that this HTTU update is associated with.
what enum
What this descriptor represents

httu_update_end_update

The attempted update of a descriptor in memory has occurred. Fields:

is_big_endian bool
The descriptor is big-endian in memory.
original_descriptor unsigned int
The original descriptor value.
result enum
The result of the attempt to update.
trans_id unsigned int
The transaction id that this HTTU update is associated with.
try_to_change_to_descriptor unsigned int
The new descriptor value that tried to replace the original.
value_that_was_in_memory unsigned int
The value that the compare-and-swap operation returned as the value that was in memory.

httu_update_not_done

A discretionary HTTU update could occur and the implementation choose not to do it. A mandatory_do_if_linked_performed means that this is a stage 2 leaf descriptor that maps a subsequent stage 1 leaf descriptor whose update is discretionary and if that subsequent discretionary update is going to occur then this update becomes mandatory. Fields:

AF enum
Whether an AF update should/could occur.
DBM enum
Whether a DBM update should/could occur.
address unsigned int
Address of HTTU update.
httu_inner enum
Inner cacheability of descriptor to update
httu_outer enum
Outer cacheability of descriptor to update
httu_prot enum
The instruction/data, bus-ns/s and privileged/user marking
httu_sh enum
Shareability of descriptor to update
mpam_pmg_and_partid unsigned int
Bits[23:16] are the MPAM PMG. Bits[15:0] are the physical PARTID.
original_descriptor unsigned int
The original descriptor that the model observed.
stage_and_level unsigned int
The stage (bits[7:4]) and level (bits[3:0]).
trans_id unsigned int
The transaction id that this HTTU update is associated with.
what enum
What this descriptor represents

httu_update_start_update

An HTTU update could occur and the implementation chose to try it. A mandatory_do_if_linked_performed means that this is a stage 2 leaf descriptor that maps a subsequent stage 1 leaf descriptor whose update is discretionary and if that subsequent discretionary update is going to occur then this update becomes mandatory. Fields:

AF enum
Whether an AF update should/could occur.
DBM enum
Whether a DBM update should/could occur.
address unsigned int
Address of HTTU update.
httu_inner enum
Inner cacheability of descriptor to update
httu_outer enum
Outer cacheability of descriptor to update
httu_prot enum
The instruction/data, bus-ns/s and privileged/user marking
httu_sh enum
Shareability of descriptor to update
is_big_endian bool
The descriptor will be written to memory as big-endian.
mpam_pmg_and_partid unsigned int
Bits[23:16] are the MPAM PMG. Bits[15:0] are the physical PARTID.
original_descriptor unsigned int
The original descriptor that the model observed.
stage_and_level unsigned int
The stage (bits[7:4]) and level (bits[3:0]).
trans_id unsigned int
The transaction id that this HTTU update is associated with.
try_to_change_to_descriptor unsigned int
The new descriptor value that is going to try replace the original.
what enum
What this descriptor represents
will_do_AF bool
What the implementation chose to do for the AF update.
will_do_DBM bool
What the implementation chose to do for the DBM update.

interrupt_returned

An interrupt/MSI returned from downstream. Fields:

InD_NS_PnU enum
Instruction/Data, Non-secure/Secure, Privileged/User.
address unsigned int
Address of the MSI.
data unsigned int
Data payload of the MSI.
id unsigned int
ID of this interrupt transaction.
inner_cache enum
The actual attributes of the access.
kind enum
What kind of interrupt.
mpam_ns bool
The security state associated with the MPAM PARTID/PMG.
mpam_pmg_and_partid unsigned int
Bits[23:16] are the MPAM PMG. Bits[15:0] are the physical PARTID.
msi_valid bool
MSI will attempt to be sent.
ok bool
Did the access return OK or an abort?
outer_cache enum
The actual attributes of the access.
pmcg_index_and_counter unsigned int
If this is a PMCG interrupt, then the top 16 bits are the PMCG index, the lower 16 bits are counter index.
sh enum
Shareability

interrupt_sent

An interrupt is raised. If it sends an MSI then this is _after_ any device-dependent transform on the architectural attributes and so may differ from what is programmed. Fields:

InD_NS_PnU enum
Instruction/Data, Non-secure/Secure, Privileged/User.
address unsigned int
Address of the MSI.
data unsigned int
Data payload of the MSI.
id unsigned int
ID of this interrupt transaction.
inner_cache enum
The actual attributes of the access.
kind enum
What kind of interrupt.
mpam_ns bool
The NS state of the MPAM PARTID and MPAM PMG.
mpam_pmg_and_partid unsigned int
Bits[23:16] are the MPAM PMG. Bits[15:0] are the physical PARTID.
msi_valid bool
MSI will attempt to be sent.
outer_cache enum
The actual attributes of the access.
pmcg_index_and_counter unsigned int
If this is a PMCG interrupt, then the top 16 bits are the PMCG index, the lower 16 bits are counter index.
sh enum
Shareability

l1cd_cc.L1CD_commentary

A commentary from the cache about what is going on. Fields:

output string
The stream output.

l1cd_cc.L1CD_entry_invalidated

An entry in the cache has been invalidated. Fields:

entry_id unsigned int
The entry id that is being invalidated.
reason enum
Why the entry is being invalidated.

l1cd_entry_allocated

An L1 CD entry has been allocated. Fields:

entry_id unsigned int
The id of the cache entry. Top bit is set if is a debug entry.
normalised_substreamid unsigned int
The first SubstreamID of the range of SubstreamIDs that this L1CD entry will match.
ns enum
For the non-secure world
pa_l2 unsigned int
The PA of the L2 CD table. This is L2Ptr << 12.
streamid unsigned int
The StreamID this CD is for.
valid bool
Is the entry valid.

l1ste_cc.L1STE_commentary

A commentary from the cache about what is going on. Fields:

output string
The stream output.

l1ste_cc.L1STE_entry_invalidated

An entry in the cache has been invalidated. Fields:

entry_id unsigned int
The entry id that is being invalidated.
reason enum
Why the entry is being invalidated.

l1ste_entry_allocated

An L1 STE entry has been allocated. Fields:

entry_id unsigned int
The id of the cache entry. Top bit is set if is a debug entry.
first_streamid_of_range unsigned int
The first StreamID of the range of StreamIDs that this L1STE entry will match.
ns enum
For the non-secure world
num_entries_in_l2 unsigned int
The number of entries in the L2 table. This is 2**(Span-1) or 0 if invalid.
pa_l2 unsigned int
The PA of the L2 ST table. This is L2Ptr << 6 and aligned to the size of the table.

ns_cmd_sync_completed_irq

Non-secure CMD_SYNC completed its IRQ action. Fields:

cons_incl_wrap unsigned int
CONS pointer of CMD_SYNC.

ns_cmd_sync_completed_no_action

Non-secure CMD_SYNC completed, there was no CMD_SYNC action (SIG_NONE). Fields:

cons_incl_wrap unsigned int
CONS pointer of CMD_SYNC.

ns_cmd_sync_completed_sev

Non-secure CMD_SYNC completed its action of SIG_SEV. Fields:

cons_incl_wrap unsigned int
CONS pointer of CMD_SYNC.

ns_cmd_sync_completed_with_error

Non-secure CMD_SYNC completed, however, there was an error associated with the completion of the CMD_SYNC. Fields:

cerror enum
The error associated with the CMD_SYNC
cons_incl_wrap unsigned int
CONS pointer of CMD_SYNC.

ns_cmd_sync_issued

Non-secure CMD_SYNC has now completed issuing and we now know if something is hazarding the CMD_SYNC from completing. Fields:

cons_incl_wrap unsigned int
CONS pointer of CMD_SYNC.
hazarded bool
The CMD_SYNC is currently hazarded from completing.

ns_cmd_sync_issuing

Non-secure CMD_SYNC is starting to issue, we are going to start accounting for which things have to be part of the prior set of things that have to complete before the CMD_SYNC can complete. Fields:

cons_incl_wrap unsigned int
CONS pointer of CMD_SYNC.

ns_cmd_sync_starting_completion_action_irq

Non-secure CMD_SYNC starting IRQ completion action. Fields:

cons_incl_wrap unsigned int
CONS pointer of CMD_SYNC.
msiaddress unsigned int
The MSI address to use (or 0 if not sending an MSI).
msidata unsigned int
The MSI data to send.

ns_cmd_sync_starting_completion_action_sev

Non-secure CMD_SYNC starting its completion action of SIG_SEV. Fields:

cons_incl_wrap unsigned int
CONS pointer of CMD_SYNC.

ns_cmdq_cmd_sync_error

The CMD_SYNC can fault if an ATC Invalidate timeout occurs. The timeout will be attached to the next CMD_SYNC on the queue on which the invalidate was launched. Fields:

cerror enum
The CERROR to attach.

ns_cmdq_cmd_sync_error_delivered

The CMD_SYNC can fault if an ATC Invalidate timeout occurs. This is the CMD_SYNC delivering that fault. Fields:

cerror enum
The CERROR to attach.
cmd_id unsigned int
Command ID of the CMD_SYNC

ns_cmdq_issue

A command is actually being executed. Fields:

cmd_id unsigned int
Command ID of the command being executed.
cons unsigned int
CONS of the command.
what string
What is being executed.

ns_cmdq_pointers_state

The command queue pointers. Fields:

disable_fetch bool
The model has decided that as you programmed PROD/CONS inconsistently that it would not fetch as it has no confidence as to which are commands and which are not.
q_issuable_and_issued_cons unsigned int
The CONS pointer of the region that is issuable and/or issued (including wrap).
q_issuable_and_issued_prod unsigned int
The PROD pointer of the region that is issuable and/or issued (including wrap).
q_programmer_cons unsigned int
The CONS pointer as seen by the programmer (including wrap).
q_programmer_prod unsigned int
The PROD pointer as seen by the programmer (including wrap).
q_unfetched_cons unsigned int
The CONS pointer of the region unfetched (including wrap).
q_unfetched_prod unsigned int
The PROD pointer of the region unfetched (including wrap).

ns_cmdq_state

A description of what the CMDQ can do now. Fields:

can_cerror bool
There is a CERROR that can be recognised.
can_cmd_sync bool
There is a CMD_SYNC that can be recognised.
can_fetch bool
The SMMU can fetch
can_issue bool
There are fetched commands that are eligible to be issued.
can_update_cons bool
The programmer view of CMDQ_CONS can be moved to say some have been consumed.
cmd_sync enum
Why a CMD_SYNC cannot be issued
cmdqen bool
CMDQEN, when enabled then the CMDQ can fetch commands
cmdqen_1_to_0_unacknowledged bool
CMDQEN has been set to 0, but we have yet to acknowledge it.
current-real-cerror enum
The current CERROR that would be visible to the programmer if there was an error.
fetch-disabled_due_to_programmer_error bool
The PROD/CONS pointer was inconsistent and the model decided to stop processing commands.
fetch-number_of_unfetched_commands unsigned int
The number of commands that have yet to be fetched from memory, or ~0u if CMDQEN == 0.
fetch-state enum
The state of the fetch state machine
fetch-too_many_commands_outstanding_so_not_fetching_any_more bool
If there are too may issued commands, or pending to be issued then we won't fetch any more.
issue-number_of_issuable_commands unsigned int
The number of commands that have been fetched but not yet issued.
issue-number_of_unissuable_commands unsigned int
This might include commands behind an illegal command, or behind a CMD_SYNC.
issue-state enum
The internal issued state machine state
outstanding_fetches_since_reset unsigned int
The number of outstanding fetches.

ns_eventq_adding_to_cmd_sync_prior_set

The event created by the specified transaction id must become visible to the programmer before the CMD_SYNC can complete. Fields:

trans_id unsigned int
The transaction id that caused the event.

ns_eventq_auto_retry_stalled_transaction

A transaction that was stalled but not yet reported on the Event Queue was retried. The retry can happen if the transaction didn't write because it was de-duplicated behind a reported stalling transaction and that stalling transaction was CMD_RESUMEd, or if the queue was unwriteable and the queue is now writeable. Fields:

trans_id unsigned int
Transaction id of the auto-retried transaction.
why enum
Why the transaction retried.

ns_eventq_cmd_sync_unhazarded

The CMD_SYNC has been unhazarded as the prior set is empty and as much of it as required is visible in the programmers' view. Fields:

prod_incl_wrap unsigned int
The prod index including wrap bit that was required to become visible.
prog_prod_incl_wrap unsigned int
The current programmer-visible prod including wrap bit.

ns_eventq_eventqen_and_eventqenack

Trace the values of EVENTQEN and EVENTQENACK as they change. Fields:

about enum
Some more information about the queue state.
cons_incl_wrap unsigned int
The CONS pointer (including wrap bits).
eventqen bool
EVENTQEN.
eventqenack bool
EVENTQENACK.
prod_incl_wrap unsigned int
The PROD pointer (including wrap bits).

ns_eventq_external_abort

A particular eventq record got an external abort. The event will subsequently appear in the ns/s_eventq_lost_event_records trace. Fields:

prod unsigned int
The prod pointer (excluding wrap bit) of the event record that aborted.
trans_id unsigned int
The transaction id that produced the event record that aborted.

ns_eventq_lost_event_records

Event records that are lost and never record appear on this trace. Fields:

dword0 unsigned int
Double word 0 of event.
dword1 unsigned int
Double word 1 of event.
dword2 unsigned int
Double word 2 of event.
dword3 unsigned int
Double word 3 of event.
event enum
Event code that was thrown away.
prod unsigned int
The PROD index of the event if appropriate or ~0u otherwise.
reason enum
The reason the record was lost.
trans_id unsigned int
The transaction id that this corresponds to.

ns_eventq_overflow_acknowledged

When events are lost then they appear on the eventq_lost_event_records_* trace. This will activate the overflow flag in the corresponding SMMU_s_EVENTQ_PROD register. Software can then acknowledge that flag using the overflow acknowledge flag in SMMU_s_EVENTQ_CONS. Fields:

bad bool
If true then the programmer has attempted to acknowledge an overflow condition that didn't exist.
count_of_events_lost_due_to_overflow unsigned int
This is the number of events that were lost because the event queue was full. This does not include any lost because of an EVENTQ_ABT_ERR.

ns_eventq_pending_event_records

Event records that are pending to be dealt with by the eventq state machine. A specific event can be traced multiple times if it becomes part of the prior set of transactions of a CMD_SYNC that has to complete before the CMD_SYNC is allowed to be completed. Fields:

dword0 unsigned int
Double word 0 of event.
dword1 unsigned int
Double word 1 of event.
dword2 unsigned int
Double word 2 of event.
dword3 unsigned int
Double word 3 of event.
event enum
Event code.
is_prior_set bool
The transaction forms part of the prior set of a CMD_SYNC that have to become visible (or thrown away if necessary) before the CMD_SYNC can complete
trans_id unsigned int
The transaction id that this corresponds to.

ns_eventq_prod_cons_updated

This records when the programmer visible PROD/CONS pointer is updated. More can be visible in memory than are advertised in the programmer-visible PROD pointer. This also traces the latest PROD that could have been advertised. Fields:

mem_prod unsigned int
The PROD pointer value for all records that are visible in the memory.
num_events_available unsigned int
The number of events available to the programmer.
prog_cons unsigned int
The programmer-visible CONS pointer.
prog_prod unsigned int
The programmer-visible PROD pointer.
what enum
What changed?

ns_eventq_raising_eventq_abt_err

EVENTQ_ABT_ERR can now be raised.

ns_eventq_removing_from_cmd_sync_prior_set

The event captured by a CMD_SYNC and created by the specified transaction id is now in memory. Fields:

prod unsigned int
The prod index (no wrap bit) that must become visible to the programmer to see this record. If not head_of_line then the record will not become visible and this field is meaningless.
reason enum
The reason the event was removed.
trans_id unsigned int
The transaction id that caused the event.

ns_eventq_stashing_unreported_stalled_transaction_for_auto_retry

A stall event record would have been lost, instead it is stashed away to auto-retry when it can. Fields:

dword0 unsigned int
Double word 0 of event.
dword1 unsigned int
Double word 1 of event.
dword2 unsigned int
Double word 2 of event.
dword3 unsigned int
Double word 3 of event.
event enum
Event code that was thrown away.
reason enum
The reason the record was lost.
trans_id unsigned int
The transaction id that this corresponds to.

ns_eventq_write_event

An event is committed to being written. Fields:

dword0 unsigned int
Double word 0 of event.
dword1 unsigned int
Double word 1 of event.
dword2 unsigned int
Double word 2 of event.
dword3 unsigned int
Double word 3 of event.
event enum
Event code that was thrown away.
prod unsigned int
The PROD pointer (without wrap) that this event will be written to.
stall_event bool
Describes an event for a stalled transaction.
trans_id unsigned int
Transaction ID that generated this event.

ns_eventq_write_event_visible_in_memory

An event is now visible in memory. Fields:

abort bool
The write aborted.
dword0 unsigned int
Double word 0 of event.
dword1 unsigned int
Double word 1 of event.
dword2 unsigned int
Double word 2 of event.
dword3 unsigned int
Double word 3 of event.
event enum
Event code that was thrown away.
prod unsigned int
The PROD pointer (without wrap) that this event will be written to.
stall_event bool
Describes an event for a stalled transaction.
trans_id unsigned int
Transaction ID that generated this event.

pmcg_irq_config

The interrupt configuration of the Performance Monitor Counter Group (PMCG) changed. Fields:

address unsigned int
Address of the MSI.
data unsigned int
Data payload of the MSI.
irqen bool
SMMU_PMCG_CTRL.IRQEN.
memattr enum
Memory type
mpam_ns bool
The NS state of the MPAM PARTID and MPAM PMG
mpam_pmg_and_partid unsigned int
Bits[23:16] are the MPAM PMG. Bits[15:0] are the physical PARTID.
msi_supported bool
Are MSIs supported for this security world.
ns bool
Non-secure bus attribute.
pmcg_index unsigned int
Index of the PMCG
sh enum
Shareability.
smmu_pmcg_gmpam_Update bool
The SMMU_PMCG_GMPAM.Update flag. Only when this is zero are writes predictable.
ssd_ns bool
True if this PMCG controlled by the non-secure world.

pmcg_irqen

A trace of SMMU_PMCG_IRQ_CTRL.IRQEN. Fields:

new_value bool
The new value of IRQEN.
pmcg_index unsigned int
Index of the PMCG.
ssd_ns bool
True if this PMCG controlled by the non-secure world.

pmcg_irqen_ack

A trace of SMMU_PMCG_IRQ_CTRLACK.IRQEN. Fields:

new_value bool
The new value of IRQEN.
pmcg_index unsigned int
Index of the PMCG.
ssd_ns bool
True if this PMCG controlled by the non-secure world.

pmcg_merging_interrupts

An interrupt was wanted to be generated, but one was already pending so the two were merged together. Fields:

pmcg_index unsigned int
Index of the PMCG.
ssd_ns bool
True if this PMCG controlled by the non-secure world.

pmcg_trigger

A PMCG counter has been triggered. Fields:

counter_index unsigned int
The index of the counter within the PMCG.
event_id unsigned int
The event id that has been triggered.
ns_event bool
The security state associated with the event.
pmcg_index unsigned int
Index of the PMCG.
streamid unsigned int
The StreamID associated with the event, if there is one.

pmu_active_counter

Traces what active counters are in a PMCG and what streamids it might filter on. Those counters that trace both secure and non-secure StreamIDs or those that are not filtered by StreamID will appear twice, once for each security world. All active counters for a PMCG are traced one after another. Fields:

begin_streamid unsigned int
The start StreamID to filter on.
counter_index unsigned int
The counter index within the PMCG.
end_incl_streamid unsigned int
The end inclusive StreamID to filter on.
evcnt unsigned int
The current count.
event_id unsigned int
The event ID to filter.
ns bool
Are the StreamIDs non-secure?
pmcg_index unsigned int
The index of the PMCG that this counter belongs to.

pmu_all_counters_in_pmcg_became_inactive

The PMCG was tracing some events and now is not tracing any. Fields:

pmcg_index unsigned int
The index of the PMCG.

pmu_counter_configured_to_use_unsupported_event

An enabled counter was configured to use a unsupported event. Fields:

counter_index unsigned int
The counter index within the PMCG.
event_id unsigned int
The unsupported event id.
pmcg_index unsigned int
The index of the PMCG that this counter belongs to.

pmu_counter_overflowed

A counter in a particular PMCG overflowed. Fields:

already_overflowed bool
True if the overflow flag was already set.
capture bool
True if it captured the other counter values.
counter_index unsigned int
The counter index within the PMCG.
interrupt bool
True if going to attempt to generate an interrupt.
pmcg_index unsigned int
The index of the PMCG that this counter belongs to.
ssd_ns bool
The PMCG is controlled by the Non-secure world.

priq_auto_response

A PRIQ auto response is generated. Fields:

prgindex unsigned int
The PRG Index of the response.
resp enum
The response to send.
streamid unsigned int
The StreamID of the response.
substreamid unsigned int
The PASID/SubstreamID attached to the response, or ~0u if there is none.
trans_id unsigned int
The ID of the PPR that is being lost.
why enum
Why the PPR is being lost.

priq_lost_ppr

The PRIQ is not reporting a PPR into the queue. It may or may not generate an auto-response. Fields:

is_stop_marker bool
The PPR being lost is a Stop Marker.
resp enum
What, if any, auto-response will be.
trans_id unsigned int
The ID of the PPR that is being lost.
why enum
Why the PPR is being lost

priq_overflow_acking

Indicates that an overflow condition was acknowledged by writing to:- SMMU_PRIQ_CONS.OVACKFLG. Fields:

new_ovackflg bool
The new value of the SMMU_PRIQ_CONS.OVACKFLG.

priq_overflow_asserting

Indicates that we are toggling the SMMU_PRIQ_PROD.OVFLG because we lost a PRI request due to the PRIQ being full and an existing overflow condition does not already exist. Fields:

new_ovflg bool
The new value of the SMMU_PRIQ_PROD.OVFLG.
trans_id unsigned int
The transaction ID of the PPR that caused the overflow.

priq_received

A PRIQ Request has been received and is queued waiting processing. This does not mean that it has been written to the PRIQ but has been placed in a pending queue awaiting a decision about what to do about it. Fields:

L bool
The Last in the Page Request Group (PRG).
R bool
Read permission is requested.
W bool
Read permission is requested.
prgindex unsigned int
The Page Request Group (PRG) index that is being used to identify this request to the EndPoint.
ssd_ns bool
The SSD of the StreamID. PRIQ should only receive _non-secure_ PRI Requests.
stop_marker bool
If LRW == 0b100 then this indicates this is a stop marker.
streamid unsigned int
The StreamID this request is associated with.
substreamid unsigned int
The SubstreamID (PASID) this request is associated with, of ~0u if no SubstreamID.
substreamid_P bool
If has a SubstreamID (!= ~0u) then Privileged Mode Requested.
substreamid_X bool
If has a SubstreamID (!= ~0u) then Execution Requested (R must also be 1).
trans_id unsigned int
The transaction ID that identifies this request.
untranslated_address unsigned int
The Untranslated Address that this is requesting.

priq_write_aborted

A PRIQ write aborted. The PRIQ now goes into an error state and will start auto-responding to PRI requests. Fields:

prod_incl_wrap unsigned int
The PROD including the Wrap bit where we were trying to write.
trans_id unsigned int
The transaction ID of the PPR that aborted.

priq_write_ok

A PRIQ write completed OK. Fields:

prod_incl_wrap unsigned int
The PROD including the Wrap bit where we wrote..
trans_id unsigned int
The transaction ID of the PPR.

priq_write_start

A PRIQ request has been received and is going to be attempt to be written to the queue. Fields:

L bool
The Last in the Page Request Group (PRG).
R bool
Read permission is requested.
W bool
Read permission is requested.
prgindex unsigned int
The Page Request Group (PRG) index that is being used to identify this request to the EndPoint.
prod_incl_wrap unsigned int
PROD position including the wrap bit.
stop_marker bool
If LRW == 0b100 then this indicates this is a stop marker.
streamid unsigned int
The StreamID this request is associated with.
substreamid unsigned int
The SubstreamID (PASID) this request is associated with, of ~0u if no SubstreamID.
substreamid_P bool
If has a SubstreamID (!= ~0u) then Privileged Mode Requested.
substreamid_X bool
If has a SubstreamID (!= ~0u) then Execution Requested (R must also be 1).
trans_id unsigned int
The transaction ID that identifies this request.
untranslated_address unsigned int
The Untranslated Address that this is requesting.

priqen_state

The trace of various fields that indicate the state of the PRIQ. Fields:

cons_incl_wrap unsigned int
The value of SMMU_PRIQ.CONS.RD_and_RD_wrap.
number_of_pprs unsigned int
The number of PPRs as indicated by the CONS/PROD.
number_of_pprs_still_to_deal_with unsigned int
This is the number of PPRs that are currently waiting to either be written to the PRIQ, or auto-responded to.
number_of_priq_writes_in_flight unsigned int
The number of writes to the PRIQ that are currently in flight.
ovackflg bool
The OVACKFLG which if different to OVFLG is used to indicate that the PRIQ overflowed.
ovflg bool
The OVFLG which if different to OVACKFLG is used to indicate that the PRIQ overflowed.
priq_abt_err bool
There is an active SMMU_GERROR{N}.PRIQ_ABT_ERR.
priqen bool
The value of SMMU_CR0.PRIQEN. The _effective_ value is 0 if SMMUEN == 0.
priqenack bool
The value of SMMU_CR0ACK.PRIQEN.
prod_incl_wrap unsigned int
The value of SMMU_PRIQ.CONS.WR_and_WR_wrap.
queue_disabled_due_to_prior_programming_error bool
The queue was disabled as the programmer got CONS/PROD into an inconsistent state. The model will disable the PRIQ until SW disables and re-enables the queue via SMMU_CR0.PRIQEN.
smmuen bool
The value of SMMU_CR0.SMMUEN. If this is 0 then the effective PRIQEN is 0.
smmuenack bool
The value of SMMU_CR0.SMMUEN. If this is 0 then the effective PRIQEN is 0.
table_size_in_elements unsigned int
The size of the table in the number of items it can hold.

ptw_read

Page Table Walk (read). This is the result of the physical access that the SMMU is making. Fields:

abort unsigned int
Non-zero if the access aborted/failed.
adomain enum
The actual attributes of the access that was used, after IMP DEF mangling.
aprot enum
The actual attributes of the access that was used, after IMP DEF mangling.
data unsigned int
The data fetch if it didn't abort.
desckind enum
The kind of descriptor
inner_cache enum
The actual attributes of the access that was used, after IMP DEF mangling.
input_address unsigned int
Input address this lookup is for (after TBI normalisation).
ns bool
Non-Secure
outer_cache enum
The actual attributes of the access that was used, after IMP DEF mangling.
pa_address unsigned int
Physical address.
ssd_ns enum
Security state of stream
streamid unsigned int
The StreamID this is for.
substreamid unsigned int
The SubstreamID this is for.
trans_id unsigned int
Transaction id
ttb_grain_stage_and_level unsigned int
Which TTB used in bits[31:24]. Which Grain size used in bit[23:16]:- 0 -- 4 KiB 1 -- 16 KiB 2 -- 64 KiB 3 -- 64 KiB ARMv8.2 where descriptor bits [15:12] for bits [51:48] of output address Stage in bits[15:8]. Level in bits[7:0].

ptw_read_st1_invalid_long_descriptor

Page Table Walk (read). The descriptor that the PTW fetched is invalid. Fields:

desckind enum
The kind of descriptor
input_address unsigned int
Input address this lookup is for (after TBI normalisation).
ns bool
Non-Secure
pa_address unsigned int
Physical address.
ssd_ns enum
Security state of stream
streamid unsigned int
The StreamID this is for.
substreamid unsigned int
The SubstreamID this is for.
trans_id unsigned int
Transaction id
ttb_grain_stage_and_level unsigned int
Which TTB used in bits[31:24]. Which Grain size used in bit[23:16]:- 0 -- 4 KiB 1 -- 16 KiB 2 -- 64 KiB 3 -- 64 KiB ARMv8.2 where descriptor bits [15:12] for bits [51:48] of output address Stage in bits[15:8]. Level in bits[7:0].

ptw_read_st1_leaf_long_descriptor

Page Table Walk (read). The descriptor that the PTW fetched is a block or page and this is the decode. Fields:

AF bool
Access Flag.
AP21 enum
The access permissions.
AttrIndx210 unsigned int
The attribute index into the MAIR0/1.
DBM bool
Dirty Bit Modifier. This only has meaning if running in AArch64 mode.
NS bool
The encoding is for non-secure if this is a secure fetch.
PXN bool
Privileged eXecute Never.
SH10 enum
The shareability.
XN bool
eXecute Never.
contiguous bool
Contiguous hint.
desckind enum
The kind of descriptor
input_address unsigned int
Input address this lookup is for (after TBI normalisation).
nG bool
not Global.
nT bool
SMMUv3.2: If true then do not cache this entry in such a way that it can cause a TLB conflict abort (F_TLB_CONFLICT). The entry must produce a consistent result.
ns bool
Non-Secure
output_address unsigned int
Output address.
pa_address unsigned int
Physical address.
ssd_ns enum
Security state of stream
streamid unsigned int
The StreamID this is for.
substreamid unsigned int
The SubstreamID this is for.
trans_id unsigned int
Transaction id
ttb_grain_stage_and_level unsigned int
Which TTB used in bits[31:24]. Which Grain size used in bit[23:16]:- 0 -- 4 KiB 1 -- 16 KiB 2 -- 64 KiB 3 -- 64 KiB ARMv8.2 where descriptor bits [15:12] for bits [51:48] of output address Stage in bits[15:8]. Level in bits[7:0].

ptw_read_st1_table_long_descriptor

Page Table Walk (read). The descriptor that the PTW fetched is a Table, this decodes the fields. Fields:

APTable enum
Remove permissions independently of subsequent descriptors.
NSTable bool
The next level table descriptor is forced to non-secure.
PXNTable bool
Force PXN independently of subsequent descriptors.
TableAddress unsigned int
Address of the next table.
XNTable bool
Force XN independently of subsequent descriptors.
desckind enum
The kind of descriptor
input_address unsigned int
Input address this lookup is for (after TBI normalisation).
ns bool
Non-Secure
pa_address unsigned int
Physical address.
ssd_ns enum
Security state of stream
streamid unsigned int
The StreamID this is for.
substreamid unsigned int
The SubstreamID this is for.
trans_id unsigned int
Transaction id
ttb_grain_stage_and_level unsigned int
Which TTB used in bits[31:24]. Which Grain size used in bit[23:16]:- 0 -- 4 KiB 1 -- 16 KiB 2 -- 64 KiB 3 -- 64 KiB ARMv8.2 where descriptor bits [15:12] for bits [51:48] of output address Stage in bits[15:8]. Level in bits[7:0].

ptw_read_st2_invalid_descriptor

Page Table Walk (read). The descriptor that the PTW fetched is invalid. Fields:

desckind enum
The kind of descriptor
input_address unsigned int
Input address this lookup is for (after TBI normalisation).
ns bool
Non-Secure
pa_address unsigned int
Physical address.
ssd_ns enum
Security state of stream
streamid unsigned int
The StreamID this is for.
substreamid unsigned int
The SubstreamID this is for.
trans_id unsigned int
Transaction id
ttb_grain_stage_and_level unsigned int
Which TTB used in bits[31:24]. Which Grain size used in bit[23:16]:- 0 -- 4 KiB 1 -- 16 KiB 2 -- 64 KiB 3 -- 64 KiB ARMv8.2 where descriptor bits [15:12] for bits [51:48] of output address Stage in bits[15:8]. Level in bits[7:0].

ptw_read_st2_leaf_descriptor

Page Table Walk (read). The descriptor that the PTW fetched is a block or page and this is the decode. Fields:

AF bool
Access Flag.
DBM bool
Dirty Bit Modifier. This only has meaning if running in AArch64 mode.
HAP21 enum
The access permissions.
MemAttr3_0 enum
The memory attributes.
SH10 enum
The shareability.
XN enum
eXecute Never.
contiguous bool
Contiguous hint.
desckind enum
The kind of descriptor
input_address unsigned int
Input address this lookup is for (after TBI normalisation).
nT bool
SMMUv3.2: If true then do not cache this entry in such a way that it can cause a TLB conflict abort (F_TLB_CONFLICT). The entry must produce a consistent result.
ns bool
Non-Secure
output_address unsigned int
Output address.
pa_address unsigned int
Physical address.
ssd_ns enum
Security state of stream
streamid unsigned int
The StreamID this is for.
substreamid unsigned int
The SubstreamID this is for.
trans_id unsigned int
Transaction id
ttb_grain_stage_and_level unsigned int
Which TTB used in bits[31:24]. Which Grain size used in bit[23:16]:- 0 -- 4 KiB 1 -- 16 KiB 2 -- 64 KiB 3 -- 64 KiB ARMv8.2 where descriptor bits [15:12] for bits [51:48] of output address Stage in bits[15:8]. Level in bits[7:0].

ptw_read_st2_table_descriptor

Page Table Walk (read). The descriptor that the PTW fetched is a Table, this decodes the fields. Fields:

APTable enum
Remove permissions independently of subsequent descriptors.
PXNTable bool
Force PXN independently of subsequent descriptors.
TableAddress unsigned int
Address of the next table.
XNTable bool
Force XN independently of subsequent descriptors.
desckind enum
The kind of descriptor
input_address unsigned int
Input address this lookup is for (after TBI normalisation).
ns bool
Non-Secure
pa_address unsigned int
Physical address.
ssd_ns enum
Security state of stream
streamid unsigned int
The StreamID this is for.
substreamid unsigned int
The SubstreamID this is for.
trans_id unsigned int
Transaction id
ttb_grain_stage_and_level unsigned int
Which TTB used in bits[31:24]. Which Grain size used in bit[23:16]:- 0 -- 4 KiB 1 -- 16 KiB 2 -- 64 KiB 3 -- 64 KiB ARMv8.2 where descriptor bits [15:12] for bits [51:48] of output address Stage in bits[15:8]. Level in bits[7:0].

raw_register_end_read

The raw register read transaction. This is the transaction as directed to the register port. Fields:

id unsigned int
Id of this transaction.
ok bool
Was the access OK? The bus response will always be OK, but is the register access reasonable.
read_data unsigned int
The data read.

raw_register_end_write

The raw register write transaction. This is the transaction as directed to the register port. Fields:

id unsigned int
Id of this transaction.
ok bool
Was the access OK? The bus response will always be OK, but is the register access reasonable.

raw_register_start_read

The raw register read transaction. This is the transaction as directed to the register port. Fields:

address unsigned int
Address of transaction.
id unsigned int
Id of this transaction. Top bit is set if is a debug transaction.
ns enum
Is the transaction non-secure?
number_of_beats unsigned int
Number of beats.
size_of_beat_in_bytes unsigned int
Size of each beat in bytes.

raw_register_start_write

The raw register write transaction. This is the transaction as directed to the register port. Fields:

address unsigned int
Address of transaction
id unsigned int
Id of this transaction. Top bit is set if is a debug transaction.
ns enum
Is the transaction non-secure?
number_of_beats unsigned int
Number of beats.
size_of_beat_in_bytes unsigned int
Size of each beat in bytes.
write_data unsigned int
The data to write.

register_disallowed_read_string

A text representation of the read of a register that was disallowed. Fields:

out string
The text description of the register value read.

register_disallowed_write_string

A text representation of the write of a register write that was disallowed. Fields:

in string
The text description of the register value written.

register_read_reserved

A text representation of an access to a register address that is reserved. Fields:

in string
The text description of the register value.

register_read_string

A text representation of the read of a register. Fields:

out string
The text description of the register value read.

register_write_reserved

A text representation of an access to a register address that is reserved or a write.to a RES0 field in a register. Fields:

in string
The text description of the register value.

register_write_string

A text representation of the write of a register. Fields:

in string
The text description of the register value written.

reset_in

The reset signal. Fields:

value bool
The value of the signal.

s_cmd_sync_completed_irq

Secure CMD_SYNC completed its IRQ action. Fields:

cons_incl_wrap unsigned int
CONS pointer of CMD_SYNC.

s_cmd_sync_completed_no_action

Secure CMD_SYNC completed, there was no CMD_SYNC action (SIG_NONE). Fields:

cons_incl_wrap unsigned int
CONS pointer of CMD_SYNC.

s_cmd_sync_completed_sev

Secure CMD_SYNC completed its action of SIG_SEV. Fields:

cons_incl_wrap unsigned int
CONS pointer of CMD_SYNC.

s_cmd_sync_completed_with_error

Secure CMD_SYNC completed, however, there was an error associated with the completion of the CMD_SYNC. Fields:

cerror enum
The error associated with the CMD_SYNC
cons_incl_wrap unsigned int
CONS pointer of CMD_SYNC.

s_cmd_sync_issued

Secure CMD_SYNC has now completed issuing and we now know if something is hazarding the CMD_SYNC from completing. Fields:

cons_incl_wrap unsigned int
CONS pointer of CMD_SYNC.
hazarded bool
The CMD_SYNC is currently hazarded from completing.

s_cmd_sync_issuing

Secure CMD_SYNC is starting to issue, we are going to start accounting for which things have to be part of the prior set of things that have to complete before the CMD_SYNC can complete. Fields:

cons_incl_wrap unsigned int
CONS pointer of CMD_SYNC.

s_cmd_sync_starting_completion_action_irq

Secure CMD_SYNC starting IRQ completion action. Fields:

cons_incl_wrap unsigned int
CONS pointer of CMD_SYNC.
msiaddress unsigned int
The MSI address to use (or 0 if not sending an MSI).
msidata unsigned int
The MSI data to send.

s_cmd_sync_starting_completion_action_sev

Secure CMD_SYNC starting its completion action of SIG_SEV. Fields:

cons_incl_wrap unsigned int
CONS pointer of CMD_SYNC.

s_cmdq_cmd_sync_error

The CMD_SYNC can fault if an ATC Invalidate timeout occurs. The timeout will be attached to the next CMD_SYNC on the queue on which the invalidate was launched. Fields:

cerror enum
The CERROR to attach.

s_cmdq_cmd_sync_error_delivered

The CMD_SYNC can fault if an ATC Invalidate timeout occurs. This is the CMD_SYNC delivering that fault. Fields:

cerror enum
The CERROR to attach.
cmd_id unsigned int
Command ID of the CMD_SYNC

s_cmdq_issue

A command is actually being executed. Fields:

cmd_id unsigned int
Command ID of the command being executed.
cons unsigned int
CONS of the command.
what string
What is being executed.

s_cmdq_pointers_state

The command queue pointers. Fields:

disable_fetch bool
The model has decided that as you programmed PROD/CONS inconsistently that it would not fetch as it has no confidence as to which are commands and which are not.
q_issuable_and_issued_cons unsigned int
The CONS pointer of the region that is issuable and/or issued (including wrap).
q_issuable_and_issued_prod unsigned int
The PROD pointer of the region that is issuable and/or issued (including wrap).
q_programmer_cons unsigned int
The CONS pointer as seen by the programmer (including wrap).
q_programmer_prod unsigned int
The PROD pointer as seen by the programmer (including wrap).
q_unfetched_cons unsigned int
The CONS pointer of the region unfetched (including wrap).
q_unfetched_prod unsigned int
The PROD pointer of the region unfetched (including wrap).

s_cmdq_state

A description of what the CMDQ can do now. Fields:

can_cerror bool
There is a CERROR that can be recognised.
can_cmd_sync bool
There is a CMD_SYNC that can be recognised.
can_fetch bool
The SMMU can fetch
can_issue bool
There are fetched commands that are eligible to be issued.
can_update_cons bool
The programmer view of CMDQ_CONS can be moved to say some have been consumed.
cmd_sync enum
Why a CMD_SYNC cannot be issued
cmdqen bool
CMDQEN, when enabled then the CMDQ can fetch commands
cmdqen_1_to_0_unacknowledged bool
CMDQEN has been set to 0, but we have yet to acknowledge it.
current-real-cerror enum
The current CERROR that would be visible to the programmer if there was an error.
fetch-disabled_due_to_programmer_error bool
The PROD/CONS pointer was inconsistent and the model decided to stop processing commands.
fetch-number_of_unfetched_commands unsigned int
The number of commands that have yet to be fetched from memory, or ~0u if CMDQEN == 0.
fetch-state enum
The state of the fetch state machine
fetch-too_many_commands_outstanding_so_not_fetching_any_more bool
If there are too may issued commands, or pending to be issued then we won't fetch any more.
issue-number_of_issuable_commands unsigned int
The number of commands that have been fetched but not yet issued.
issue-number_of_unissuable_commands unsigned int
This might include commands behind an illegal command, or behind a CMD_SYNC.
issue-state enum
The internal issued state machine state
outstanding_fetches_since_reset unsigned int
The number of outstanding fetches.

s_eventq_adding_to_cmd_sync_prior_set

The event created by the specified transaction id must become visible to the programmer before the CMD_SYNC can complete. Fields:

trans_id unsigned int
The transaction id that caused the event.

s_eventq_auto_retry_stalled_transaction

A transaction that was stalled but not yet reported on the Event Queue was retried. The retry can happen if the transaction didn't write because it was de-duplicated behind a reported stalling transaction and that stalling transaction was CMD_RESUMEd, or if the queue was unwriteable and the queue is now writeable. Fields:

trans_id unsigned int
Transaction id of the auto-retried transaction.
why enum
Why the transaction retried.

s_eventq_cmd_sync_unhazarded

The CMD_SYNC has been unhazarded as the prior set is empty and as much of it as required is visible in the programmers' view. Fields:

prod_incl_wrap unsigned int
The prod index including wrap bit that was required to become visible.
prog_prod_incl_wrap unsigned int
The current programmer-visible prod including wrap bit.

s_eventq_eventqen_and_eventqenack

Trace the values of EVENTQEN and EVENTQENACK as they change. Fields:

about enum
Some more information about the queue state.
cons_incl_wrap unsigned int
The CONS pointer (including wrap bits).
eventqen bool
EVENTQEN.
eventqenack bool
EVENTQENACK.
prod_incl_wrap unsigned int
The PROD pointer (including wrap bits).

s_eventq_external_abort

A particular eventq record got an external abort. The event will subsequently appear in the ns/s_eventq_lost_event_records trace. Fields:

prod unsigned int
The prod pointer (excluding wrap bit) of the event record that aborted.
trans_id unsigned int
The transaction id that produced the event record that aborted.

s_eventq_lost_event_records

Event records that are lost and never record appear on this trace. Fields:

dword0 unsigned int
Double word 0 of event.
dword1 unsigned int
Double word 1 of event.
dword2 unsigned int
Double word 2 of event.
dword3 unsigned int
Double word 3 of event.
event enum
Event code that was thrown away.
prod unsigned int
The PROD index of the event if appropriate or ~0u otherwise.
reason enum
The reason the record was lost.
trans_id unsigned int
The transaction id that this corresponds to.

s_eventq_overflow_acknowledged

When events are lost then they appear on the eventq_lost_event_records_* trace. This will activate the overflow flag in the corresponding SMMU_s_EVENTQ_PROD register. Software can then acknowledge that flag using the overflow acknowledge flag in SMMU_s_EVENTQ_CONS. Fields:

bad bool
If true then the programmer has attempted to acknowledge an overflow condition that didn't exist.
count_of_events_lost_due_to_overflow unsigned int
This is the number of events that were lost because the event queue was full. This does not include any lost because of an EVENTQ_ABT_ERR.

s_eventq_pending_event_records

Event records that are pending to be dealt with by the eventq state machine. A specific event can be traced multiple times if it becomes part of the prior set of transactions of a CMD_SYNC that has to complete before the CMD_SYNC is allowed to be completed. Fields:

dword0 unsigned int
Double word 0 of event.
dword1 unsigned int
Double word 1 of event.
dword2 unsigned int
Double word 2 of event.
dword3 unsigned int
Double word 3 of event.
event enum
Event code.
is_prior_set bool
The transaction forms part of the prior set of a CMD_SYNC that have to become visible (or thrown away if necessary) before the CMD_SYNC can complete
trans_id unsigned int
The transaction id that this corresponds to.

s_eventq_prod_cons_updated

This records when the programmer visible PROD/CONS pointer is updated. More can be visible in memory than are advertised in the programmer-visible PROD pointer. This also traces the latest PROD that could have been advertised. Fields:

mem_prod unsigned int
The PROD pointer value for all records that are visible in the memory.
num_events_available unsigned int
The number of events available to the programmer.
prog_cons unsigned int
The programmer-visible CONS pointer.
prog_prod unsigned int
The programmer-visible PROD pointer.
what enum
What changed?

s_eventq_raising_eventq_abt_err

EVENTQ_ABT_ERR can now be raised.

s_eventq_removing_from_cmd_sync_prior_set

The event captured by a CMD_SYNC and created by the specified transaction id is now in memory. Fields:

prod unsigned int
The prod index (no wrap bit) that must become visible to the programmer to see this record. If not head_of_line then the record will not become visible and this field is meaningless.
reason enum
The reason the event was removed.
trans_id unsigned int
The transaction id that caused the event.

s_eventq_stashing_unreported_stalled_transaction_for_auto_retry

A stall event record would have been lost, instead it is stashed away to auto-retry when it can. Fields:

dword0 unsigned int
Double word 0 of event.
dword1 unsigned int
Double word 1 of event.
dword2 unsigned int
Double word 2 of event.
dword3 unsigned int
Double word 3 of event.
event enum
Event code that was thrown away.
reason enum
The reason the record was lost.
trans_id unsigned int
The transaction id that this corresponds to.

s_eventq_write_event

An event is committed to being written. Fields:

dword0 unsigned int
Double word 0 of event.
dword1 unsigned int
Double word 1 of event.
dword2 unsigned int
Double word 2 of event.
dword3 unsigned int
Double word 3 of event.
event enum
Event code that was thrown away.
prod unsigned int
The PROD pointer (without wrap) that this event will be written to.
stall_event bool
Describes an event for a stalled transaction.
trans_id unsigned int
Transaction ID that generated this event.

s_eventq_write_event_visible_in_memory

An event is now visible in memory. Fields:

abort bool
The write aborted.
dword0 unsigned int
Double word 0 of event.
dword1 unsigned int
Double word 1 of event.
dword2 unsigned int
Double word 2 of event.
dword3 unsigned int
Double word 3 of event.
event enum
Event code that was thrown away.
prod unsigned int
The PROD pointer (without wrap) that this event will be written to.
stall_event bool
Describes an event for a stalled transaction.
trans_id unsigned int
Transaction ID that generated this event.

s_gerror_inverted

A GERROR bit was attempted to be inverted to record a fault. Fields:

already_different_to_gerrorn bool
True if the bit was already different to the corresponding bit in GERRORN and so it was not inverted.
gerrorn unsigned int
GERRORN register value.
interrupt_potentially_sent bool
An interrupt is potentially sent, depending on IRQEN. GERROR(N).MSI_GERROR_ABT_ERR does not send an interupt.
new_gerror unsigned int
GERROR register value after any invertion.
which enum
Which bit was attempted to be inverted.

s_gerrorn_acknowledge

A GERROR was acknowledged by SW. Fields:

which enum
Which GERROR was acknowledged.

sev

Send a SEV. Fields:

why enum
Why the SEV was generated.

smmu_atc_inv

The CMD_ATC_INV command is sent. Fields:

address unsigned int
Untranslated Address to invalidate.
cmd_id unsigned int
Command id, if top-bit is set then was issued from the Non-secure CMDQ.
cons unsigned int
CONS of the command.
global bool
Global flag.
log2_size_in_bytes unsigned int
Log 2 of the size in bytes of the region to invalidate.
ns_number_in_flight unsigned int
Number of ATC invalidates in flight issued from the Non-secure CMDQ.
ns_number_waiting_to_go_out unsigned int
The total number of ATC invalidates waiting to be pushed out from the Non-secure CMDQ.
s_number_in_flight unsigned int
Number of ATC invalidates in flight issued from the Secure CMDQ.
s_number_waiting_to_go_out unsigned int
The total number of ATC invalidates waiting to be pushed out from the Secure CMDQ.
streamid unsigned int
StreamID in the invalidate command.
substreamid unsigned int
SubstreamID or ~0u if SSValid == false.

smmu_atc_inv_completed

The CMD_ATC_INV command completed. Fields:

cmd_id unsigned int
Command id, if top-bit is set then was issued from the Non-secure CMDQ.
ns_number_in_flight unsigned int
Number of ATC invalidates in flight now this one has completed, that were issued by the Non-secure CMDQ.
ns_number_waiting_to_go_out unsigned int
The total number of ATC invalidates waiting to be pushed out from the Non-secure CMDQ.
response enum
The response.
s_number_in_flight unsigned int
Number of ATC invalidates in flight now this one has completed, that were issued by the Secure CMDQ.
s_number_waiting_to_go_out unsigned int
The total number of ATC invalidates waiting to be pushed out from the Secure CMDQ.

smmu_atc_inv_end

An ATC invalidate request has been started. Fields:

PASID_global bool
If has a SubstreamID (PASID) then if it is 'global' or not.
address unsigned int
The Untranslated Address to use.
log2_size_in_bytes unsigned int
Log2 of the size of the region in bytes to invalidate.
response enum
The response to the ATC invalidate
streamid unsigned int
The StreamID to use.
substreamid unsigned int
The SubstreamID to use (or ~0u if not used). This corresponds to the PASID.

smmu_atc_inv_start

An ATC invalidate request has been started. Fields:

PASID_global bool
If has a SubstreamID (PASID) then if it is 'global' or not.
address unsigned int
The Untranslated Address to use.
log2_size_in_bytes unsigned int
Log2 of the size of the region in bytes to invalidate.
streamid unsigned int
The StreamID to use.
substreamid unsigned int
The SubstreamID to use (or ~0u if not used). This corresponds to the PASID.

smmu_ats_initial

This is the initial ATS request. Fields:

ia unsigned int
Input address
max_number_of_replies unsigned int
The maximum number of replies allowed to return
no_write bool
The NW (no write flag) of the ATS request. If clear then the requester is going to do a write.
pasid_execute_requested bool
If there is a PASID (substreamid != ~0u) then this represents the requester asking for execution permissions.
pasid_privileged_mode_requested bool
If there is a PASID (substreamid != ~0u) then this represents the requester asking for the privileged mode's permissions.
ssd_ns bool
Incoming SSD, only non-secure ATS requests are legal.
streamid unsigned int
StreamID of the ATS request.
substreamid unsigned int
SubstreamID (which is identical to the PASID) of the ATS request. If no PASID-prefix is sent then this is ~0u
tbu unsigned int
Translation Buffer Unit number

smmu_ats_reply_failure

This is an ATS reply indicating failure. Fields:

event enum
Equivalent event number that would have been generated for an equivalent ordinary transaction.
failure enum
What is the failure response code?
state enum
The transaction state of the successfully ATS request.

smmu_ats_reply_success

This is an ATS reply, typically the SMMU will only return a single response, even if the requester indicated it could accept more replies. NOTE that the SMMU responds with 'success' in some cases when a fault is encountered and RW==0. Fields:

N bool
Non-snooped access. If one then the requester must clear the NoSnoop bit on transactions, unless otherwise enabled in a Function-specific manner.
P bool
Privileged mode. These permissions related to privileged mode.
RWX enum
Read/Write/Execute
U bool
Untranslated access. If one, and RW !=0 then use UntranslatedAccesses for the allowed accesses by RW(X).
inner enum
The inner cacheability attributes to use for TranslatedAccesses
input_address unsigned int
Input address of the ATS request
instcfg enum
The STE.INSTCFG field
outer enum
The outer cacheability attributes to use for TranslatedAccesses
privcfg enum
The STE.PRIVCFG field
shareability unsigned int
The shareability to use for TranslatedAccesses
size unsigned int
The size of the region covered by this translation.
state enum
The transaction state of the successfully ATS request.
translated_address unsigned int
If RW!=0 && U != 0, then the Translated Address that a TranslatedAccess can be made with

smmu_final_transaction

This is the transaction group request to remap has completed one set of remapping. For ordinary transactions, this represents a bundle of transactions with the same attributes but different addresses within a certain range around the address. If it stalls then it will report through this trace source, stall (stag_if_stalling != ~0u) and when resume will issue another smmu_initial_transaction as it undergoes remapping again. This trace source can also represent part of the process for ATOS/ATS or finding STE.PPAR for PRI requests that need to be auto-responded to. Fields:

input_address unsigned int
The input address of the transaction group.
input_inner enum
Inner cacheability for the input attributes.
input_outer enum
Outer cacheability for the input attributes.
input_prot enum
The instruction/data, bus-ns/s and privileged/user marking
input_sh enum
Shareability for the input attributes.
ipa_address unsigned int
The IPA of the transaction.
kind enum
The kind of access this transaction group that this represents.
mpam_pmg_and_partid unsigned int
Bits[23:16] are the MPAM PMG. Bits[15:0] are the physical PARTID.
operation enum
The kind of operation that this represents.
output_address unsigned int
The input address of the transaction group.
output_inner enum
Inner cacheability for the output attributes.
output_outer enum
Outer cacheability for the output attributes.
output_prot enum
The instruction/data, bus-ns/s and privileged/user marking
output_sh enum
Shareability for the output attributes.
output_vmid unsigned int
The output VMID/GBPA.IMPDEF or ~0u if not valid.
size_of_region_in_bytes unsigned int
An imp def size of region for which this translation is valid for.
ssd_ns enum
The security state of the transaction
stag_if_stalling unsigned int
This is the STAG used by the transaction if it is going to stall. It is ~0u if it is not going to stall.
state enum
The final transaction state.
streamid unsigned int
The StreamID of the transction.
substreamid unsigned int
The SubstreamID of the transaction or 0xFFFFffff if no SubstreamID.
tbu unsigned int
Translation Buffer Unit number.
trans_id unsigned int
Transaction id. Top bit set if debug transaction.

smmu_initial_transaction

This is the transaction group request to remap is going to start one set of remapping. For ordinary transactions, this represents a bundle of transactions with the same attributes but different addresses within a certain range around the address. A stalling transaction will report through this trace source when it unstalls. This trace source can also represent part of the process for ATOS/ATS or finding STE.PPAR for PRI requests that need to be auto-responded to. Fields:

input_address unsigned int
The input address of the transaction group.
input_inner enum
Inner cacheability for the input attributes.
input_outer enum
Outer cacheability for the input attributes.
input_prot enum
The instruction/data, bus-ns/s and privileged/user marking
input_sh enum
Shareability for the input attributes.
kind enum
The kind of access this transaction group that this represents.
operation enum
The kind of operation that this represents.
ssd_ns enum
The security state of the transaction
streamid unsigned int
The StreamID of the transction.
substreamid unsigned int
The SubstreamID of the transaction or 0xFFFFffff if no SubstreamID.
tbu unsigned int
Translation Buffer Unit number.
trans_id unsigned int
Transaction id. Top bit set if debug transaction.

smmu_pri_resp

The CMD_PRI_RESP command is queued to be sent to the PCIe system. Fields:

cmd_id unsigned int
Command id
cons unsigned int
CONS of the command.
prgindex unsigned int
PRG Index.
response enum
If has a SubstreamID (PASID) then if it is 'global' or not.
streamid unsigned int
StreamID in the invalidate command.
substreamid unsigned int
SubstreamID or ~0u if SSValid == false.

smmu_pri_resp_nop

The CMD_PRI_RESP command was NOPped. Fields:

cmd_id unsigned int
Command id
cons unsigned int
CONS of the command.
prgindex unsigned int
PRG Index.
response enum
If has a SubstreamID (PASID) then if it is 'global' or not.
streamid unsigned int
StreamID in the invalidate command.
substreamid unsigned int
SubstreamID or ~0u if SSValid == false.
why enum
Why the CMD_PRI_RESP was NOPped.

smmu_priq_resp_fake_return

A PRIQ Response is posted to the PCIe subsystem and so has no acknowledgement that it is received. However, in the model then we artificially know when the the PRIQ Response has been delivered to the PCIe subsystem, even if the ATC has not yet acted on it. Fields:

prgindex unsigned int
The PRG Index this request corresponds to.
streamid unsigned int
The StreamID to use.
substreamid unsigned int
The SubstreamID to use (or ~0u if not used). This corresponds to the PASID.
what enum
What happened.

smmu_priq_resp_start

A PRIQ Response has been posted to the PCIe subsystem. As the response is posted then there is no way of knowing when it is received by the EndPoint. Fields:

prgindex unsigned int
The PRG Index this request corresponds to.
response enum
If has a SubstreamID (PASID) then if it is 'global' or not.
streamid unsigned int
The StreamID to use.
substreamid unsigned int
The SubstreamID to use (or ~0u if not used). This corresponds to the PASID.

smmu_thread_wait_wake

Traces a thread's wait/wake status. Fields:

current_ticks unsigned int
The current tick count of simulated time.
event enum
What is happening to this thread.
thread_index unsigned int
The ID of this thread.
ticks unsigned int
If the event relates to a time then this is held in this field. Otherwise, 0.

stall_transaction

A transaction is about to stall. Fields:

stag unsigned int
STAG.
streamid unsigned int
StreamID.
streamid_ns bool
The StreamID was for the non-secure world.
trans_id unsigned int
Transaction id.

stall_transaction_inhibited_by_STALL_MAX

A transaction is about to stall but the maximum number of transactions have stalled and we can't report this one to the event queue (even if non-full). Fields:

streamid unsigned int
StreamID.
streamid_ns bool
The StreamID was for the non-secure world.
trans_id unsigned int
Transaction id.

stall_transaction_resuming

A stalled transaction is resuming. Fields:

stag unsigned int
STAG if appropriate, or if was inhibited by STALL_MAX then 0xFAFA.
stallresult enum
What the transaction resumed to do.
streamid unsigned int
StreamID.
streamid_ns bool
The StreamID was for the non-secure world.
trans_id unsigned int
Transaction id.

start_ptw_read

Page Table Walk (read). This is the start of the physical access that the SMMU is making. Fields:

adomain enum
The actual attributes of the access that was used, after IMP DEF mangling.
aprot enum
The actual attributes of the access that was used, after IMP DEF mangling.
desckind enum
The kind of descriptor
inner_cache enum
The actual attributes of the access that was used, after IMP DEF mangling.
input_address unsigned int
Input address this lookup is for (after TBI normalisation).
mpam_pmg_and_partid unsigned int
Bits[23:16] are the MPAM PMG. Bits[15:0] are the physical PARTID.
ns bool
Non-Secure
outer_cache enum
The actual attributes of the access that was used, after IMP DEF mangling.
pa_address unsigned int
Physical address.
ssd_ns enum
Security state of stream
streamid unsigned int
The StreamID this is for.
substreamid unsigned int
The SubstreamID this is for.
trans_id unsigned int
Transaction id
ttb_grain_stage_and_level unsigned int
Which TTB used in bits[31:24]. Which Grain size used in bit[23:16]:- 0 -- 4 KiB 1 -- 16 KiB 2 -- 64 KiB 3 -- 64 KiB ARMv8.2 where descriptor bits [15:12] for bits [51:48] of output address Stage in bits[15:8]. Level in bits[7:0].

ste_cc.STE_commentary

A commentary from the cache about what is going on. Fields:

output string
The stream output.

ste_cc.STE_entry_invalidated

An entry in the cache has been invalidated. Fields:

entry_id unsigned int
The entry id that is being invalidated.
reason enum
Why the entry is being invalidated.

ste_entry_allocated

An STE entry has been allocated. Fields:

entry_id unsigned int
The id of the cache entry. Top bit is set if is a debug entry.
ns enum
For the non-secure world
ste string
A textual description of the STE.
streamid unsigned int
The StreamID of the entry this will match.

tlb_entry_allocated

A TLB entry has been allocated. Fields:

aset unsigned int
The ASET of this entry.
asid unsigned int
ASID if appropriate.
index unsigned int
Index of TLB entry.
input_end_incl_address unsigned int
The end inclusive address of the input range that this matches.
input_start_address unsigned int
The start address of the input range that this matches.
output_end_incl_address unsigned int
The end inclusive address of the output range.
output_start_address unsigned int
The start address of the output range.
scheme enum
The tagging scheme used
ssd_ns enum
Security State
tbi bool
Was the entry formed using Top Byte Ignore (TBI).
vmid unsigned int
VMID if appropriate.

tlb_info_tlb_entries_overlap

A TLB entry was inserted into the TLB and it overlaps an existing entry. This isn't a problem as it was inserted in such a way that it architecturally works. Fields:

end_address_of_new_entry unsigned int
End address of new entry.
end_address_of_old_entry unsigned int
End address of old entry.
how_inserted enum
How the entry was inserted.
index_of_new_entry unsigned int
Index of new entry.
index_of_old_entry unsigned int
Index of old entry.
start_address_of_new_entry unsigned int
Start address of new entry.
start_address_of_old_entry unsigned int
Start address of old entry.

verbose_commentary

This is a verbose commentary on the translation process the SMMU is performing. Fields:

output string
The stream output.

warning_MSI_EVENTQ_address_out_of_range_of_oas

The MSI address is configured outside of the range of the downstream address bus size. Fields:

address unsigned int
The untruncated address of the MSI.

warning_MSI_GERROR_address_out_of_range_of_oas

The MSI address is configured outside of the range of the downstream address bus size. Fields:

address unsigned int
The untruncated address of the MSI.

warning_MSI_PRIQ_address_out_of_range_of_oas

The MSI address is configured outside of the range of the downstream address bus size. Fields:

address unsigned int
The untruncated address of the MSI.

warning_MSI_S_EVENTQ_address_out_of_range_of_oas

The MSI address is configured outside of the range of the downstream address bus size. Fields:

address unsigned int
The untruncated address of the MSI.

warning_MSI_S_GERROR_address_out_of_range_of_oas

The MSI address is configured outside of the range of the downstream address bus size. Fields:

address unsigned int
The untruncated address of the MSI.

warning_MSI_pmcg_address_out_of_range_of_oas

The MSI Address of the Performance Monitor Counter Group (PMCG) is out of range of the OAS and so will be silently truncated. Fields:

address unsigned int
The untruncated address of the MSI.
pmcg_index unsigned int
Index of the PMCG.
ssd_ns bool
True if this PMCG controlled by the non-secure world.

warning_discarding_interrupt_EVENTQ_as_irqen_low

Interrupt generation is turned off by SMMU_IRQ_CTRL.EVENTQ_IRQEN.

warning_discarding_interrupt_GERROR_as_irqen_low

Interrupt generation is turned off by SMMU_IRQ_CTRL.GERROR_IRQEN.

warning_discarding_interrupt_PRIQ_as_irqen_low

Interrupt generation is turned off by SMMU_S_IRQ_CTRL.PRIQ_IRQEN.

warning_discarding_interrupt_S_EVENTQ_as_irqen_low

Interrupt generation is turned off by SMMU_S_IRQ_CTRL.EVENTQ_IRQEN.

warning_discarding_interrupt_S_GERROR_as_irqen_low

Interrupt generation is turned off by SMMU_S_IRQ_CTRL.GERROR_IRQEN.

warning_gerrorn_bad_acknowledge

A GERROR was acknowledged by SW in the GERRORN register that did not have an active error. The result is UNPREDICTABLE if this will generate an interrupt or not. Fields:

which enum
Which GERROR was acknowledge when there was no active error.

warning_reg_after_doesnt_match_written_value

A write occurred that tried to set bits in a register, that for one reason or another, failed to get written. Fields:

desc string
The textual description of what happened.

warning_s_gerrorn_bad_acknowledge

A GERROR was acknowledged by SW in the GERRORN register that did not have an active error. The result is UNPREDICTABLE if this will generate an interrupt or not. Fields:

which enum
Which GERROR was acknowledge when there was no active error.

what_going_to_do_with_terminated_event

A terminating transaction has produced an event, this tells you what the model is going to do with the event. Fields:

CD.S bool
The CD.S field if available.
S2 bool
The event is related to Stage 2.
STE.S1STALLD bool
The STE.S1STALLD field if available.
STE.S2S bool
The STE.S2S field if available.
aborts bool
The transaction will abort.
is_tr_fault bool
Is a Translation Related fault.
reports bool
The transaction will attempt to report.
ssd_ns bool
The transaction is classified as SSD non-secure.
supports_stall_model bool
The implementation supports the stall model.
trans_id unsigned int
The transaction id.
why_abort_decision enum
The reason why the transaction aborted/did not abort.
why_report_decision enum
The reason why the transaction reported/did not report.
Non-ConfidentialPDF file icon PDF version100964_1142_00_en
Copyright © 2014–2018 Arm Limited or its affiliates. All rights reserved.