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