From: Frederic Weisbecker <frederic@kernel.org>
To: "Rafael J. Wysocki" <rjw@rjwysocki.net>
Cc: Linux PM <linux-pm@vger.kernel.org>,
Peter Zijlstra <peterz@infradead.org>,
Frederic Weisbecker <fweisbec@gmail.com>,
Thomas Gleixner <tglx@linutronix.de>,
Paul McKenney <paulmck@linux.vnet.ibm.com>,
Thomas Ilsche <thomas.ilsche@tu-dresden.de>,
Doug Smythies <dsmythies@telus.net>,
Rik van Riel <riel@surriel.com>,
Aubrey Li <aubrey.li@linux.intel.com>,
Mike Galbraith <mgalbraith@suse.de>,
LKML <linux-kernel@vger.kernel.org>,
Len Brown <len.brown@intel.com>
Subject: Re: [PATCH v9 07/10] time: hrtimer: Introduce hrtimer_next_event_without()
Date: Sat, 7 Apr 2018 16:46:38 +0200 [thread overview]
Message-ID: <20180407144637.GC16600@lerouge> (raw)
In-Reply-To: <101528364.6nGUqP0EsC@aspire.rjw.lan>
On Wed, Apr 04, 2018 at 10:45:39AM +0200, Rafael J. Wysocki wrote:
> From: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
>
> The next set of changes will need to compute the time to the next
> hrtimer event over all hrtimers except for the scheduler tick one.
>
> To that end introduce a new helper function,
> hrtimer_next_event_without(), for computing the time until the next
> hrtimer event over all timers except for one and modify the underlying
> code in __hrtimer_next_event_base() to prepare it for being called by
> that new function.
>
> No intentional changes in functionality.
>
> Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
> ---
>
> v8 -> v9:
> * Make fewer changes to the existing code.
> * Add a new helper function for the handling of the use case at hand.
>
> ---
> include/linux/hrtimer.h | 1
> kernel/time/hrtimer.c | 55 ++++++++++++++++++++++++++++++++++++++++++++++--
> 2 files changed, 54 insertions(+), 2 deletions(-)
>
> Index: linux-pm/include/linux/hrtimer.h
> ===================================================================
> --- linux-pm.orig/include/linux/hrtimer.h
> +++ linux-pm/include/linux/hrtimer.h
> @@ -426,6 +426,7 @@ static inline ktime_t hrtimer_get_remain
> }
>
> extern u64 hrtimer_get_next_event(void);
> +extern u64 hrtimer_next_event_without(const struct hrtimer *exclude);
>
> extern bool hrtimer_active(const struct hrtimer *timer);
>
> Index: linux-pm/kernel/time/hrtimer.c
> ===================================================================
> --- linux-pm.orig/kernel/time/hrtimer.c
> +++ linux-pm/kernel/time/hrtimer.c
> @@ -490,6 +490,7 @@ __next_base(struct hrtimer_cpu_base *cpu
> while ((base = __next_base((cpu_base), &(active))))
>
> static ktime_t __hrtimer_next_event_base(struct hrtimer_cpu_base *cpu_base,
> + const struct hrtimer *exclude,
> unsigned int active,
> ktime_t expires_next)
> {
> @@ -502,9 +503,24 @@ static ktime_t __hrtimer_next_event_base
>
> next = timerqueue_getnext(&base->active);
> timer = container_of(next, struct hrtimer, node);
> + if (timer == exclude) {
> + /* Get to the next timer in the queue. */
> + struct rb_node *rbn = rb_next(&next->node);
> +
> + next = rb_entry_safe(rbn, struct timerqueue_node, node);
> + if (!next)
> + continue;
Minor cosmectic detail again, timerqueue_iterate_next() would do the job and
avoid browsing timerqueue details.
Reviewed-by: Frederic Weisbecker <frederic@kernel.org>
Thanks.
next prev parent reply other threads:[~2018-04-07 14:46 UTC|newest]
Thread overview: 40+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-04-04 8:32 [PATCH v9 00/10] sched/cpuidle: Idle loop rework Rafael J. Wysocki
2018-04-04 8:33 ` [PATCH v9 01/10] time: tick-sched: Reorganize idle tick management code Rafael J. Wysocki
2018-04-04 8:34 ` [PATCH v9 02/10] sched: idle: Do not stop the tick upfront in the idle loop Rafael J. Wysocki
2018-04-04 8:36 ` [PATCH v9 03/10] sched: idle: Do not stop the tick before cpuidle_idle_call() Rafael J. Wysocki
2018-04-04 8:38 ` [PATCH v9 04/10] jiffies: Introduce USER_TICK_USEC and redefine TICK_USEC Rafael J. Wysocki
2018-04-06 1:09 ` Frederic Weisbecker
2018-04-06 7:20 ` Rafael J. Wysocki
2018-04-04 8:39 ` [PATCH v9 05/10] cpuidle: Return nohz hint from cpuidle_select() Rafael J. Wysocki
2018-04-06 2:44 ` Frederic Weisbecker
2018-04-06 7:24 ` Rafael J. Wysocki
2018-04-06 14:19 ` Frederic Weisbecker
2018-04-06 7:58 ` Peter Zijlstra
2018-04-06 14:23 ` Frederic Weisbecker
2018-04-06 8:11 ` Rafael J. Wysocki
2018-04-06 12:56 ` Rafael J. Wysocki
2018-04-06 15:28 ` Frederic Weisbecker
2018-04-06 14:28 ` Frederic Weisbecker
2018-04-04 8:41 ` [PATCH v9 06/10] time: tick-sched: Split tick_nohz_stop_sched_tick() Rafael J. Wysocki
2018-04-07 2:36 ` Frederic Weisbecker
2018-04-07 16:36 ` Rafael J. Wysocki
2018-04-04 8:45 ` [PATCH v9 07/10] time: hrtimer: Introduce hrtimer_next_event_without() Rafael J. Wysocki
2018-04-07 14:46 ` Frederic Weisbecker [this message]
2018-04-08 8:20 ` Rafael J. Wysocki
2018-04-08 17:58 ` Frederic Weisbecker
2018-04-04 8:47 ` [PATCH v9 08/10] sched: idle: Select idle state before stopping the tick Rafael J. Wysocki
2018-04-09 2:41 ` Frederic Weisbecker
2018-04-04 8:49 ` [PATCH v9 09/10] cpuidle: menu: Refine idle state selection for running tick Rafael J. Wysocki
2018-04-05 12:27 ` Peter Zijlstra
2018-04-05 13:51 ` Rafael J. Wysocki
2018-04-05 12:32 ` Peter Zijlstra
2018-04-05 13:52 ` Rafael J. Wysocki
2018-04-04 8:50 ` [PATCH v9 10/10] cpuidle: menu: Avoid selecting shallow states with stopped tick Rafael J. Wysocki
2018-04-05 12:47 ` Peter Zijlstra
2018-04-05 13:49 ` Rafael J. Wysocki
2018-04-05 14:11 ` Peter Zijlstra
2018-04-05 14:13 ` Peter Zijlstra
2018-04-05 14:29 ` Rafael J. Wysocki
2018-04-08 16:32 ` [PATCH v9 00/10] sched/cpuidle: Idle loop rework Rafael J. Wysocki
2018-04-09 15:58 ` Thomas Ilsche
2018-04-10 7:03 ` Rafael J. Wysocki
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=20180407144637.GC16600@lerouge \
--to=frederic@kernel.org \
--cc=aubrey.li@linux.intel.com \
--cc=dsmythies@telus.net \
--cc=fweisbec@gmail.com \
--cc=len.brown@intel.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pm@vger.kernel.org \
--cc=mgalbraith@suse.de \
--cc=paulmck@linux.vnet.ibm.com \
--cc=peterz@infradead.org \
--cc=riel@surriel.com \
--cc=rjw@rjwysocki.net \
--cc=tglx@linutronix.de \
--cc=thomas.ilsche@tu-dresden.de \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).