Hi Linus, Please pull from the tag git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm.git \ pm-5.16-rc1 with top-most commit bf56b90797c4a03c94b702c50e62296edea9fad9 Merge branches 'pm-em' and 'powercap' on top of commit 3906fe9bb7f1a2c8667ae54e967dc8690824f4ea Linux 5.15-rc7 to receive power management updates for 5.16-rc1. These make the power management of PCI devices with ACPI companions more straightforwad, add support for inefficient operating performance points to the Energy model and make cpufreq handle them as appropriate, rearrange the handling of cpuidle during system PM transitions, update a few cpufreq drivers and intel_idle, fix assorded issues and clean up code in multiple places. Specifics: - Add support for inefficient operating performance points to the Energy Model and modify cpufreq to use them properly (Vincent Donnefort). - Rearrange the DTPM framework code to simplify it and make it easier to follow (Daniel Lezcano). - Fix power intialization in DTPM (Daniel Lezcano). - Add CPU load consideration when estimating the instaneous power consumption in DTPM (Daniel Lezcano). - Fix cpu->pstate.turbo_freq initialization in intel_pstate (Zhang Rui). - Make intel_pstate process HWP Guaranteed change notifications from the processor (Srinivas Pandruvada). - Fix typo in cpufreq.h (Rafael Wysocki). - Fix tegra driver to handle BPMP errors properly (Mikko Perttunen). - Fix the parameter usage of the newly added perf-domain API (Hector Yuan). - Minor cleanups to cppc, vexpress and s3c244x drivers (Han Wang, Guenter Roeck, and Arnd Bergmann). - Fix kobject memory leaks in cpuidle error paths (Anel Orazgaliyeva). - Make intel_idle enable interrupts before entering C1 on some Xeon processor models (Artem Bityutskiy). - Clean up hib_wait_io() (Falla Coulibaly). - Fix sparse warnings in hibernation-related code (Anders Roxell). - Use vzalloc() and kzalloc() instead of their open-coded equivalents in hibernation-related code (Cai Huoqing). - Prevent user space from crashing the kernel by attempting to restore the system state from a swap partition in use (Ye Bin). - Do not let "syscore" devices runtime-suspend during system PM transitions (Rafael Wysocki). - Do not pause cpuidle in the suspend-to-idle path (Rafael Wysocki). - Pause cpuidle later and resume it earlier during system PM transitions (Rafael Wysocki). - Make system suspend code use valid_state() consistently (Rafael Wysocki). - Add support for enabling wakeup IRQs after invoking the ->runtime_suspend() callback and make two drivers use it (Chunfeng Yun). - Make the association of ACPI device objects with PCI devices more straightforward and simplify the code doing that for all devices in general (Rafael Wysocki). - Eliminate struct pci_platform_pm_ops and handle the both of its users (PCI and Intel MID) directly in the PCI bus code (Rafael Wysocki). - Simplify and clarify ACPI PCI device PM helpers (Rafael Wysocki). - Fix ordering of operations in pci_back_from_sleep() (Rafael Wysocki). - Make exynos-ppmu use hyphens in DT properties (Krzysztof Kozlowski). - Simplify parsing event-type from DT in exynos-ppmu (Krzysztof Kozlowski). - Strengthen check for freq_table in devfreq (Samuel Holland). Some of the changes listed above are also present in the ACPI updates pull request sent earlier due to dependencies between the ACPI "glue" code and the PCI device PM changes. Thanks! --------------- Anders Roxell (1): PM: hibernate: fix sparse warnings Anel Orazgaliyeva (1): cpuidle: Fix kobject memory leaks in error paths Arnd Bergmann (1): cpufreq: s3c244x: add fallthrough comments for switch Artem Bityutskiy (1): intel_idle: enable interrupts before C1 on Xeons Cai Huoqing (1): PM: hibernate: swap: Use vzalloc() and kzalloc() Chunfeng Yun (3): PM / wakeirq: support enabling wake-up irq after runtime_suspend called usb: xhci-mtk: enable wake-up interrupt after runtime_suspend called usb: mtu3: enable wake-up interrupt after runtime_suspend called Daniel Lezcano (5): powercap/drivers/dtpm: Encapsulate even more the code powercap/drivers/dtpm: Simplify the dtpm table powercap/drivers/dtpm: Use container_of instead of a private data field powercap/drivers/dtpm: Scale the power with the load powercap/drivers/dtpm: Fix power limit initialization Falla Coulibaly (1): PM: hibernate: Remove blk_status_to_errno in hib_wait_io Florian Fainelli (1): PM: sleep: Do not assume that "mem" is always present Guenter Roeck (1): cpufreq: vexpress: Drop unused variable Han Wang (1): cpufreq: remove useless INIT_LIST_HEAD() Hector.Yuan (1): cpufreq: Fix parameter in parse_perf_domain() Krzysztof Kozlowski (2): devfreq: exynos-ppmu: use node names with hyphens devfreq: exynos-ppmu: simplify parsing event-type from DT Mikko Perttunen (1): cpufreq: tegra186/tegra194: Handle errors in BPMP response Rafael J. Wysocki (17): PCI: ACPI: Drop acpi_pci_bus ACPI: glue: Drop cleanup callback from struct acpi_bus_type ACPI: glue: Look for ACPI bus type only if ACPI companion is not known PCI: PM: Do not use pci_platform_pm_ops for Intel MID PM PCI: ACPI: PM: Do not use pci_platform_pm_ops for ACPI PCI: PM: Drop struct pci_platform_pm_ops PCI: PM: Simplify acpi_pci_power_manageable() PCI: PM: Rearrange pci_target_state() PCI: PM: Make pci_choose_state() call pci_target_state() PCI: PM: Do not call platform_pci_power_manageable() unnecessarily Revert "PM: sleep: Do not assume that "mem" is always present" PCI: PM: Fix ordering of operations in pci_back_from_sleep() cpufreq: Fix typo in cpufreq.h PM: sleep: Do not let "syscore" devices runtime-suspend during system transitions PM: suspend: Do not pause cpuidle in the suspend-to-idle path PM: sleep: Pause cpuidle later and resume it earlier during system transitions PM: suspend: Use valid_state() consistently Samuel Holland (1): PM / devfreq: Strengthen check for freq_table Srinivas Pandruvada (1): cpufreq: intel_pstate: Process HWP Guaranteed change notification Vincent Donnefort (10): PM: EM: Fix inefficient states detection PM: EM: Mark inefficient states PM: EM: Extend em_perf_domain with a flag field PM: EM: Allow skipping inefficient states cpufreq: Make policy min/max hard requirements cpufreq: Add an interface to mark inefficient frequencies cpufreq: Introducing CPUFREQ_RELATION_E cpufreq: Use CPUFREQ_RELATION_E in DVFS governors PM: EM: Mark inefficiencies in CPUFreq cpufreq: mediatek-hw: Fix cpufreq_table_find_index_dl() call Ye Bin (1): PM: hibernate: Get block device exclusively in swsusp_check() Zhang Rui (1): cpufreq: intel_pstate: Fix cpu->pstate.turbo_freq initialization --------------- drivers/acpi/glue.c | 34 +++-- drivers/base/power/main.c | 14 +- drivers/base/power/power.h | 7 +- drivers/base/power/runtime.c | 6 +- drivers/base/power/wakeirq.c | 101 ++++++++++++--- drivers/cpufreq/acpi-cpufreq.c | 3 +- drivers/cpufreq/amd_freq_sensitivity.c | 3 +- drivers/cpufreq/cppc_cpufreq.c | 2 - drivers/cpufreq/cpufreq.c | 19 ++- drivers/cpufreq/cpufreq_conservative.c | 6 +- drivers/cpufreq/cpufreq_ondemand.c | 16 ++- drivers/cpufreq/intel_pstate.c | 120 ++++++++++++++++- drivers/cpufreq/mediatek-cpufreq-hw.c | 2 +- drivers/cpufreq/powernv-cpufreq.c | 4 +- drivers/cpufreq/s3c2440-cpufreq.c | 2 + drivers/cpufreq/s5pv210-cpufreq.c | 2 +- drivers/cpufreq/tegra186-cpufreq.c | 4 + drivers/cpufreq/tegra194-cpufreq.c | 8 +- drivers/cpuidle/sysfs.c | 5 +- drivers/devfreq/devfreq.c | 2 +- drivers/devfreq/event/exynos-ppmu.c | 12 +- drivers/idle/intel_idle.c | 13 +- drivers/pci/pci-acpi.c | 74 +++-------- drivers/pci/pci-mid.c | 37 ++---- drivers/pci/pci.c | 154 ++++++++++------------ drivers/pci/pci.h | 96 ++++++++------ drivers/powercap/dtpm.c | 78 ++++++----- drivers/powercap/dtpm_cpu.c | 228 ++++++++++++++++++--------------- drivers/usb/host/xhci-mtk.c | 2 +- drivers/usb/mtu3/mtu3_plat.c | 2 +- include/acpi/acpi_bus.h | 1 - include/linux/cpufreq.h | 169 +++++++++++++++++++----- include/linux/cpuhotplug.h | 2 +- include/linux/dtpm.h | 26 ++-- include/linux/energy_model.h | 68 ++++++++-- include/linux/pci-acpi.h | 8 ++ include/linux/pm_wakeirq.h | 9 +- kernel/power/energy_model.c | 86 ++++++++++--- kernel/power/hibernate.c | 12 +- kernel/power/power.h | 14 ++ kernel/power/suspend.c | 18 +-- kernel/power/swap.c | 21 ++- 42 files changed, 946 insertions(+), 544 deletions(-)