• Ian Rogers's avatar
    perf parse-events: Make add PMU verbose output clearer · 4ac22b48
    Ian Rogers authored
    On a CPU like skylakex an uncore_iio_0 PMU may alias with
    uncore_iio_free_running_0. The latter PMU doesn't support fc_mask as a
    parameter and so pmu_config_term fails. Typically parse_events_add_pmu
    is called in a loop where if one alias succeeds errors are ignored,
    however, if multiple errors occur parse_events__handle_error will
    currently give a WARN_ONCE.
    
    This change removes the WARN_ONCE in parse_events__handle_error and
    makes it a pr_debug. It adds verbose messages to parse_events_add_pmu
    warning that non-fatal errors may occur, while giving details on the pmu
    and config terms for useful context. pmu_config_term is altered so the
    failing term and pmu are present in the case of the 'unknown term' error
    which makes spotting the free_running case more straightforward.
    
    Before:
    
      $ perf --debug verbose=3 stat -M llc_misses.pcie_read sleep 1
      Using CPUID GenuineIntel-6-55-4
      metric expr unc_iio_data_req_of_cpu.mem_read.part0 + unc_iio_data_req_of_cpu.mem_read.part1 + unc_iio_data_req_of_cpu.mem_read.part2 + unc_iio_data_req_of_cpu.mem_read.part3 for LLC_MISSES.PCIE_READ
      found event unc_iio_data_req_of_cpu.mem_read.part0
      found event unc_iio_data_req_of_cpu.mem_read.part1
      found event unc_iio_data_req_of_cpu.mem_read.part2
      found event unc_iio_data_req_of_cpu.mem_read.part3
      metric expr unc_iio_data_req_of_cpu.mem_read.part0 + unc_iio_data_req_of_cpu.mem_read.part1 + unc_iio_data_req_of_cpu.mem_read.part2 + unc_iio_data_req_of_cpu.mem_read.part3 for LLC_MISSES.PCIE_READ
      found event unc_iio_data_req_of_cpu.mem_read.part0
      found event unc_iio_data_req_of_cpu.mem_read.part1
      found event unc_iio_data_req_of_cpu.mem_read.part2
      found event unc_iio_data_req_of_cpu.mem_read.part3
      adding {unc_iio_data_req_of_cpu.mem_read.part0,unc_iio_data_req_of_cpu.mem_read.part1,unc_iio_data_req_of_cpu.mem_read.part2,unc_iio_data_req_of_cpu.mem_read.part3}:W,{unc_iio_data_req_of_cpu.mem_read.part0,unc_iio_data_req_of_cpu.mem_read.part1,unc_iio_data_req_of_cpu.mem_read.part2,unc_iio_data_req_of_cpu.mem_read.part3}:W
      intel_pt default config: tsc,mtc,mtc_period=3,psb_period=3,pt,branch
      WARNING: multiple event parsing errors
      ...
      Invalid event/parameter 'fc_mask'
      ...
    
    After:
    
      $ perf --debug verbose=3 stat -M llc_misses.pcie_read sleep 1
      Using CPUID GenuineIntel-6-55-4
      metric expr unc_iio_data_req_of_cpu.mem_read.part0 + unc_iio_data_req_of_cpu.mem_read.part1 + unc_iio_data_req_of_cpu.mem_read.part2 + unc_iio_data_req_of_cpu.mem_read.part3 for LLC_MISSES.PCIE_READ
      found event unc_iio_data_req_of_cpu.mem_read.part0
      found event unc_iio_data_req_of_cpu.mem_read.part1
      found event unc_iio_data_req_of_cpu.mem_read.part2
      found event unc_iio_data_req_of_cpu.mem_read.part3
      metric expr unc_iio_data_req_of_cpu.mem_read.part0 + unc_iio_data_req_of_cpu.mem_read.part1 + unc_iio_data_req_of_cpu.mem_read.part2 + unc_iio_data_req_of_cpu.mem_read.part3 for LLC_MISSES.PCIE_READ
      found event unc_iio_data_req_of_cpu.mem_read.part0
      found event unc_iio_data_req_of_cpu.mem_read.part1
      found event unc_iio_data_req_of_cpu.mem_read.part2
      found event unc_iio_data_req_of_cpu.mem_read.part3
      adding {unc_iio_data_req_of_cpu.mem_read.part0,unc_iio_data_req_of_cpu.mem_read.part1,unc_iio_data_req_of_cpu.mem_read.part2,unc_iio_data_req_of_cpu.mem_read.part3}:W,{unc_iio_data_req_of_cpu.mem_read.part0,unc_iio_data_req_of_cpu.mem_read.part1,unc_iio_data_req_of_cpu.mem_read.part2,unc_iio_data_req_of_cpu.mem_read.part3}:W
      intel_pt default config: tsc,mtc,mtc_period=3,psb_period=3,pt,branch
      Attempting to add event pmu 'uncore_iio_free_running_5' with 'unc_iio_data_req_of_cpu.mem_read.part0,' that may result in non-fatal errors
      After aliases, add event pmu 'uncore_iio_free_running_5' with 'fc_mask,ch_mask,umask,event,' that may result in non-fatal errors
      Attempting to add event pmu 'uncore_iio_free_running_3' with 'unc_iio_data_req_of_cpu.mem_read.part0,' that may result in non-fatal errors
      After aliases, add event pmu 'uncore_iio_free_running_3' with 'fc_mask,ch_mask,umask,event,' that may result in non-fatal errors
      Attempting to add event pmu 'uncore_iio_free_running_1' with 'unc_iio_data_req_of_cpu.mem_read.part0,' that may result in non-fatal errors
      After aliases, add event pmu 'uncore_iio_free_running_1' with 'fc_mask,ch_mask,umask,event,' that may result in non-fatal errors
      Multiple errors dropping message: unknown term 'fc_mask' for pmu 'uncore_iio_free_running_3' (valid terms: event,umask,config,config1,config2,name,period,percore)
      ...
    
      So before you see a 'WARNING: multiple event parsing errors' and
      'Invalid event/parameter'. After you see 'Attempting... that may result
      in non-fatal errors' then 'Multiple errors...' with details that
      'fc_mask' wasn't known to a free running counter. While not completely
      clean, this makes it clearer that an error hasn't really occurred.
    
    v2. addresses review feedback from Jiri Olsa <jolsa@redhat.com>.
    Signed-off-by: default avatarIan Rogers <irogers@google.com>
    Reviewed-by: default avatarAndi Kleen <ak@linux.intel.com>
    Acked-by: default avatarJiri Olsa <jolsa@redhat.com>
    Cc: Adrian Hunter <adrian.hunter@intel.com>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Jin Yao <yao.jin@linux.intel.com>
    Cc: John Garry <john.garry@huawei.com>
    Cc: Kan Liang <kan.liang@linux.intel.com>
    Cc: Leo Yan <leo.yan@linaro.org>
    Cc: Mark Rutland <mark.rutland@arm.com>
    Cc: Mathieu Poirier <mathieu.poirier@linaro.org>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Stephane Eranian <eranian@google.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Link: http://lore.kernel.org/lkml/20200513220635.54700-1-irogers@google.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    4ac22b48
intel-pt.c 30.6 KB