• Madhavan Srinivasan's avatar
    powerpc/perf: Fix core-imc hotplug callback failure during imc initialization · 7ecb37f6
    Madhavan Srinivasan authored
    Call trace observed during boot:
    
      nest_capp0_imc performance monitor hardware support registered
      nest_capp1_imc performance monitor hardware support registered
      core_imc memory allocation for cpu 56 failed
      Unable to handle kernel paging request for data at address 0xffa400010
      Faulting instruction address: 0xc000000000bf3294
      0:mon> e
      cpu 0x0: Vector: 300 (Data Access) at [c000000ff38ff8d0]
          pc: c000000000bf3294: mutex_lock+0x34/0x90
          lr: c000000000bf3288: mutex_lock+0x28/0x90
          sp: c000000ff38ffb50
         msr: 9000000002009033
         dar: ffa400010
       dsisr: 80000
        current = 0xc000000ff383de00
        paca    = 0xc000000007ae0000	 softe: 0	 irq_happened: 0x01
          pid   = 13, comm = cpuhp/0
      Linux version 4.11.0-39.el7a.ppc64le (mockbuild@ppc-058.build.eng.bos.redhat.com) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-16) (GCC) ) #1 SMP Tue Oct 3 07:42:44 EDT 2017
      0:mon> t
      [c000000ff38ffb80] c0000000002ddfac perf_pmu_migrate_context+0xac/0x470
      [c000000ff38ffc40] c00000000011385c ppc_core_imc_cpu_offline+0x1ac/0x1e0
      [c000000ff38ffc90] c000000000125758 cpuhp_invoke_callback+0x198/0x5d0
      [c000000ff38ffd00] c00000000012782c cpuhp_thread_fun+0x8c/0x3d0
      [c000000ff38ffd60] c0000000001678d0 smpboot_thread_fn+0x290/0x2a0
      [c000000ff38ffdc0] c00000000015ee78 kthread+0x168/0x1b0
      [c000000ff38ffe30] c00000000000b368 ret_from_kernel_thread+0x5c/0x74
    
    While registering the cpuhoplug callbacks for core-imc, if we fails
    in the cpuhotplug online path for any random core (either because opal call to
    initialize the core-imc counters fails or because memory allocation fails for
    that core), ppc_core_imc_cpu_offline() will get invoked for other cpus who
    successfully returned from cpuhotplug online path.
    
    But in the ppc_core_imc_cpu_offline() path we are trying to migrate the event
    context, when core-imc counters are not even initialized. Thus creating the
    above stack dump.
    
    Add a check to see if core-imc counters are enabled or not in the cpuhotplug
    offline path before migrating the context to handle this failing scenario.
    
    Fixes: 885dcd70 ("powerpc/perf: Add nest IMC PMU support")
    Signed-off-by: default avatarMadhavan Srinivasan <maddy@linux.vnet.ibm.com>
    Signed-off-by: default avatarAnju T Sudhakar <anju@linux.vnet.ibm.com>
    Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
    7ecb37f6
Name
Last commit
Last update
..
alpha Loading commit data...
arc Loading commit data...
arm Loading commit data...
arm64 Loading commit data...
blackfin Loading commit data...
c6x Loading commit data...
cris Loading commit data...
frv Loading commit data...
h8300 Loading commit data...
hexagon Loading commit data...
ia64 Loading commit data...
m32r Loading commit data...
m68k Loading commit data...
metag Loading commit data...
microblaze Loading commit data...
mips Loading commit data...
mn10300 Loading commit data...
nios2 Loading commit data...
openrisc Loading commit data...
parisc Loading commit data...
powerpc Loading commit data...
s390 Loading commit data...
score Loading commit data...
sh Loading commit data...
sparc Loading commit data...
tile Loading commit data...
um Loading commit data...
unicore32 Loading commit data...
x86 Loading commit data...
xtensa Loading commit data...
.gitignore Loading commit data...
Kconfig Loading commit data...