linux-pm.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
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: Sun, 8 Apr 2018 19:58:48 +0200	[thread overview]
Message-ID: <20180408175847.GA21904@lerouge> (raw)
In-Reply-To: <3441609.rVjWXosy3s@aspire.rjw.lan>

On Sun, Apr 08, 2018 at 10:20:30AM +0200, Rafael J. Wysocki wrote:
> On Saturday, April 7, 2018 4:46:38 PM CEST Frederic Weisbecker wrote:
> > 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.
> 
> And below is a patch to make this change on top of the original.
> 
> ---
> From: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
> Subject: [PATCH] time: hrtimer: Use timerqueue_iterate_next() to get to the next timer
> 
> Use timerqueue_iterate_next() to get to the next timer in
> __hrtimer_next_event_base() without browsing the timerqueue
> details diredctly.
> 
> No intentional changes in functionality.
> 
> Suggested-by: Frederic Weisbecker <frederic@kernel.org>
> Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>

Thanks!

  reply	other threads:[~2018-04-08 17:58 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
2018-04-08  8:20     ` Rafael J. Wysocki
2018-04-08 17:58       ` Frederic Weisbecker [this message]
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=20180408175847.GA21904@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).