• Thiago Jung Bauermann's avatar
    powerpc: Don't call lockdep_assert_cpus_held() from arch_update_cpu_topology() · 6b2c08f9
    Thiago Jung Bauermann authored
    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: 3e401f7a ("powerpc: Only obtain cpu_hotplug_lock if called by rtasd")
    Signed-off-by: default avatarThiago Jung Bauermann <bauerman@linux.vnet.ibm.com>
    Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
    6b2c08f9
numa.c 38.6 KB