Re: [PATCH 2/3] mm/page_alloc: convert zone_pcp_update() to use on_each_cpu()instead of stop_machine()

From: Cody P Schafer
Date: Mon Apr 08 2013 - 21:53:09 EST


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@xxxxxxxxxx>
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@xxxxxxxxxxxxxxx>
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).

--
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/