English/Français
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.
Developers and analysts might be interested in MmioTraceDeveloper and old debugging notes in MmioTraceDebugging. The user space tools (for analysts) are mentioned in MmioTraceDeveloper.
Features:
- 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.
1. Submitting results
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.