Re: Problem with CFS V20 and Suspend2/tuxonice

From: Rafael J. Wysocki
Date: Sat Aug 25 2007 - 15:40:19 EST


On Saturday, 25 August 2007 21:01, Ingo Molnar wrote:
>
> * David Rodriguez <livuxman@xxxxxxxxx> wrote:
>
> > I'm using 2.6.22.5 with cfs v20.3 and suspend2 2.2.10.2. With that
> > combination, suspend is not working anymore (with cfs v19 was
> > working). Stops on suspend in "Suspending tasks" Looking at cfs patch,
> > I managed to change the migration_thread, adding again the
> > try_to_freeze() removed in last patch and now the suspend finished,
> > but resume not work. Of course I don't know why that was removed, and
> > rewriting it is not a solution, but I want to report it.
>
> could you try the patch below, does it fix this problem?
>
> Ingo
>
> Index: linux-cfs-2.6.22.5.q/kernel/sched.c
> ===================================================================
> --- linux-cfs-2.6.22.5.q.orig/kernel/sched.c
> +++ linux-cfs-2.6.22.5.q/kernel/sched.c
> @@ -5043,6 +5043,8 @@ static int migration_thread(void *data)
> struct migration_req *req;
> struct list_head *head;
>
> + try_to_freeze();
> +
> spin_lock_irq(&rq->lock);
>
> if (cpu_is_offline(cpu)) {
> @@ -5399,6 +5401,7 @@ migration_call(struct notifier_block *nf
> p = kthread_create(migration_thread, hcpu, "migration/%d", cpu);
> if (IS_ERR(p))
> return NOTIFY_BAD;
> + p->flags |= PF_NOFREEZE;

Yeah.

In 2.6.23-rc all kernel threads are PF_NOFREEZE by default.

> kthread_bind(p, cpu);
> /* Must be high prio: stop_machine expects to yield to it. */
> rq = task_rq_lock(p, &flags);
> -

Greetings,
Rafael


--
"Premature optimization is the root of all evil." - Donald Knuth
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/