4.120 atc - trace

This section describes the trace sources.

ArchMsg.Error.error

These messages are about activity occurring on the ATC that is considered an error. . Fields:

output string
The stream output

ArchMsg.Info.info

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

output string
The stream output

ArchMsg.Warning.atc_pri_allocation_changed_whilst_not_stopped

The PRI has PRGs in flight that were using credit_used credits, however, the PRI interface was disabled and the allocation of credits changed. Fields:

credits_used unsigned int
The number of credits currently in use by in-flight PRGs
new_allocation unsigned int
The new allocation of credits set in the PRI header.

ArchMsg.Warning.atc_pri_allocation_reduced_below_current_credits_used

The PRI has PRGs in flight that were using credit_used credits, however, the PRI interface was disabled and the allocation of credits changed to a value less than that of those that are currently in use. The SW should probably of first have serviced the outstanding PRGs and then waited for the interface to report Stopped before reducing the allocation. The PCIe spec is unclear as to the required behaviour. The model will continue to count credits. It will not allow the PRI interface to be re-enabled until Stopped (this is an implementation defined choice) and so when successfully re-enabled will then obey the new allocation. Fields:

credits_used unsigned int
The number of credits currently in use by in-flight PRGs.
new_allocation unsigned int
The new allocation of credits set in the PRI header.

ArchMsg.Warning.atc_pri_members_of_prg_inconsistent

A client has formed a PRG and all the members of the PRG should have the same execute mode and privilege request in. However, this PRG member has different ones to the first. PCIe says that the effect is undefined. The trace source pri_members_of_prg traces all members of the group. Fields:

PRGIndex unsigned int
The PRGIndex of this request.
expected_execute bool
The expected execute permission requested.
expected_priv bool
The expected privilege permission requested.
member_index unsigned int
The index of this member within the PRG.
number_of_members unsigned int
The number of members in this PRG.
page_address unsigned int
Page address of the request.
priv bool
Privileged permissions requested. Valid only for those requests with a PASID (SubstreamID).
rwx enum
Requested Read/Write/Execute permissions. Execute permission are only available for those requests with a PASID (SubstreamID), and read permission will automatically be asked for as well.
streamid unsigned int
The StreamID of the PRI request.
substreamid unsigned int
The SubstreamID sent with the PRG request.
trans_id unsigned int
The transaction id of the failing ATS transaction.

ArchMsg.Warning.atc_pri_reset_received_whilst_outputting_PRG

The ATC was in the process of sending the members of a PRG to the SMMU but before it had finished sending them, then a PRI Reset or signal reset occurred and the rest of the PRG will not be sent. The may leave a partial PRG in the PRI queue of the SMMU. Note the difference to having sent the entire PRG (including Last) and then receiving some sort of reset. Fields:

id unsigned int
The ID of this request.
number_of_PRG_members unsigned int
The number of members of the PRG, or 0 if run out of credits or PRGIndexes.
prgindex unsigned int
The PRGIndex expected, or ~0u if run out of credits or PRGIndexes.
signal_reset bool
True if it was a signal reset, false if it was a PRI Reset via the PRI Capability Header.
substreamid unsigned int
The expected PASID on the _response_.
which_member_was_being_sent unsigned int
The index of which member of the PRG was being sent whilst we received reset. All subsequent members of the PRG will not be sent.

ArchMsg.Warning.atc_pri_response_Response_Failure

A PRI Response has been received with a Response Failure. The PRI interface is required to disable itself, set RF in the header and will wake all waiting PRGs, forcing them to fault. Fields:

pasid unsigned int
The PASID prefix on the response, or ~0u if none.
prgindex unsigned int
The PRGIndex in the response.
response enum
The response code

ArchMsg.Warning.atc_pri_response_ignored_as_RF_set

Any PRI Responses received whilst the RF (Response Failure) bit of the PRI header is required to be ignored by the PCIe specification. This is a response being ignored due to that reason. . Fields:

pasid unsigned int
The PASID prefix on the response, or ~0u if none.
prgindex unsigned int
The PRGIndex in the response.
response enum
The response code

