Messages in this thread | | | Date | Mon, 08 Apr 2013 18:52:48 -0700 | From | Cody P Schafer <> | Subject | Re: [PATCH 2/3] mm/page_alloc: convert zone_pcp_update() to use on_each_cpu() instead of stop_machine() |
| |
On 04/08/2013 03:18 PM, KOSAKI Motohiro wrote: > (4/8/13 3:49 PM), Cody P Schafer wrote:> >> If this turns out to be an issue, schedule_on_each_cpu() could be an >> alternative. > > no way. schedule_on_each_cpu() is more problematic and it should be removed > in the future. > schedule_on_each_cpu() can only be used when caller task don't have any lock. > otherwise it may make deadlock.
I wasn't aware of that. Just to be clear, the deadlock you're referring to isn't the same one refered to in
commit b71ab8c2025caef8db719aa41af0ed735dc543cd Author: Tejun Heo <tj@kernel.org> Date: Tue Jun 29 10:07:14 2010 +0200 workqueue: increase max_active of keventd and kill current_is_keventd()
and
commit 65a64464349883891e21e74af16c05d6e1eeb4e9 Author: Andi Kleen <ak@linux.intel.com> Date: Wed Oct 14 06:22:47 2009 +0200 HWPOISON: Allow schedule_on_each_cpu() from keventd
If you're referencing some other deadlock, could you please provide a link to the relevant discussion? (I'd really like to add a note to schedule_on_each_cpu()'s doc comment about it so others can avoid that pitfall).
| |