• Ian Rogers's avatar
    perf parse-events: When fixing group leaders always set the leader · e8d38345
    Ian Rogers authored
    The evsel grouping fix iterates over evsels tracking the leader group
    and the current position's group, updating the current position's leader
    if an evsel is being forced into a group or groups changed. However,
    groups changing isn't a sufficient condition as sorting may have
    reordered events and the leader may no longer come first. For this
    reason update all leaders whenever they disagree.
    
    This change breaks certain Icelake+ metrics due to bugs in the
    kernel. For example, tma_l3_bound with threshold enabled tries to
    program the events:
    
      {topdown-retiring,slots,CYCLE_ACTIVITY.STALLS_L2_MISS,topdown-fe-bound,EXE_ACTIVITY.BOUND_ON_STORES,EXE_ACTIVITY.1_PORTS_UTIL,topdown-be-bound,cpu/INT_MISC.RECOVERY_CYCLES,cmask=1,edge/,CYCLE_ACTIVITY.STALLS_L3_MISS,CPU_CLK_UNHALTED.THREAD,CYCLE_ACTIVITY.STALLS_MEM_ANY,EXE_ACTIVITY.2_PORTS_UTIL,CYCLE_ACTIVITY.STALLS_TOTAL,topdown-bad-spec}:W
    
    fixing the perf metric event order gives:
    
      {slots,topdown-retiring,topdown-fe-bound,topdown-be-bound,topdown-bad-spec,CYCLE_ACTIVITY.STALLS_L2_MISS,EXE_ACTIVITY.BOUND_ON_STORES,EXE_ACTIVITY.1_PORTS_UTIL,cpu/INT_MISC.RECOVERY_CYCLES,cmask=1,edge/,CYCLE_ACTIVITY.STALLS_L3_MISS,CPU_CLK_UNHALTED.THREAD,CYCLE_ACTIVITY.STALLS_MEM_ANY,EXE_ACTIVITY.2_PORTS_UTIL,CYCLE_ACTIVITY.STALLS_TOTAL}:W
    
    Both of these return "<not counted>" for all events, whilst they work
    with the group removed respecting that the perf metric events must still
    be grouped. A vendor events update will need to add METRIC_NO_GROUP to
    these metrics to workaround the kernel PMU driver issue.
    
    Fixes: a90cc5a9 ("perf evsel: Don't let evsel__group_pmu_name() traverse unsorted group")
    Signed-off-by: default avatarIan Rogers <irogers@google.com>
    Tested-by: default avatarAndi Kleen <ak@linux.intel.com>
    Cc: Adrian Hunter <adrian.hunter@intel.com>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Ian Rogers <irogers@google.com>
    Cc: Ingo Molnar <mingo@redhat.com>
    Cc: Jiri Olsa <jolsa@kernel.org>
    Cc: Kan Liang <kan.liang@linux.intel.com>
    Cc: Mark Rutland <mark.rutland@arm.com>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Xing Zhengjun <zhengjun.xing@linux.intel.com>
    Link: https://lore.kernel.org/r/20230719001836.198363-3-irogers@google.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    e8d38345
parse-events.c 70.9 KB