[cross-posted to linux-kernel in a separate mail (oops)] I'm working with a (approximately) 2.4.17 kernel from the mips-linux tree (oss.sgi.com). I'd like to propose removing the "__init" designation from init_idle in kernel/sched.c, since this is called from rest_init via cpu_idle. Notice that rest_init isn't in an init section, and explicitly mentions that it's avoiding a race with free_initmem. In my kernel (an SMP kernel running on a system with only 1 available CPU), cpu_idle isn't getting called until after free_initmem(). My CPU is MIPS, but it looks like x86 could experience the same problem. Kip Index: kernel/sched.c =================================================================== RCS file: /projects/bbp/cvsroot/systemsw/linux/src/kernel/kernel/sched.c,v retrieving revision 1.10 diff -u -r1.10 sched.c --- kernel/sched.c 2002/01/15 04:13:43 1.10 +++ kernel/sched.c 2002/03/05 19:40:14 @@ -1304,7 +1304,7 @@ extern unsigned long wait_init_idle; -void __init init_idle(void) +void init_idle(void) { struct schedule_data * sched_data; sched_data = &aligned_data[smp_processor_id()].schedule_data;