0001 # SPDX-License-Identifier: GPL-2.0
0002 #
0003 # ACPI Configuration
0004 #
0005
0006 config ARCH_SUPPORTS_ACPI
0007 bool
0008
0009 menuconfig ACPI
0010 bool "ACPI (Advanced Configuration and Power Interface) Support"
0011 depends on ARCH_SUPPORTS_ACPI
0012 select PNP
0013 select NLS
0014 select CRC32
0015 default y if X86
0016 help
0017 Advanced Configuration and Power Interface (ACPI) support for
0018 Linux requires an ACPI-compliant platform (hardware/firmware),
0019 and assumes the presence of OS-directed configuration and power
0020 management (OSPM) software. This option will enlarge your
0021 kernel by about 70K.
0022
0023 Linux ACPI provides a robust functional replacement for several
0024 legacy configuration and power management interfaces, including
0025 the Plug-and-Play BIOS specification (PnP BIOS), the
0026 MultiProcessor Specification (MPS), and the Advanced Power
0027 Management (APM) specification. If both ACPI and APM support
0028 are configured, ACPI is used.
0029
0030 The project home page for the Linux ACPI subsystem is here:
0031 <https://01.org/linux-acpi>
0032
0033 Linux support for ACPI is based on Intel Corporation's ACPI
0034 Component Architecture (ACPI CA). For more information on the
0035 ACPI CA, see:
0036 <https://acpica.org/>
0037
0038 ACPI is an open industry specification originally co-developed by
0039 Hewlett-Packard, Intel, Microsoft, Phoenix, and Toshiba. Currently,
0040 it is developed by the ACPI Specification Working Group (ASWG) under
0041 the UEFI Forum and any UEFI member can join the ASWG and contribute
0042 to the ACPI specification.
0043 The specification is available at:
0044 <https://uefi.org/specifications>
0045
0046 if ACPI
0047
0048 config ACPI_LEGACY_TABLES_LOOKUP
0049 bool
0050
0051 config ARCH_MIGHT_HAVE_ACPI_PDC
0052 bool
0053
0054 config ACPI_GENERIC_GSI
0055 bool
0056
0057 config ACPI_SYSTEM_POWER_STATES_SUPPORT
0058 bool
0059
0060 config ACPI_CCA_REQUIRED
0061 bool
0062
0063 config ACPI_TABLE_LIB
0064 bool
0065
0066 config ACPI_DEBUGGER
0067 bool "AML debugger interface"
0068 select ACPI_DEBUG
0069 help
0070 Enable in-kernel debugging of AML facilities: statistics,
0071 internal object dump, single step control method execution.
0072 This is still under development, currently enabling this only
0073 results in the compilation of the ACPICA debugger files.
0074
0075 if ACPI_DEBUGGER
0076
0077 config ACPI_DEBUGGER_USER
0078 tristate "Userspace debugger accessibility"
0079 depends on DEBUG_FS
0080 help
0081 Export /sys/kernel/debug/acpi/acpidbg for userspace utilities
0082 to access the debugger functionalities.
0083
0084 endif
0085
0086 config ACPI_SPCR_TABLE
0087 bool "ACPI Serial Port Console Redirection Support"
0088 default y if X86
0089 help
0090 Enable support for Serial Port Console Redirection (SPCR) Table.
0091 This table provides information about the configuration of the
0092 earlycon console.
0093
0094 config ACPI_FPDT
0095 bool "ACPI Firmware Performance Data Table (FPDT) support"
0096 depends on X86_64
0097 help
0098 Enable support for the Firmware Performance Data Table (FPDT).
0099 This table provides information on the timing of the system
0100 boot, S3 suspend and S3 resume firmware code paths.
0101
0102 config ACPI_LPIT
0103 bool
0104 depends on X86_64
0105 default y
0106
0107 config ACPI_SLEEP
0108 bool
0109 depends on SUSPEND || HIBERNATION
0110 depends on ACPI_SYSTEM_POWER_STATES_SUPPORT
0111 default y
0112
0113 config ACPI_REV_OVERRIDE_POSSIBLE
0114 bool "Allow supported ACPI revision to be overridden"
0115 depends on X86
0116 default y
0117 help
0118 The platform firmware on some systems expects Linux to return "5" as
0119 the supported ACPI revision which makes it expose system configuration
0120 information in a special way.
0121
0122 For example, based on what ACPI exports as the supported revision,
0123 Dell XPS 13 (2015) configures its audio device to either work in HDA
0124 mode or in I2S mode, where the former is supposed to be used on Linux
0125 until the latter is fully supported (in the kernel as well as in user
0126 space).
0127
0128 This option enables a DMI-based quirk for the above Dell machine (so
0129 that HDA audio is exposed by the platform firmware to the kernel) and
0130 makes it possible to force the kernel to return "5" as the supported
0131 ACPI revision via the "acpi_rev_override" command line switch.
0132
0133 config ACPI_EC_DEBUGFS
0134 tristate "EC read/write access through /sys/kernel/debug/ec"
0135 help
0136 Say N to disable Embedded Controller /sys/kernel/debug interface
0137
0138 Be aware that using this interface can confuse your Embedded
0139 Controller in a way that a normal reboot is not enough. You then
0140 have to power off your system, and remove the laptop battery for
0141 some seconds.
0142 An Embedded Controller typically is available on laptops and reads
0143 sensor values like battery state and temperature.
0144 The kernel accesses the EC through ACPI parsed code provided by BIOS
0145 tables. This option allows to access the EC directly without ACPI
0146 code being involved.
0147 Thus this option is a debug option that helps to write ACPI drivers
0148 and can be used to identify ACPI code or EC firmware bugs.
0149
0150 config ACPI_AC
0151 tristate "AC Adapter"
0152 select POWER_SUPPLY
0153 default y
0154 help
0155 This driver supports the AC Adapter object, which indicates
0156 whether a system is on AC or not. If you have a system that can
0157 switch between A/C and battery, say Y.
0158
0159 To compile this driver as a module, choose M here:
0160 the module will be called ac.
0161
0162 config ACPI_BATTERY
0163 tristate "Battery"
0164 select POWER_SUPPLY
0165 default y
0166 help
0167 This driver adds support for battery information through
0168 /proc/acpi/battery. If you have a mobile system with a battery,
0169 say Y.
0170
0171 To compile this driver as a module, choose M here:
0172 the module will be called battery.
0173
0174 config ACPI_BUTTON
0175 tristate "Button"
0176 depends on INPUT
0177 default y
0178 help
0179 This driver handles events on the power, sleep, and lid buttons.
0180 A daemon reads events from input devices or via netlink and
0181 performs user-defined actions such as shutting down the system.
0182 This is necessary for software-controlled poweroff.
0183
0184 To compile this driver as a module, choose M here:
0185 the module will be called button.
0186
0187 config ACPI_TINY_POWER_BUTTON
0188 tristate "Tiny Power Button Driver"
0189 depends on !ACPI_BUTTON
0190 help
0191 This driver provides a tiny alternative to the ACPI Button driver.
0192 The tiny power button driver only handles the power button. Rather
0193 than notifying userspace via the input layer or a netlink event, this
0194 driver directly signals the init process to shut down.
0195
0196 This driver is particularly suitable for cloud and VM environments,
0197 which use a simulated power button to initiate a controlled poweroff,
0198 but which may not want to run a separate userspace daemon to process
0199 input events.
0200
0201 config ACPI_TINY_POWER_BUTTON_SIGNAL
0202 int "Tiny Power Button Signal"
0203 depends on ACPI_TINY_POWER_BUTTON
0204 default 38
0205 help
0206 Default signal to send to init in response to the power button.
0207
0208 Likely values here include 38 (SIGRTMIN+4) to power off, or 2
0209 (SIGINT) to simulate Ctrl+Alt+Del.
0210
0211 config ACPI_VIDEO
0212 tristate "Video"
0213 depends on BACKLIGHT_CLASS_DEVICE
0214 depends on INPUT
0215 select THERMAL
0216 help
0217 This driver implements the ACPI Extensions For Display Adapters
0218 for integrated graphics devices on motherboard, as specified in
0219 ACPI 2.0 Specification, Appendix B. This supports basic operations
0220 such as defining the video POST device, retrieving EDID information,
0221 and setting up a video output.
0222
0223 To compile this driver as a module, choose M here:
0224 the module will be called video.
0225
0226 config ACPI_FAN
0227 tristate "Fan"
0228 depends on THERMAL
0229 default y
0230 help
0231 This driver supports ACPI fan devices, allowing user-mode
0232 applications to perform basic fan control (on, off, status).
0233
0234 To compile this driver as a module, choose M here:
0235 the module will be called fan.
0236
0237 config ACPI_TAD
0238 tristate "ACPI Time and Alarm (TAD) Device Support"
0239 depends on SYSFS && PM_SLEEP
0240 help
0241 The ACPI Time and Alarm (TAD) device is an alternative to the Real
0242 Time Clock (RTC). Its wake timers allow the system to transition from
0243 the S3 (or optionally S4/S5) state to S0 state after a time period
0244 elapses. In comparison with the RTC Alarm, the TAD provides a larger
0245 scale of flexibility in the wake timers. The time capabilities of the
0246 TAD maintain the time of day information across platform power
0247 transitions, and keep track of time even when the platform is turned
0248 off.
0249
0250 config ACPI_DOCK
0251 bool "Dock"
0252 help
0253 This driver supports ACPI-controlled docking stations and removable
0254 drive bays such as the IBM Ultrabay and the Dell Module Bay.
0255
0256 config ACPI_CPU_FREQ_PSS
0257 bool
0258
0259 config ACPI_PROCESSOR_CSTATE
0260 def_bool y
0261 depends on ACPI_PROCESSOR
0262 depends on IA64 || X86
0263
0264 config ACPI_PROCESSOR_IDLE
0265 bool
0266 select CPU_IDLE
0267
0268 config ACPI_MCFG
0269 bool
0270
0271 config ACPI_CPPC_LIB
0272 bool
0273 depends on ACPI_PROCESSOR
0274 select MAILBOX
0275 select PCC
0276 help
0277 If this option is enabled, this file implements common functionality
0278 to parse CPPC tables as described in the ACPI 5.1+ spec. The
0279 routines implemented are meant to be used by other
0280 drivers to control CPU performance using CPPC semantics.
0281 If your platform does not support CPPC in firmware,
0282 leave this option disabled.
0283
0284 config ACPI_PROCESSOR
0285 tristate "Processor"
0286 depends on X86 || IA64 || ARM64 || LOONGARCH
0287 select ACPI_PROCESSOR_IDLE
0288 select ACPI_CPU_FREQ_PSS if X86 || IA64 || LOONGARCH
0289 select THERMAL
0290 default y
0291 help
0292 This driver adds support for the ACPI Processor package. It is required
0293 by several flavors of cpufreq performance-state, thermal, throttling and
0294 idle drivers.
0295
0296 To compile this driver as a module, choose M here:
0297 the module will be called processor.
0298
0299 config ACPI_IPMI
0300 tristate "IPMI"
0301 depends on IPMI_HANDLER
0302 help
0303 This driver enables the ACPI to access the BMC controller. And it
0304 uses the IPMI request/response message to communicate with BMC
0305 controller, which can be found on the server.
0306
0307 To compile this driver as a module, choose M here:
0308 the module will be called as acpi_ipmi.
0309
0310 config ACPI_HOTPLUG_CPU
0311 bool
0312 depends on ACPI_PROCESSOR && HOTPLUG_CPU
0313 select ACPI_CONTAINER
0314 default y
0315
0316 config ACPI_PROCESSOR_AGGREGATOR
0317 tristate "Processor Aggregator"
0318 depends on ACPI_PROCESSOR
0319 depends on X86
0320 help
0321 ACPI 4.0 defines processor Aggregator, which enables OS to perform
0322 specific processor configuration and control that applies to all
0323 processors in the platform. Currently only logical processor idling
0324 is defined, which is to reduce power consumption. This driver
0325 supports the new device.
0326
0327 config ACPI_THERMAL
0328 tristate "Thermal Zone"
0329 depends on ACPI_PROCESSOR
0330 select THERMAL
0331 default y
0332 help
0333 This driver supports ACPI thermal zones. Most mobile and
0334 some desktop systems support ACPI thermal zones. It is HIGHLY
0335 recommended that this option be enabled, as your processor(s)
0336 may be damaged without it.
0337
0338 To compile this driver as a module, choose M here:
0339 the module will be called thermal.
0340
0341 config ACPI_PLATFORM_PROFILE
0342 tristate
0343
0344 config ACPI_CUSTOM_DSDT_FILE
0345 string "Custom DSDT Table file to include"
0346 default ""
0347 depends on !STANDALONE
0348 help
0349 This option supports a custom DSDT by linking it into the kernel.
0350 See Documentation/admin-guide/acpi/dsdt-override.rst
0351
0352 Enter the full path name to the file which includes the AmlCode
0353 or dsdt_aml_code declaration.
0354
0355 If unsure, don't enter a file name.
0356
0357 config ACPI_CUSTOM_DSDT
0358 bool
0359 default ACPI_CUSTOM_DSDT_FILE != ""
0360
0361 config ARCH_HAS_ACPI_TABLE_UPGRADE
0362 def_bool n
0363
0364 config ACPI_TABLE_UPGRADE
0365 bool "Allow upgrading ACPI tables via initrd"
0366 depends on BLK_DEV_INITRD && ARCH_HAS_ACPI_TABLE_UPGRADE
0367 default y
0368 help
0369 This option provides functionality to upgrade arbitrary ACPI tables
0370 via initrd. No functional change if no ACPI tables are passed via
0371 initrd, therefore it's safe to say Y.
0372 See Documentation/admin-guide/acpi/initrd_table_override.rst for details
0373
0374 config ACPI_TABLE_OVERRIDE_VIA_BUILTIN_INITRD
0375 bool "Override ACPI tables from built-in initrd"
0376 depends on ACPI_TABLE_UPGRADE
0377 depends on INITRAMFS_SOURCE!="" && INITRAMFS_COMPRESSION_NONE
0378 help
0379 This option provides functionality to override arbitrary ACPI tables
0380 from built-in uncompressed initrd.
0381
0382 See Documentation/admin-guide/acpi/initrd_table_override.rst for details
0383
0384 config ACPI_DEBUG
0385 bool "Debug Statements"
0386 help
0387 The ACPI subsystem can produce debug output. Saying Y enables this
0388 output and increases the kernel size by around 50K.
0389
0390 Use the acpi.debug_layer and acpi.debug_level kernel command-line
0391 parameters documented in Documentation/firmware-guide/acpi/debug.rst and
0392 Documentation/admin-guide/kernel-parameters.rst to control the type and
0393 amount of debug output.
0394
0395 config ACPI_PCI_SLOT
0396 bool "PCI slot detection driver"
0397 depends on SYSFS && PCI
0398 help
0399 This driver creates entries in /sys/bus/pci/slots/ for all PCI
0400 slots in the system. This can help correlate PCI bus addresses,
0401 i.e., segment/bus/device/function tuples, with physical slots in
0402 the system. If you are unsure, say N.
0403
0404 config ACPI_CONTAINER
0405 bool "Container and Module Devices"
0406 default (ACPI_HOTPLUG_MEMORY || ACPI_HOTPLUG_CPU)
0407 help
0408 This driver supports ACPI Container and Module devices (IDs
0409 ACPI0004, PNP0A05, and PNP0A06).
0410
0411 This helps support hotplug of nodes, CPUs, and memory.
0412
0413 config ACPI_HOTPLUG_MEMORY
0414 bool "Memory Hotplug"
0415 depends on MEMORY_HOTPLUG
0416 help
0417 This driver supports ACPI memory hotplug. The driver
0418 fields notifications on ACPI memory devices (PNP0C80),
0419 which represent memory ranges that may be onlined or
0420 offlined during runtime.
0421
0422 If your hardware and firmware do not support adding or
0423 removing memory devices at runtime, you need not enable
0424 this driver.
0425
0426 config ACPI_HOTPLUG_IOAPIC
0427 bool
0428 depends on PCI
0429 depends on X86_IO_APIC
0430 default y
0431
0432 config ACPI_SBS
0433 tristate "Smart Battery System"
0434 depends on X86
0435 select POWER_SUPPLY
0436 help
0437 This driver supports the Smart Battery System, another
0438 type of access to battery information, found on some laptops.
0439
0440 To compile this driver as a module, choose M here:
0441 the modules will be called sbs and sbshc.
0442
0443 config ACPI_HED
0444 tristate "Hardware Error Device"
0445 help
0446 This driver supports the Hardware Error Device (PNP0C33),
0447 which is used to report some hardware errors notified via
0448 SCI, mainly the corrected errors.
0449
0450 config ACPI_CUSTOM_METHOD
0451 tristate "Allow ACPI methods to be inserted/replaced at run time"
0452 depends on DEBUG_FS
0453 help
0454 This debug facility allows ACPI AML methods to be inserted and/or
0455 replaced without rebooting the system. For details refer to:
0456 Documentation/firmware-guide/acpi/method-customizing.rst.
0457
0458 NOTE: This option is security sensitive, because it allows arbitrary
0459 kernel memory to be written to by root (uid=0) users, allowing them
0460 to bypass certain security measures (e.g. if root is not allowed to
0461 load additional kernel modules after boot, this feature may be used
0462 to override that restriction).
0463
0464 config ACPI_BGRT
0465 bool "Boottime Graphics Resource Table support"
0466 depends on EFI && (X86 || ARM64)
0467 help
0468 This driver adds support for exposing the ACPI Boottime Graphics
0469 Resource Table, which allows the operating system to obtain
0470 data from the firmware boot splash. It will appear under
0471 /sys/firmware/acpi/bgrt/ .
0472
0473 config ACPI_REDUCED_HARDWARE_ONLY
0474 bool "Hardware-reduced ACPI support only" if EXPERT
0475 def_bool n
0476 help
0477 This config item changes the way the ACPI code is built. When this
0478 option is selected, the kernel will use a specialized version of
0479 ACPICA that ONLY supports the ACPI "reduced hardware" mode. The
0480 resulting kernel will be smaller but it will also be restricted to
0481 running in ACPI reduced hardware mode ONLY.
0482
0483 If you are unsure what to do, do not enable this option.
0484
0485 source "drivers/acpi/nfit/Kconfig"
0486 source "drivers/acpi/numa/Kconfig"
0487 source "drivers/acpi/apei/Kconfig"
0488 source "drivers/acpi/dptf/Kconfig"
0489
0490 config ACPI_WATCHDOG
0491 bool
0492
0493 config ACPI_EXTLOG
0494 tristate "Extended Error Log support"
0495 depends on X86_MCE && X86_LOCAL_APIC && EDAC
0496 select UEFI_CPER
0497 help
0498 Certain usages such as Predictive Failure Analysis (PFA) require
0499 more information about the error than what can be described in
0500 processor machine check banks. Most server processors log
0501 additional information about the error in processor uncore
0502 registers. Since the addresses and layout of these registers vary
0503 widely from one processor to another, system software cannot
0504 readily make use of them. To complicate matters further, some of
0505 the additional error information cannot be constructed without
0506 detailed knowledge about platform topology.
0507
0508 Enhanced MCA Logging allows firmware to provide additional error
0509 information to system software, synchronous with MCE or CMCI. This
0510 driver adds support for that functionality with corresponding
0511 tracepoint which carries that information to userspace.
0512
0513 config ACPI_ADXL
0514 bool
0515
0516 config ACPI_CONFIGFS
0517 tristate "ACPI configfs support"
0518 select CONFIGFS_FS
0519 help
0520 Select this option to enable support for ACPI configuration from
0521 userspace. The configurable ACPI groups will be visible under
0522 /config/acpi, assuming configfs is mounted under /config.
0523
0524 config ACPI_PFRUT
0525 tristate "ACPI Platform Firmware Runtime Update and Telemetry"
0526 depends on 64BIT
0527 help
0528 This mechanism allows certain pieces of the platform firmware
0529 to be updated on the fly while the system is running (runtime)
0530 without the need to restart it, which is key in the cases when
0531 the system needs to be available 100% of the time and it cannot
0532 afford the downtime related to restarting it, or when the work
0533 carried out by the system is particularly important, so it cannot
0534 be interrupted, and it is not practical to wait until it is complete.
0535
0536 The existing firmware code can be modified (driver update) or
0537 extended by adding new code to the firmware (code injection).
0538
0539 Besides, the telemetry driver allows user space to fetch telemetry
0540 data from the firmware with the help of the Platform Firmware Runtime
0541 Telemetry interface.
0542
0543 To compile the drivers as modules, choose M here:
0544 the modules will be called pfr_update and pfr_telemetry.
0545
0546 if ARM64
0547 source "drivers/acpi/arm64/Kconfig"
0548
0549 config ACPI_PPTT
0550 bool
0551 endif
0552
0553 config ACPI_PCC
0554 bool "ACPI PCC Address Space"
0555 depends on PCC
0556 default y
0557 help
0558 The PCC Address Space also referred as PCC Operation Region pertains
0559 to the region of PCC subspace that succeeds the PCC signature.
0560
0561 The PCC Operation Region works in conjunction with the PCC Table
0562 (Platform Communications Channel Table). PCC subspaces that are
0563 marked for use as PCC Operation Regions must not be used as PCC
0564 subspaces for the standard ACPI features such as CPPC, RASF, PDTT and
0565 MPST. These standard features must always use the PCC Table instead.
0566
0567 Enable this feature if you want to set up and install the PCC Address
0568 Space handler to handle PCC OpRegion in the firmware.
0569
0570 source "drivers/acpi/pmic/Kconfig"
0571
0572 config ACPI_VIOT
0573 bool
0574
0575 config ACPI_PRMT
0576 bool "Platform Runtime Mechanism Support"
0577 depends on EFI && (X86_64 || ARM64)
0578 default y
0579 help
0580 Platform Runtime Mechanism (PRM) is a firmware interface exposing a
0581 set of binary executables that can be called from the AML interpreter
0582 or directly from device drivers.
0583
0584 Say Y to enable the AML interpreter to execute the PRM code.
0585
0586 While this feature is optional in principle, leaving it out may
0587 substantially increase computational overhead related to the
0588 initialization of some server systems.
0589
0590 endif # ACPI
0591
0592 config X86_PM_TIMER
0593 bool "Power Management Timer Support" if EXPERT
0594 depends on X86 && (ACPI || JAILHOUSE_GUEST)
0595 default y
0596 help
0597 The Power Management Timer is available on all ACPI-capable,
0598 in most cases even if ACPI is unusable or blacklisted.
0599
0600 This timing source is not affected by power management features
0601 like aggressive processor idling, throttling, frequency and/or
0602 voltage scaling, unlike the commonly used Time Stamp Counter
0603 (TSC) timing source.
0604
0605 You should nearly always say Y here because many modern
0606 systems require this timer.