linux-next/drivers/thermal
Ricardo Neri 97566d09fd thermal: intel: hfi: Add syscore callbacks for system-wide PM
The kernel allocates a memory buffer and provides its location to the
hardware, which uses it to update the HFI table. This allocation occurs
during boot and remains constant throughout runtime.

When resuming from hibernation, the restore kernel allocates a second
memory buffer and reprograms the HFI hardware with the new location as
part of a normal boot. The location of the second memory buffer may
differ from the one allocated by the image kernel.

When the restore kernel transfers control to the image kernel, its HFI
buffer becomes invalid, potentially leading to memory corruption if the
hardware writes to it (the hardware continues to use the buffer from the
restore kernel).

It is also possible that the hardware "forgets" the address of the memory
buffer when resuming from "deep" suspend. Memory corruption may also occur
in such a scenario.

To prevent the described memory corruption, disable HFI when preparing to
suspend or hibernate. Enable it when resuming.

Add syscore callbacks to handle the package of the boot CPU (packages of
non-boot CPUs are handled via CPU offline). Syscore ops always run on the
boot CPU. Additionally, HFI only needs to be disabled during "deep" suspend
and hibernation. Syscore ops only run in these cases.

Cc: 6.1+ <stable@vger.kernel.org> # 6.1+
Signed-off-by: Ricardo Neri <ricardo.neri-calderon@linux.intel.com>
[ rjw: Comment adjustment, subject and changelog edits ]
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
2024-01-12 15:44:42 +01:00
..
broadcom thermal: ns: Convert to platform remove callback returning void 2023-09-29 12:34:16 +02:00
intel thermal: intel: hfi: Add syscore callbacks for system-wide PM 2024-01-12 15:44:42 +01:00
mediatek thermal/drivers/mediatek/lvts_thermal: Update calibration data documentation 2023-10-19 02:43:32 +02:00
qcom Thermal control updates for 6.7-rc1 2023-10-31 15:28:37 -10:00
samsung thermal/drivers/exynos: Use set_trips ops 2024-01-02 09:33:19 +01:00
st thermal: stm: Convert to platform remove callback returning void 2023-10-02 14:24:09 +02:00
tegra thermal: tegra-bpmp: Convert to platform remove callback returning void 2023-10-02 14:24:13 +02:00
ti-soc-thermal thermal: ti-bandgap: Convert to platform remove callback returning void 2023-10-02 14:24:15 +02:00
amlogic_thermal.c thermal: amlogic: Use DEFINE_SIMPLE_DEV_PM_OPS for PM functions 2024-01-02 09:33:18 +01:00
armada_thermal.c thermal: armada: Convert to platform remove callback returning void 2023-09-29 12:34:16 +02:00
cpufreq_cooling.c - Add more thermal zone device encapsulation: prevent setting 2023-04-03 20:43:32 +02:00
cpuidle_cooling.c thermal: cpuidle_cooling: fix kernel-doc warning and a spello 2023-12-21 12:05:48 +01:00
da9062-thermal.c thermal: da9062: Convert to platform remove callback returning void 2023-09-29 12:34:16 +02:00
db8500_thermal.c thermal/drivers/db8500: Remove redundant of_match_ptr() 2023-08-16 12:09:19 +02:00
devfreq_cooling.c thermal/core: Relocate the traces definition in thermal directory 2023-04-01 20:51:45 +02:00
dove_thermal.c thermal: dove: Convert to platform remove callback returning void 2023-09-29 12:34:16 +02:00
gov_bang_bang.c thermal: core: Pass trip pointer to governor throttle callback 2023-10-20 19:26:37 +02:00
gov_fair_share.c thermal: core: Pass trip pointer to governor throttle callback 2023-10-20 19:26:37 +02:00
gov_power_allocator.c thermal: gov_power_allocator: Support new update callback of weights 2023-12-29 18:01:01 +01:00
gov_step_wise.c thermal: core: Pass trip pointer to governor throttle callback 2023-10-20 19:26:37 +02:00
gov_user_space.c thermal: core: Pass trip pointer to governor throttle callback 2023-10-20 19:26:37 +02:00
hisi_thermal.c thermal: hisi: Convert to platform remove callback returning void 2023-09-29 12:34:16 +02:00
imx8mm_thermal.c thermal/drivers/imx8mm_thermal: Fix function pointer declaration by adding identifier name 2023-10-15 23:40:09 +02:00
imx_sc_thermal.c thermal: Explicitly include correct DT includes 2023-07-31 20:03:42 +02:00
imx_thermal.c thermal: imx: Convert to platform remove callback returning void 2023-09-29 12:34:16 +02:00
k3_bandgap.c thermal: k3_bandgap: Convert to platform remove callback returning void 2023-09-29 12:34:17 +02:00
k3_j72xx_bandgap.c thermal: k3_j72xx_bandgap: Convert to platform remove callback returning void 2023-09-29 12:34:17 +02:00
Kconfig thermal/drivers/loongson-2: Add thermal management support 2023-08-17 09:27:18 +02:00
khadas_mcu_fan.c thermal/core: Make cooling device state change private 2021-01-19 22:31:10 +01:00
kirkwood_thermal.c thermal: kirkwood: Convert to platform remove callback returning void 2023-09-29 12:34:17 +02:00
loongson2_thermal.c drivers/thermal/loongson2_thermal: Fix incorrect PTR_ERR() judgment 2024-01-02 09:33:18 +01:00
Makefile thermal/drivers/loongson-2: Add thermal management support 2023-08-17 09:27:18 +02:00
max77620_thermal.c thermal/drivers/max77620: Remove duplicate error message 2023-10-15 23:40:10 +02:00
qoriq_thermal.c thermal/drivers/qoriq: Remove redundant msg in qoriq_tmu_register_tmu_zone() 2023-06-26 12:03:14 +02:00
rcar_gen3_thermal.c thermal: rcar_gen3: Convert to platform remove callback returning void 2023-09-29 12:34:17 +02:00
rcar_thermal.c thermal: rcar: Convert to platform remove callback returning void 2023-09-29 12:34:17 +02:00
rockchip_thermal.c thermal: rockchip: Convert to platform remove callback returning void 2023-10-02 14:23:30 +02:00
rzg2l_thermal.c thermal: rzg2l: Convert to platform remove callback returning void 2023-10-02 14:23:51 +02:00
spear_thermal.c thermal: spear: Convert to platform remove callback returning void 2023-10-02 14:24:06 +02:00
sprd_thermal.c thermal: sprd: Convert to platform remove callback returning void 2023-10-02 14:24:08 +02:00
sun8i_thermal.c thermal/drivers/sun8i: Add D1/T113s THS controller support 2024-01-02 09:33:18 +01:00
thermal_acpi.c thermal: ACPI: Include the right header file 2023-10-20 19:26:37 +02:00
thermal_core.c - Converted Mediatek Thermal to the json-schema (Rafał Miłecki) 2024-01-02 13:45:36 +01:00
thermal_core.h - Converted Mediatek Thermal to the json-schema (Rafał Miłecki) 2024-01-02 13:45:36 +01:00
thermal_helpers.c thermal: helpers: Use for_each_trip() in __thermal_zone_get_temp() 2023-12-13 12:33:43 +01:00
thermal_hwmon.c thermal: Drop redundant and confusing device_is_registered() checks 2023-12-12 13:00:28 +01:00
thermal_hwmon.h thermal/hwmon: Use the right device for devm_thermal_add_hwmon_sysfs() 2023-03-03 20:45:02 +01:00
thermal_mmio.c thermal/core: Use the thermal zone 'devdata' accessor in thermal located drivers 2023-03-03 20:45:02 +01:00
thermal_netlink.c thermal: netlink: Add thermal_group_has_listeners() helper 2023-12-28 19:56:40 +01:00
thermal_netlink.h thermal/core: Fix unregistering netlink at thermal init time 2023-01-25 16:40:39 +01:00
thermal_of.c thermal/thermal_of: Allow rebooting after critical temp 2024-01-02 09:33:18 +01:00
thermal_sysfs.c thermal/sysfs: Update governors when the 'weight' has changed 2023-12-29 18:01:01 +01:00
thermal_trace_ipa.h thermal: gov_power_allocator: Change trace functions 2023-12-29 18:01:00 +01:00
thermal_trace.h thermal/core: Relocate the traces definition in thermal directory 2023-04-01 20:51:45 +02:00
thermal_trip.c thermal: trip: Send trip change notifications on all trip updates 2023-12-13 12:37:01 +01:00
thermal-generic-adc.c thermal/drivers/generic-adc: Removed unneeded call to platform_set_drvdata() 2023-08-16 12:36:21 +02:00
uniphier_thermal.c thermal: uniphier: Convert to platform remove callback returning void 2023-10-02 14:24:17 +02:00