Hi Linus, Please pull from the tag git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm.git \ pm-5.18-rc1 with top-most commit ec3d8b8365e9865b43099e943ec5f0bc12f28f96 Merge branch 'pm-tools' on top of commit 7e57714cd0ad2d5bb90e50b5096a0e671dec1ef3 Linux 5.17-rc6 to receive power management updates for 5.18-rc1. These are mostly fixes and cleanups all over the code and a new piece of documentation for Intel uncore frequency scaling. Functionality-wise, the intel_idle driver will support Sapphire Rapids Xeons natively now (with some extra facilities for controlling C-states more precisely on those systems), virtual guests will take the ACPI S4 hardware signature into account by default, the intel_pstate driver will take the defualt EPP value from the firmware, cpupower utility will support the AMD P-state driver added in the previous cycle and there is a new tracer utility for that driver. Specifics: - Allow device_pm_check_callbacks() to be called from interrupt context without issues (Dmitry Baryshkov). - Modify devm_pm_runtime_enable() to automatically handle pm_runtime_dont_use_autosuspend() at driver exit time (Douglas Anderson). - Make the schedutil cpufreq governor use to_gov_attr_set() instead of open coding it (Kevin Hao). - Replace acpi_bus_get_device() with acpi_fetch_acpi_dev() in the cpufreq longhaul driver (Rafael Wysocki). - Unify show() and store() naming in cpufreq and make it use __ATTR_XX (Lianjie Zhang). - Make the intel_pstate driver use the EPP value set by the firmware by default (Srinivas Pandruvada). - Re-order the init checks in the powernow-k8 cpufreq driver (Mario Limonciello). - Make the ACPI processor idle driver check for architectural support for LPI to avoid using it on x86 by mistake (Mario Limonciello). - Add Sapphire Rapids Xeon support to the intel_idle driver (Artem Bityutskiy). - Add 'preferred_cstates' module argument to the intel_idle driver to work around C1 and C1E handling issue on Sapphire Rapids (Artem Bityutskiy). - Add core C6 optimization on Sapphire Rapids to the intel_idle driver (Artem Bityutskiy). - Optimize the haltpoll cpuidle driver a bit (Li RongQing). - Remove leftover text from intel_idle() kerneldoc comment and fix up white space in intel_idle (Rafael Wysocki). - Fix load_image_and_restore() error path (Ye Bin). - Fix typos in comments in the system wakeup hadling code (Tom Rix). - Clean up non-kernel-doc comments in hibernation code (Jiapeng Chong). - Fix __setup handler error handling in system-wide suspend and hibernation core code (Randy Dunlap). - Add device name to suspend_report_result() (Youngjin Jang). - Make virtual guests honour ACPI S4 hardware signature by default (David Woodhouse). - Block power off of a parent PM domain unless child is in deepest state (Ulf Hansson). - Use dev_err_probe() to simplify error handling for generic PM domains (Ahmad Fatoum). - Fix sleep-in-atomic bug caused by genpd_debug_remove() (Shawn Guo). - Document Intel uncore frequency scaling (Srinivas Pandruvada). - Add DTPM hierarchy description (Daniel Lezcano). - Change the locking scheme in DTPM (Daniel Lezcano). - Fix dtpm_cpu cleanup at exit time and missing virtual DTPM pointer release (Daniel Lezcano). - Make dtpm_node_callback[] static (kernel test robot). - Fix spelling mistake "initialze" -> "initialize" in dtpm_create_hierarchy() (Colin Ian King). - Add tracer tool for the amd-pstate driver (Jinzhou Su). - Fix PC6 displaying in turbostat on some systems (Artem Bityutskiy). - Add AMD P-State support to the cpupower utility (Huang Rui). Thanks! --------------- Ahmad Fatoum (1): PM: domains: use dev_err_probe() to simplify error handling Andreas Rammhold (1): tools: cpupower: fix typo in cpupower-idle-set(1) manpage Artem Bityutskiy (4): intel_idle: add SPR support intel_idle: add 'preferred_cstates' module argument intel_idle: add core C6 optimization for SPR turbostat: fix PC6 displaying on some systems Colin Ian King (1): powercap: DTPM: Fix spelling mistake "initialze" -> "initialize" Daniel Lezcano (12): powercap/drivers/dtpm: Convert the init table section to a simple array powercap/drivers/dtpm: Add hierarchy creation powercap/drivers/dtpm: Add CPU DT initialization support powercap/drivers/dtpm: Add dtpm devfreq with energy model support rockchip/soc/drivers: Add DTPM description for rk3399 powercap/dtpm: Change locking scheme powercap/dtpm_cpu: Reset per_cpu variable in the release function powercap/dtpm: Fixup kfree for virtual node powercap/dtpm: Destroy hierarchy function powercap/dtpm: Move the 'root' reset place powercap/dtpm_cpu: Add exit function dtpm/soc/rk3399: Add the ability to unload the module David Woodhouse (1): PM: hibernate: Honour ACPI hardware signature by default for virtual guests Dmitry Baryshkov (1): PM: core: keep irq flags in device_pm_check_callbacks() Douglas Anderson (1): PM: runtime: Have devm_pm_runtime_enable() handle pm_runtime_dont_use_autosuspend() Huang Rui (10): cpupower: Add AMD P-State capability flag cpupower: Add the function to check AMD P-State enabled cpupower: Initial AMD P-State capability cpupower: Add the function to get the sysfs value from specific table cpupower: Introduce ACPI CPPC library cpupower: Add AMD P-State sysfs definition and access helper cpupower: Enable boost state support for AMD P-State module cpupower: Move print_speed function into misc helper cpupower: Add function to print AMD P-State performance capabilities cpupower: Add "perf" option to print AMD P-State information Jiapeng Chong (1): PM: hibernate: Clean up non-kernel-doc comments Jinzhou Su (4): cpufreq: amd-pstate: Add more tracepoint for AMD P-State module tools/power/x86/intel_pstate_tracer: make tracer as a module tools/power/x86/amd_pstate_tracer: Add tracer tool for AMD P-state Documentation: amd-pstate: add tracer tool introduction Kevin Hao (2): cpufreq: Move to_gov_attr_set() to cpufreq.h cpufreq: schedutil: Use to_gov_attr_set() to get the gov_attr_set Li RongQing (1): cpuidle: haltpoll: Call cpuidle_poll_state_init() later Lianjie Zhang (1): cpufreq: unify show() and store() naming and use __ATTR_XX Mario Limonciello (3): cpuidle: PSCI: Move the `has_lpi` check to the beginning of the function ACPI: processor idle: Check for architectural support for LPI cpufreq: powernow-k8: Re-order the init checks Rafael J. Wysocki (3): cpufreq: longhaul: Replace acpi_bus_get_device() cpuidle: intel_idle: Update intel_idle() kerneldoc comment cpuidle: intel_idle: Drop redundant backslash at line end Randy Dunlap (2): PM: hibernate: fix __setup handler error handling PM: suspend: fix return value of __setup handler Shawn Guo (1): PM: domains: Fix sleep-in-atomic bug caused by genpd_debug_remove() Srinivas Pandruvada (2): Documentation: admin-guide: pm: Document uncore frequency scaling cpufreq: intel_pstate: Use firmware default EPP Tom Rix (1): PM: sleep: wakeup: Fix typos in comments Ulf Hansson (1): PM: domains: Prevent power off for parent unless child is in deepest state Ye Bin (1): PM: hibernate: fix load_image_and_restore() error path Youngjin Jang (1): PM: sleep: Add device name to suspend_report_result() kernel test robot (1): powercap: DTPM: dtpm_node_callback[] can be static ozkanonur (1): tools/power/cpupower/{ToDo => TODO}: Rename the todo file --------------- Documentation/admin-guide/pm/amd-pstate.rst | 26 ++ .../pm/intel_uncore_frequency_scaling.rst | 60 ++++ Documentation/admin-guide/pm/working-state.rst | 1 + MAINTAINERS | 1 + arch/arm64/kernel/cpuidle.c | 6 +- arch/x86/kernel/acpi/sleep.c | 23 +- drivers/acpi/processor_idle.c | 15 +- drivers/acpi/sleep.c | 11 +- drivers/base/power/domain.c | 42 ++- drivers/base/power/main.c | 16 +- drivers/base/power/runtime.c | 5 + drivers/base/power/wakeirq.c | 2 +- drivers/base/power/wakeup.c | 4 +- drivers/cpufreq/amd-pstate-trace.h | 22 +- drivers/cpufreq/amd-pstate.c | 59 +++- drivers/cpufreq/cpufreq_conservative.c | 10 +- drivers/cpufreq/cpufreq_governor.c | 6 +- drivers/cpufreq/cpufreq_governor.h | 12 +- drivers/cpufreq/cpufreq_governor_attr_set.c | 5 - drivers/cpufreq/cpufreq_ondemand.c | 10 +- drivers/cpufreq/intel_pstate.c | 38 ++- drivers/cpufreq/longhaul.c | 4 +- drivers/cpufreq/powernow-k8.c | 6 +- drivers/cpuidle/cpuidle-haltpoll.c | 4 +- drivers/idle/intel_idle.c | 111 ++++++- drivers/pci/pci-driver.c | 14 +- drivers/pnp/driver.c | 2 +- drivers/powercap/Kconfig | 8 + drivers/powercap/Makefile | 1 + drivers/powercap/dtpm.c | 333 ++++++++++++++----- drivers/powercap/dtpm_cpu.c | 55 +++- drivers/powercap/dtpm_devfreq.c | 203 ++++++++++++ drivers/powercap/dtpm_subsys.h | 22 ++ drivers/soc/rockchip/Kconfig | 8 + drivers/soc/rockchip/Makefile | 1 + drivers/soc/rockchip/dtpm.c | 65 ++++ drivers/usb/core/hcd-pci.c | 4 +- include/asm-generic/vmlinux.lds.h | 11 - include/linux/acpi.h | 2 +- include/linux/cpufreq.h | 5 + include/linux/dtpm.h | 36 +-- include/linux/pm.h | 8 +- include/linux/pm_runtime.h | 4 + kernel/power/hibernate.c | 6 +- kernel/power/suspend_test.c | 8 +- kernel/power/swap.c | 8 +- kernel/sched/cpufreq_schedutil.c | 2 +- tools/power/cpupower/Makefile | 6 +- tools/power/cpupower/{ToDo => TODO} | 0 tools/power/cpupower/lib/acpi_cppc.c | 59 ++++ tools/power/cpupower/lib/acpi_cppc.h | 21 ++ tools/power/cpupower/lib/cpufreq.c | 23 +- tools/power/cpupower/lib/cpufreq.h | 12 + tools/power/cpupower/man/cpupower-frequency-info.1 | 3 + tools/power/cpupower/man/cpupower-idle-set.1 | 2 +- tools/power/cpupower/utils/cpufreq-info.c | 87 ++--- tools/power/cpupower/utils/helpers/amd.c | 77 +++++ tools/power/cpupower/utils/helpers/cpuid.c | 13 + tools/power/cpupower/utils/helpers/helpers.h | 22 ++ tools/power/cpupower/utils/helpers/misc.c | 60 ++++ .../x86/amd_pstate_tracer/amd_pstate_trace.py | 354 +++++++++++++++++++++ .../x86/intel_pstate_tracer/intel_pstate_tracer.py | 260 ++++++++------- tools/power/x86/turbostat/turbostat.c | 2 +- 63 files changed, 1888 insertions(+), 418 deletions(-)