perf: Add PM notifiers to fix CPU hotplug races
authorPeter Zijlstra <a.p.zijlstra@chello.nl>
Mon, 1 Aug 2011 10:49:14 +0000 (12:49 +0200)
committerIngo Molnar <mingo@elte.hu>
Sun, 14 Aug 2011 09:53:03 +0000 (11:53 +0200)
commit144060fee07e9c22e179d00819c83c86fbcbf82c
treea13f3806fb266158570f1d7f7ece72f68199d7c2
parent7fdba1ca10462f42ad2246b918fe6368f5ce488e
perf: Add PM notifiers to fix CPU hotplug races

Francis reports that s2r gets him spurious NMIs, this is because the
suspend code leaves the boot cpu up and running.

Cure this by adding a suspend notifier. The problem is that hotplug
and suspend are completely un-serialized and the PM notifiers run
before the suspend cpu unplug of all but the boot cpu.

This leaves a window where the user can initialize another hotplug
operation (either remove or add a cpu) resulting in either one too
many or one too few hotplug ops. Thus we cannot use the hotplug code
for the suspend case.

There's another reason to not use the hotplug code, which is that the
hotplug code totally destroys the perf state, we can do better for
suspend and simply remove all counters from the PMU so that we can
re-instate them on resume.

Reported-by: Francis Moreau <francis.moro@gmail.com>
Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
Link: http://lkml.kernel.org/n/tip-1cvevybkgmv4s6v5y37t4847@git.kernel.org
Signed-off-by: Ingo Molnar <mingo@elte.hu>
kernel/events/core.c