From: Con Kolivas Reverting the !in_interrupt nonsense should be enough to avoid the dreaded screensaver at boottime I hope. Does this fix it? Starvation will be approached differently. Change: Make preemption occur as vanilla again except for now not preempting same priority tasks with less timeslice. kernel/sched.c | 5 ++--- 1 files changed, 2 insertions(+), 3 deletions(-) diff -puN kernel/sched.c~o16.3int kernel/sched.c --- 25/kernel/sched.c~o16.3int 2003-08-23 13:57:46.000000000 -0700 +++ 25-akpm/kernel/sched.c 2003-08-23 13:57:46.000000000 -0700 @@ -609,9 +609,8 @@ repeat_lock_task: __activate_task(p, rq); else { activate_task(p, rq); - if (TASK_PREEMPTS_CURR(p, rq) && - (in_interrupt() || !p->mm)) - resched_task(rq->curr); + if (TASK_PREEMPTS_CURR(p, rq)) + resched_task(rq->curr); } success = 1; } _