summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBenjamin Herrenschmidt <benh@kernel.crashing.org>2008-04-18 16:56:15 +1000
committerPaul Mackerras <paulus@samba.org>2008-04-24 20:57:33 +1000
commit8c9843e57a7d9d7a090d6467a0f1f3afb8031527 (patch)
tree5efdab577853bc92e3c980fc97aba74be58c1efb
parent1d32e21889b96e594e8b63b193bf7d2a51ab93ec (diff)
downloadlwn-8c9843e57a7d9d7a090d6467a0f1f3afb8031527.tar.gz
lwn-8c9843e57a7d9d7a090d6467a0f1f3afb8031527.zip
[POWERPC] Add thread_info_cache_init() weak hook
Some architectures need to maintain a kmem cache for thread info structures. The next commit adds that to powerpc to fix an alignment problem. There is no good arch callback to use to initialize that cache that I can find, so this adds a new one in the form of a weak function whose default is empty. Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org> Acked-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Paul Mackerras <paulus@samba.org>
-rw-r--r--include/linux/sched.h2
-rw-r--r--init/main.c5
2 files changed, 7 insertions, 0 deletions
diff --git a/include/linux/sched.h b/include/linux/sched.h
index 311380e5fe89..d0bd97044abd 100644
--- a/include/linux/sched.h
+++ b/include/linux/sched.h
@@ -1926,6 +1926,8 @@ static inline unsigned long *end_of_stack(struct task_struct *p)
#endif
+extern void thread_info_cache_init(void);
+
/* set thread flags in other task's structures
* - see asm/thread_info.h for TIF_xxxx flags available
*/
diff --git a/init/main.c b/init/main.c
index 833a67df1f7e..507c9fba03bb 100644
--- a/init/main.c
+++ b/init/main.c
@@ -525,6 +525,10 @@ void __init __attribute__((weak)) smp_setup_processor_id(void)
{
}
+void __init __weak thread_info_cache_init(void)
+{
+}
+
asmlinkage void __init start_kernel(void)
{
char * command_line;
@@ -645,6 +649,7 @@ asmlinkage void __init start_kernel(void)
if (efi_enabled)
efi_enter_virtual_mode();
#endif
+ thread_info_cache_init();
fork_init(num_physpages);
proc_caches_init();
buffer_init();