https://github.com/torvalds/linux
Revision 7ecb37f62fe58e3e4d9b03443b92d213b2c108ce authored by Madhavan Srinivasan on 02 November 2017, 12:12:26 UTC, committed by Michael Ellerman on 02 November 2017, 22:38:05 UTC
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: 885dcd709ba9 ("powerpc/perf: Add nest IMC PMU support") Signed-off-by: Madhavan Srinivasan <maddy@linux.vnet.ibm.com> Signed-off-by: Anju T Sudhakar <anju@linux.vnet.ibm.com> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
1 parent e6c4dcb
Tip revision: 7ecb37f62fe58e3e4d9b03443b92d213b2c108ce authored by Madhavan Srinivasan on 02 November 2017, 12:12:26 UTC
powerpc/perf: Fix core-imc hotplug callback failure during imc initialization
powerpc/perf: Fix core-imc hotplug callback failure during imc initialization
Tip revision: 7ecb37f
File | Mode | Size |
---|---|---|
kasan | ||
Kconfig | -rw-r--r-- | 24.8 KB |
Kconfig.debug | -rw-r--r-- | 3.8 KB |
Makefile | -rw-r--r-- | 3.6 KB |
backing-dev.c | -rw-r--r-- | 27.5 KB |
balloon_compaction.c | -rw-r--r-- | 4.9 KB |
bootmem.c | -rw-r--r-- | 20.8 KB |
cleancache.c | -rw-r--r-- | 9.9 KB |
cma.c | -rw-r--r-- | 13.5 KB |
cma.h | -rw-r--r-- | 534 bytes |
cma_debug.c | -rw-r--r-- | 4.5 KB |
compaction.c | -rw-r--r-- | 57.9 KB |
debug.c | -rw-r--r-- | 4.2 KB |
debug_page_ref.c | -rw-r--r-- | 1.3 KB |
dmapool.c | -rw-r--r-- | 13.7 KB |
early_ioremap.c | -rw-r--r-- | 6.7 KB |
fadvise.c | -rw-r--r-- | 4.4 KB |
failslab.c | -rw-r--r-- | 1.4 KB |
filemap.c | -rw-r--r-- | 85.9 KB |
frame_vector.c | -rw-r--r-- | 6.0 KB |
frontswap.c | -rw-r--r-- | 14.3 KB |
gup.c | -rw-r--r-- | 48.0 KB |
highmem.c | -rw-r--r-- | 11.7 KB |
hmm.c | -rw-r--r-- | 33.4 KB |
huge_memory.c | -rw-r--r-- | 79.5 KB |
hugetlb.c | -rw-r--r-- | 127.5 KB |
hugetlb_cgroup.c | -rw-r--r-- | 10.9 KB |
hwpoison-inject.c | -rw-r--r-- | 3.2 KB |
init-mm.c | -rw-r--r-- | 680 bytes |
internal.h | -rw-r--r-- | 16.6 KB |
interval_tree.c | -rw-r--r-- | 3.2 KB |
khugepaged.c | -rw-r--r-- | 48.5 KB |
kmemcheck.c | -rw-r--r-- | 2.9 KB |
kmemleak-test.c | -rw-r--r-- | 3.2 KB |
kmemleak.c | -rw-r--r-- | 58.7 KB |
ksm.c | -rw-r--r-- | 85.5 KB |
list_lru.c | -rw-r--r-- | 12.6 KB |
maccess.c | -rw-r--r-- | 3.0 KB |
madvise.c | -rw-r--r-- | 22.1 KB |
memblock.c | -rw-r--r-- | 50.5 KB |
memcontrol.c | -rw-r--r-- | 159.4 KB |
memory-failure.c | -rw-r--r-- | 47.8 KB |
memory.c | -rw-r--r-- | 124.8 KB |
memory_hotplug.c | -rw-r--r-- | 49.4 KB |
mempolicy.c | -rw-r--r-- | 69.5 KB |
mempool.c | -rw-r--r-- | 13.9 KB |
memtest.c | -rw-r--r-- | 2.7 KB |
migrate.c | -rw-r--r-- | 76.7 KB |
mincore.c | -rw-r--r-- | 6.7 KB |
mlock.c | -rw-r--r-- | 22.5 KB |
mm_init.c | -rw-r--r-- | 4.8 KB |
mmap.c | -rw-r--r-- | 97.3 KB |
mmu_context.c | -rw-r--r-- | 1.3 KB |
mmu_notifier.c | -rw-r--r-- | 11.2 KB |
mmzone.c | -rw-r--r-- | 2.4 KB |
mprotect.c | -rw-r--r-- | 13.8 KB |
mremap.c | -rw-r--r-- | 17.1 KB |
msync.c | -rw-r--r-- | 2.6 KB |
nobootmem.c | -rw-r--r-- | 10.6 KB |
nommu.c | -rw-r--r-- | 48.5 KB |
oom_kill.c | -rw-r--r-- | 28.7 KB |
page-writeback.c | -rw-r--r-- | 84.6 KB |
page_alloc.c | -rw-r--r-- | 211.2 KB |
page_counter.c | -rw-r--r-- | 4.8 KB |
page_ext.c | -rw-r--r-- | 11.1 KB |
page_idle.c | -rw-r--r-- | 5.4 KB |
page_io.c | -rw-r--r-- | 10.4 KB |
page_isolation.c | -rw-r--r-- | 8.0 KB |
page_owner.c | -rw-r--r-- | 15.2 KB |
page_poison.c | -rw-r--r-- | 2.6 KB |
page_vma_mapped.c | -rw-r--r-- | 6.5 KB |
pagewalk.c | -rw-r--r-- | 8.4 KB |
percpu-internal.h | -rw-r--r-- | 5.9 KB |
percpu-km.c | -rw-r--r-- | 2.9 KB |
percpu-stats.c | -rw-r--r-- | 5.9 KB |
percpu-vm.c | -rw-r--r-- | 10.1 KB |
percpu.c | -rw-r--r-- | 82.0 KB |
pgtable-generic.c | -rw-r--r-- | 5.3 KB |
process_vm_access.c | -rw-r--r-- | 10.1 KB |
quicklist.c | -rw-r--r-- | 2.4 KB |
readahead.c | -rw-r--r-- | 16.1 KB |
rmap.c | -rw-r--r-- | 51.0 KB |
rodata_test.c | -rw-r--r-- | 1.4 KB |
shmem.c | -rw-r--r-- | 111.3 KB |
slab.c | -rw-r--r-- | 110.2 KB |
slab.h | -rw-r--r-- | 14.4 KB |
slab_common.c | -rw-r--r-- | 34.3 KB |
slob.c | -rw-r--r-- | 16.1 KB |
slub.c | -rw-r--r-- | 141.8 KB |
sparse-vmemmap.c | -rw-r--r-- | 8.0 KB |
sparse.c | -rw-r--r-- | 22.7 KB |
swap.c | -rw-r--r-- | 27.6 KB |
swap_cgroup.c | -rw-r--r-- | 5.2 KB |
swap_slots.c | -rw-r--r-- | 9.1 KB |
swap_state.c | -rw-r--r-- | 21.6 KB |
swapfile.c | -rw-r--r-- | 94.2 KB |
truncate.c | -rw-r--r-- | 25.4 KB |
usercopy.c | -rw-r--r-- | 7.5 KB |
userfaultfd.c | -rw-r--r-- | 14.7 KB |
util.c | -rw-r--r-- | 18.4 KB |
vmacache.c | -rw-r--r-- | 3.2 KB |
vmalloc.c | -rw-r--r-- | 70.3 KB |
vmpressure.c | -rw-r--r-- | 14.3 KB |
vmscan.c | -rw-r--r-- | 115.5 KB |
vmstat.c | -rw-r--r-- | 51.1 KB |
workingset.c | -rw-r--r-- | 18.2 KB |
z3fold.c | -rw-r--r-- | 29.3 KB |
zbud.c | -rw-r--r-- | 18.2 KB |
zpool.c | -rw-r--r-- | 10.0 KB |
zsmalloc.c | -rw-r--r-- | 59.4 KB |
zswap.c | -rw-r--r-- | 32.8 KB |
Computing file changes ...