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: Peter Zijlstra (Intel) <peterz@infradead.org> Signed-off-by: Kan Liang <kan.liang@linux.intel.com> Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org> Link: https://lkml.kernel.org/r/20231025201626.3000228-1-kan.liang@linux.intel.com
25 lines
1.0 KiB
Plaintext
25 lines
1.0 KiB
Plaintext
What: /sys/bus/event_source/devices/<dev>/caps
|
|
Date: May 2022
|
|
KernelVersion: 5.19
|
|
Contact: Linux kernel mailing list <linux-kernel@vger.kernel.org>
|
|
Description:
|
|
Attribute group to describe the capabilities exposed
|
|
for a particular pmu. Each attribute of this group can
|
|
expose information specific to a PMU, say pmu_name, so that
|
|
userspace can understand some of the feature which the
|
|
platform specific PMU supports.
|
|
|
|
One of the example available capability in supported platform
|
|
like Intel is pmu_name, which exposes underlying CPU name known
|
|
to the PMU driver.
|
|
|
|
Example output in powerpc:
|
|
grep . /sys/bus/event_source/devices/cpu/caps/*
|
|
/sys/bus/event_source/devices/cpu/caps/pmu_name:POWER9
|
|
|
|
The "branch_counter_nr" in the supported platform exposes the
|
|
maximum number of counters which can be shown in the u64 counters
|
|
of PERF_SAMPLE_BRANCH_COUNTERS, while the "branch_counter_width"
|
|
exposes the width of each counter. Both of them can be used by
|
|
the perf tool to parse the logged counters in each branch.
|