Kconfig 19 KB

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