---
 init/main.c |   13 +++++++++++++
 1 file changed, 13 insertions(+)

diff -r 9e670f180919 init/main.c
--- a/init/main.c	Fri Oct 24 14:10:59 2008 +1100
+++ b/init/main.c	Fri Oct 24 20:16:09 2008 +1100
@@ -789,6 +789,12 @@ static void run_init_process(char *init_
 	kernel_execve(init_filename, argv_init, envp_init);
 }
 
+static long test_work_on_cpu(void *arg)
+{
+	BUG_ON(arg != run_init_process);
+	return smp_processor_id();
+}
+
 /* This is a non __init function. Force it to be noinline otherwise gcc
  * makes it inline to init() and it becomes part of init.text section
  */
@@ -799,6 +805,13 @@ static int noinline init_post(void)
 	mark_rodata_ro();
 	system_state = SYSTEM_RUNNING;
 	numa_default_policy();
+
+	printk("work_on_cpu(0) = %li\n",
+	       work_on_cpu(0, test_work_on_cpu, run_init_process));
+	printk("work_on_cpu(1) = %li\n",
+	       work_on_cpu(1, test_work_on_cpu, run_init_process));
+	printk("work_on_cpu(2) = %li\n",
+	       work_on_cpu(2, test_work_on_cpu, run_init_process));
 
 	if (sys_open((const char __user *) "/dev/console", O_RDWR, 0) < 0)
 		printk(KERN_WARNING "Warning: unable to open an initial console.\n");
