From: "Paul E. McKenney" <paulmck@linux.vnet.ibm.com>
To: Lan Tianyu <tianyu.lan@intel.com>
Cc: rjw@rjwysocki.net, viresh.kumar@linaro.org, dipankar@in.ibm.com,
fweisbec@gmail.com, youquan.song@intel.com, riel@redhat.com,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH 1/2] Tick: Introduce tick_nohz_check() to check nohz enable status
Date: Tue, 29 Oct 2013 02:51:35 -0700 [thread overview]
Message-ID: <20131029095135.GH4126@linux.vnet.ibm.com> (raw)
In-Reply-To: <1383036537-30362-1-git-send-email-tianyu.lan@intel.com>
On Tue, Oct 29, 2013 at 04:48:56PM +0800, Lan Tianyu wrote:
> In some cases, nohz enable status needs to be checked. E.G, in RCU and cpufreq
> ondemand governor. So add tick_nohz_check() to return tick_nohz_enabled value
> And use tick_nohz_check() instead of referencing tick_nohz_enabled in the rcutree_plugin.h.
>
> Signed-off-by: Lan Tianyu <tianyu.lan@intel.com>
NACK on the rcutree change unless you put the ACCESS_ONCE() in.
Or is there some reason that ACCESS_ONCE() is not needed? If so, what
is that reason?
Thanx, Paul
> ---
> include/linux/tick.h | 2 ++
> kernel/rcutree_plugin.h | 4 +---
> kernel/time/tick-sched.c | 8 +++++++-
> 3 files changed, 10 insertions(+), 4 deletions(-)
>
> diff --git a/include/linux/tick.h b/include/linux/tick.h
> index 5128d33..a9c5374 100644
> --- a/include/linux/tick.h
> +++ b/include/linux/tick.h
> @@ -136,6 +136,7 @@ static inline int tick_nohz_tick_stopped(void)
> extern void tick_nohz_idle_enter(void);
> extern void tick_nohz_idle_exit(void);
> extern void tick_nohz_irq_exit(void);
> +extern int tick_nohz_check(void);
> extern ktime_t tick_nohz_get_sleep_length(void);
> extern u64 get_cpu_idle_time_us(int cpu, u64 *last_update_time);
> extern u64 get_cpu_iowait_time_us(int cpu, u64 *last_update_time);
> @@ -155,6 +156,7 @@ static inline ktime_t tick_nohz_get_sleep_length(void)
>
> return len;
> }
> +static inline int tick_nohz_check(void) { return 0; }
> static inline u64 get_cpu_idle_time_us(int cpu, u64 *unused) { return -1; }
> static inline u64 get_cpu_iowait_time_us(int cpu, u64 *unused) { return -1; }
> # endif /* !CONFIG_NO_HZ_COMMON */
> diff --git a/kernel/rcutree_plugin.h b/kernel/rcutree_plugin.h
> index 130c97b..af167ec 100644
> --- a/kernel/rcutree_plugin.h
> +++ b/kernel/rcutree_plugin.h
> @@ -1627,8 +1627,6 @@ module_param(rcu_idle_gp_delay, int, 0644);
> static int rcu_idle_lazy_gp_delay = RCU_IDLE_LAZY_GP_DELAY;
> module_param(rcu_idle_lazy_gp_delay, int, 0644);
>
> -extern int tick_nohz_enabled;
> -
> /*
> * Try to advance callbacks for all flavors of RCU on the current CPU.
> * Afterwards, if there are any callbacks ready for immediate invocation,
> @@ -1718,7 +1716,7 @@ static void rcu_prepare_for_idle(int cpu)
> int tne;
>
> /* Handle nohz enablement switches conservatively. */
> - tne = ACCESS_ONCE(tick_nohz_enabled);
> + tne = tick_nohz_check();
> if (tne != rdtp->tick_nohz_enabled_snap) {
> if (rcu_cpu_has_callbacks(cpu, NULL))
> invoke_rcu_core(); /* force nohz to see update. */
> diff --git a/kernel/time/tick-sched.c b/kernel/time/tick-sched.c
> index 3612fc7..d381a22 100644
> --- a/kernel/time/tick-sched.c
> +++ b/kernel/time/tick-sched.c
> @@ -361,7 +361,13 @@ void __init tick_nohz_init(void)
> /*
> * NO HZ enabled ?
> */
> -int tick_nohz_enabled __read_mostly = 1;
> +static int tick_nohz_enabled __read_mostly = 1;
> +
> +int tick_nohz_check(void)
> +{
> + return tick_nohz_enabled;
> +}
> +EXPORT_SYMBOL_GPL(tick_nohz_check);
>
> /*
> * Enable / Disable tickless mode
> --
> 1.8.4.rc0.1.g8f6a3e5.dirty
>
next prev parent reply other threads:[~2013-10-29 9:51 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-10-29 8:48 [PATCH 1/2] Tick: Introduce tick_nohz_check() to check nohz enable status Lan Tianyu
2013-10-29 8:48 ` [PATCH 2/2] Cpufreq/gov: use tick_nohz_check() to check idle micro accouting support Lan Tianyu
2013-10-29 9:51 ` Paul E. McKenney [this message]
2013-10-29 10:29 ` [PATCH 1/2] Tick: Introduce tick_nohz_check() to check nohz enable status Lan Tianyu
2013-11-04 3:13 ` Lan Tianyu
2013-11-04 9:52 ` Paul E. McKenney
2013-11-05 0:42 ` Lan Tianyu
2013-11-15 8:35 ` [PATCH V2 " Lan Tianyu
2013-11-15 8:35 ` [PATCH V2 2/2] Cpufreq/gov: use tick_nohz_check() to check idle micro accouting support Lan Tianyu
2013-11-15 10:36 ` Viresh Kumar
2013-11-15 10:35 ` [PATCH V2 1/2] Tick: Introduce tick_nohz_check() to check nohz enable status Viresh Kumar
2013-11-15 11:06 ` Thomas Gleixner
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=20131029095135.GH4126@linux.vnet.ibm.com \
--to=paulmck@linux.vnet.ibm.com \
--cc=dipankar@in.ibm.com \
--cc=fweisbec@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=riel@redhat.com \
--cc=rjw@rjwysocki.net \
--cc=tianyu.lan@intel.com \
--cc=viresh.kumar@linaro.org \
--cc=youquan.song@intel.com \
/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.