Overall trace acquisition and decoding with perf+OpenCSD also looks good, apart from timestamp packets. When I request timestamping, the value is constant 0x0:
I don't know any details of this platform, but the ETM gets the timestamp from a global timestamp generator block. If that block isn't enabled, the timestamp will be written as zeroes. The problem isn't in the ETM itself - the framework needs to ensure the global timestamp generator is enabled when ETM is enabled (or anything else that nedes the timestamp, like STM).
If you're lucky, the timestamp block is mapped into the memory space in the same way as the ETMs are, and the CoreSight driver framework could enable it. If you're unlucky, the timestamp block is hidden away in a secure debug area and can only be enabled by vendor firmware or JTAG debug.
Does the datasheet say anything about the timestamp block, e.g. is it listed in the device memory space as seen by the application CPUs?
Al