linux-sg2042/arch/powerpc
Srivatsa S. Bhat d1a5511390 powerpc, sysfs: Fix CPU hotplug callback registration
Subsystems that want to register CPU hotplug callbacks, as well as perform
initialization for the CPUs that are already online, often do it as shown
below:

	get_online_cpus();

	for_each_online_cpu(cpu)
		init_cpu(cpu);

	register_cpu_notifier(&foobar_cpu_notifier);

	put_online_cpus();

This is wrong, since it is prone to ABBA deadlocks involving the
cpu_add_remove_lock and the cpu_hotplug.lock (when running concurrently
with CPU hotplug operations).

Instead, the correct and race-free way of performing the callback
registration is:

	cpu_notifier_register_begin();

	for_each_online_cpu(cpu)
		init_cpu(cpu);

	/* Note the use of the double underscored version of the API */
	__register_cpu_notifier(&foobar_cpu_notifier);

	cpu_notifier_register_done();

Fix the sysfs code in powerpc by using this latter form of callback
registration.

Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Olof Johansson <olof@lixom.net>
Cc: Wang Dongsheng <dongsheng.wang@freescale.com>
Cc: Ingo Molnar <mingo@kernel.org>
Acked-by: Madhavan Srinivasan <maddy@linux.vnet.ibm.com>
Signed-off-by: Srivatsa S. Bhat <srivatsa.bhat@linux.vnet.ibm.com>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
2014-03-20 13:43:42 +01:00
..
boot Merge remote-tracking branch 'agust/next' into next 2014-01-29 16:53:55 +11:00
configs Merge remote-tracking branch 'scott/next' into next 2014-01-15 14:22:35 +11:00
crypto powerpc: Fix compile of sha1-powerpc-asm.S on 32-bit 2013-03-05 16:56:26 +11:00
include powerpc/powernv: Fix opal_xscom_{read,write} prototype 2014-02-28 19:15:48 +11:00
kernel powerpc, sysfs: Fix CPU hotplug callback registration 2014-03-20 13:43:42 +01:00
kvm Second batch of KVM updates. Some minor x86 fixes, 2014-01-31 08:37:32 -08:00
lib powerpc: Add vr save/restore functions 2014-01-15 13:46:43 +11:00
math-emu powerpc: fix e500 SPE float SIGFPE generation 2014-01-07 18:43:42 -06:00
mm powerpc/mm: Add new "set" flag argument to pte/pmd update function 2014-02-17 11:19:35 +11:00
net bpf: do not use reciprocal divide 2014-01-15 17:02:08 -08:00
oprofile powerpc: Delete non-required instances of include <linux/init.h> 2014-01-15 13:46:44 +11:00
perf powerpc/perf: Configure BHRB filter before enabling PMU interrupts 2014-02-11 11:24:50 +11:00
platforms mm: fix GFP_THISNODE callers and clarify 2014-03-10 17:26:19 -07:00
sysdev powerpc: Fix build failure in sysdev/mpic.c for MPIC_WEIRD=y 2014-02-11 11:24:45 +11:00
xmon powerpc/xmon: Don't signal we've entered until we're finished printing 2014-02-11 11:24:51 +11:00
Kconfig Second batch of KVM updates. Some minor x86 fixes, 2014-01-31 08:37:32 -08:00
Kconfig.debug Merge branch 'kconfig-diet' from Dave Hansen 2013-07-04 11:25:51 -07:00
Makefile powerpc: Fix error when cross building TAGS & cscope 2013-11-25 11:49:11 +11:00
relocs_check.pl Fix warning typo "CONFIG_RELCOATABLE" 2013-05-29 15:11:30 +02:00