• Jin Yao's avatar
    perf tools: Fix pattern matching for same substring in different PMU type · c47a5599
    Jin Yao authored
    Some different PMU types may have the same substring. For example, on
    Icelake server we have PMU types "uncore_imc" and
    "uncore_imc_free_running". Both PMU types have the substring
    "uncore_imc".  But the parser wrongly thinks they are the same PMU type.
    
    We enable an imc event,
    perf stat -e uncore_imc/event=0xe3/ -a -- sleep 1
    
    Perf actually expands the event to:
    
      uncore_imc_0/event=0xe3/
      uncore_imc_1/event=0xe3/
      uncore_imc_2/event=0xe3/
      uncore_imc_3/event=0xe3/
      uncore_imc_4/event=0xe3/
      uncore_imc_5/event=0xe3/
      uncore_imc_6/event=0xe3/
      uncore_imc_7/event=0xe3/
      uncore_imc_free_running_0/event=0xe3/
      uncore_imc_free_running_1/event=0xe3/
      uncore_imc_free_running_3/event=0xe3/
      uncore_imc_free_running_4/event=0xe3/
    
    That's because the "uncore_imc_free_running" matches the
    pattern "uncore_imc*".
    
    Now we check that the last characters of PMU name is '_<digit>'.
    
    For example, for pattern "uncore_imc*", "uncore_imc_0" is parsed ok, but
    "uncore_imc_free_running_0" fails.
    
    Fixes: b2b9d3a3 ("perf pmu: Support wildcards on pmu name in dynamic pmu events")
    Signed-off-by: default avatarJin Yao <yao.jin@linux.intel.com>
    Reviewed-by: default avatarKan Liang <kan.liang@linux.intel.com>
    Acked-by: default avatarJiri Olsa <jolsa@redhat.com>
    Cc: Agustin Vega-Frias <agustinv@codeaurora.org>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Andi Kleen <ak@linux.intel.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Link: http://lore.kernel.org/lkml/20210701064253.1175-1-yao.jin@linux.intel.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    c47a5599
parse-events.y 17.4 KB