Skip to content
  • Jin Yao's avatar
    c47a5599
    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.com
    
    
    Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    c47a5599
    perf tools: Fix pattern matching for same substring in different PMU type
    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.com
    
    
    Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
Loading