Accesses made to one or all device objects through their io_memory interface are traced. The following information is included in a trace: the initiator object, physical address of the access, size of the access, value (read or written), port name and port-relative address. The port name is None when the non-port io_memory interface of the given device is accessed.
The port argument, if given, restricts the monitoring in different ways. If it is a string, only accesses to the io_memory port interface by that name are considered. If an integer, only accesses to the non-port io_memory interface using that function number are considered.
When offset and length are given, tracing is restricted to that address interval within the bank. The default interval length is 1 if offset is given.
By default, both reads and writes are traced. With -r only reads are traced, and with -w only writes are traced.
Devices providing multiple banks of registers usually expose them as io_memory port interfaces using the bank names. Some devices use the non-port io_memory interface with a function number instead.
List all tracers and their ID numbers with the -list flag.