[GIT PULL] More power management updates for v4.17-rc1

From: Rafael J. Wysocki
Date: Wed Apr 11 2018 - 09:15:40 EST


Hi Linus,

Please pull from the tag

git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm.git \
pm-4.17-rc1-2

with top-most commit 51798deaffb738ef3bdd4f544b11ce2adaff40f3

Merge branches 'pm-cpuidle' and 'pm-qos'

on top of commit 38c23685b273cfb4ccf31a199feccce3bdcb5d83

Merge tag 'armsoc-drivers' of
git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc

to receive additional power management updates for 4.17-rc1.

These include one big-ticket item which is the rework of the idle
loop in order to prevent CPUs from spending too much time in shallow
idle states. It reduces idle power on some systems by 10% or more
and may improve performance of workloads in which the idle loop
overhead matters. This has been in the works for several weeks and
it has been tested and reviewed quite thoroughly.

Also included are changes that finalize the cpufreq cleanup moving
frequency table validation from drivers to the core, a few fixes and
cleanups of cpufreq drivers, a cpuidle documentation update and a
PM QoS core update to mark the expected switch fall-throughs in it.

Specifics:

- Rework the idle loop in order to prevent CPUs from spending too
much time in shallow idle states by making it stop the scheduler
tick before putting the CPU into an idle state only if the idle
duration predicted by the idle governor is long enough. That
required the code to be reordered to invoke the idle governor
before stopping the tick, among other things (Rafael Wysocki,
Frederic Weisbecker, Arnd Bergmann).

- Add the missing description of the residency sysfs attribute to
the cpuidle documentation (Prashanth Prakash).

- Finalize the cpufreq cleanup moving frequency table validation
from drivers to the core (Viresh Kumar).

- Fix a clock leak regression in the armada-37xx cpufreq driver
(Gregory Clement).

- Fix the initialization of the CPU performance data structures
for shared policies in the CPPC cpufreq driver (Shunyong Yang).

- Clean up the ti-cpufreq, intel_pstate and CPPC cpufreq drivers
a bit (Viresh Kumar, Rafael Wysocki).

- Mark the expected switch fall-throughs in the PM QoS core (Gustavo
Silva).

Thanks!


---------------

Arnd Bergmann (1):
tick-sched: avoid a maybe-uninitialized warning

Frederic Weisbecker (1):
nohz: Gather tick_sched booleans under a common flag field

Gregory CLEMENT (1):
cpufreq: armada-37xx: Fix clock leak

Gustavo A. R. Silva (1):
PM / QoS: mark expected switch fall-throughs

Prakash, Prashanth (1):
cpuidle: Add definition of residency to sysfs documentation

Rafael J. Wysocki (13):
time: tick-sched: Reorganize idle tick management code
sched: idle: Do not stop the tick upfront in the idle loop
sched: idle: Do not stop the tick before cpuidle_idle_call()
jiffies: Introduce USER_TICK_USEC and redefine TICK_USEC
cpuidle: Return nohz hint from cpuidle_select()
time: tick-sched: Split tick_nohz_stop_sched_tick()
time: hrtimer: Introduce hrtimer_next_event_without()
sched: idle: Select idle state before stopping the tick
cpuidle: menu: Refine idle state selection for running tick
cpuidle: menu: Avoid selecting shallow states with stopped tick
nohz: Avoid duplication of code related to got_idle_tick
time: hrtimer: Use timerqueue_iterate_next() to get to the next timer
cpufreq: intel_pstate: Do not include debugfs.h

Shunyong Yang (1):
cpufreq: CPPC: Initialize shared perf capabilities of CPUs

Viresh Kumar (4):
cpufreq: ti-cpufreq: Use builtin_platform_driver()
cpufreq: CPPC: Don't set transition_latency
cpufreq: SCMI: Don't validate the frequency table twice
cpufreq: Drop cpufreq_table_validate_and_show()

---------------

Documentation/cpu-freq/core.txt | 12 +-
Documentation/cpu-freq/cpu-drivers.txt | 6 +-
Documentation/cpuidle/sysfs.txt | 6 +
arch/x86/xen/smp_pv.c | 1 +
drivers/cpufreq/armada-37xx-cpufreq.c | 2 +
drivers/cpufreq/cppc_cpufreq.c | 15 +-
drivers/cpufreq/freq_table.c | 14 --
drivers/cpufreq/intel_pstate.c | 1 -
drivers/cpufreq/scmi-cpufreq.c | 10 +-
drivers/cpufreq/ti-cpufreq.c | 2 +-
drivers/cpuidle/cpuidle.c | 10 +-
drivers/cpuidle/governors/ladder.c | 3 +-
drivers/cpuidle/governors/menu.c | 113 ++++++++++++---
drivers/net/ethernet/sfc/mcdi.c | 2 +-
include/linux/cpufreq.h | 2 -
include/linux/cpuidle.h | 8 +-
include/linux/hrtimer.h | 1 +
include/linux/jiffies.h | 7 +-
include/linux/tick.h | 25 +++-
kernel/power/qos.c | 2 +
kernel/sched/idle.c | 34 ++++-
kernel/time/hrtimer.c | 53 ++++++-
kernel/time/ntp.c | 2 +-
kernel/time/tick-sched.c | 250 +++++++++++++++++++++++----------
kernel/time/tick-sched.h | 18 ++-
25 files changed, 438 insertions(+), 161 deletions(-)