• Zhengjun Xing's avatar
    perf script: Fix Cannot print 'iregs' field for hybrid systems · 82b2425f
    Zhengjun Xing authored
    Commit b91e5492 ("perf record: Add a dummy event on hybrid
    systems to collect metadata records") adds a dummy event on hybrid
    systems to fix the symbol "unknown" issue when the workload is created
    in a P-core but runs on an E-core. The added dummy event will cause
    "perf script -F iregs" to fail. Dummy events do not have "iregs"
    attribute set, so when we do evsel__check_attr, the "iregs" attribute
    check will fail, so the issue happened.
    
    The following commit [1] has fixed a similar issue by skipping the attr
    check for the dummy event because it does not have any samples anyway. It
    works okay for the normal mode, but the issue still happened when running
    the test in the pipe mode. In the pipe mode, it calls process_attr() which
    still checks the attr for the dummy event. This commit fixed the issue by
    skipping the attr check for the dummy event in the API evsel__check_attr,
    Otherwise, we have to patch everywhere when evsel__check_attr() is called.
    
    Before:
    
      #./perf record -o - --intr-regs=di,r8,dx,cx -e br_inst_retired.near_call:p -c 1000 --per-thread true 2>/dev/null|./perf script -F iregs |head -5
      Samples for 'dummy:HG' event do not have IREGS attribute set. Cannot print 'iregs' field.
      0x120 [0x90]: failed to process type: 64
      #
    
    After:
    
      # ./perf record -o - --intr-regs=di,r8,dx,cx -e br_inst_retired.near_call:p -c 1000 --per-thread true 2>/dev/null|./perf script -F iregs |head -5
      ABI:2    CX:0x55b8efa87000    DX:0x55b8efa7e000    DI:0xffffba5e625efbb0    R8:0xffff90e51f8ae100
      ABI:2    CX:0x7f1dae1e4000    DX:0xd0    DI:0xffff90e18c675ac0    R8:0x71
      ABI:2    CX:0xcc0    DX:0x1    DI:0xffff90e199880240    R8:0x0
      ABI:2    CX:0xffff90e180dd7500    DX:0xffff90e180dd7500    DI:0xffff90e180043500    R8:0x1
      ABI:2    CX:0x50    DX:0xffff90e18c583bd0    DI:0xffff90e1998803c0    R8:0x58
      #
    
    [1]https://lore.kernel.org/lkml/20220831124041.219925-1-jolsa@kernel.org/
    
    Fixes: b91e5492 ("perf record: Add a dummy event on hybrid systems to collect metadata records")
    Suggested-by: default avatarNamhyung Kim <namhyung@kernel.org>
    Signed-off-by: default avatarXing Zhengjun <zhengjun.xing@linux.intel.com>
    Acked-by: default avatarJiri Olsa <jolsa@kernel.org>
    Cc: Alexander Shishkin <alexander.shishkin@intel.com>
    Cc: Andi Kleen <ak@linux.intel.com>
    Cc: Ian Rogers <irogers@google.com>
    Cc: Ingo Molnar <mingo@redhat.com>
    Cc: Kan Liang <kan.liang@linux.intel.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Link: https://lore.kernel.org/r/20220908070030.3455164-1-zhengjun.xing@linux.intel.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    82b2425f
builtin-script.c 113 KB