Memory Mapped I/O Trace
Mmiotrace is a toolbox for tracing memory mapped I/O access within the kernel. It can be used to record how a driver module uses MMIO reads and writes, for reverse engineering and debugging. For reverse engineering, you will need to have the proprietary driver (see BlobVersions), but it can also be useful for debugging the nouveau driver itself.
The supported architectures are x86 and x86_64, they both seem to be pretty stable. If you need help, you can try to ask on #nouveau IRC channel on Freenode.
- timestamped events
- a mechanism to inject markers into the log while tracing
- no kernel patching
- collect block-reads/writes in mmio-parse
- use register names (Rules-ng) The modern format of an mmiotrace log is described in MmioTraceLogFormat.
The latest kernel (or at least 2.6.29) is the recommended one, if you can choose.
Mmiotrace is in the kernel, no need to fetch or patch anything extra. Please read the instructions in the file
Documentation/trace/mmiotrace.txt or Documentation/trace/mmiotrace.txt in your kernel source tree. No special programs are needed to record the output. If you want to trace binary Nvidia drivers you might want to read Ubuntu X/MMIOTracing guide.
If you want to send mmio-trace dumps to us, please send them to mmio dot dumps at gmail dot com. Please, pack into a compressed archive the trace file and a free description about what you do during the trace. The output of
lspci is already included in the trace file, but do add the output of
uname -a and the driver version into your description. Tell also what display connectors you have, what kind of monitors you have connected to what outputs, whether it has tv-in/out, and what display mode you used. The name of the archive file should contain the PCI id and GPU family, or the commercial name of your card. Thank you.