···454454 disables it. Reads from the file return the current value.455455 The default is "1" if the build-time "SUSPEND_SKIP_SYNC" config456456 flag is unset, or "0" otherwise.457457+458458+What: /sys/power/hibernate_compression_threads459459+Date: October 2025460460+Contact: <luoxueqin@kylinos.cn>461461+Description:462462+ Controls the number of threads used for compression463463+ and decompression of hibernation images.464464+465465+ The value can be adjusted at runtime to balance466466+ performance and CPU utilization.467467+468468+ The change takes effect on the next hibernation or469469+ resume operation.470470+471471+ Minimum value: 1472472+ Default value: 3
+10
Documentation/admin-guide/kernel-parameters.txt
···19071907 /sys/power/pm_test). Only available when CONFIG_PM_DEBUG19081908 is set. Default value is 5.1909190919101910+ hibernate_compression_threads=19111911+ [HIBERNATION]19121912+ Set the number of threads used for compressing or decompressing19131913+ hibernation images.19141914+19151915+ Format: <integer>19161916+ Default: 319171917+ Minimum: 119181918+ Example: hibernate_compression_threads=419191919+19101920 highmem=nn[KMG] [KNL,BOOT,EARLY] forces the highmem zone to have an exact19111921 size of <nn>. This works even on boxes that have no19121922 highmem otherwise. This also works to reduce highmem
···3434#include <linux/cpufreq.h>3535#include <linux/devfreq.h>3636#include <linux/timer.h>3737+#include <linux/nmi.h>37383839#include "../base.h"3940#include "power.h"···516515#define DECLARE_DPM_WATCHDOG_ON_STACK(wd) \517516 struct dpm_watchdog wd518517518518+static bool __read_mostly dpm_watchdog_all_cpu_backtrace;519519+module_param(dpm_watchdog_all_cpu_backtrace, bool, 0644);520520+MODULE_PARM_DESC(dpm_watchdog_all_cpu_backtrace,521521+ "Backtrace all CPUs on DPM watchdog timeout");522522+519523/**520524 * dpm_watchdog_handler - Driver suspend / resume watchdog handler.521525 * @t: The timer that PM watchdog depends on.···536530 unsigned int time_left;537531538532 if (wd->fatal) {533533+ unsigned int this_cpu = smp_processor_id();534534+539535 dev_emerg(wd->dev, "**** DPM device timeout ****\n");540536 show_stack(wd->tsk, NULL, KERN_EMERG);537537+ if (dpm_watchdog_all_cpu_backtrace)538538+ trigger_allbutcpu_cpu_backtrace(this_cpu);541539 panic("%s %s: unrecoverable failure\n",542540 dev_driver_string(wd->dev), dev_name(wd->dev));543541 }
+1-3
drivers/base/power/trace.c
···238238 unsigned int hash = hash_string(DEVSEED, dev_name(dev),239239 DEVHASH);240240 if (hash == value) {241241- int len = snprintf(buf, size, "%s\n",241241+ int len = scnprintf(buf, size, "%s\n",242242 dev_driver_string(dev));243243- if (len > size)244244- len = size;245243 buf += len;246244 ret += len;247245 size -= len;
+8-4
include/linux/freezer.h
···2222extern unsigned int freeze_timeout_msecs;23232424/*2525- * Check if a process has been frozen2525+ * Check if a process has been frozen for PM or cgroup1 freezer. Note that2626+ * cgroup2 freezer uses the job control mechanism and does not interact with2727+ * the PM freezer.2628 */2729extern bool frozen(struct task_struct *p);28302931extern bool freezing_slow_path(struct task_struct *p);30323133/*3232- * Check if there is a request to freeze a process3434+ * Check if there is a request to freeze a task from PM or cgroup1 freezer.3535+ * Note that cgroup2 freezer uses the job control mechanism and does not3636+ * interact with the PM freezer.3337 */3438static inline bool freezing(struct task_struct *p)3539{···6763extern bool set_freezable(void);68646965#ifdef CONFIG_CGROUP_FREEZER7070-extern bool cgroup_freezing(struct task_struct *task);6666+extern bool cgroup1_freezing(struct task_struct *task);7167#else /* !CONFIG_CGROUP_FREEZER */7272-static inline bool cgroup_freezing(struct task_struct *task)6868+static inline bool cgroup1_freezing(struct task_struct *task)7369{7470 return false;7571}
+3-2
include/linux/pm.h
···25252626struct device; /* we have a circular dep with device.h */2727#ifdef CONFIG_VT_CONSOLE_SLEEP2828-extern void pm_vt_switch_required(struct device *dev, bool required);2828+extern int pm_vt_switch_required(struct device *dev, bool required);2929extern void pm_vt_switch_unregister(struct device *dev);3030#else3131-static inline void pm_vt_switch_required(struct device *dev, bool required)3131+static inline int pm_vt_switch_required(struct device *dev, bool required)3232{3333+ return 0;3334}3435static inline void pm_vt_switch_unregister(struct device *dev)3536{