• Kan Liang's avatar
    perf: Add branch stack counters · 571d91dc
    Kan Liang authored
    Currently, the additional information of a branch entry is stored in a
    u64 space. With more and more information added, the space is running
    out. For example, the information of occurrences of events will be added
    for each branch.
    
    Two places were suggested to append the counters.
    https://lore.kernel.org/lkml/20230802215814.GH231007@hirez.programming.kicks-ass.net/
    One place is right after the flags of each branch entry. It changes the
    existing struct perf_branch_entry. The later ARCH specific
    implementation has to be really careful to consistently pick
    the right struct.
    The other place is right after the entire struct perf_branch_stack.
    The disadvantage is that the pointer of the extra space has to be
    recorded. The common interface perf_sample_save_brstack() has to be
    updated.
    
    The latter is much straightforward, and should be easily understood and
    maintained. It is implemented in the patch.
    
    Add a new branch sample type, PERF_SAMPLE_BRANCH_COUNTERS, to indicate
    the event which is recorded in the branch info.
    
    The "u64 counters" may store the occurrences of several events. The
    information regarding the number of events/counters and the width of
    each counter should be exposed via sysfs as a reference for the perf
    tool. Define the branch_counter_nr and branch_counter_width ABI here.
    The support will be implemented later in the Intel-specific patch.
    Suggested-by: default avatarPeter Zijlstra (Intel) <peterz@infradead.org>
    Signed-off-by: default avatarKan Liang <kan.liang@linux.intel.com>
    Signed-off-by: default avatarPeter Zijlstra (Intel) <peterz@infradead.org>
    Link: https://lkml.kernel.org/r/20231025201626.3000228-1-kan.liang@linux.intel.com
    571d91dc
core.c 73.4 KB