* [CPU Hotplug PATCH] Restore Idle task's priority during CPU_DEAD notification [not found] ` <1085537205.2639.61.camel@bach> @ 2004-05-26 6:16 ` Srivatsa Vaddagiri 2004-05-26 11:27 ` Ingo Molnar 0 siblings, 1 reply; 3+ messages in thread From: Srivatsa Vaddagiri @ 2004-05-26 6:16 UTC (permalink / raw) To: torvalds; +Cc: Ashok Raj, nickpiggin, Ingo Molnar, Andrew Morton, linux-kernel Linus, Patch below (against 2.6.7-rc1) fixes a CPU Hotplug problem wherein idle task's "->prio" value is not restored to MAX_PRIO during CPU_DEAD handling. Without this patch, once a CPU is offlined and then later onlined, it becomes "more or less" useless (does not run any task other than its idle task!) Please apply. --- linux-2.6.7-rc1-vatsa/kernel/sched.c | 1 + 1 files changed, 1 insertion(+) diff -puN kernel/sched.c~restore_idle_prio kernel/sched.c --- linux-2.6.7-rc1/kernel/sched.c~restore_idle_prio 2004-05-25 17:04:19.000000000 +0530 +++ linux-2.6.7-rc1-vatsa/kernel/sched.c 2004-05-25 17:04:34.000000000 +0530 @@ -3569,6 +3569,7 @@ static int migration_call(struct notifie rq = task_rq_lock(rq->idle, &flags); deactivate_task(rq->idle, rq); __setscheduler(rq->idle, SCHED_NORMAL, MAX_PRIO); + rq->idle->prio = MAX_PRIO; task_rq_unlock(rq, &flags); BUG_ON(rq->nr_running != 0); _ On Wed, May 26, 2004 at 12:06:46PM +1000, Rusty Russell wrote: > On Wed, 2004-05-26 at 02:35, Raj, Ashok wrote: > > Thanks Vatsa... > > > > It seems to work right now.... > > It seems obviously correct and harmless to me. As it also fixes a > problem, I'd say this should go to Linus & Andrew ASAP. > > Thanks! > Rusty. > -- > Anyone who quotes me in their signature is an idiot -- Rusty Russell > -- Thanks and Regards, Srivatsa Vaddagiri, Linux Technology Center, IBM Software Labs, Bangalore, INDIA - 560017 ^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [CPU Hotplug PATCH] Restore Idle task's priority during CPU_DEAD notification 2004-05-26 6:16 ` [CPU Hotplug PATCH] Restore Idle task's priority during CPU_DEAD notification Srivatsa Vaddagiri @ 2004-05-26 11:27 ` Ingo Molnar 2004-05-26 11:51 ` Srivatsa Vaddagiri 0 siblings, 1 reply; 3+ messages in thread From: Ingo Molnar @ 2004-05-26 11:27 UTC (permalink / raw) To: Srivatsa Vaddagiri Cc: torvalds, Ashok Raj, nickpiggin, Andrew Morton, linux-kernel * Srivatsa Vaddagiri <vatsa@in.ibm.com> wrote: > @@ -3569,6 +3569,7 @@ static int migration_call(struct notifie > rq = task_rq_lock(rq->idle, &flags); > deactivate_task(rq->idle, rq); > __setscheduler(rq->idle, SCHED_NORMAL, MAX_PRIO); > + rq->idle->prio = MAX_PRIO; > task_rq_unlock(rq, &flags); > BUG_ON(rq->nr_running != 0); Looks good. A small nit: while your patch creates a perfectly correct idle thread too, i'd prefer the modified variant below. The __setscheduler() call is (technically) incorrect because in the SCHED_NORMAL case the prio should be zero. So it's a bit cleaner to set up the static priority to MAX_PRIO and then revert the policy to SCHED_NORMAL via __setscheduler(). Ok? Ingo From: Srivatsa Vaddagiri <vatsa@in.ibm.com> Signed-off-by: Ingo Molnar <mingo@elte.hu> --- linux/kernel/sched.c.orig +++ linux/kernel/sched.c @@ -3566,7 +3566,8 @@ static int migration_call(struct notifie /* Idle task back to normal (off runqueue, low prio) */ rq = task_rq_lock(rq->idle, &flags); deactivate_task(rq->idle, rq); - __setscheduler(rq->idle, SCHED_NORMAL, MAX_PRIO); + rq->idle->static_prio = MAX_PRIO; + __setscheduler(rq->idle, SCHED_NORMAL, 0); task_rq_unlock(rq, &flags); BUG_ON(rq->nr_running != 0); ^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [CPU Hotplug PATCH] Restore Idle task's priority during CPU_DEAD notification 2004-05-26 11:27 ` Ingo Molnar @ 2004-05-26 11:51 ` Srivatsa Vaddagiri 0 siblings, 0 replies; 3+ messages in thread From: Srivatsa Vaddagiri @ 2004-05-26 11:51 UTC (permalink / raw) To: Ingo Molnar; +Cc: torvalds, Ashok Raj, nickpiggin, Andrew Morton, linux-kernel On Wed, May 26, 2004 at 01:27:26PM +0200, Ingo Molnar wrote: > Looks good. A small nit: while your patch creates a perfectly correct > idle thread too, i'd prefer the modified variant below. The > __setscheduler() call is (technically) incorrect because in the > SCHED_NORMAL case the prio should be zero. So it's a bit cleaner to set > up the static priority to MAX_PRIO and then revert the policy to > SCHED_NORMAL via __setscheduler(). Ok? Fine. Since we will have to setup the static priority everytime CPU_DEAD is invoked, would it make sense if we setup this static priority (once and for all) in init_idle instead? Untested patch below: --- linux-2.6.7-rc1-vatsa/kernel/sched.c | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) diff -puN kernel/sched.c~restore_idle_prio kernel/sched.c --- linux-2.6.7-rc1/kernel/sched.c~restore_idle_prio 2004-05-25 17:04:19.000000000 +0530 +++ linux-2.6.7-rc1-vatsa/kernel/sched.c 2004-05-26 17:17:44.000000000 +0530 @@ -3246,7 +3246,7 @@ void __devinit init_idle(task_t *idle, i idle_rq->curr = idle_rq->idle = idle; deactivate_task(idle, rq); idle->array = NULL; - idle->prio = MAX_PRIO; + idle->prio = idle->static_prio = MAX_PRIO; idle->state = TASK_RUNNING; set_task_cpu(idle, cpu); double_rq_unlock(idle_rq, rq); @@ -3568,7 +3568,7 @@ static int migration_call(struct notifie /* Idle task back to normal (off runqueue, low prio) */ rq = task_rq_lock(rq->idle, &flags); deactivate_task(rq->idle, rq); - __setscheduler(rq->idle, SCHED_NORMAL, MAX_PRIO); + __setscheduler(rq->idle, SCHED_NORMAL, 0); task_rq_unlock(rq, &flags); BUG_ON(rq->nr_running != 0); _ -- Thanks and Regards, Srivatsa Vaddagiri, Linux Technology Center, IBM Software Labs, Bangalore, INDIA - 560017 ^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2004-05-26 11:50 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <A28EFEDC5416054BA1026D892753E9AF059A50EC@orsmsx404.amr.corp.intel.com>
[not found] ` <1085537205.2639.61.camel@bach>
2004-05-26 6:16 ` [CPU Hotplug PATCH] Restore Idle task's priority during CPU_DEAD notification Srivatsa Vaddagiri
2004-05-26 11:27 ` Ingo Molnar
2004-05-26 11:51 ` Srivatsa Vaddagiri
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.