aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/smpboot.h
diff options
context:
space:
mode:
authorSuresh Siddha <suresh.b.siddha@intel.com>2012-04-20 20:08:50 -0400
committerThomas Gleixner <tglx@linutronix.de>2012-05-03 13:32:34 -0400
commit3bb5d2ee396aabaa4e318f17e94d13e2ee0e5a88 (patch)
tree723fd419cbbc6874b3303d11a439303f3c4ff46c /kernel/smpboot.h
parent9a1347237492f273f84ec39962b5806c70b2806a (diff)
smp, idle: Allocate idle thread for each possible cpu during boot
percpu areas are already allocated during boot for each possible cpu. percpu idle threads can be considered as an extension of the percpu areas, and allocate them for each possible cpu during boot. This will eliminate the need for workqueue based idle thread allocation. In future we can move the idle thread area into the percpu area too. [ tglx: Moved the loop into smpboot.c and added an error check when the init code failed to allocate an idle thread for a cpu which should be onlined ] Signed-off-by: Suresh Siddha <suresh.b.siddha@intel.com> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Rusty Russell <rusty@rustcorp.com.au> Cc: Paul E. McKenney <paulmck@linux.vnet.ibm.com> Cc: Srivatsa S. Bhat <srivatsa.bhat@linux.vnet.ibm.com> Cc: Tejun Heo <tj@kernel.org> Cc: David Rientjes <rientjes@google.com> Cc: venki@google.com Link: http://lkml.kernel.org/r/1334966930.28674.245.camel@sbsiddha-desk.sc.intel.com Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Diffstat (limited to 'kernel/smpboot.h')
-rw-r--r--kernel/smpboot.h2
1 files changed, 2 insertions, 0 deletions
diff --git a/kernel/smpboot.h b/kernel/smpboot.h
index 7943bbbab917..4cfbcb8a8362 100644
--- a/kernel/smpboot.h
+++ b/kernel/smpboot.h
@@ -8,9 +8,11 @@ int smpboot_prepare(unsigned int cpu);
8#ifdef CONFIG_GENERIC_SMP_IDLE_THREAD 8#ifdef CONFIG_GENERIC_SMP_IDLE_THREAD
9struct task_struct *idle_thread_get(unsigned int cpu); 9struct task_struct *idle_thread_get(unsigned int cpu);
10void idle_thread_set_boot_cpu(void); 10void idle_thread_set_boot_cpu(void);
11void idle_threads_init(void);
11#else 12#else
12static inline struct task_struct *idle_thread_get(unsigned int cpu) { return NULL; } 13static inline struct task_struct *idle_thread_get(unsigned int cpu) { return NULL; }
13static inline void idle_thread_set_boot_cpu(void) { } 14static inline void idle_thread_set_boot_cpu(void) { }
15static inline void idle_threads_init(unsigned int cpu) { }
14#endif 16#endif
15 17
16#endif 18#endif