From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754508Ab3BRPkn (ORCPT ); Mon, 18 Feb 2013 10:40:43 -0500 Received: from mail-la0-f43.google.com ([209.85.215.43]:43342 "EHLO mail-la0-f43.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754212Ab3BRPkm (ORCPT ); Mon, 18 Feb 2013 10:40:42 -0500 MIME-Version: 1.0 In-Reply-To: References: <1359455940-1710-1-git-send-email-vincent.guittot@linaro.org> <1359455940-1710-2-git-send-email-vincent.guittot@linaro.org> Date: Mon, 18 Feb 2013 16:40:40 +0100 Message-ID: Subject: Re: [PATCH v2 1/2] sched: fix init NOHZ_IDLE flag From: Frederic Weisbecker To: Vincent Guittot Cc: linux-kernel@vger.kernel.org, linaro-dev@lists.linaro.org, peterz@infradead.org, mingo@kernel.org, Mike Galbraith , Steven Rostedt Content-Type: text/plain; charset=ISO-8859-1 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 2013/2/18 Vincent Guittot : > On 18 February 2013 15:38, Frederic Weisbecker wrote: >> I pasted the original at: http://pastebin.com/DMm5U8J8 > > We can clear the idle flag only in the nohz_kick_needed which will not > be called if the sched_domain is NULL so the sequence will be > > = CPU 0 = = CPU 1= > > detach_and_destroy_domain { > rcu_assign_pointer(cpu1_dom, NULL); > } > > dom = new_domain(...) { > nr_cpus_busy = 0; > set_idle(CPU 1); > } > dom = > rcu_dereference(cpu1_dom) > //dom == NULL, return > > rcu_assign_pointer(cpu1_dom, dom); > > dom = > rcu_dereference(cpu1_dom) > //dom != NULL, > nohz_kick_needed { > > set_idle(CPU 1) > dom > = rcu_dereference(cpu1_dom) > > //dec nr_cpus_busy, > } > > Vincent Ok but CPU 0 can assign NULL to the domain of cpu1 while CPU 1 is already in the middle of nohz_kick_needed().