Files
linux-apfs/include/linux
Tejun Heo f740e6cd0c stop_machine: implement stop_machine_from_inactive_cpu()
Currently, mtrr wants stop_machine functionality while a CPU is being
brought up.  As stop_machine() requires the calling CPU to be active,
mtrr implements its own stop_machine using stop_one_cpu() on each
online CPU.  This doesn't only unnecessarily duplicate complex logic
but also introduces a possibility of deadlock when it races against
the generic stop_machine().

This patch implements stop_machine_from_inactive_cpu() to serve such
use cases.  Its functionality is basically the same as stop_machine();
however, it should be called from a CPU which isn't active and doesn't
depend on working scheduling on the calling CPU.

This is achieved by using busy loops for synchronization and
open-coding stop_cpus queuing and waiting with direct invocation of
fn() for local CPU inbetween.

Signed-off-by: Tejun Heo <tj@kernel.org>
Link: http://lkml.kernel.org/r/20110623182056.982526827@sbsiddha-MOBL3.sc.intel.com
Signed-off-by: Suresh Siddha <suresh.b.siddha@intel.com>
Cc: Ingo Molnar <mingo@elte.hu>
Cc: Andrew Morton <akpm@linux-foundation.org>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
2011-06-27 15:17:08 -07:00
..
2011-05-04 14:08:36 -07:00
2011-06-01 11:36:49 +01:00
2011-05-28 17:41:46 +02:00
2011-05-31 13:45:53 +02:00
2011-05-26 17:12:34 -07:00
2011-05-26 17:12:34 -07:00
2011-05-19 15:59:38 -07:00
2011-05-23 10:47:06 -05:00
2011-05-29 13:03:09 +01:00
2011-05-24 10:21:29 +02:00
2011-05-24 10:21:29 +02:00
2011-06-09 15:05:48 -07:00
2011-05-23 13:59:54 +02:00
2011-05-26 12:03:50 -07:00
2011-05-25 20:43:32 +02:00
2011-05-08 16:41:45 -07:00
2011-05-26 17:12:37 -07:00
2011-05-22 08:47:53 -04:00
2011-05-19 20:50:53 -04:00
2011-05-24 14:33:35 +02:00
2011-04-25 18:14:10 -07:00
2011-05-29 11:32:28 -07:00
2011-05-26 17:12:36 -07:00
2011-05-19 16:55:27 +09:30
2011-05-20 11:46:11 -07:00
2011-05-26 17:12:34 -07:00
2011-05-26 17:12:37 -07:00
2011-05-24 12:10:51 +02:00
2011-05-13 16:31:00 -07:00
2011-05-05 23:16:59 -07:00
2011-05-25 08:39:19 -07:00
2011-05-05 11:10:14 -07:00
2011-06-15 20:03:59 -07:00
2011-06-15 20:03:59 -07:00
2011-06-07 09:05:42 -07:00
2011-05-30 11:14:16 +09:30