I suppose everybody running 2.6 mips kernel see this error message: > Can't analyze prologue code at XXXXXXXX XXXXXXXX is an address of schedule_timeout function. This is because schedule_timeout was moved to timer.c from sched.c and therefore compiled without -fno-omit-frame-pointer. If the error is detected, get_wchan does not work so the "ps lw" command can not print WCHAN field correctly. How about this patch? --- arch/mips/kernel/process.c.org Thu Nov 20 16:34:45 2003 +++ arch/mips/kernel/process.c Thu Nov 20 16:38:39 2003 @@ -251,12 +251,20 @@ static int __init frame_info_init(void) { - mips_frame_info_initialized = - !get_frame_info(&schedule_frame, schedule) && - !get_frame_info(&schedule_timeout_frame, schedule_timeout) && - !get_frame_info(&sleep_on_frame, sleep_on) && - !get_frame_info(&sleep_on_timeout_frame, sleep_on_timeout) && - !get_frame_info(&wait_for_completion_frame, wait_for_completion); + /* in 2.6 kernel, schedule_timout is out of [first_sched,last_sched] */ + if ((unsigned long)schedule_timeout < first_sched || + (unsigned long)schedule_timeout >= last_sched) + mips_frame_info_initialized = + !get_frame_info(&schedule_frame, schedule) && + !get_frame_info(&sleep_on_frame, sleep_on) && + !get_frame_info(&wait_for_completion_frame, wait_for_completion); + else + mips_frame_info_initialized = + !get_frame_info(&schedule_frame, schedule) && + !get_frame_info(&schedule_timeout_frame, schedule_timeout) && + !get_frame_info(&sleep_on_frame, sleep_on) && + !get_frame_info(&sleep_on_timeout_frame, sleep_on_timeout) && + !get_frame_info(&wait_for_completion_frame, wait_for_completion); return 0; } @@ -323,6 +331,9 @@ goto out; schedule_timeout_caller: + if ((unsigned long)schedule_timeout < first_sched || + (unsigned long)schedule_timeout >= last_sched) + return pc; /* failsafe */ /* * The schedule_timeout frame */ --- Atsushi Nemoto