linux_dsm_epyc7002/arch/powerpc
Thiago Jung Bauermann 3e401f7a2e powerpc: Only obtain cpu_hotplug_lock if called by rtasd
Calling arch_update_cpu_topology from a CPU hotplug state machine callback
hits a deadlock because the function tries to get a read lock on
cpu_hotplug_lock while the state machine still holds a write lock on it.

Since all callers of arch_update_cpu_topology except rtasd already hold
cpu_hotplug_lock, this patch changes the function to use
stop_machine_cpuslocked and creates a separate function for rtasd which
still tries to obtain the lock.

Michael Bringmann investigated the bug and provided a detailed analysis
of the deadlock on this previous RFC for an alternate solution:

Signed-off-by: Thiago Jung Bauermann <bauerman@linux.vnet.ibm.com>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Acked-by: Michael Ellerman <mpe@ellerman.id.au>
Cc: John Allen <jallen@linux.vnet.ibm.com>
Cc: Michael Bringmann <mwb@linux.vnet.ibm.com>
Cc: Nathan Fontenot <nfont@linux.vnet.ibm.com>
Cc: linuxppc-dev@lists.ozlabs.org
Link: http://lkml.kernel.org/r/1497996510-4032-1-git-send-email-bauerman@linux.vnet.ibm.com
Link: https://patchwork.ozlabs.org/patch/771293/
2017-06-23 09:32:11 +02:00
..
boot devicetree: Move include prefixes from arch to separate directory 2017-05-18 23:55:48 -07:00
configs powerpc updates for 4.12 part 1. 2017-05-05 11:36:44 -07:00
crypto Merge branch 'linus' of git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6 2017-05-02 15:53:46 -07:00
include powerpc: Only obtain cpu_hotplug_lock if called by rtasd 2017-06-23 09:32:11 +02:00
kernel powerpc: Only obtain cpu_hotplug_lock if called by rtasd 2017-06-23 09:32:11 +02:00
kvm KVM/PPC/Book3S HV: Use cpuhp_setup_state_nocalls_cpuslocked() 2017-05-26 10:10:39 +02:00
lib powerpc updates for 4.12 part 1. 2017-05-05 11:36:44 -07:00
math-emu Replace <asm/uaccess.h> with <linux/uaccess.h> globally 2016-12-24 11:46:01 -08:00
mm powerpc: Only obtain cpu_hotplug_lock if called by rtasd 2017-06-23 09:32:11 +02:00
net powerpc updates for 4.11 part 1. 2017-02-22 10:30:38 -08:00
oprofile ktime: Cleanup ktime_set() usage 2016-12-25 17:21:22 +01:00
perf powerpc/perf: Add Power8 mem_access event to sysfs 2017-04-19 20:00:23 +10:00
platforms powerpc/powernv: Use stop_machine_cpuslocked() 2017-05-26 10:10:41 +02:00
purgatory kexec, x86/purgatory: Unbreak it and clean it up 2017-03-10 20:55:09 +01:00
sysdev powerpc updates for 4.12 part 2 2017-05-12 10:04:09 -07:00
tools powerpc: Add arch/powerpc/tools directory 2017-04-28 21:26:53 +10:00
xmon powerpc/xmon: Teach xmon oops about radix vectors 2017-05-01 18:52:58 +10:00
Kconfig powerpc updates for 4.12 part 2 2017-05-12 10:04:09 -07:00
Kconfig.debug powerpc/xmon: Enable disassembly files (compilation changes) 2017-02-15 20:02:42 +11:00
Makefile powerpc: Add arch/powerpc/tools directory 2017-04-28 21:26:53 +10:00
Makefile.postlink powerpc: Fix distclean with Makefile.postlink 2017-05-09 19:24:23 +10:00