[GIT PULL] Power management updates for v4.7-rc1

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Linus,

Please pull from

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

to receive the main part of power management material for v4.7-rc1
with top-most commit 27c4a1c5ef61b6d4a9aeae68b24419b4319b97ed

 Merge branches 'pm-avs', 'pm-clk', 'powercap' and 'pm-tools'

on top of commit 44549e8f5eea4e0a41b487b63e616cb089922b99

 Linux 4.6-rc7

The majority of changes go into the cpufreq subsystem this time.

To me, quite obviously, the biggest ticket item is the new "schedutil"
governor.  Interestingly enough, it's the first new cpufreq governor
since the beginning of the git era (except for some out-of-the-tree
ones).

There are two main differences between it and the existing governors.
First, it uses the information provided by the scheduler directly for
making its decisions, so it doesn't have to track anything by itself.
Second, it can invoke drivers (supporting that feature) to adjust CPU
performance right away without having to spawn work items to be
executed in process context or similar.  Currently, the acpi-cpufreq
driver is the only one supporting that mode of operation, but then it
is used on a large number of systems.

The "schedutil" governor as included here is very simple and mostly
regarded as a foundation for future work on the integration of
the scheduler with CPU power management (in fact, there is work
in progress on top of it already).  Nevertheless it works and
the preliminary results obtained with it are encouraging.

There also is some consolidation of CPU frequency management for ARM
platforms that can add their machine IDs the the new stub dt-platdev
driver now and that will take care of creating the requisite platform
device for cpufreq-dt, so it is not necessary to do that in platform
code any more.  Several ARM platforms are switched over to using this
generic mechanism.

In addition to that, the intel_pstate driver is now going to respect
CPU frequency limits set by the platform firmware (or a BMC) and
provided via the ACPI _PPC object.

The devfreq subsystem is getting a new "passive" governor for SoCs
subsystems that will depend on somebody else to manage their voltage
rails and its support for Samsung Exynos SoCs is consolidated.

The rest is support for new hardware (Intel Broxton support in
intel_idle for one example), bug fixes, optimizations and cleanups
in a number of places.

Specifics:

 - New cpufreq "schedutil" governor (making decisions based on CPU
   utilization information provided by the scheduler and capable of
   switching CPU frequencies right away if the underlying driver
   supports that) and support for fast frequency switching in the
   acpi-cpufreq driver (Rafael Wysocki).

 - Consolidation of CPU frequency management on ARM platforms allowing
   them to get rid of some platform-specific boilerplate code if they
   are going to use the cpufreq-dt driver (Viresh Kumar, Finley Xiao,
   Marc Gonzalez).

 - Support for ACPI _PPC and CPU frequency limits in the intel_pstate
   driver (Srinivas Pandruvada).

 - Fixes and cleanups in the cpufreq core and generic governor code
   (Rafael Wysocki, Sai Gurrappadi).

 - intel_pstate driver optimizations and cleanups (Rafael Wysocki,
   Philippe Longepe, Chen Yu, Joe Perches).

 - cpufreq powernv driver fixes and cleanups (Akshay Adiga, Shilpasri
   Bhat).

 - cpufreq qoriq driver fixes and cleanups (Jia Hongtao).

 - ACPI cpufreq driver cleanups (Viresh Kumar).

 - Assorted cpufreq driver updates (Ashwin Chaugule, Geliang Tang,
   Javier Martinez Canillas, Paul Gortmaker, Sudeep Holla).

 - Assorted cpufreq fixes and cleanups (Joe Perches, Arnd Bergmann).

 - Fixes and cleanups in the OPP (Operating Performance Points)
   framework, mostly related to OPP sharing, and reorganization of
   OF-dependent code in it (Viresh Kumar, Arnd Bergmann, Sudeep Holla).

 - New "passive" governor for devfreq (for SoC subsystems that will
   rely on someone else for the management of their power resources)
   and consolidation of devfreq support for Exynos platforms, coding
   style and typo fixes for devfreq (Chanwoo Choi, MyungJoo Ham).

 - PM core fixes and cleanups, mostly to make it work better with the
   generic power domains (genpd) framework, and updates for that
   framework (Ulf Hansson, Thierry Reding, Colin Ian King).

 - Intel Broxton support for the intel_idle driver (Len Brown).

 - cpuidle core optimization and fix (Daniel Lezcano, Dave Gerlach).

 - ARM cpuidle cleanups (Jisheng Zhang).

 - Intel Kabylake support for the RAPL power capping driver (Jacob Pan).

 - AVS (Adaptive Voltage Switching) rockchip-io driver update (Heiko
   Stuebner).

 - Updates for the cpupower tool (Arjun Sreedharan, Colin Ian King,
   Mattia Dongili, Thomas Renninger).

