On 2022/9/20 1:32, Bjorn Helgaas wrote: > On Mon, Sep 19, 2022 at 05:00:45PM +0800, Yicong Yang wrote: >> From: Qi Liu <liuqi115@xxxxxxxxxx> >> >> Add support for using 'perf report --dump-raw-trace' to parse PTT packet. >> >> Example usage: >> >> Output will contain raw PTT data and its textual representation, such >> as: >> >> 0 0 0x5810 [0x30]: PERF_RECORD_AUXTRACE size: 0x400000 offset: 0 >> ref: 0xa5d50c725 idx: 0 tid: -1 cpu: 0 >> . >> . ... HISI PTT data: size 4194304 bytes >> . 00000000: 00 00 00 00 Prefix >> . 00000004: 08 20 00 60 Header DW0 >> . 00000008: ff 02 00 01 Header DW1 >> . 0000000c: 20 08 00 00 Header DW2 >> . 00000010: 10 e7 44 ab Header DW3 >> . 00000014: 2a a8 1e 01 Time >> . 00000020: 00 00 00 00 Prefix >> . 00000024: 01 00 00 60 Header DW0 >> . 00000028: 0f 1e 00 01 Header DW1 >> . 0000002c: 04 00 00 00 Header DW2 >> . 00000030: 40 00 81 02 Header DW3 >> . 00000034: ee 02 00 00 Time > > This is great! Is there a way to actually decode the TLP headers? > E.g., something along the lines of what this does? > https://github.com/NetTLP/wireshark-nettlp/blob/master/plugins/nettlp.lua Thanks for the link, we'd like to implement something similar. This patch brings fundamental support for the decoding in perf, which means decoding according to the hardware packets format definition of each fields. 8DW will like above and 4DW will look like (more detailed): . ... HISI PTT data: size 4194304 bytes . 00000000: ff 0f 20 40 Format 3 Type 1f T9 1 T8 1 TH 1 SO 1 Length 1 Time 201 . 00000004: 0f 10 80 00 Header DW1 . 00000008: 00 04 00 00 Header DW2 . 0000000c: 48 01 01 00 Header DW3 In the next step we intend to do further decoding in the perf report, with granule to each fields defined in the PCIe spec according to the different TLP's format and type. > If there is, it might be nice if the commit log included a hint about > how to do more decoding. > Since the definition of each Header DWx is exactly the same with the PCIe spec, so I think user can certainly get the raw data and use the tools like nettlp.lua to further decode for now. Thanks, Yicong