• Adrian Hunter's avatar
    perf intel-pt: Add VM Time Correlation to decoder · fa8f949d
    Adrian Hunter authored
    VM Time Correlation means determining if each TSC packet belongs to a VM
    Guest or the Host. When the trace is "in context" that is indicated by
    the NR flag in the PIP packet. However, when tracing kernel-only,
    userspace only, or using address filters, the trace can be "out of context"
    in which case timing packets are produced but not PIP packets.
    
    Nevertheless, it is very unlikely the VM Guest timestamps will be in
    the same range as the Host timestamps. Host time ranges are established
    by a starting side-band event timestamp, and subsequently by the buffer
    timestamp, written when the buffer is copied to the perf.data file.
    
    This patch supports updating the VM Guest timestamp packets, assuming an
    unchanging (during perf record) VMX TSC Offset and no VMX TSC scaling.
    
    Furthermore, it is possible to determine what the VMX TSC Offset is,
    although not necessarily at the start. The dry-run option lets that
    information be determined so that the user can pass it to a subsequent
    run. For more detail, refer to the example in the Intel PT documentation
    in a subsequent patch.
    
    VM Time Correlation is also performed on the TSC value in PEBs-via-PT
    records.
    Signed-off-by: default avatarAdrian Hunter <adrian.hunter@intel.com>
    Reviewed-by: default avatarAndi Kleen <ak@linux.intel.com>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Link: https://lore.kernel.org/r/20210430070309.17624-12-adrian.hunter@intel.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    fa8f949d
intel-pt-decoder.h 6.99 KB