From: Srivatsa Vaddagiri <vatsa@in.ibm.com>
To: Oleg Nesterov <oleg@tv-sign.ru>
Cc: Gautham R Shenoy <ego@in.ibm.com>,
akpm@linux-foundation.org, paulmck@us.ibm.com,
torvalds@linux-foundation.org, linux-kernel@vger.kernel.org,
"Rafael J. Wysocki" <rjw@sisk.pl>,
mingo@elte.hu, dipankar@in.ibm.com, dino@in.ibm.com,
masami.hiramatsu.pt@hitachi.com
Subject: Re: [PATCH 7/8] Clean up workqueue.c with respect to the freezer based cpu-hotplug
Date: Tue, 3 Apr 2007 22:48:20 +0530 [thread overview]
Message-ID: <20070403171820.GA8646@in.ibm.com> (raw)
In-Reply-To: <20070403150336.GA850@tv-sign.ru>
On Tue, Apr 03, 2007 at 07:03:36PM +0400, Oleg Nesterov wrote:
> I think it would be nice to do. I believe we can cleanup ksoftirqd()
> and migration_thread() as well (kill wait_to_die: loop). Probably it
I doubt whether we can kill it in migration_thread, since that is
another thread which is unfrozen for hotplug (stop_machine relies on its
services while rest of the world is frozen).
> is better to introduce a new helper for that, kthread_thaw_stop() or
> something.
Will think of that.
> > Why?
>
> What if is_single_threaded(wq) == true? In that case we should call
> flush_cpu_workqueue(cpu) only if cpu == singlethread_cpu, otherwise
> this is unneeded and wrong, because per_cpu_ptr(wq->cpu_wq, cpu) was
> not initialized.
Ah yes ..
> > kthread_stop(p)
> > {
> > int old_exempt_flags;
> >
> > task_lock(p);
> > old_exempt_flags = p->flags;
> > p->flags |= PFE_ALL; /* Exempt 'p' from being frozen? */
>
> I agree, we should mark this thread as non-freezable, but we can't modify
> p->flags, this is racy. "current" owns its ->flags and it is not atomic.
> Note that thaw_process() checks frozen(p) when it clears PF_FROZEN.
I suspected that we cannot modify p->flags just like that. How abt
moving freezer exemption bits to a separate field, which is protected by
task_lock?
> Actually, we should do this before destroy_workqueue() calls flush_workqueue().
> Otherwise flush_cpu_workqueue() can hang forever in a similar manner.
Yep. I guess these are a class of freezer deadlocks very similar to vfork
parent waiting on child case. I get a feeling these should become common
outside of kthread too (A waits on B for something, B gets frozen, which
means A won't freeze causing freezer to fail). Can freezer detect this
dependency somehow and thaw B automatically? Probably not that easy ..
> Needs more thinking, I guess.
[snip]
> No, no, workqueue_mutex can't help. Just for example: CPU_UP_PREPARE completes
> and drops workqueue_mutex. __create_workqueue(wq) doesn't see the new cpu, it
> is not on cpu_online_map, so it doesn't create cwq->thread. CPU_ONLINE oopses.
Ok ..sure.
--
Regards,
vatsa
next prev parent reply other threads:[~2007-04-03 17:11 UTC|newest]
Thread overview: 70+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-04-02 5:34 [RFC] Cpu-hotplug: Using the Process Freezer (try2) Gautham R Shenoy
2007-04-02 5:37 ` [PATCH 1/8] Enhance process freezer interface for usage beyond software suspend Gautham R Shenoy
2007-04-02 13:56 ` Pavel Machek
2007-04-02 20:48 ` Rafael J. Wysocki
2007-04-02 20:51 ` Pavel Machek
2007-04-06 14:34 ` Rafael J. Wysocki
2007-04-06 22:20 ` Nigel Cunningham
2007-04-07 9:33 ` Rafael J. Wysocki
2007-04-07 9:47 ` Nigel Cunningham
2007-04-09 3:04 ` Gautham R Shenoy
2007-04-03 7:59 ` Gautham R Shenoy
2007-04-05 9:46 ` Oleg Nesterov
2007-04-05 10:59 ` Gautham R Shenoy
2007-04-05 11:30 ` Oleg Nesterov
2007-04-02 5:37 ` [PATCH 2/8] Make process freezer reentrant Gautham R Shenoy
2007-04-05 9:53 ` Oleg Nesterov
2007-04-05 10:19 ` Gautham R Shenoy
2007-04-02 5:38 ` [PATCH 3/8] Use process freezer for cpu-hotplug Gautham R Shenoy
2007-04-05 10:53 ` Oleg Nesterov
2007-04-05 12:14 ` Gautham R Shenoy
2007-04-05 13:34 ` Oleg Nesterov
2007-04-06 17:27 ` Nathan Lynch
2007-04-06 17:34 ` Ingo Molnar
2007-04-06 17:47 ` Nathan Lynch
2007-04-06 22:22 ` Nigel Cunningham
2007-04-14 18:48 ` Pavel Machek
2007-04-02 5:39 ` [PATCH 4/8] Rip out lock_cpu_hotplug() Gautham R Shenoy
2007-04-02 5:40 ` [PATCH 5/8] __cpu_up: use singlethreaded workqueue Gautham R Shenoy
2007-04-05 12:08 ` Oleg Nesterov
2007-04-02 5:41 ` [PATCH 6/8] Make non-singlethreaded workqueues freezeable by default Gautham R Shenoy
2007-04-05 11:57 ` Oleg Nesterov
2007-04-05 20:06 ` Andrew Morton
2007-04-02 5:42 ` [PATCH 7/8] Clean up workqueue.c with respect to the freezer based cpu-hotplug Gautham R Shenoy
2007-04-03 11:47 ` Oleg Nesterov
2007-04-03 13:59 ` Srivatsa Vaddagiri
2007-04-03 15:03 ` Oleg Nesterov
2007-04-03 17:18 ` Srivatsa Vaddagiri [this message]
2007-04-04 15:28 ` Oleg Nesterov
2007-04-04 17:49 ` Srivatsa Vaddagiri
2007-04-05 12:20 ` Oleg Nesterov
2007-04-12 2:22 ` Srivatsa Vaddagiri
2007-04-12 10:01 ` Gautham R Shenoy
2007-04-12 16:00 ` Oleg Nesterov
2007-04-13 9:46 ` Gautham R Shenoy
2007-04-02 5:42 ` [PATCH 8/8] Make kernel threads freezeable for cpu-hotplug Gautham R Shenoy
2007-04-02 6:16 ` [RFC] Cpu-hotplug: Using the Process Freezer (try2) Ingo Molnar
2007-04-02 9:28 ` Srivatsa Vaddagiri
2007-04-02 11:18 ` Ingo Molnar
2007-04-02 12:42 ` Srivatsa Vaddagiri
2007-04-02 14:16 ` Gautham R Shenoy
2007-04-02 18:56 ` Ingo Molnar
2007-04-03 12:56 ` Srivatsa Vaddagiri
2007-04-03 14:15 ` Gautham R Shenoy
2007-04-03 19:25 ` Rafael J. Wysocki
2007-04-04 3:15 ` Srivatsa Vaddagiri
2007-04-04 10:04 ` Ingo Molnar
2007-04-04 10:41 ` Gautham R Shenoy
2007-04-04 11:49 ` Ingo Molnar
2007-04-04 12:24 ` Gautham R Shenoy
2007-04-02 11:19 ` Gautham R Shenoy
2007-04-02 11:27 ` Ingo Molnar
2007-04-02 22:12 ` Rafael J. Wysocki
2007-04-02 13:22 ` Pavel Machek
2007-04-03 12:01 ` Gautham R Shenoy
2007-04-03 19:34 ` Rafael J. Wysocki
2007-04-03 20:24 ` Andrew Morton
2007-04-04 10:06 ` utrace merge Ingo Molnar
2007-04-04 10:36 ` Christoph Hellwig
2007-04-04 18:41 ` Andrew Morton
2007-04-03 14:01 ` [RFC] Cpu-hotplug: Using the Process Freezer (try2) Gautham R Shenoy
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20070403171820.GA8646@in.ibm.com \
--to=vatsa@in.ibm.com \
--cc=akpm@linux-foundation.org \
--cc=dino@in.ibm.com \
--cc=dipankar@in.ibm.com \
--cc=ego@in.ibm.com \
--cc=linux-kernel@vger.kernel.org \
--cc=masami.hiramatsu.pt@hitachi.com \
--cc=mingo@elte.hu \
--cc=oleg@tv-sign.ru \
--cc=paulmck@us.ibm.com \
--cc=rjw@sisk.pl \
--cc=torvalds@linux-foundation.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.