• Anju T Sudhakar's avatar
    powerpc/perf: Remove sched_task function defined for thread-imc · 7ccc4fe5
    Anju T Sudhakar authored
    Call trace observed while running perf-fuzzer:
    
      CPU: 43 PID: 9088 Comm: perf_fuzzer Not tainted 4.13.0-32-generic #35~lp1746225
      task: c000003f776ac900 task.stack: c000003f77728000
      NIP: c000000000299b70 LR: c0000000002a4534 CTR: c00000000029bb80
      REGS: c000003f7772b760 TRAP: 0700   Not tainted  (4.13.0-32-generic)
      MSR: 900000000282b033 <SF,HV,VEC,VSX,EE,FP,ME,IR,DR,RI,LE>
        CR: 24008822  XER: 00000000
      CFAR: c000000000299a70 SOFTE: 0
      GPR00: c0000000002a4534 c000003f7772b9e0 c000000001606200 c000003fef858908
      GPR04: c000003f776ac900 0000000000000001 ffffffffffffffff 0000003fee730000
      GPR08: 0000000000000000 0000000000000000 c0000000011220d8 0000000000000002
      GPR12: c00000000029bb80 c000000007a3d900 0000000000000000 0000000000000000
      GPR16: 0000000000000000 0000000000000000 0000000000000000 0000000000000000
      GPR20: 0000000000000000 0000000000000000 c000003f776ad090 c000000000c71354
      GPR24: c000003fef716780 0000003fee730000 c000003fe69d4200 c000003f776ad330
      GPR28: c0000000011220d8 0000000000000001 c0000000014c6108 c000003fef858900
      NIP [c000000000299b70] perf_pmu_sched_task+0x170/0x180
      LR [c0000000002a4534] __perf_event_task_sched_in+0xc4/0x230
      Call Trace:
        perf_iterate_sb+0x158/0x2a0 (unreliable)
        __perf_event_task_sched_in+0xc4/0x230
        finish_task_switch+0x21c/0x310
        __schedule+0x304/0xb80
        schedule+0x40/0xc0
        do_wait+0x254/0x2e0
        kernel_wait4+0xa0/0x1a0
        SyS_wait4+0x64/0xc0
        system_call+0x58/0x6c
      Instruction dump:
      3beafea0 7faa4800 409eff18 e8010060 eb610028 ebc10040 7c0803a6 38210050
      eb81ffe0 eba1ffe8 ebe1fff8 4e800020 <0fe00000> 4bffffbc 60000000 60420000
      ---[ end trace 8c46856d314c1811 ]---
    
    The context switch call-backs for thread-imc are defined in sched_task function.
    So when thread-imc events are grouped with software pmu events,
    perf_pmu_sched_task hits the WARN_ON_ONCE condition, since software PMUs are
    assumed not to have a sched_task defined.
    
    Patch to move the thread_imc enable/disable opal call back from sched_task to
    event_[add/del] function
    
    Fixes: f74c89bd ("powerpc/perf: Add thread IMC PMU support")
    Signed-off-by: default avatarAnju T Sudhakar <anju@linux.vnet.ibm.com>
    Reviewed-by: default avatarMadhavan Srinivasan <maddy@linux.vnet.ibm.com>
    Tested-by: default avatarJoel Stanley <joel@jms.id.au>
    Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
    7ccc4fe5
imc-pmu.c 34.6 KB