lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Message-ID: <CAPDyKFrQ4eUcuNPp6nUak_LvEP1=FNZ4a8SCd-XwLkPuXv9oFQ@mail.gmail.com> Date: Sun, 15 Apr 2018 14:02:39 +0200 From: Ulf Hansson <ulf.hansson@...aro.org> To: "Rafael J. Wysocki" <rafael@...nel.org> Cc: "Rafael J . Wysocki" <rjw@...ysocki.net>, Sudeep Holla <sudeep.holla@....com>, Lorenzo Pieralisi <Lorenzo.Pieralisi@....com>, Mark Rutland <mark.rutland@....com>, Linux PM <linux-pm@...r.kernel.org>, Kevin Hilman <khilman@...nel.org>, Lina Iyer <ilina@...eaurora.org>, Lina Iyer <lina.iyer@...aro.org>, Rob Herring <robh+dt@...nel.org>, Daniel Lezcano <daniel.lezcano@...aro.org>, Thomas Gleixner <tglx@...utronix.de>, Vincent Guittot <vincent.guittot@...aro.org>, Stephen Boyd <sboyd@...nel.org>, Juri Lelli <juri.lelli@....com>, Geert Uytterhoeven <geert+renesas@...der.be>, Linux ARM <linux-arm-kernel@...ts.infradead.org>, linux-arm-msm <linux-arm-msm@...r.kernel.org>, Linux Kernel Mailing List <linux-kernel@...r.kernel.org>, Frederic Weisbecker <fweisbec@...il.com>, Ingo Molnar <mingo@...nel.org> Subject: Re: [PATCH v7 06/26] timer: Export next wakeup time of a CPU On 13 April 2018 at 10:47, Rafael J. Wysocki <rafael@...nel.org> wrote: > On Thu, Apr 12, 2018 at 1:14 PM, Ulf Hansson <ulf.hansson@...aro.org> wrote: >> From: Lina Iyer <lina.iyer@...aro.org> >> >> Knowing the sleep duration of CPUs, is known to be needed while selecting >> the most energy efficient idle state for a CPU or a group of CPUs. >> >> However, to be able to compute the sleep duration, we need to know at what >> time the next expected wakeup is for the CPU. Therefore, let's export this >> information via a new function, tick_nohz_get_next_wakeup(). Following >> changes make use of it. >> >> Cc: Thomas Gleixner <tglx@...utronix.de> >> Cc: Daniel Lezcano <daniel.lezcano@...aro.org> >> Cc: Lina Iyer <ilina@...eaurora.org> >> Cc: Frederic Weisbecker <fweisbec@...il.com> >> Cc: Ingo Molnar <mingo@...nel.org> >> Signed-off-by: Lina Iyer <lina.iyer@...aro.org> >> Co-developed-by: Ulf Hansson <ulf.hansson@...aro.org> >> Signed-off-by: Ulf Hansson <ulf.hansson@...aro.org> >> --- >> include/linux/tick.h | 10 ++++++++++ >> kernel/time/tick-sched.c | 11 +++++++++++ >> 2 files changed, 21 insertions(+) >> >> diff --git a/include/linux/tick.h b/include/linux/tick.h >> index 389aa25..d341811 100644 >> --- a/include/linux/tick.h >> +++ b/include/linux/tick.h >> @@ -125,6 +125,7 @@ extern bool tick_nohz_idle_got_tick(void); >> extern ktime_t tick_nohz_get_sleep_length(ktime_t *delta_next); >> extern unsigned long tick_nohz_get_idle_calls(void); >> extern unsigned long tick_nohz_get_idle_calls_cpu(int cpu); >> +extern ktime_t tick_nohz_get_next_wakeup(int cpu); >> 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); >> >> @@ -151,6 +152,15 @@ static inline ktime_t tick_nohz_get_sleep_length(ktime_t *delta_next) >> *delta_next = TICK_NSEC; >> return *delta_next; >> } >> + >> +static inline ktime_t tick_nohz_get_next_wakeup(int cpu) >> +{ >> + ktime_t t; >> + >> + /* Next wake up is the tick period, assume it starts now */ >> + return ktime_add(tick_nohz_get_sleep_length(&t), ktime_get()); >> +} > > Well, given that tick_nohz_get_sleep_length() is just the above in > this case, wouldn't it be simpler to return ktime_add(ktime_get(), > TICK_NSEC) from here? Yes! > >> + >> 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; } >> >> diff --git a/kernel/time/tick-sched.c b/kernel/time/tick-sched.c >> index 646645e..08db7f3 100644 >> --- a/kernel/time/tick-sched.c >> +++ b/kernel/time/tick-sched.c >> @@ -1098,6 +1098,17 @@ unsigned long tick_nohz_get_idle_calls(void) >> return ts->idle_calls; >> } >> >> +/** >> + * tick_nohz_get_next_wakeup - return the next wake up of the CPU >> + */ >> +ktime_t tick_nohz_get_next_wakeup(int cpu) >> +{ >> + struct clock_event_device *dev = >> + per_cpu(tick_cpu_device.evtdev, cpu); > > I would avoid breaking the line, honestly. Alright, I have no problem with that. [,,,] Thanks for reviewing! Kind regards Uffe
Powered by blists - more mailing lists