ArchMsg.Warning.pri_enabled_with_zero_allocation

The PRI interface was enabled but the assigned credit allocation is zero. There is no useful way that the PRI interface can operate in this state and the model will fault any transaction that needs to use PRI. Fields:

capacity unsigned int
The PRI Credit Capacity for this device.

ArchMsg.Warning.warning

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

output string
The stream output

atc_commentary

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

output string
The stream output.

atc_entry

This monitors the formation or change of an atc entry. Fields:

atc_entry_id unsigned int
An ID identifying this entry.
change_inconsistent_nug bool
The change was inconsistent in NUG, and was ignored. This is almost certainly an error.
change_inconsistent_permissions bool
The change was inconsistent in the permissions granted that were known before. The change was rejected for known changes. This may represent an error.
change_inconsistent_remap bool
The input and/or output address ranges were changed. This may represent an error.
id unsigned int
The ID of the transaction that caused this fill.
input_address_begin unsigned int
The input address range covered by this entry.
input_address_end_incl unsigned int
The input address range covered by this entry.
nugrwxrwx_change string
The N, U, G and rwxrwx flags before and after any change.
output_address_begin unsigned int
The output address range covered by this entry.
output_address_end_incl unsigned int
The output address range covered by this entry.
reply_is_cacheable bool
The reply was cacheable and so changed the known permissions.
substreamid unsigned int
The SubstreamID of the entry.

atc_entry_allocated

An ATC entry has been allocated. Fields:

atc_entry_id unsigned int
Index of ATC entry.
input_address_begin unsigned int
The input address range covered by this entry.
input_address_end_incl unsigned int
The input address range covered by this entry.
nugrwxrwx string
N, U, G bits and which permissions are unknown ('?'), granted (r/w/x) and denied ('-').
output_address_begin unsigned int
The input address range covered by this entry.
output_address_end_incl unsigned int
The input address range covered by this entry.
substreamid unsigned int
The SubstreamID of the entry.

atc_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_entry_none_formed

An ATC entry was attempted to be created but the ATS request forbade it being created. Fields:

fault enum
Fault reason
id unsigned int
The ID of the transaction that caused this fill.
input_address unsigned int
The input address range covered by this entry.
substreamid unsigned int
The SubstreamID that would have been used.

atc_inv_wait

An ATC Invalidate has to wait before completing because of outstanding transactions that are using the entry. Fields:

atc_inv_id unsigned int
The ID of the ATC Invalidate transaction.

atc_inv_woke

An ATC Invalidate had to wait before completing because of outstanding transactions that are using the entry. This is it waking up. Fields:

atc_inv_id unsigned int
The ID of the ATC Invalidate transaction.
because_of_reset bool
The ATC Invalidate was killed because of reset.

atc_invalidate

An ATC Invalidate message was received. Fields:

Global_if_substreamid bool
If has a SubstreamID then the Global flag.
aligned_address unsigned int
The aligned address to invalidate.
atc_inv_id unsigned int
The ID of this ATC Invalidate message.
size_mask unsigned int
The mask implied by the Size field.
substreamid unsigned int
The SubstreamID (or ~0u if no SubstreamID)

atc_invalidate_kills_in_flight_ats

If an ATC Invalidate comes in whilst an ATS request is in flight that is affected by that ATC invalidate then it is killed and will be remade. Fields:

Global_if_substreamid bool
If has a SubstreamID then the Global flag.
aligned_address unsigned int
The aligned address to invalidate.
atc_id unsigned int
The ID of the ATC that caused the ATS request.
atc_inv_id unsigned int
The ID of this ATC Invalidate message.
size_mask unsigned int
The mask implied by the Size field.
substreamid unsigned int
The SubstreamID (or ~0u if no SubstreamID)

atc_pri_allocation_reduced_whilst_client_forming_prg

The client device was creating a PRG whilst the allocation for the PRI was changed. This left the PRI unable to satisfy the client device's request and we have to ask the client again what to do. Fields:

credits_used unsigned int
The number of credits currently in use by in-flight PRGs.
new_allocation unsigned int
The new allocation of credits set in the PRI header.