Thanks!

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

Akshay Adiga (3):
      cpufreq: powernv: Ramp-down global pstate slower than local-pstate
      cpufreq: powernv: Move smp_call_function_any() out of irq safe block
      cpufreq: powernv: del_timer_sync when global and local pstate are equal

Arjun Sreedharan (1):
      cpupower: fix potential memory leak

Arnd Bergmann (2):
      PM / OPP: pass cpumask by reference
      cpufreq: schedutil: Make default depend on CONFIG_SMP

Ashwin Chaugule (1):
      cpufreq: ACPI / CPPC: Add module support for cppc_cpufreq driver

Chanwoo Choi (13):
      PM / devfreq: exynos: Add generic exynos bus frequency driver
      PM / devfreq: exynos: Add documentation for generic exynos bus
frequency driver
      PM / devfreq: Add devfreq_get_devfreq_by_phandle()
      PM / devfreq: Add new DEVFREQ_TRANSITION_NOTIFIER notifier
      PM / devfreq: Add new passive governor
      PM / devfreq: exynos: Add support of bus frequency of sub-blocks
using passive governor
      PM / devfreq: exynos: Update documentation for bus devices using
passive governor
      PM / devfreq: exynos: Add the detailed correlation between
sub-blocks and power line
      PM / devfreq: exynos: Remove unused exynos4/5 busfreq driver
      MAINTAINERS: Add samsung bus frequency driver entry
      PM / devfreq: event: Add new Exynos NoC probe driver
      PM / devfreq: event: Find the instance of devfreq-event device
by using phandle
      PM / devfreq: exynos: Add the detailed correlation for Exynos5422 bus

Chen Yu (1):
      intel_pstate: Avoid unnecessary synchronize_sched() during initialization

Colin Ian King (3):
      PM / clk: ensure we don't allocate a -ve size of count clks
      cpupower: bench: parse.c: fix several resource leaks
      cpupowerutils: bench: trivial fix of spelling mistake on "average"

Daniel Lezcano (1):
      cpuidle: Replace ktime_get() with local_clock()

Dave Gerlach (1):
      cpuidle: Indicate when a device has been unregistered

Finley Xiao (1):
      cpufreq: rockchip: Use generic platdev driver

Geliang Tang (1):
      cpufreq: mt8173: use list_for_each_entry*()

Heiko Stuebner (1):
      PM / AVS: rockchip-io: make io-domains a child of the GRF

Jacob Pan (1):
      powercap/intel_rapl: Add support for Kabylake

Javier Martinez Canillas (1):
      cpufreq: e_powersaver: Use IS_ENABLED() instead of checking for
built-in or module

Jia Hongtao (3):
      cpufreq: qoriq: Don't show cooling device messages if THERMAL_OF undefined
      cpufreq: qoriq: Remove __exit macro from .exit callback
      cpufreq: qoriq: Fix cooling device registration issue during suspend

Jisheng Zhang (4):
      ARM: cpuidle: add const qualifier to cpuidle_ops member in structures
      ARM: cpuidle: constify return value of arm_cpuidle_get_ops()
      soc: qcom: spm: Use const and __initconst for qcom_cpuidle_ops
      drivers: firmware: psci: use const and __initconst for psci_cpuidle_ops

