linux/kernel/power/Kconfig
<<
>>
Prefs
   1# SPDX-License-Identifier: GPL-2.0-only
   2config SUSPEND
   3        bool "Suspend to RAM and standby"
   4        depends on ARCH_SUSPEND_POSSIBLE
   5        default y
   6        help
   7          Allow the system to enter sleep states in which main memory is
   8          powered and thus its contents are preserved, such as the
   9          suspend-to-RAM state (e.g. the ACPI S3 state).
  10
  11config SUSPEND_FREEZER
  12        bool "Enable freezer for suspend to RAM/standby" \
  13                if ARCH_WANTS_FREEZER_CONTROL || BROKEN
  14        depends on SUSPEND
  15        default y
  16        help
  17          This allows you to turn off the freezer for suspend. If this is
  18          done, no tasks are frozen for suspend to RAM/standby.
  19
  20          Turning OFF this setting is NOT recommended! If in doubt, say Y.
  21
  22config SUSPEND_SKIP_SYNC
  23        bool "Skip kernel's sys_sync() on suspend to RAM/standby"
  24        depends on SUSPEND
  25        depends on EXPERT
  26        help
  27          Skip the kernel sys_sync() before freezing user processes.
  28          Some systems prefer not to pay this cost on every invocation
  29          of suspend, or they are content with invoking sync() from
  30          user-space before invoking suspend.  There's a run-time switch
  31          at '/sys/power/sync_on_suspend' to configure this behaviour.
  32          This setting changes the default for the run-tim switch. Say Y
  33          to change the default to disable the kernel sys_sync().
  34
  35config HIBERNATE_CALLBACKS
  36        bool
  37
  38config HIBERNATION
  39        bool "Hibernation (aka 'suspend to disk')"
  40        depends on SWAP && ARCH_HIBERNATION_POSSIBLE
  41        select HIBERNATE_CALLBACKS
  42        select LZO_COMPRESS
  43        select LZO_DECOMPRESS
  44        select CRC32
  45        help
  46          Enable the suspend to disk (STD) functionality, which is usually
  47          called "hibernation" in user interfaces.  STD checkpoints the
  48          system and powers it off; and restores that checkpoint on reboot.
  49
  50          You can suspend your machine with 'echo disk > /sys/power/state'
  51          after placing resume=/dev/swappartition on the kernel command line
  52          in your bootloader's configuration file.
  53
  54          Alternatively, you can use the additional userland tools available
  55          from <http://suspend.sf.net>.
  56
  57          In principle it does not require ACPI or APM, although for example
  58          ACPI will be used for the final steps when it is available.  One
  59          of the reasons to use software suspend is that the firmware hooks
  60          for suspend states like suspend-to-RAM (STR) often don't work very
  61          well with Linux.
  62
  63          It creates an image which is saved in your active swap. Upon the next
  64          boot, pass the 'resume=/dev/swappartition' argument to the kernel to
  65          have it detect the saved image, restore memory state from it, and
  66          continue to run as before. If you do not want the previous state to
  67          be reloaded, then use the 'noresume' kernel command line argument.
  68          Note, however, that fsck will be run on your filesystems and you will
  69          need to run mkswap against the swap partition used for the suspend.
  70
  71          It also works with swap files to a limited extent (for details see
  72          <file:Documentation/power/swsusp-and-swap-files.rst>).
  73
  74          Right now you may boot without resuming and resume later but in the
  75          meantime you cannot use the swap partition(s)/file(s) involved in
  76          suspending.  Also in this case you must not use the filesystems
  77          that were mounted before the suspend.  In particular, you MUST NOT
  78          MOUNT any journaled filesystems mounted before the suspend or they
  79          will get corrupted in a nasty way.
  80
  81          For more information take a look at <file:Documentation/power/swsusp.rst>.
  82
  83config HIBERNATION_SNAPSHOT_DEV
  84        bool "Userspace snapshot device"
  85        depends on HIBERNATION
  86        default y
  87        help
  88          Device used by the uswsusp tools.
  89
  90          Say N if no snapshotting from userspace is needed, this also
  91          reduces the attack surface of the kernel.
  92
  93          If in doubt, say Y.
  94
  95config PM_STD_PARTITION
  96        string "Default resume partition"
  97        depends on HIBERNATION
  98        default ""
  99        help
 100          The default resume partition is the partition that the suspend-
 101          to-disk implementation will look for a suspended disk image.
 102
 103          The partition specified here will be different for almost every user.
 104          It should be a valid swap partition (at least for now) that is turned
 105          on before suspending.
 106
 107          The partition specified can be overridden by specifying:
 108
 109                resume=/dev/<other device>
 110
 111          which will set the resume partition to the device specified.
 112
 113          Note there is currently not a way to specify which device to save the
 114          suspended image to. It will simply pick the first available swap
 115          device.
 116
 117config PM_SLEEP
 118        def_bool y
 119        depends on SUSPEND || HIBERNATE_CALLBACKS
 120        select PM
 121        select SRCU
 122
 123config PM_SLEEP_SMP
 124        def_bool y
 125        depends on SMP
 126        depends on ARCH_SUSPEND_POSSIBLE || ARCH_HIBERNATION_POSSIBLE
 127        depends on PM_SLEEP
 128        select HOTPLUG_CPU
 129
 130config PM_SLEEP_SMP_NONZERO_CPU
 131        def_bool y
 132        depends on PM_SLEEP_SMP
 133        depends on ARCH_SUSPEND_NONZERO_CPU
 134        help
 135        If an arch can suspend (for suspend, hibernate, kexec, etc) on a
 136        non-zero numbered CPU, it may define ARCH_SUSPEND_NONZERO_CPU. This
 137        will allow nohz_full mask to include CPU0.
 138
 139config PM_AUTOSLEEP
 140        bool "Opportunistic sleep"
 141        depends on PM_SLEEP
 142        help
 143        Allow the kernel to trigger a system transition into a global sleep
 144        state automatically whenever there are no active wakeup sources.
 145
 146config PM_WAKELOCKS
 147        bool "User space wakeup sources interface"
 148        depends on PM_SLEEP
 149        help
 150        Allow user space to create, activate and deactivate wakeup source
 151        objects with the help of a sysfs-based interface.
 152
 153config PM_WAKELOCKS_LIMIT
 154        int "Maximum number of user space wakeup sources (0 = no limit)"
 155        range 0 100000
 156        default 100
 157        depends on PM_WAKELOCKS
 158
 159config PM_WAKELOCKS_GC
 160        bool "Garbage collector for user space wakeup sources"
 161        depends on PM_WAKELOCKS
 162        default y
 163
 164config PM
 165        bool "Device power management core functionality"
 166        help
 167          Enable functionality allowing I/O devices to be put into energy-saving
 168          (low power) states, for example after a specified period of inactivity
 169          (autosuspended), and woken up in response to a hardware-generated
 170          wake-up event or a driver's request.
 171
 172          Hardware support is generally required for this functionality to work
 173          and the bus type drivers of the buses the devices are on are
 174          responsible for the actual handling of device suspend requests and
 175          wake-up events.
 176
 177config PM_DEBUG
 178        bool "Power Management Debug Support"
 179        depends on PM
 180        help
 181        This option enables various debugging support in the Power Management
 182        code. This is helpful when debugging and reporting PM bugs, like
 183        suspend support.
 184
 185config PM_ADVANCED_DEBUG
 186        bool "Extra PM attributes in sysfs for low-level debugging/testing"
 187        depends on PM_DEBUG
 188        help
 189        Add extra sysfs attributes allowing one to access some Power Management
 190        fields of device objects from user space.  If you are not a kernel
 191        developer interested in debugging/testing Power Management, say "no".
 192
 193config PM_TEST_SUSPEND
 194        bool "Test suspend/resume and wakealarm during bootup"
 195        depends on SUSPEND && PM_DEBUG && RTC_CLASS=y
 196        help
 197        This option will let you suspend your machine during bootup, and
 198        make it wake up a few seconds later using an RTC wakeup alarm.
 199        Enable this with a kernel parameter like "test_suspend=mem".
 200
 201        You probably want to have your system's RTC driver statically
 202        linked, ensuring that it's available when this test runs.
 203
 204config PM_SLEEP_DEBUG
 205        def_bool y
 206        depends on PM_DEBUG && PM_SLEEP
 207
 208config DPM_WATCHDOG
 209        bool "Device suspend/resume watchdog"
 210        depends on PM_DEBUG && PSTORE && EXPERT
 211        help
 212          Sets up a watchdog timer to capture drivers that are
 213          locked up attempting to suspend/resume a device.
 214          A detected lockup causes system panic with message
 215          captured in pstore device for inspection in subsequent
 216          boot session.
 217
 218config DPM_WATCHDOG_TIMEOUT
 219        int "Watchdog timeout in seconds"
 220        range 1 120
 221        default 120
 222        depends on DPM_WATCHDOG
 223
 224config PM_TRACE
 225        bool
 226        help
 227          This enables code to save the last PM event point across
 228          reboot. The architecture needs to support this, x86 for
 229          example does by saving things in the RTC, see below.
 230
 231          The architecture specific code must provide the extern
 232          functions from <linux/resume-trace.h> as well as the
 233          <asm/resume-trace.h> header with a TRACE_RESUME() macro.
 234
 235          The way the information is presented is architecture-
 236          dependent, x86 will print the information during a
 237          late_initcall.
 238
 239config PM_TRACE_RTC
 240        bool "Suspend/resume event tracing"
 241        depends on PM_SLEEP_DEBUG
 242        depends on X86
 243        select PM_TRACE
 244        help
 245        This enables some cheesy code to save the last PM event point in the
 246        RTC across reboots, so that you can debug a machine that just hangs
 247        during suspend (or more commonly, during resume).
 248
 249        To use this debugging feature you should attempt to suspend the
 250        machine, reboot it and then run
 251
 252                dmesg -s 1000000 | grep 'hash matches'
 253
 254        CAUTION: this option will cause your machine's real-time clock to be
 255        set to an invalid time after a resume.
 256
 257config APM_EMULATION
 258        tristate "Advanced Power Management Emulation"
 259        depends on SYS_SUPPORTS_APM_EMULATION
 260        help
 261          APM is a BIOS specification for saving power using several different
 262          techniques. This is mostly useful for battery powered laptops with
 263          APM compliant BIOSes. If you say Y here, the system time will be
 264          reset after a RESUME operation, the /proc/apm device will provide
 265          battery status information, and user-space programs will receive
 266          notification of APM "events" (e.g. battery status change).
 267
 268          In order to use APM, you will need supporting software. For location
 269          and more information, read <file:Documentation/power/apm-acpi.rst>
 270          and the Battery Powered Linux mini-HOWTO, available from
 271          <http://www.tldp.org/docs.html#howto>.
 272
 273          This driver does not spin down disk drives (see the hdparm(8)
 274          manpage ("man 8 hdparm") for that), and it doesn't turn off
 275          VESA-compliant "green" monitors.
 276
 277          Generally, if you don't have a battery in your machine, there isn't
 278          much point in using this driver and you should say N. If you get
 279          random kernel OOPSes or reboots that don't seem to be related to
 280          anything, try disabling/enabling this option (or disabling/enabling
 281          APM in your BIOS).
 282
 283config PM_CLK
 284        def_bool y
 285        depends on PM && HAVE_CLK
 286
 287config PM_GENERIC_DOMAINS
 288        bool
 289        depends on PM
 290
 291config WQ_POWER_EFFICIENT_DEFAULT
 292        bool "Enable workqueue power-efficient mode by default"
 293        depends on PM
 294        help
 295          Per-cpu workqueues are generally preferred because they show
 296          better performance thanks to cache locality; unfortunately,
 297          per-cpu workqueues tend to be more power hungry than unbound
 298          workqueues.
 299
 300          Enabling workqueue.power_efficient kernel parameter makes the
 301          per-cpu workqueues which were observed to contribute
 302          significantly to power consumption unbound, leading to measurably
 303          lower power usage at the cost of small performance overhead.
 304
 305          This config option determines whether workqueue.power_efficient
 306          is enabled by default.
 307
 308          If in doubt, say N.
 309
 310config PM_GENERIC_DOMAINS_SLEEP
 311        def_bool y
 312        depends on PM_SLEEP && PM_GENERIC_DOMAINS
 313
 314config PM_GENERIC_DOMAINS_OF
 315        def_bool y
 316        depends on PM_GENERIC_DOMAINS && OF
 317
 318config CPU_PM
 319        bool
 320
 321config ENERGY_MODEL
 322        bool "Energy Model for devices with DVFS (CPUs, GPUs, etc)"
 323        depends on SMP
 324        depends on CPU_FREQ
 325        help
 326          Several subsystems (thermal and/or the task scheduler for example)
 327          can leverage information about the energy consumed by devices to
 328          make smarter decisions. This config option enables the framework
 329          from which subsystems can access the energy models.
 330
 331          The exact usage of the energy model is subsystem-dependent.
 332
 333          If in doubt, say N.
 334