atc_pri_ats_transaction_failed

The ATS transaction failed to get the required permissions from the SMMU. PRI has been enabled so it now tries to form a PRI request. Fields:

allocation unsigned int
The number of credits allocated to this device.
capacity unsigned int
The advertised capacity of the device.
credits_used unsigned int
The number of credits that are in use by in-flight PRG requests.
pri_enabled bool
The PRI interface is enabled.
priv bool
Privileged mode requested.
rwx enum
Requested Read/Write/Execute permissions. Execute permission are only available for those requests with a PASID (SubstreamID), and read permission will automatically be asked for as well.
streamid unsigned int
The StreamID of the request.
substreamid unsigned int
The SubstreamID (PASID) of the request or ~0u if none.
trans_id unsigned int
The transaction id of the ATS request.
untranslated_address unsigned int
The untranslated address of the ATS request.

atc_pri_client_device_chose_not_to_form_a_prg

The client device was given an opportunity to form a PRG and it chose not to. Instead the transaction will be faulted. Fields:

trans_id unsigned int
The id of the failing ATS request.

atc_pri_could_not_form_prg_due_to_lack_of_prgindexes_or_credits

The client device was told that it couldn't form a PRG because of a lack of free PRGIndexes or because there were no free credits. The client device has the opportunity to either fault the transaction or to wait for some to become free. Fields:

trans_id unsigned int
The id of the failing ATS request.
wait bool
The client device chose to wait.

atc_pri_is_stopped

Traces why the PRI interface reports itself as stopped or not. Fields:

Stopped bool
Is the PRI Stopped?
client_device_forming_requests bool
The number of requests to the client device that are forming a PRG.
credits_outstanding bool
The number of outstanding credits in outstanding PRGs.

atc_pri_members_of_prg

A client has formed a PRG and this describes each member of that PRG. Fields:

PRGIndex unsigned int
The PRGIndex of this request.
member_index unsigned int
The index of this member within the PRG.
number_of_members unsigned int
The number of members in this PRG.
page_address unsigned int
Page address of the request.
priv bool
Privileged permissions requested. Valid only for those requests with a PASID (SubstreamID).
rwx enum
Requested Read/Write/Execute permissions. Execute permission are only available for those requests with a PASID (SubstreamID), and read permission will automatically be asked for as well.
streamid unsigned int
The StreamID of the PRI request.
substreamid unsigned int
The SubstreamID sent with the PRG request.
trans_id unsigned int
The transaction id of the failing ATS transaction.

atc_pri_outstanding_prg_request_killed_by_PRI_Reset_or_Response_Failure

This indicates that a PRI request (or one that was waiting for credits or a PRGIndexes to become free) was killed because either:- * software used PRI Reset in the PCIe PRI header, or * a PRI response was received with Response Failure, the effect of which is to kill all requests waiting for a PRG response. . Fields:

trans_id unsigned int
The transaction id of the ATS request that formed the PRI request.

atc_pri_outstanding_prg_when_interface_disabled

The PRI interface was disabled but there are outstanding PRI requests that have to be completed before the interface is stopped. Fields:

credits unsigned int
The number of credits that this group uses.
expected_PASID_on_response unsigned int
The expected PASID that should be on the PRI response (or ~0u if none expected).
prgindex unsigned int
The PRGIndex of the outstanding request.
trans_id unsigned int
The transaction id of the ATS request that formed the PRI request.

atc_pri_prg_request

A PRI Page Request Group (PRG) has. Fields:

PASID_on_response unsigned int
The expected PASID on the response, or ~0u if none.
allocation unsigned int
The number of credits allowed to be used.
credits_used unsigned int
The number of credits in use now.
number_of_members unsigned int
The number of members in the group.
prgindex unsigned int
The PRGIndex used.
trans_id unsigned int
The transaction id of the failing ATS transaction.

atc_pri_response_unrecognised_causes_uprgi

A PRI Response has been received that doesn't match a waiting PRG. The UPRGI bit in the PRI header will be set and then this response will be ignored. Fields:

