diff options
author | Jens Axboe <jens.axboe@oracle.com> | 2008-06-26 05:21:34 -0400 |
---|---|---|
committer | Jens Axboe <jens.axboe@oracle.com> | 2008-06-26 05:21:34 -0400 |
commit | 3d4422332711ef48ef0f132f1fcbfcbd56c7f3d1 (patch) | |
tree | 9fd3cfa9825e8cb0b7e08dfae85cc9a722442849 /init/main.c | |
parent | 543cf4cb3fe6f6cae3651ba918b9c56200b257d0 (diff) |
Add generic helpers for arch IPI function calls
This adds kernel/smp.c which contains helpers for IPI function calls. In
addition to supporting the existing smp_call_function() in a more efficient
manner, it also adds a more scalable variant called smp_call_function_single()
for calling a given function on a single CPU only.
The core of this is based on the x86-64 patch from Nick Piggin, lots of
changes since then. "Alan D. Brunelle" <Alan.Brunelle@hp.com> has
contributed lots of fixes and suggestions as well. Also thanks to
Paul E. McKenney <paulmck@linux.vnet.ibm.com> for reviewing RCU usage
and getting rid of the data allocation fallback deadlock.
Acked-by: Ingo Molnar <mingo@elte.hu>
Reviewed-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
Diffstat (limited to 'init/main.c')
-rw-r--r-- | init/main.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/init/main.c b/init/main.c index f7fb20021d48..1efcccff1bdb 100644 --- a/init/main.c +++ b/init/main.c | |||
@@ -31,6 +31,7 @@ | |||
31 | #include <linux/kernel_stat.h> | 31 | #include <linux/kernel_stat.h> |
32 | #include <linux/start_kernel.h> | 32 | #include <linux/start_kernel.h> |
33 | #include <linux/security.h> | 33 | #include <linux/security.h> |
34 | #include <linux/smp.h> | ||
34 | #include <linux/workqueue.h> | 35 | #include <linux/workqueue.h> |
35 | #include <linux/profile.h> | 36 | #include <linux/profile.h> |
36 | #include <linux/rcupdate.h> | 37 | #include <linux/rcupdate.h> |
@@ -779,6 +780,7 @@ static void __init do_pre_smp_initcalls(void) | |||
779 | { | 780 | { |
780 | extern int spawn_ksoftirqd(void); | 781 | extern int spawn_ksoftirqd(void); |
781 | 782 | ||
783 | init_call_single_data(); | ||
782 | migration_init(); | 784 | migration_init(); |
783 | spawn_ksoftirqd(); | 785 | spawn_ksoftirqd(); |
784 | if (!nosoftlockup) | 786 | if (!nosoftlockup) |