Kconfig 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606
  1. # SPDX-License-Identifier: GPL-2.0
  2. #
  3. # ACPI Configuration
  4. #
  5. config ARCH_SUPPORTS_ACPI
  6. bool
  7. menuconfig ACPI
  8. bool "ACPI (Advanced Configuration and Power Interface) Support"
  9. depends on ARCH_SUPPORTS_ACPI
  10. select PNP
  11. select NLS
  12. select CRC32
  13. select FIRMWARE_TABLE
  14. default y if X86
  15. help
  16. Advanced Configuration and Power Interface (ACPI) support for
  17. Linux requires an ACPI-compliant platform (hardware/firmware),
  18. and assumes the presence of OS-directed configuration and power
  19. management (OSPM) software. This option will enlarge your
  20. kernel by about 70K.
  21. Linux ACPI provides a robust functional replacement for several
  22. legacy configuration and power management interfaces, including
  23. the Plug-and-Play BIOS specification (PnP BIOS), the
  24. MultiProcessor Specification (MPS), and the Advanced Power
  25. Management (APM) specification. If both ACPI and APM support
  26. are configured, ACPI is used.
  27. Linux support for ACPI is based on Intel Corporation's ACPI
  28. Component Architecture (ACPI CA). For more information on the
  29. ACPI CA, see:
  30. <https://acpica.org/>
  31. ACPI is an open industry specification originally co-developed by
  32. Hewlett-Packard, Intel, Microsoft, Phoenix, and Toshiba. Currently,
  33. it is developed by the ACPI Specification Working Group (ASWG) under
  34. the UEFI Forum and any UEFI member can join the ASWG and contribute
  35. to the ACPI specification.
  36. The specification is available at:
  37. <https://uefi.org/specifications>
  38. if ACPI
  39. config ACPI_LEGACY_TABLES_LOOKUP
  40. bool
  41. config ARCH_MIGHT_HAVE_ACPI_PDC
  42. bool
  43. config ACPI_GENERIC_GSI
  44. bool
  45. config ACPI_SYSTEM_POWER_STATES_SUPPORT
  46. bool
  47. config ACPI_CCA_REQUIRED
  48. bool
  49. config ACPI_TABLE_LIB
  50. bool
  51. config ACPI_THERMAL_LIB
  52. depends on THERMAL
  53. bool
  54. config ACPI_DEBUGGER
  55. bool "AML debugger interface"
  56. select ACPI_DEBUG
  57. help
  58. Enable in-kernel debugging of AML facilities: statistics,
  59. internal object dump, single step control method execution.
  60. This is still under development, currently enabling this only
  61. results in the compilation of the ACPICA debugger files.
  62. if ACPI_DEBUGGER
  63. config ACPI_DEBUGGER_USER
  64. tristate "Userspace debugger accessibility"
  65. depends on DEBUG_FS
  66. help
  67. Export /sys/kernel/debug/acpi/acpidbg for userspace utilities
  68. to access the debugger functionalities.
  69. endif
  70. config ACPI_SPCR_TABLE
  71. bool "ACPI Serial Port Console Redirection Support"
  72. default y if X86
  73. help
  74. Enable support for Serial Port Console Redirection (SPCR) Table.
  75. This table provides information about the configuration of the
  76. earlycon console.
  77. config ACPI_FPDT
  78. bool "ACPI Firmware Performance Data Table (FPDT) support"
  79. depends on X86_64 || ARM64
  80. help
  81. Enable support for the Firmware Performance Data Table (FPDT).
  82. This table provides information on the timing of the system
  83. boot, S3 suspend and S3 resume firmware code paths.
  84. config ACPI_LPIT
  85. bool
  86. depends on X86_64
  87. default y
  88. config ACPI_SLEEP
  89. bool
  90. depends on SUSPEND || HIBERNATION
  91. depends on ACPI_SYSTEM_POWER_STATES_SUPPORT
  92. default y
  93. config ACPI_REV_OVERRIDE_POSSIBLE
  94. bool "Allow supported ACPI revision to be overridden"
  95. depends on X86
  96. default y
  97. help
  98. The platform firmware on some systems expects Linux to return "5" as
  99. the supported ACPI revision which makes it expose system configuration
  100. information in a special way.
  101. For example, based on what ACPI exports as the supported revision,
  102. Dell XPS 13 (2015) configures its audio device to either work in HDA
  103. mode or in I2S mode, where the former is supposed to be used on Linux
  104. until the latter is fully supported (in the kernel as well as in user
  105. space).
  106. This option enables a DMI-based quirk for the above Dell machine (so
  107. that HDA audio is exposed by the platform firmware to the kernel) and
  108. makes it possible to force the kernel to return "5" as the supported
  109. ACPI revision via the "acpi_rev_override" command line switch.
  110. config ACPI_EC_DEBUGFS
  111. tristate "EC read/write access through /sys/kernel/debug/ec"
  112. help
  113. Say N to disable Embedded Controller /sys/kernel/debug interface
  114. Be aware that using this interface can confuse your Embedded
  115. Controller in a way that a normal reboot is not enough. You then
  116. have to power off your system, and remove the laptop battery for
  117. some seconds.
  118. An Embedded Controller typically is available on laptops and reads
  119. sensor values like battery state and temperature.
  120. The kernel accesses the EC through ACPI parsed code provided by BIOS
  121. tables. This option allows to access the EC directly without ACPI
  122. code being involved.
  123. Thus this option is a debug option that helps to write ACPI drivers
  124. and can be used to identify ACPI code or EC firmware bugs.
  125. config ACPI_AC
  126. tristate "AC Adapter"
  127. select POWER_SUPPLY
  128. default y
  129. help
  130. This driver supports the AC Adapter object, which indicates
  131. whether a system is on AC or not. If you have a system that can
  132. switch between A/C and battery, say Y.
  133. To compile this driver as a module, choose M here:
  134. the module will be called ac.
  135. config ACPI_BATTERY
  136. tristate "Battery"
  137. select POWER_SUPPLY
  138. default y
  139. help
  140. This driver adds support for battery information through
  141. /proc/acpi/battery. If you have a mobile system with a battery,
  142. say Y.
  143. To compile this driver as a module, choose M here:
  144. the module will be called battery.
  145. config ACPI_BUTTON
  146. tristate "Button"
  147. depends on INPUT
  148. default y
  149. help
  150. This driver handles events on the power, sleep, and lid buttons.
  151. A daemon reads events from input devices or via netlink and
  152. performs user-defined actions such as shutting down the system.
  153. This is necessary for software-controlled poweroff.
  154. To compile this driver as a module, choose M here:
  155. the module will be called button.
  156. config ACPI_TINY_POWER_BUTTON
  157. tristate "Tiny Power Button Driver"
  158. depends on !ACPI_BUTTON
  159. help
  160. This driver provides a tiny alternative to the ACPI Button driver.
  161. The tiny power button driver only handles the power button. Rather
  162. than notifying userspace via the input layer or a netlink event, this
  163. driver directly signals the init process to shut down.
  164. This driver is particularly suitable for cloud and VM environments,
  165. which use a simulated power button to initiate a controlled poweroff,
  166. but which may not want to run a separate userspace daemon to process
  167. input events.
  168. config ACPI_TINY_POWER_BUTTON_SIGNAL
  169. int "Tiny Power Button Signal"
  170. depends on ACPI_TINY_POWER_BUTTON
  171. default 38
  172. help
  173. Default signal to send to init in response to the power button.
  174. Likely values here include 38 (SIGRTMIN+4) to power off, or 2
  175. (SIGINT) to simulate Ctrl+Alt+Del.
  176. config ACPI_VIDEO
  177. tristate "Video"
  178. depends on BACKLIGHT_CLASS_DEVICE
  179. depends on INPUT
  180. depends on ACPI_WMI || !X86
  181. select THERMAL
  182. help
  183. This driver implements the ACPI Extensions For Display Adapters
  184. for integrated graphics devices on motherboard, as specified in
  185. ACPI 2.0 Specification, Appendix B. This supports basic operations
  186. such as defining the video POST device, retrieving EDID information,
  187. and setting up a video output.
  188. To compile this driver as a module, choose M here:
  189. the module will be called video.
  190. config ACPI_FAN
  191. tristate "Fan"
  192. depends on THERMAL
  193. default y
  194. help
  195. This driver supports ACPI fan devices, allowing user-mode
  196. applications to perform basic fan control (on, off, status).
  197. To compile this driver as a module, choose M here:
  198. the module will be called fan.
  199. config ACPI_TAD
  200. tristate "ACPI Time and Alarm (TAD) Device Support"
  201. depends on SYSFS && PM_SLEEP
  202. help
  203. The ACPI Time and Alarm (TAD) device is an alternative to the Real
  204. Time Clock (RTC). Its wake timers allow the system to transition from
  205. the S3 (or optionally S4/S5) state to S0 state after a time period
  206. elapses. In comparison with the RTC Alarm, the TAD provides a larger
  207. scale of flexibility in the wake timers. The time capabilities of the
  208. TAD maintain the time of day information across platform power
  209. transitions, and keep track of time even when the platform is turned
  210. off.
  211. config ACPI_DOCK
  212. bool "Dock"
  213. help
  214. This driver supports ACPI-controlled docking stations and removable
  215. drive bays such as the IBM Ultrabay and the Dell Module Bay.
  216. config ACPI_CPU_FREQ_PSS
  217. bool
  218. config ACPI_PROCESSOR_CSTATE
  219. def_bool y
  220. depends on ACPI_PROCESSOR
  221. depends on X86
  222. config ACPI_PROCESSOR_IDLE
  223. bool
  224. select CPU_IDLE
  225. config ACPI_MCFG
  226. bool
  227. config ACPI_CPPC_LIB
  228. bool
  229. depends on ACPI_PROCESSOR
  230. select MAILBOX
  231. select PCC
  232. help
  233. If this option is enabled, this file implements common functionality
  234. to parse CPPC tables as described in the ACPI 5.1+ spec. The
  235. routines implemented are meant to be used by other
  236. drivers to control CPU performance using CPPC semantics.
  237. If your platform does not support CPPC in firmware,
  238. leave this option disabled.
  239. config ACPI_PROCESSOR
  240. tristate "Processor"
  241. depends on X86 || ARM64 || LOONGARCH || RISCV
  242. select ACPI_PROCESSOR_IDLE
  243. select ACPI_CPU_FREQ_PSS if X86 || LOONGARCH
  244. select THERMAL
  245. default y
  246. help
  247. This driver adds support for the ACPI Processor package. It is required
  248. by several flavors of cpufreq performance-state, thermal, throttling and
  249. idle drivers.
  250. To compile this driver as a module, choose M here:
  251. the module will be called processor.
  252. config ACPI_IPMI
  253. tristate "IPMI"
  254. depends on IPMI_HANDLER
  255. help
  256. This driver enables the ACPI to access the BMC controller. And it
  257. uses the IPMI request/response message to communicate with BMC
  258. controller, which can be found on the server.
  259. To compile this driver as a module, choose M here:
  260. the module will be called as acpi_ipmi.
  261. config ACPI_HOTPLUG_CPU
  262. bool
  263. depends on ACPI_PROCESSOR && HOTPLUG_CPU
  264. select ACPI_CONTAINER
  265. config ACPI_PROCESSOR_AGGREGATOR
  266. tristate "Processor Aggregator"
  267. depends on ACPI_PROCESSOR
  268. depends on X86
  269. help
  270. ACPI 4.0 defines processor Aggregator, which enables OS to perform
  271. specific processor configuration and control that applies to all
  272. processors in the platform. Currently only logical processor idling
  273. is defined, which is to reduce power consumption. This driver
  274. supports the new device.
  275. config ACPI_THERMAL
  276. tristate "Thermal Zone"
  277. depends on ACPI_PROCESSOR
  278. select THERMAL
  279. select ACPI_THERMAL_LIB
  280. default y
  281. help
  282. This driver supports ACPI thermal zones. Most mobile and
  283. some desktop systems support ACPI thermal zones. It is HIGHLY
  284. recommended that this option be enabled, as your processor(s)
  285. may be damaged without it.
  286. To compile this driver as a module, choose M here:
  287. the module will be called thermal.
  288. config ACPI_PLATFORM_PROFILE
  289. tristate
  290. config ACPI_CUSTOM_DSDT_FILE
  291. string "Custom DSDT Table file to include"
  292. default ""
  293. depends on !STANDALONE
  294. help
  295. This option supports a custom DSDT by linking it into the kernel.
  296. Enter the full path name to the file which includes the AmlCode
  297. or dsdt_aml_code declaration.
  298. If unsure, don't enter a file name.
  299. config ACPI_CUSTOM_DSDT
  300. bool
  301. default ACPI_CUSTOM_DSDT_FILE != ""
  302. config ARCH_HAS_ACPI_TABLE_UPGRADE
  303. def_bool n
  304. config ACPI_TABLE_UPGRADE
  305. bool "Allow upgrading ACPI tables via initrd"
  306. depends on BLK_DEV_INITRD && ARCH_HAS_ACPI_TABLE_UPGRADE
  307. default y
  308. help
  309. This option provides functionality to upgrade arbitrary ACPI tables
  310. via initrd. No functional change if no ACPI tables are passed via
  311. initrd, therefore it's safe to say Y.
  312. See Documentation/admin-guide/acpi/initrd_table_override.rst for details
  313. config ACPI_TABLE_OVERRIDE_VIA_BUILTIN_INITRD
  314. bool "Override ACPI tables from built-in initrd"
  315. depends on ACPI_TABLE_UPGRADE
  316. depends on INITRAMFS_SOURCE!="" && INITRAMFS_COMPRESSION_NONE
  317. help
  318. This option provides functionality to override arbitrary ACPI tables
  319. from built-in uncompressed initrd.
  320. See Documentation/admin-guide/acpi/initrd_table_override.rst for details
  321. config ACPI_DEBUG
  322. bool "Debug Statements"
  323. help
  324. The ACPI subsystem can produce debug output. Saying Y enables this
  325. output and increases the kernel size by around 50K.
  326. Use the acpi.debug_layer and acpi.debug_level kernel command-line
  327. parameters documented in Documentation/firmware-guide/acpi/debug.rst and
  328. Documentation/admin-guide/kernel-parameters.rst to control the type and
  329. amount of debug output.
  330. config ACPI_PCI_SLOT
  331. bool "PCI slot detection driver"
  332. depends on SYSFS && PCI
  333. help
  334. This driver creates entries in /sys/bus/pci/slots/ for all PCI
  335. slots in the system. This can help correlate PCI bus addresses,
  336. i.e., segment/bus/device/function tuples, with physical slots in
  337. the system. If you are unsure, say N.
  338. config ACPI_CONTAINER
  339. bool "Container and Module Devices"
  340. default (ACPI_HOTPLUG_MEMORY || ACPI_HOTPLUG_CPU)
  341. help
  342. This driver supports ACPI Container and Module devices (IDs
  343. ACPI0004, PNP0A05, and PNP0A06).
  344. This helps support hotplug of nodes, CPUs, and memory.
  345. config ACPI_HOTPLUG_MEMORY
  346. bool "Memory Hotplug"
  347. depends on MEMORY_HOTPLUG
  348. help
  349. This driver supports ACPI memory hotplug. The driver
  350. fields notifications on ACPI memory devices (PNP0C80),
  351. which represent memory ranges that may be onlined or
  352. offlined during runtime.
  353. If your hardware and firmware do not support adding or
  354. removing memory devices at runtime, you need not enable
  355. this driver.
  356. config ACPI_HOTPLUG_IOAPIC
  357. bool
  358. depends on PCI
  359. depends on X86_IO_APIC
  360. default y
  361. config ACPI_SBS
  362. tristate "Smart Battery System"
  363. depends on X86
  364. select POWER_SUPPLY
  365. help
  366. This driver supports the Smart Battery System, another
  367. type of access to battery information, found on some laptops.
  368. To compile this driver as a module, choose M here:
  369. the modules will be called sbs and sbshc.
  370. config ACPI_HED
  371. bool "Hardware Error Device"
  372. help
  373. This driver supports the Hardware Error Device (PNP0C33),
  374. which is used to report some hardware errors notified via
  375. SCI, mainly the corrected errors.
  376. config ACPI_BGRT
  377. bool "Boottime Graphics Resource Table support"
  378. depends on EFI && (X86 || ARM64 || LOONGARCH)
  379. help
  380. This driver adds support for exposing the ACPI Boottime Graphics
  381. Resource Table, which allows the operating system to obtain
  382. data from the firmware boot splash. It will appear under
  383. /sys/firmware/acpi/bgrt/ .
  384. config ACPI_REDUCED_HARDWARE_ONLY
  385. bool "Hardware-reduced ACPI support only" if EXPERT
  386. help
  387. This config item changes the way the ACPI code is built. When this
  388. option is selected, the kernel will use a specialized version of
  389. ACPICA that ONLY supports the ACPI "reduced hardware" mode. The
  390. resulting kernel will be smaller but it will also be restricted to
  391. running in ACPI reduced hardware mode ONLY.
  392. If you are unsure what to do, do not enable this option.
  393. config ACPI_NHLT
  394. bool
  395. source "drivers/acpi/nfit/Kconfig"
  396. source "drivers/acpi/numa/Kconfig"
  397. source "drivers/acpi/apei/Kconfig"
  398. source "drivers/acpi/dptf/Kconfig"
  399. config ACPI_WATCHDOG
  400. bool
  401. config ACPI_EXTLOG
  402. tristate "Extended Error Log support"
  403. depends on X86_MCE && X86_LOCAL_APIC && EDAC
  404. select UEFI_CPER
  405. help
  406. Certain usages such as Predictive Failure Analysis (PFA) require
  407. more information about the error than what can be described in
  408. processor machine check banks. Most server processors log
  409. additional information about the error in processor uncore
  410. registers. Since the addresses and layout of these registers vary
  411. widely from one processor to another, system software cannot
  412. readily make use of them. To complicate matters further, some of
  413. the additional error information cannot be constructed without
  414. detailed knowledge about platform topology.
  415. Enhanced MCA Logging allows firmware to provide additional error
  416. information to system software, synchronous with MCE or CMCI. This
  417. driver adds support for that functionality with corresponding
  418. tracepoint which carries that information to userspace.
  419. config ACPI_ADXL
  420. bool
  421. config ACPI_CONFIGFS
  422. tristate "ACPI configfs support"
  423. select CONFIGFS_FS
  424. help
  425. Select this option to enable support for ACPI configuration from
  426. userspace. The configurable ACPI groups will be visible under
  427. /config/acpi, assuming configfs is mounted under /config.
  428. config ACPI_PFRUT
  429. tristate "ACPI Platform Firmware Runtime Update and Telemetry"
  430. depends on 64BIT
  431. help
  432. This mechanism allows certain pieces of the platform firmware
  433. to be updated on the fly while the system is running (runtime)
  434. without the need to restart it, which is key in the cases when
  435. the system needs to be available 100% of the time and it cannot
  436. afford the downtime related to restarting it, or when the work
  437. carried out by the system is particularly important, so it cannot
  438. be interrupted, and it is not practical to wait until it is complete.
  439. The existing firmware code can be modified (driver update) or
  440. extended by adding new code to the firmware (code injection).
  441. Besides, the telemetry driver allows user space to fetch telemetry
  442. data from the firmware with the help of the Platform Firmware Runtime
  443. Telemetry interface.
  444. To compile the drivers as modules, choose M here:
  445. the modules will be called pfr_update and pfr_telemetry.
  446. if ARM64
  447. source "drivers/acpi/arm64/Kconfig"
  448. endif
  449. config ACPI_PPTT
  450. bool
  451. config ACPI_PCC
  452. bool "ACPI PCC Address Space"
  453. depends on PCC
  454. default y
  455. help
  456. The PCC Address Space also referred as PCC Operation Region pertains
  457. to the region of PCC subspace that succeeds the PCC signature.
  458. The PCC Operation Region works in conjunction with the PCC Table
  459. (Platform Communications Channel Table). PCC subspaces that are
  460. marked for use as PCC Operation Regions must not be used as PCC
  461. subspaces for the standard ACPI features such as CPPC, RASF, PDTT and
  462. MPST. These standard features must always use the PCC Table instead.
  463. Enable this feature if you want to set up and install the PCC Address
  464. Space handler to handle PCC OpRegion in the firmware.
  465. config ACPI_FFH
  466. bool "ACPI FFH Address Space"
  467. default n
  468. help
  469. The FFH(Fixed Function Hardware) Address Space also referred as FFH
  470. Operation Region allows to define platform specific opregion.
  471. Enable this feature if you want to set up and install the FFH Address
  472. Space handler to handle FFH OpRegion in the firmware.
  473. source "drivers/acpi/pmic/Kconfig"
  474. config ACPI_VIOT
  475. bool
  476. config ACPI_PRMT
  477. bool "Platform Runtime Mechanism Support"
  478. depends on EFI_RUNTIME_WRAPPERS && (X86_64 || ARM64)
  479. default y
  480. help
  481. Platform Runtime Mechanism (PRM) is a firmware interface exposing a
  482. set of binary executables that can be called from the AML interpreter
  483. or directly from device drivers.
  484. Say Y to enable the AML interpreter to execute the PRM code.
  485. While this feature is optional in principle, leaving it out may
  486. substantially increase computational overhead related to the
  487. initialization of some server systems.
  488. endif # ACPI
  489. config X86_PM_TIMER
  490. bool "Power Management Timer Support" if EXPERT
  491. depends on X86 && (ACPI || JAILHOUSE_GUEST)
  492. default y
  493. help
  494. The Power Management Timer is available on all ACPI-capable,
  495. in most cases even if ACPI is unusable or blacklisted.
  496. This timing source is not affected by power management features
  497. like aggressive processor idling, throttling, frequency and/or
  498. voltage scaling, unlike the commonly used Time Stamp Counter
  499. (TSC) timing source.
  500. You should nearly always say Y here because many modern
  501. systems require this timer.