• Alexander Shishkin's avatar
    perf/x86/intel/pt: Do not force sync packets on every schedule-in · 9a6694cf
    Alexander Shishkin authored
    Currently, the PT driver zeroes out the status register every time before
    starting the event. However, all the writable bits are already taken care
    of in pt_handle_status() function, except the new PacketByteCnt field,
    which in new versions of PT contains the number of packet bytes written
    since the last sync (PSB) packet. Zeroing it out before enabling PT forces
    a sync packet to be written. This means that, with the existing code, a
    sync packet (PSB and PSBEND, 18 bytes in total) will be generated every
    time a PT event is scheduled in.
    
    To avoid these unnecessary syncs and save a WRMSR in the fast path, this
    patch changes the default behavior to not clear PacketByteCnt field, so
    that the sync packets will be generated with the period specified as
    "psb_period" attribute config field. This has little impact on the trace
    data as the other packets that are normally sent within PSB+ (between PSB
    and PSBEND) have their own generation scenarios which do not depend on the
    sync packets.
    
    One exception where we do need to force PSB like this when tracing starts,
    so that the decoder has a clear sync point in the trace. For this purpose
    we aready have hw::itrace_started flag, which we are currently using to
    output PERF_RECORD_ITRACE_START. This patch moves setting itrace_started
    from perf core to the pmu::start, where it should still be 0 on the very
    first run.
    Signed-off-by: default avatarAlexander Shishkin <alexander.shishkin@linux.intel.com>
    Signed-off-by: default avatarPeter Zijlstra (Intel) <peterz@infradead.org>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: acme@infradead.org
    Cc: adrian.hunter@intel.com
    Cc: hpa@zytor.com
    Link: http://lkml.kernel.org/r/1438264104-16189-1-git-send-email-alexander.shishkin@linux.intel.comSigned-off-by: default avatarIngo Molnar <mingo@kernel.org>
    9a6694cf
perf_event_intel_pt.c 26.3 KB