Hi Linus, Please pull from the tag git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm.git \ pm-6.16-rc1 with top-most commit 3e0c509fbdb106ba2d2fa13beafe58f4ba11e13d Merge branch 'pm-tools' on top of commit a5806cd506af5a7c19bcd596e4708b5c464bfd21 Linux 6.15-rc7 to receive power management updates for 6.16-rc1. Once again, the changes are dominated by cpufreq updates, but this time the majority of them are cpufreq core changes, mostly related to the introduction of policy locking guards and __free() usage, and fixes related to boost handling. Still, there is also a significant update of the intel_pstate driver making it register an energy model when running on a hybrid platform which is used for enabling energy-aware scheduling (EAS) if the driver operates in the passive mode (and schedutil is used as the cpufreq governor for all CPUs which is the passive mode default). There are some amd-pstate driver updates too, for a good measure, including the "Requested CPU Min frequency" BIOS option support and new online/offline callbacks. In the cpuidle space, the most significant change is the addition of a C1 demotion on/off sysfs knob to intel_idle which should help some users to configure their systems more precisely. There is also the conversion of the PSCI cpuidle driver to a faux device one and there are two small updates of cpuidle governors. Device power management is also modified quite a bit, especially the handling of devices with asynchronous suspend and resume enabled during system transitions. They are now going to be handled more asynchronously during suspend transitions and somewhat less aggressively during resume transitions. Apart from the above, the operating performance points (OPP) library is now going to use mutex locking guards and scope-based cleanup helpers and there is the usual bunch of assorted fixes and code cleanups. Specifics: - Fix potential division-by-zero error in em_compute_costs() (Yaxiong Tian). - Fix typos in energy model documentation and example driver code (Moon Hee Lee, Atul Kumar Pant). - Rearrange the energy model management code and add a new function for adjusting a CPU energy model after adjusting the capacity of the given CPU to it (Rafael Wysocki). - Refactor cpufreq_online(), add and use cpufreq policy locking guards, use __free() in policy reference counting, and clean up core cpufreq code on top of that (Rafael Wysocki). - Fix boost handling on CPU suspend/resume and sysfs updates (Viresh Kumar). - Fix des_perf clamping with max_perf in amd_pstate_update() (Dhananjay Ugwekar). - Add offline, online and suspend callbacks to the amd-pstate driver, rename and use the existing amd_pstate_epp callbacks in it (Dhananjay Ugwekar). - Add support for the "Requested CPU Min frequency" BIOS option to the amd-pstate driver (Dhananjay Ugwekar). - Reset amd-pstate driver mode after running selftests (Swapnil Sapkal). - Avoid shadowing ret in amd_pstate_ut_check_driver() (Nathan Chancellor). - Add helper for governor checks to the schedutil cpufreq governor and move cpufreq-specific EAS checks to cpufreq (Rafael Wysocki). - Populate the cpu_capacity sysfs entries from the intel_pstate driver after registering asym capacity support (Ricardo Neri). - Add support for enabling Energy-aware scheduling (EAS) to the intel_pstate driver when operating in the passive mode on a hybrid platform (Rafael Wysocki). - Drop redundant cpus_read_lock() from store_local_boost() in the cpufreq core (Seyediman Seyedarab). - Replace sscanf() with kstrtouint() in the cpufreq code and use a symbol instead of a raw number in it (Bowen Yu). - Add support for autonomous CPU performance state selection to the CPPC cpufreq driver (Lifeng Zheng). - OPP: Add dev_pm_opp_set_level() (Praveen Talari). - Introduce scope-based cleanup headers and mutex locking guards in OPP core (Viresh Kumar). - Switch OPP to use kmemdup_array() (Zhang Enpei). - Optimize bucket assignment when next_timer_ns equals KTIME_MAX in the menu cpuidle governor (Zhongqiu Han). - Convert the cpuidle PSCI driver to a faux device one (Sudeep Holla). - Add C1 demotion on/off sysfs knob to the intel_idle driver (Artem Bityutskiy). - Fix typos in two comments in the teo cpuidle governor (Atul Kumar Pant). - Fix denying of auto suspend in pm_suspend_timer_fn() (Charan Teja Kalla). - Move debug runtime PM attributes to runtime_attrs[] (Rafael Wysocki). - Add new devm_ functions for enabling runtime PM and runtime PM reference counting (Bence Csókás). - Remove size arguments from strscpy() calls in the hibernation core code (Thorsten Blum). - Adjust the handling of devices with asynchronous suspend enabled during system suspend and resume to start resuming them immediately after resuming their parents and to start suspending such a device immediately after suspending its first child (Rafael Wysocki). - Adjust messages printed during tasks freezing to avoid using pr_cont() (Andrew Sayers, Paul Menzel). - Clean up unnecessary usage of !! in pm_print_times_init() (Zihuan Zhang). - Add missing wakeup source attribute relax_count to sysfs and remove the space character at the end ofi the string produced by pm_show_wakelocks() (Zijun Hu). - Add configurable pm_test delay for hibernation (Zihuan Zhang). - Disable asynchronous suspend in ucsi_ccg_probe() to prevent the cypd4226 device on Tegra boards from suspending prematurely (Jon Hunter). - Unbreak printing PM debug messages during hibernation and clean up some related code (Rafael Wysocki). - Add a systemd service to run cpupower and change cpupower binding's Makefile to use -lcpupower (John B. Wyatt IV, Francesco Poli). Thanks! --------------- Andrew Sayers (1): PM: sleep: Use two lines for "Restarting..." / "done" messages Artem Bityutskiy (3): intel_idle: Add C1 demotion on/off sysfs knob Documentation: admin-guide: pm: Document intel_idle C1 demotion Documentation: ABI: testing: document the new cpuidle sysfs file Atul Kumar Pant (2): cpuidle: teo: Fix typos in two comments PM: EM: Documentation: Fix typos in example driver code Bence Csókás (1): PM: runtime: Add new devm functions Bowen Yu (2): cpufreq: Replace magic number cpufreq: Update sscanf() to kstrtouint() Charan Teja Kalla (1): PM: runtime: fix denying of auto suspend in pm_suspend_timer_fn() Dhananjay Ugwekar (3): cpufreq/amd-pstate: Move max_perf limiting in amd_pstate_update cpufreq/amd-pstate: Add offline, online and suspend callbacks for amd_pstate_driver cpufreq/amd-pstate: Add support for the "Requested CPU Min frequency" BIOS option Francesco Poli (wintermute) (4): cpupower: add a systemd service to run cpupower cpupower: do not write DESTDIR to cpupower.service cpupower: do not call systemctl at install time cpupower: do not install files to /etc/default/ John B. Wyatt IV (1): cpupower: change binding's makefile to use -lcpupower Jon Hunter (1): ucsi_ccg: Disable async suspend in ucsi_ccg_probe() Lifeng Zheng (1): cpufreq: CPPC: Add support for autonomous selection Moon Hee Lee (1): PM: EM: Documentation: fix typo in energy-model.rst Nathan Chancellor (1): cpufreq/amd-pstate: Avoid shadowing ret in amd_pstate_ut_check_driver() Paul Menzel (1): PM: freezer: Rewrite restarting tasks log to remove stray *done.* Praveen Talari (1): OPP: Add dev_pm_opp_set_level() Rafael J. Wysocki (25): cpufreq: Consolidate some code in cpufreq_online() cpufreq: Split cpufreq_online() cpufreq: Add and use cpufreq policy locking guards cpufreq: intel_pstate: Rearrange max frequency updates handling code cpufreq: Use locking guard and __free() in cpufreq_update_policy() cpufreq: Drop cpufreq_cpu_acquire() and cpufreq_cpu_release() cpufreq: Use __free() for policy reference counting cleanup cpufreq: Introduce cpufreq_policy_refresh() cpufreq: Pass policy pointer to ->update_limits() cpufreq: Drop unused cpufreq_get_policy() PM: sleep: Resume children after resuming the parent PM: sleep: Suspend async parents after suspending children PM: sleep: Make suspend of devices more asynchronous cpufreq/sched: schedutil: Add helper for governor checks cpufreq/sched: Move cpufreq-specific EAS checks to cpufreq PM: sysfs: Move debug runtime PM attributes to runtime_attrs[] PM: sleep: Print PM debug messages during hibernation PM: sleep: Introduce pm_suspend_in_progress() cpufreq: Drop policy locking from cpufreq_policy_is_good_for_eas() PM: EM: Move CPU capacity check to em_adjust_new_capacity() PM: EM: Introduce em_adjust_cpu_capacity() cpufreq: intel_pstate: EAS support for hybrid platforms cpufreq: intel_pstate: EAS: Increase cost for CPUs using L3 cache cpufreq: intel_pstate: Document hybrid processor support PM: sleep: Introduce pm_sleep_transition_in_progress() Ricardo Neri (2): arch_topology: Relocate cpu_scale to topology.[h|c] cpufreq: intel_pstate: Populate the cpu_capacity sysfs entries Seyediman Seyedarab (1): cpufreq: drop redundant cpus_read_lock() from store_local_boost() Sudeep Holla (2): cpuidle: psci: Transition to the faux device interface cpuidle: psci: Avoid initializing faux device if no DT idle states are present Swapnil Sapkal (1): amd-pstate-ut: Reset amd-pstate driver mode after running selftests Thorsten Blum (1): PM: hibernate: Remove size arguments when calling strscpy() Viresh Kumar (10): OPP: Remove _get_opp_table_kref() OPP: Return opp from dev_pm_opp_get() OPP: Return opp_table from dev_pm_opp_get_opp_table_ref() OPP: Use scope-based OF cleanup helpers cpufreq: Don't unnecessarily call set_boost() cpufreq: Introduce policy_set_boost() cpufreq: Preserve policy's boost state after resume cpufreq: Force sync policy boost with global boost on sysfs update OPP: Define and use scope-based cleanup helpers OPP: Use mutex locking guards Yaxiong Tian (1): PM: EM: Fix potential division-by-zero error in em_compute_costs() Zhang Enpei (1): OPP: switch to use kmemdup_array() Zhongqiu Han (1): cpuidle: menu: Optimize bucket assignment when next_timer_ns equals KTIME_MAX Zihuan Zhang (2): PM: sleep: Remove unnecessary !! PM: hibernate: add configurable delay for pm_test Zijun Hu (2): PM: wakeup: Add missing wakeup source attribute relax_count PM: wakeup: Delete space in the end of string shown by pm_show_wakelocks() --------------- Documentation/ABI/testing/sysfs-devices-system-cpu | 61 ++- Documentation/admin-guide/kernel-parameters.txt | 7 + Documentation/admin-guide/pm/intel_idle.rst | 21 + Documentation/admin-guide/pm/intel_pstate.rst | 104 ++++- Documentation/power/energy-model.rst | 8 +- arch/x86/pci/fixup.c | 4 +- drivers/base/arch_topology.c | 52 --- drivers/base/power/main.c | 216 ++++++++-- drivers/base/power/runtime.c | 46 +- drivers/base/power/sysfs.c | 15 +- drivers/base/power/wakeup.c | 2 +- drivers/base/power/wakeup_stats.c | 2 + drivers/base/topology.c | 52 +++ drivers/cpufreq/amd-pstate-ut.c | 21 +- drivers/cpufreq/amd-pstate.c | 120 ++++-- drivers/cpufreq/amd-pstate.h | 3 + drivers/cpufreq/cppc_cpufreq.c | 109 +++++ drivers/cpufreq/cpufreq.c | 463 ++++++++++----------- drivers/cpufreq/intel_pstate.c | 181 ++++++-- drivers/cpuidle/cpuidle-psci.c | 43 +- drivers/cpuidle/governors/menu.c | 2 +- drivers/cpuidle/governors/teo.c | 4 +- drivers/gpu/drm/xe/xe_pm.c | 2 +- drivers/idle/intel_idle.c | 102 +++++ drivers/opp/core.c | 428 +++++++------------ drivers/opp/cpu.c | 30 +- drivers/opp/of.c | 205 ++++----- drivers/opp/opp.h | 1 - drivers/usb/typec/ucsi/ucsi_ccg.c | 2 + include/linux/arch_topology.h | 8 - include/linux/cpufreq.h | 22 +- include/linux/energy_model.h | 2 + include/linux/pm_opp.h | 32 +- include/linux/pm_runtime.h | 4 + include/linux/suspend.h | 9 + include/linux/topology.h | 9 + kernel/power/energy_model.c | 72 ++-- kernel/power/hibernate.c | 23 +- kernel/power/main.c | 8 +- kernel/power/power.h | 4 + kernel/power/process.c | 8 +- kernel/power/wakelock.c | 3 + kernel/sched/cpufreq_schedutil.c | 9 +- kernel/sched/sched.h | 2 - kernel/sched/topology.c | 25 +- tools/power/cpupower/Makefile | 13 + tools/power/cpupower/README | 28 ++ tools/power/cpupower/bindings/python/Makefile | 8 +- tools/power/cpupower/bindings/python/README | 13 +- tools/power/cpupower/cpupower-service.conf | 32 ++ tools/power/cpupower/cpupower.service.in | 16 + tools/power/cpupower/cpupower.sh | 26 ++ tools/power/pm-graph/sleepgraph.py | 3 +- 53 files changed, 1723 insertions(+), 962 deletions(-)