linux/arch/powerpc/mm
Thiago Jung Bauermann 6b2c08f989 powerpc: Don't call lockdep_assert_cpus_held() from arch_update_cpu_topology()
It turns out that not all paths calling arch_update_cpu_topology() hold
cpu_hotplug_lock, but that's OK because those paths can't race with
any concurrent hotplug events.

Warnings were reported with the following trace:

  lockdep_assert_cpus_held
  arch_update_cpu_topology
  sched_init_domains
  sched_init_smp
  kernel_init_freeable
  kernel_init
  ret_from_kernel_thread

Which is safe because it's called early in boot when hotplug is not
live yet.

And also this trace:

  lockdep_assert_cpus_held
  arch_update_cpu_topology
  partition_sched_domains
  cpuset_update_active_cpus
  sched_cpu_deactivate
  cpuhp_invoke_callback
  cpuhp_down_callbacks
  cpuhp_thread_fun
  smpboot_thread_fn
  kthread
  ret_from_kernel_thread

Which is safe because it's called as part of CPU hotplug, so although
we don't hold the CPU hotplug lock, there is another thread driving
the CPU hotplug operation which does hold the lock, and there is no
race.

Thanks to tglx for deciphering it for us.

Fixes: 3e401f7a2e ("powerpc: Only obtain cpu_hotplug_lock if called by rtasd")
Signed-off-by: Thiago Jung Bauermann <bauerman@linux.vnet.ibm.com>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
2017-10-10 21:02:04 +11:00
..
8xx_mmu.c powerpc/8xx: mark init functions with __init 2017-08-15 22:55:54 +10:00
40x_mmu.c
44x_mmu.c
copro_fault.c
dma-noncoherent.c
dump_hashpagetable.c powerpc/mm: Use seq_putc() in two functions 2017-09-01 16:42:52 +10:00
dump_linuxpagetables.c powerpc/mm: Use seq_putc() in two functions 2017-09-01 16:42:52 +10:00
fault.c powerpc/8xx: Use symbolic names for DSISR bits in DSI 2017-08-10 23:32:20 +10:00
fsl_booke_mmu.c
hash64_4k.c
hash64_64k.c
hash_low_32.S powerpc: fix location of two EXPORT_SYMBOL 2017-09-01 16:42:45 +10:00
hash_native_64.c powerpc/mm: Wire up hpte_removebolted for powernv 2017-07-02 20:40:28 +10:00
hash_utils_64.c powerpc/mm: Use mm_is_thread_local() instread of open-coding 2017-08-23 22:27:45 +10:00
highmem.c
hugepage-hash64.c
hugetlbpage-book3e.c
hugetlbpage-hash64.c
hugetlbpage-radix.c
hugetlbpage.c powerpc/mm: Use mm_is_thread_local() instread of open-coding 2017-08-23 22:27:45 +10:00
init_32.c powerpc/mm/hugetlb: Add support for reserving gigantic huge pages via kernel command line 2017-08-16 14:56:12 +10:00
init_64.c powerpc/mm: Fix section mismatch warning in early_check_vec5() 2017-08-10 23:40:51 +10:00
init-common.c
Makefile powerpc/mm: Make switch_mm_irqs_off() out of line 2017-08-23 22:48:51 +10:00
mem.c powerpc/8xx: Getting rid of remaining use of CONFIG_8xx 2017-08-10 23:32:12 +10:00
mmap.c powerpc,mmap: properly account for stack randomization in mmap_base 2017-07-12 16:26:03 -07:00
mmu_context_book3s64.c powerpc/mm: Optimize detection of thread local mm's 2017-08-23 22:28:38 +10:00
mmu_context_hash32.c
mmu_context_iommu.c
mmu_context_nohash.c
mmu_context.c powerpc/mm: Make switch_mm_irqs_off() out of line 2017-08-23 22:48:51 +10:00
mmu_decl.h powerpc/8xx: Getting rid of remaining use of CONFIG_8xx 2017-08-10 23:32:12 +10:00
numa.c powerpc: Don't call lockdep_assert_cpus_held() from arch_update_cpu_topology() 2017-10-10 21:02:04 +11:00
pgtable_32.c powerpc/mm: Call flush_tlb_kernel_range with interrupts enabled 2017-10-04 22:15:30 +11:00
pgtable_64.c powerpc/mm/book3s64: Make KERN_IO_START a variable 2017-08-08 19:37:04 +10:00
pgtable-book3e.c
pgtable-book3s64.c powerpc/mm/cxl: Add the fault handling cpu to mm cpumask 2017-08-17 23:31:52 +10:00
pgtable-hash64.c powerpc/mm: Use mm_is_thread_local() instread of open-coding 2017-08-23 22:27:45 +10:00
pgtable-radix.c powerpc/mm/radix: Prettify mapped memory range print out 2017-08-31 14:26:42 +10:00
pgtable.c
ppc_mmu_32.c
slb_low.S powerpc/mm/hash64: Make vmalloc 56T on hash 2017-08-08 19:37:05 +10:00
slb.c
slice.c
subpage-prot.c powerpc/mm/hash: Free the subpage_prot_table correctly 2017-07-27 13:05:50 +10:00
tlb_hash32.c
tlb_hash64.c powerpc/mm: Use mm_is_thread_local() instread of open-coding 2017-08-23 22:27:45 +10:00
tlb_low_64e.S
tlb_nohash_low.S powerpc/8xx: Getting rid of remaining use of CONFIG_8xx 2017-08-10 23:32:12 +10:00
tlb_nohash.c
tlb-radix.c Merge branch 'fixes' into next 2017-08-23 22:20:10 +10:00
vphn.c
vphn.h