• Anju T's avatar
    powerpc/perf/imc: Fix nest events on muti socket system · 7efbae90
    Anju T authored
    In a multi node system with discontiguous node ids, nest event values
    are not showing up properly. eg. lscpu output:
    
      NUMA node0 CPU(s): 0-15
      NUMA node8 CPU(s): 16-31
    
    Nest event values on such systems can be counted on CPUs <= 15:
    
      $./perf stat -e 'nest_powerbus0_imc/PM_PB_CYC/' -C 0-14 -I 1000 sleep 1000
      #           time             counts unit events
           1.000294577    30,17,24,42,880 nest_powerbus0_imc/PM_PB_CYC/
    
    But not on CPUs >= 16:
    
      $./perf stat -e 'nest_powerbus0_imc/PM_PB_CYC/' -C 16-28 -I 1000 sleep 1000
      #           time             counts unit events
           1.000049902    <not supported> nest_powerbus0_imc/PM_PB_CYC/
    
    This is because, when fetching the reference count, the node id (which
    may be sparse) is used as the array index, not the node number (which
    is 0 based and contiguous).
    
    Fix it by using the node number as the array index.
    
      $./perf stat -e 'nest_powerbus0_imc/PM_PB_CYC/' -C 16-28 -I 1000 sleep 1000
      #           time             counts unit events
           1.000241961    26,12,35,28,704 nest_powerbus0_imc/PM_PB_CYC/
    Signed-off-by: default avatarAnju T Sudhakar <anju@linux.vnet.ibm.com>
    [mpe: Change log tweaks for clarity and brevity]
    Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
    7efbae90
imc-pmu.c 31.8 KB