match_PRG_currently_committing bool
This is true if the PRI Response does match a PRG that is currently being sent to the SMMU, but because it is not yet complete then it should not have received a response yet and so the device treats this as UPRGI.
pasid unsigned int
The PASID prefix on the response, or ~0u if none.
prgindex unsigned int
The PRGIndex in the response.
response enum
The response code

atc_pri_response_valid

A PRI Response has been received that is valid and we are going to wake up some threads of activity. . Fields:

credits_to_return unsigned int
Credits that were used by the PRG and are now returned.
pasid unsigned int
The PASID prefix on the response, or ~0u if none.
prgindex unsigned int
The PRGIndex in the response.
response enum
The response code

atc_pri_throwing_away_ppr

A client device asked for too many PRI Page Requests (PPR) in the PRG. The model is discarding PPRs to form the PRG. Fields:

page_address unsigned int
Page address of the request.
priv bool
Privileged permissions requested. Valid only for those requests with a PASID (SubstreamID).
rwx enum
Requested Read/Write/Execute permissions. Execute permission are only available for those requests with a PASID (SubstreamID), and read permission will automatically be asked for as well.
streamid unsigned int
The StreamID of the PRI request.
substreamid unsigned int
SubstreamID (PASID), or ~0u if none.
trans_id unsigned int
The transaction id of the failing ATS transaction.

atc_pri_waiting

Track a transaction that is waiting for a PRI request. Fields:

id unsigned int
The ID of this request.
number_of_PRG_members unsigned int
The number of members of the PRG, or 0 if run out of credits or PRGIndexes.
prgindex unsigned int
The PRGIndex expected, or ~0u if run out of credits or PRGIndexes.
sleeping bool
True if this is the trace of the transaction sleeping, false if it is waking.
substreamid unsigned int
The expected PASID on the _response_.

atc_pri_woken_response

A transaction that was waiting for a PRI Response has been woken. Fields:

action enum
The action now to take now woken.
id unsigned int
The ID of this request.
prgindex unsigned int
The PRGIndex expected, or ~0u if run out of credits or PRGIndexes.
substreamid unsigned int
The expected PASID on the _response_.

control_write

This indicates a write to one of the control field of the ATC. Fields:

comments enum
Comments on the change
value_after_write unsigned int
The value that the field was after the write.
which enum
Which control field was written to
written_value unsigned int
The value that was written

error_atc_entries_overlap

An ATC entry was attempted to be inserted into the ATC and was determined that it overlaps an existing entry. This check is not perfect but will catch simple errors. 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.
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.

final_remap_request

The final ATS result of the remap request. If this fails then PRI might be applied. In addition, PRI might make this remap request retry multiple times and is tracked by the retry_number . Fields:

address unsigned int
Address of the request.
id unsigned int
ID of ATC transaction.
inner enum
The inner memory attribute.
instruction bool
Is an instruction access.
is_debug bool
Is a debug.
is_read bool
Is a read request.
outer enum
The outer memory attribute.
output_address unsigned int
Output address.
privileged bool
Is a privileged access.
result enum
The result of the translation.
retry_number unsigned int
The number of times this transaction has retried.
substreamid unsigned int
Substream ID of the request (or ~0u if no SubstreamID).

initial_remap_request

The remap request for a bunch of transactions round this address. PRI might make this remap request retry multiple times and is tracked by the retry_number field. Fields:

address unsigned int
Address of the request.
id unsigned int
Unique ID of this request.
instruction bool
Is an instruction access.
is_debug bool
Is a debug.
is_read bool
Is a read request.
privileged bool
Is a privileged access.
retry_number unsigned int
The number of times this transaction has retried.
substreamid unsigned int
Substream ID of the request (or ~0u if no SubstreamID).

same_as

This request is the same as the specified other ATC transaction. Fields:

atc_entry_id unsigned int
ID of the ATC Entry that it uses (or ~0ull if not relevant).
id unsigned int
ID of ATC transaction.
same_as_id unsigned int
ID of the ATC transaction it is the same as.
Non-ConfidentialPDF file icon PDF version100964_1142_00_en
Copyright © 2014–2018 Arm Limited or its affiliates. All rights reserved.