Joe Perches (3):
      intel_pstate: Use pr_fmt
      cpufreq: Convert printk(KERN_<LEVEL> to pr_<level>
      cpufreq: Use consistent prefixing via pr_fmt

Len Brown (1):
      intel_idle: add BXT support

Marc Gonzalez (1):
      cpufreq: tango: Use generic platdev driver

Mattia Dongili (2):
      Honour user's LDFLAGS
      Fix cpupower manpages "NAME" section

MyungJoo Ham (1):
      PM / devfreq: style/typo fixes

Paul Gortmaker (1):
      cpufreq: ppc_cbe_cpufreq_pmi: make the driver explicitly non-modular

Philippe Longepe (1):
      cpufreq: intel_pstate: Use average P-State instead of current P-State

Rafael J. Wysocki (19):
      cpufreq: sched: Helpers to add and remove update_util hooks
      cpufreq: governor: New data type for management part of dbs_data
      cpufreq: governor: Move abstract gov_attr_set code to seperate file
      cpufreq: Move governor attribute set headers to cpufreq.h
      cpufreq: Move governor symbols to cpufreq.h
      cpufreq: Support for fast frequency switching
      cpufreq: schedutil: New governor based on scheduler utilization data
      cpufreq: Call cpufreq_disable_fast_switch() in sugov_exit()
      intel_pstate: Avoid pointless FRAC_BITS shifts under div_fp()
      cpufreq: Simplify switch () in cpufreq_cpu_callback()
      cpufreq: Rearrange cpufreq_add_dev()
      cpufreq: governor: Fix prev_load initialization in
cpufreq_governor_start()
      cpufreq: governor: Change confusing struct field and variable names
      cpufreq: governor: Fix handling of special cases in dbs_update()
      cpufreq: schedutil: Make it depend on CONFIG_SMP
      intel_pstate: Clean up intel_pstate_get()
      intel_pstate: Clarify average performance computation
      intel_pstate: Use sample.core_avg_perf in get_avg_pstate()
      intel_pstate: Clean up get_target_pstate_use_performance()

Sai Gurrappadi (1):
      cpufreq: Fix GOV_LIMITS handling for the userspace governor

Shilpasri G Bhat (1):
      cpufreq: powernv: Remove flag use-case of policy->driver_data

Srinivas Pandruvada (4):
      cpufreq: intel_pstate: Enforce _PPC limits
      cpufreq: intel_pstate: Adjust policy->max
      cpufreq: intel_pstate: Enable PPC enforcement for servers
      cpufreq: intel_pstate: Ignore _PPC processing under HWP

Sudeep Holla (2):
      PM / OPP: add non-OF versions of dev_pm_opp_{cpumask_, }remove_table
      cpufreq: arm_big_little: use generic OPP functions for {init,
free}_opp_table

Thierry Reding (1):
      PM / sleep: Drop unused `info' variable

Thomas Renninger (1):
      cpupower: Add cpuidle parts into library

Ulf Hansson (7):
      PM / Runtime: Fix error path in pm_runtime_force_resume()
      PM / Runtime: Move ignore_children flag under CONFIG_PM
      PM / Domains: Rename stop_ok to suspend_ok for the genpd governor
      PM / Domains: Rename pm_genpd_runtime_suspend|resume()
      PM / Domains: Remove ->save|restore_state() callbacks
      PM / Domains: Remove redundant pm_runtime_get|put*() in pm_genpd_prepare()
      PM / Domains: Drop unnecessary wakeup code from pm_genpd_prepare()

Viresh Kumar (28):
      cpufreq: tegra124: No need of setting platform-data
      cpufreq: dt: Include types.h from cpufreq-dt.h
      cpufreq: dt: Add generic platform-device creation support
      ARM: exynos: exynos-cpufreq platform device isn't supported anymore
      cpufreq: exynos: Use generic platdev driver
      cpufreq: ACPI: policy->driver_data can't be NULL in ->exit()
      cpufreq: ACPI: Remove freq_table from acpi_cpufreq_data
      PM / OPP: Propagate the error returned by _find_opp_table()
      PM / OPP: Add missing doc style comments
      PM / OPP: dev_pm_opp_set_sharing_cpus() doesn't depend on CONFIG_OF
      PM / OPP: Relocate dev_pm_opp_set_sharing_cpus()
      PM / OPP: Mark shared-opp for non-dt case
      cpufreq: dt: Mark platdev machines array as __initconst
      cpufreq: berlin: Use generic platdev driver
      cpufreq: imx: Use generic platdev driver
      cpufreq: omap: Use generic platdev driver
      cpufreq: shmobile: Use generic platdev driver
      cpufreq: sunxi: Use generic platdev driver
      cpufreq: zynq: Use generic platdev driver
      cpufreq: hisilicon: Use generic platdev driver
      PM / OPP: -ENOSYS is applicable only to syscalls
      PM / OPP: Mark cpumask as const in dev_pm_opp_set_sharing_cpus()
      PM / OPP: Add dev_pm_opp_get_sharing_cpus()
      cpufreq: dt: Identify cpu-sharing for platforms without
operating-points-v2
      mvebu: Use dev_pm_opp_set_sharing_cpus() to mark OPP tables as shared
      cpufreq: dt: Kill platform-data
      cpufreq: mvebu: Move cpufreq code into drivers/cpufreq/
      PM / OPP: Move CONFIG_OF dependent code in a separate file

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

 .../bindings/devfreq/event/exynos-nocp.txt         |   26 +
 .../devicetree/bindings/devfreq/exynos-bus.txt     |  409 ++++++++
 .../bindings/power/rockchip-io-domain.txt          |    4 +-
 Documentation/kernel-parameters.txt                |    5 +
 MAINTAINERS                                        |   10 +
 arch/arm/include/asm/cpuidle.h                     |    2 +-
 arch/arm/kernel/cpuidle.c                          |    6 +-
 arch/arm/mach-berlin/berlin.c                      |    6 -
 arch/arm/mach-exynos/exynos.c                      |   29 -
 arch/arm/mach-imx/imx27-dt.c                       |   10 -
 arch/arm/mach-imx/mach-imx51.c                     |    3 -
 arch/arm/mach-imx/mach-imx53.c                     |    2 -
 arch/arm/mach-imx/mach-imx7d.c                     |    6 -
 arch/arm/mach-mvebu/pmsu.c                         |   85 --
 arch/arm/mach-omap2/pm.c                           |    7 +-
 arch/arm/mach-rockchip/rockchip.c                  |    1 -
 arch/arm/mach-shmobile/Makefile                    |    1 -
 arch/arm/mach-shmobile/common.h                    |    7 -
 arch/arm/mach-shmobile/cpufreq.c                   |   19 -
 arch/arm/mach-sunxi/sunxi.c                        |    9 -
 arch/arm/mach-zynq/common.c                        |    2 -
 drivers/base/power/clock_ops.c                     |    2 +-
 drivers/base/power/domain.c                        |  145 ++-
 drivers/base/power/domain_governor.c               |   20 +-
 drivers/base/power/main.c                          |   18 +-
 drivers/base/power/opp/Makefile                    |    1 +
 drivers/base/power/opp/core.c                      |  440 +-------
 drivers/base/power/opp/cpu.c                       |  199 ++--
 drivers/base/power/opp/of.c                        |  591 +++++++++++
 drivers/base/power/opp/opp.h                       |   14 +
 drivers/base/power/runtime.c                       |    9 +-
 drivers/cpufreq/Kconfig                            |   45 +
 drivers/cpufreq/Kconfig.arm                        |    9 -
 drivers/cpufreq/Kconfig.x86                        |    1 +
 drivers/cpufreq/Makefile                           |    4 +-
 drivers/cpufreq/acpi-cpufreq.c                     |  129 ++-
 drivers/cpufreq/arm_big_little.c                   |   54 +-
 drivers/cpufreq/arm_big_little.h                   |    4 +-
 drivers/cpufreq/arm_big_little_dt.c                |   21 +-
 drivers/cpufreq/cppc_cpufreq.c                     |   21 +
 drivers/cpufreq/cpufreq-dt-platdev.c               |   94 ++
 drivers/cpufreq/cpufreq-dt.c                       |   22 +-
 drivers/cpufreq/cpufreq-nforce2.c                  |   28 +-
 drivers/cpufreq/cpufreq.c                          |  164 ++-
 drivers/cpufreq/cpufreq_conservative.c             |   25 +-
 drivers/cpufreq/cpufreq_governor.c                 |  271 +++--
 drivers/cpufreq/cpufreq_governor.h                 |   46 +-
 drivers/cpufreq/cpufreq_governor_attr_set.c        |   84 ++
 drivers/cpufreq/cpufreq_ondemand.c                 |   29 +-
 drivers/cpufreq/cpufreq_userspace.c                |   43 +-
 drivers/cpufreq/e_powersaver.c                     |   76 +-
 drivers/cpufreq/elanfreq.c                         |    4 +-
 drivers/cpufreq/hisi-acpu-cpufreq.c                |   42 -
 drivers/cpufreq/ia64-acpi-cpufreq.c                |   10 +-
 drivers/cpufreq/intel_pstate.c                     |  303 ++++--
 drivers/cpufreq/longhaul.c                         |   84 +-
 drivers/cpufreq/loongson2_cpufreq.c                |    7 +-
 drivers/cpufreq/maple-cpufreq.c                    |   11 +-
 drivers/cpufreq/mt8173-cpufreq.c                   |   14 +-
 drivers/cpufreq/mvebu-cpufreq.c                    |  107 ++
 drivers/cpufreq/omap-cpufreq.c                     |    7 +-
 drivers/cpufreq/p4-clockmod.c                      |   19 +-
 drivers/cpufreq/pmac32-cpufreq.c                   |   14 +-
 drivers/cpufreq/pmac64-cpufreq.c                   |   47 +-
 drivers/cpufreq/powernow-k6.c                      |   16 +-
 drivers/cpufreq/powernow-k7.c                      |   70 +-
 drivers/cpufreq/powernv-cpufreq.c                  |  272 ++++-
 drivers/cpufreq/ppc_cbe_cpufreq.h                  |    2 +-
 drivers/cpufreq/ppc_cbe_cpufreq_pmi.c              |   15 +-
 drivers/cpufreq/pxa2xx-cpufreq.c                   |   18 +-
 drivers/cpufreq/qoriq-cpufreq.c                    |    9 +-
 drivers/cpufreq/s3c2412-cpufreq.c                  |   15 +-
 drivers/cpufreq/s3c2440-cpufreq.c                  |    6 +-
 drivers/cpufreq/s3c24xx-cpufreq-debugfs.c          |    4 +-
 drivers/cpufreq/s3c24xx-cpufreq.c                  |   59 +-
 drivers/cpufreq/s5pv210-cpufreq.c                  |   10 +-
 drivers/cpufreq/sc520_freq.c                       |   10 +-
 drivers/cpufreq/scpi-cpufreq.c                     |   47 +-
 drivers/cpufreq/speedstep-centrino.c               |    6 +-
 drivers/cpufreq/speedstep-ich.c                    |    8 +-
 drivers/cpufreq/speedstep-lib.c                    |   11 +-
 drivers/cpufreq/speedstep-smi.c                    |    7 +-
 drivers/cpufreq/tegra124-cpufreq.c                 |    7 -
 drivers/cpufreq/vexpress-spc-cpufreq.c             |    4 +-
 drivers/cpuidle/cpuidle.c                          |   14 +-
 drivers/devfreq/Kconfig                            |   36 +-
 drivers/devfreq/Makefile                           |    4 +-
 drivers/devfreq/devfreq-event.c                    |    5 +
 drivers/devfreq/devfreq.c                          |  207 +++-
 drivers/devfreq/event/Kconfig                      |    8 +
 drivers/devfreq/event/Makefile                     |    2 +
 drivers/devfreq/event/exynos-nocp.c                |  304 ++++++
 drivers/devfreq/event/exynos-nocp.h                |   78 ++
 drivers/devfreq/exynos-bus.c                       |  570 +++++++++++
 drivers/devfreq/exynos/Makefile                    |    3 -
 drivers/devfreq/exynos/exynos4_bus.c               | 1055 --------------------
 drivers/devfreq/exynos/exynos4_bus.h               |  110 --
 drivers/devfreq/exynos/exynos5_bus.c               |  431 --------
 drivers/devfreq/exynos/exynos_ppmu.c               |  119 ---
 drivers/devfreq/exynos/exynos_ppmu.h               |   86 --
 drivers/devfreq/governor_passive.c                 |  205 ++++
 drivers/firmware/psci.c                            |    2 +-
 drivers/idle/intel_idle.c                          |  137 +++
 drivers/mmc/host/toshsd.c                          |    1 +
 drivers/power/avs/rockchip-io-domain.c             |   10 +-
 drivers/powercap/intel_rapl.c                      |    2 +
 drivers/soc/qcom/spm.c                             |    2 +-
 include/linux/cpufreq-dt.h                         |   22 -
 include/linux/cpufreq.h                            |   54 +
 include/linux/devfreq.h                            |   99 ++
 include/linux/device.h                             |    5 -
 include/linux/pm.h                                 |    2 +-
 include/linux/pm_domain.h                          |    6 +-
 include/linux/pm_opp.h                             |   62 +-
 include/linux/pm_runtime.h                         |    6 +
 include/linux/sched.h                              |    5 +-
 kernel/sched/Makefile                              |    1 +
 kernel/sched/cpufreq.c                             |   48 +-
 kernel/sched/cpufreq_schedutil.c                   |  530 ++++++++++
 kernel/sched/sched.h                               |    8 +
 kernel/trace/power-traces.c                        |    1 +
 tools/power/cpupower/Makefile                      |   12 +-
 tools/power/cpupower/bench/Makefile                |    2 +-
 tools/power/cpupower/bench/README-BENCH            |    2 +-
 tools/power/cpupower/bench/benchmark.c             |    4 +-
 tools/power/cpupower/bench/parse.c                 |   20 +-
 tools/power/cpupower/bench/system.c                |    3 +-
 tools/power/cpupower/lib/cpufreq.c                 |  550 +++++++++-
 tools/power/cpupower/lib/cpufreq.h                 |   59 +-
 tools/power/cpupower/lib/cpuidle.c                 |  380 +++++++
 tools/power/cpupower/lib/cpuidle.h                 |   23 +
 tools/power/cpupower/lib/cpupower.c                |  192 ++++
 tools/power/cpupower/lib/cpupower.h                |   35 +
 tools/power/cpupower/lib/cpupower_intern.h         |    5 +
 tools/power/cpupower/lib/sysfs.c                   |  672 -------------
 tools/power/cpupower/lib/sysfs.h                   |   31 -
 tools/power/cpupower/man/cpupower-frequency-info.1 |    2 +-
 tools/power/cpupower/man/cpupower-frequency-set.1  |    2 +-
 tools/power/cpupower/man/cpupower-idle-info.1      |    2 +-
 tools/power/cpupower/man/cpupower-idle-set.1       |    2 +-
 tools/power/cpupower/utils/cpufreq-set.c           |    8 +-
 tools/power/cpupower/utils/cpuidle-info.c          |   32 +-
 tools/power/cpupower/utils/cpuidle-set.c           |   26 +-
 tools/power/cpupower/utils/helpers/helpers.h       |   26 +-
 tools/power/cpupower/utils/helpers/topology.c      |  107 +-
 .../cpupower/utils/idle_monitor/cpuidle_sysfs.c    |   12 +-
 146 files changed, 6477 insertions(+), 4495 deletions(-)
--
To unsubscribe from this list: send the line "unsubscribe linux-acpi" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Linux IBM ACPI]     [Linux Power Management]     [Linux Kernel]     [Linux Laptop]     [Kernel Newbies]     [Share Photos]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Samba]     [Video 4 Linux]     [Device Mapper]     [Linux Resources]

  Powered by Linux