Re: WARN_ON noise in 2.5.63's kernel/sched.c:context_switch

William Lee Irwin III (wli@holomorphy.com)
Tue, 4 Mar 2003 23:24:39 -0800


On Wed, Mar 05, 2003 at 04:13:48PM +0900, Miles Bader wrote:
> Ok, I think I found the reason; sched.c cleans up some stuff in
> schedule_tail, and in this code (arch/v850/kernel/entry.S):
> C_ENTRY(ret_from_fork):
> #if defined(CONFIG_SMP) || defined(CONFIG_PREEMPT)
> mov r10, r6 // switch_thread returns the prev task.
> jarl CSYM(schedule_tail), lp // ...which is schedule_tail's arg
> #endif
> mov r0, r10 // Child's fork call should return 0.
> br ret_from_trap // Do normal trap return.
> ... it only calls that if CONFIG_PREEMPT is turned on. If I remove the
> #ifdef, then I get no warnings.
> I take it that the call to schedule_tail should now be unconditional?
> [some other archs have the same #ifdef]

Yeah, this is the root problem. You have to go through schedule_tail()
to clean up the mm's etc.

-- wli
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/