Received: by 2002:a25:8b12:0:0:0:0:0 with SMTP id i18csp2935541ybl; Mon, 19 Aug 2019 09:33:52 -0700 (PDT) X-Google-Smtp-Source: APXvYqxc/nXY9M4VDDoDAjJ8AM1BX+W/Lwzi+WiipKizy/TFdFnyJQmDp9/o3xm8izIo3R5clbG4 X-Received: by 2002:a17:902:24c:: with SMTP id 70mr15005529plc.331.1566232432314; Mon, 19 Aug 2019 09:33:52 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1566232432; cv=none; d=google.com; s=arc-20160816; b=N3QLNo9C4n+lMzLT5vwb5vGbGUNhx0WU0u5H41iMWPXOqvJ3kPMnyvz8fifE+v+ULM RfbvttKUMUEaTBwgTHdwVNubg/Pjse7ZnY5ce+E9b3zoApfOrGW9QiSUXJVKgKjzvv86 0FhutqZUW1Wlv+zqUHxmcMF+eJmsWpxyqAa6wTNDPnkXQieedTSpO+BQe723VDssQCPM V16qnYZMwUT1xCySX8P+h1bXxDn9cd6gil5Xswxsh/7jVHIsu4QFOQ4JTPLoUDJaSsoF paSSsNZEsAt/6Q5FFa/58pRmYzvH7MPJDGXD3spHNqD9HD+7RFtKSLaEzfBpZOZIYRsb kkXw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:user-agent:in-reply-to :content-disposition:mime-version:references:message-id:subject:cc :to:from:date:dkim-signature; bh=HtSH5r0t/IeciLYrCpv7nUPXuomwnNyNjZ3UMnGbdsg=; b=S6QOc1iT2NcB+sT9EPfvkh2nPMHty02rguxiv3nYurzN0N9BozhhpZkhbF3lvtuFJG HuX6FfKwjLBxepLCL6FkYfVHRk53e7rFqKzursXsLOQte8d+X38fq6PUU4bbo3eQrWwA SsfR70AXqPljAlfv5v0Q5Nixyxv5g8JyRZyv/2/U+qfK4siFKhKTdf+WLJ0IeLCfxdtb OYG6sjpDiT62KGe7i3Yor/2AR7VqB9Xb5ik0GpQlBzAsbjbf/D3irVRa96941UwbL06o +j8feWFYRFZKu0+65Yc4TNw4QG/G+kS76F9tXplikRUsnlLwqCNl6CNkXdF5ZyKQR2xe sWmg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=F6QD4SSA; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id l9si6412461pjl.32.2019.08.19.09.33.37; Mon, 19 Aug 2019 09:33:52 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=F6QD4SSA; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728149AbfHSQcc (ORCPT + 99 others); Mon, 19 Aug 2019 12:32:32 -0400 Received: from mail.kernel.org ([198.145.29.99]:42852 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727268AbfHSQcb (ORCPT ); Mon, 19 Aug 2019 12:32:31 -0400 Received: from localhost (lfbn-ncy-1-174-150.w83-194.abo.wanadoo.fr [83.194.254.150]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 82CA522CEB; Mon, 19 Aug 2019 16:32:29 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1566232350; bh=mxD0wC7LhsikH/97K6xxAQa61OvUyEe+giJRqBAhtXA=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=F6QD4SSAe2j4I/49H+9zpHfa9rJlLyCjnGvO0Xc093z9I1YD9OxMlqeSUxV4zi2CP hWBcdQVXbq6vnS6tKU3qB0AWlBZxtUinKUB/MD1KShSqNIv94FGqoOPDoTabN2bLG7 t1suHwS+qzyr1DvSIlctMO0bR0Q7Jo/7v9QXPtTM= Date: Mon, 19 Aug 2019 18:32:27 +0200 From: Frederic Weisbecker To: "Paul E. McKenney" Cc: "Joel Fernandes (Google)" , linux-kernel@vger.kernel.org, rcu@vger.kernel.org Subject: Re: [PATCH -rcu dev 1/3] rcu/tree: tick_dep_set/clear_cpu should accept bits instead of masks Message-ID: <20190819163226.GE27088@lenoir> References: <20190816025311.241257-1-joel@joelfernandes.org> <20190819123837.GC27088@lenoir> <20190819144632.GW28441@linux.ibm.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20190819144632.GW28441@linux.ibm.com> User-Agent: Mutt/1.9.4 (2018-02-28) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Mon, Aug 19, 2019 at 07:46:32AM -0700, Paul E. McKenney wrote: > On Mon, Aug 19, 2019 at 02:38:38PM +0200, Frederic Weisbecker wrote: > > On Thu, Aug 15, 2019 at 10:53:09PM -0400, Joel Fernandes (Google) wrote: > > > This commit fixes the issue. > > > > > > Signed-off-by: Joel Fernandes (Google) > > > --- > > > kernel/rcu/tree.c | 29 +++++++++++++++++------------ > > > 1 file changed, 17 insertions(+), 12 deletions(-) > > > > > > diff --git a/kernel/rcu/tree.c b/kernel/rcu/tree.c > > > index 0512de9ead20..322b1b57967c 100644 > > > --- a/kernel/rcu/tree.c > > > +++ b/kernel/rcu/tree.c > > > @@ -829,7 +829,7 @@ static __always_inline void rcu_nmi_enter_common(bool irq) > > > !rdp->dynticks_nmi_nesting && > > > rdp->rcu_urgent_qs && !rdp->rcu_forced_tick) { > > > rdp->rcu_forced_tick = true; > > > - tick_dep_set_cpu(rdp->cpu, TICK_DEP_MASK_RCU); > > > + tick_dep_set_cpu(rdp->cpu, TICK_DEP_BIT_RCU); > > > > Did I suggest you to use the _MASK_ value? That was a bit mean. > > Sorry for all that lost debugging time :-( > > At some point, I should have looked at the other calls to these > functions. :-/ > > But would the following patch make sense? This would not help for (say) > use of TICK_MASK_BIT_POSIX_TIMER instead of TICK_DEP_BIT_POSIX_TIMER, but > would help for any new values that might be added later on. And currently > for TICK_DEP_MASK_CLOCK_UNSTABLE and TICK_DEP_MASK_RCU. I'd rather make the TICK_DEP_MASK_* values private to kernel/time/tick-sched.c but that means I need to re-arrange a bit include/trace/events/timer.h I'm looking into it. Meanwhile, your below patch that checks for the max value is still valuable. Thanks. > > Thanx, Paul > > ------------------------------------------------------------------------ > > diff --git a/include/linux/tick.h b/include/linux/tick.h > index 39eb44564058..4ed788ce5762 100644 > --- a/include/linux/tick.h > +++ b/include/linux/tick.h > @@ -111,6 +111,7 @@ enum tick_dep_bits { > TICK_DEP_BIT_CLOCK_UNSTABLE = 3, > TICK_DEP_BIT_RCU = 4 > }; > +#define TICK_DEP_BIT_MAX TICK_DEP_BIT_RCU > > #define TICK_DEP_MASK_NONE 0 > #define TICK_DEP_MASK_POSIX_TIMER (1 << TICK_DEP_BIT_POSIX_TIMER) > @@ -215,24 +216,28 @@ extern void tick_nohz_dep_clear_signal(struct signal_struct *signal, > */ > static inline void tick_dep_set(enum tick_dep_bits bit) > { > + WARN_ON_ONCE(bit > TICK_DEP_BIT_MAX); > if (tick_nohz_full_enabled()) > tick_nohz_dep_set(bit); > } > > static inline void tick_dep_clear(enum tick_dep_bits bit) > { > + WARN_ON_ONCE(bit > TICK_DEP_BIT_MAX); > if (tick_nohz_full_enabled()) > tick_nohz_dep_clear(bit); > } > > static inline void tick_dep_set_cpu(int cpu, enum tick_dep_bits bit) > { > + WARN_ON_ONCE(bit > TICK_DEP_BIT_MAX); > if (tick_nohz_full_cpu(cpu)) > tick_nohz_dep_set_cpu(cpu, bit); > } > > static inline void tick_dep_clear_cpu(int cpu, enum tick_dep_bits bit) > { > + WARN_ON_ONCE(bit > TICK_DEP_BIT_MAX); > if (tick_nohz_full_cpu(cpu)) > tick_nohz_dep_clear_cpu(cpu, bit); > } > @@ -240,24 +245,28 @@ static inline void tick_dep_clear_cpu(int cpu, enum tick_dep_bits bit) > static inline void tick_dep_set_task(struct task_struct *tsk, > enum tick_dep_bits bit) > { > + WARN_ON_ONCE(bit > TICK_DEP_BIT_MAX); > if (tick_nohz_full_enabled()) > tick_nohz_dep_set_task(tsk, bit); > } > static inline void tick_dep_clear_task(struct task_struct *tsk, > enum tick_dep_bits bit) > { > + WARN_ON_ONCE(bit > TICK_DEP_BIT_MAX); > if (tick_nohz_full_enabled()) > tick_nohz_dep_clear_task(tsk, bit); > } > static inline void tick_dep_set_signal(struct signal_struct *signal, > enum tick_dep_bits bit) > { > + WARN_ON_ONCE(bit > TICK_DEP_BIT_MAX); > if (tick_nohz_full_enabled()) > tick_nohz_dep_set_signal(signal, bit); > } > static inline void tick_dep_clear_signal(struct signal_struct *signal, > enum tick_dep_bits bit) > { > + WARN_ON_ONCE(bit > TICK_DEP_BIT_MAX); > if (tick_nohz_full_enabled()) > tick_nohz_dep_clear_signal(signal, bit); > }