[GIT PULL] Power management updates for v5.16-rc1

From: Rafael J. Wysocki
Date: Tue Nov 02 2021 - 15:53:34 EST

Hi Linus,

Please pull from the tag

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

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.


- Add support for inefficient operating performance points to the
Energy Model and modify cpufreq to use them properly (Vincent

- 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

- 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

- 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

- Add support for enabling wakeup IRQs after invoking the
->runtime_suspend() callback and make two drivers use it (Chunfeng

- 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

- Simplify and clarify ACPI PCI device PM helpers (Rafael Wysocki).

- Fix ordering of operations in pci_back_from_sleep() (Rafael

- Make exynos-ppmu use hyphens in DT properties (Krzysztof

- Simplify parsing event-type from DT in exynos-ppmu (Krzysztof

- 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.



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(-)