2 .\" Copyright (c) 2001 Michael Smith
3 .\" All rights reserved.
5 .\" Redistribution and use in source and binary forms, with or without
6 .\" modification, are permitted provided that the following conditions
8 .\" 1. Redistributions of source code must retain the above copyright
9 .\" notice, this list of conditions and the following disclaimer.
10 .\" 2. Redistributions in binary form must reproduce the above copyright
11 .\" notice, this list of conditions and the following disclaimer in the
12 .\" documentation and/or other materials provided with the distribution.
14 .\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
15 .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
16 .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
17 .\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
18 .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
19 .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
20 .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
21 .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
22 .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
23 .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
26 .\" $FreeBSD: src/share/man/man4/acpi.4,v 1.61.8.1 2009/04/15 03:14:26 kensmith Exp $
33 .Nd Advanced Configuration and Power Management support
37 .Cd "options ACPI_DEBUG"
42 driver provides support for the Intel/Microsoft/Compaq/Toshiba ACPI
44 This support includes platform hardware discovery (superseding the
45 PnP and PCI BIOS), as well as power management (superseding APM) and
47 ACPI core support is provided by the ACPICA reference implementation
52 driver is usually compiled into the kernel, and it is automatically loaded
55 if it is not in the kernel configuration file.
56 The loader menu provides a menu item to boot without ACPI.
63 driver is intended to provide power management without user intervention.
64 If the default settings are not optimal, the following sysctls can be
65 used to modify or monitor
68 .Bl -tag -width indent
69 .It Va debug.acpi.enable_debug_objects
70 Enable dumping Debug objects without
71 .Cd "options ACPI_DEBUG" .
72 Default is 0, ignore Debug objects.
74 AC line state (1 means online, 0 means on battery power).
75 .It Va hw.acpi.cpu.cx_usage
76 Debugging information listing the percent of total usage for each sleep state.
77 The values are reset when
78 .Va hw.acpi.cpu.cx_lowest
80 .It Va hw.acpi.cpu.cx_lowest
81 Lowest Cx state to use for idling the CPU.
82 A scheduling algorithm will select states between
85 as system load dictates.
86 To enable ACPI CPU idling control,
87 .Va machdep.cpu_idle_hlt
88 must be set to 2 (the default value).
89 .It Va hw.acpi.cpu.cx_supported
90 List of supported CPU idle states and their transition latency
92 Each state has a type (e.g.,
95 is equivalent to the ia32
100 sleep with the same semantics, and
102 provides the deepest sleep
103 but additionally requires bus mastering to be disabled.
106 provide even more power savings with the same
110 Deeper sleeps provide more power savings but increased transition
111 latency when an interrupt occurs.
112 .It Va hw.acpi.disable_on_reboot
113 Disable ACPI during the reboot process.
114 Most systems reboot fine with ACPI still enabled, but some require
115 exiting to legacy mode first.
116 Default is 0, leave ACPI enabled.
117 .It Va hw.acpi.handle_reboot
118 Use the ACPI Reset Register capability to reboot the system.
119 Default is 0, use legacy reboot support.
120 Some newer systems require use of this register, while some only work
121 with legacy rebooting support.
122 .It Va hw.acpi.lid_switch_state
124 .Pq Li S1 Ns \[en] Ns Li S5
125 to enter when the lid switch (i.e., a notebook screen) is closed.
129 .It Va hw.acpi.power_button_state
131 .Pq Li S1 Ns \[en] Ns Li S5
132 to enter when the power button is pressed.
136 .It Va hw.acpi.reset_video
137 Reset the video adapter from real mode during the resume path.
138 Some systems need this help, others have display problems if it is enabled.
139 Default is 0 (disabled).
140 .It Va hw.acpi.s4bios
141 Indicate whether the system supports
143 This means that the BIOS can handle all the functions of suspending the
145 Otherwise, the OS is responsible for suspending to disk
147 Most current systems do not support
149 .It Va hw.acpi.sleep_button_state
151 .Pq Li S1 Ns \[en] Ns Li S5
152 to enter when the sleep button is pressed.
153 This is usually a special function button on the keyboard.
157 .It Va hw.acpi.sleep_delay
158 Wait this number of seconds between preparing the system to suspend and
159 actually entering the suspend state.
161 .It Va hw.acpi.supported_sleep_state
163 .Pq Li S1 Ns \[en] Ns Li S5
164 supported by the BIOS.
165 .Bl -tag -width indent
167 Quick suspend to RAM.
168 The CPU enters a lower power state, but most peripherals are left running.
170 Lower power state than
172 but with the same basic characteristics.
173 Not supported by many systems.
176 Most devices are powered off, and the system stops running except for
180 All devices are powered off, and the system stops running.
181 When resuming, the system starts as if from a cold power on.
188 System shuts down cleanly and powers off.
190 .It Va hw.acpi.verbose
191 Enable verbose printing from the various ACPI subsystems.
194 Tunables can be set at the
196 prompt before booting the kernel or stored in
197 .Pa /boot/loader.conf .
198 Many of these tunables also have a matching
200 entry for access after boot.
201 .Bl -tag -width indent
202 .It Va acpi_dsdt_load
203 Enables loading of a custom ACPI DSDT.
204 .It Va acpi_dsdt_name
205 Name of the DSDT table to load, if loading is enabled.
208 .It Va debug.acpi.allow_method_calls
211 utility can be used to directly call ACPI methods for debugging and
213 .It Va debug.acpi.disabled
214 Selectively disables portions of ACPI that are enabled by default, for
216 .It Va debug.acpi.enabled
217 Selectively enables portions of ACPI that are disabled by default, for
219 .It Va debug.acpi.facs_addr32
220 Favor 32-bit FACS table addresses over the 64-bit addresses.
221 .It Va debug.acpi.fadt_addr32
222 Favor 32-bit FADT register addresses over the 64-bit addresses.
223 .It Va debug.acpi.group_module_level_code
224 Group the execution of module-level code after all of the tables have
225 been loaded instead of executing it as tables are loaded into the namespace
226 during ACPICA initialization.
227 The default is to not group.
228 .It Va debug.acpi.ignore_xsdt
229 Ignore the XSDT, forcing the use of the RSDT.
230 .It Va debug.acpi.interpreter_slack
231 Enable less strict ACPI implementations.
232 Default is 1, ignore common BIOS mistakes.
233 .It Va debug.acpi.max_threads
234 Specify the number of task threads that are started on boot.
235 Limiting this to 1 may help work around various BIOSes that cannot
236 handle parallel requests.
237 The default value is 3.
238 .It Va debug.acpi.quirks
239 Override any automatic quirks completely.
240 .It Va debug.acpi.resume_beep
241 Beep the PC speaker on resume.
242 This can help diagnose suspend/resume problems.
243 Default is 0 (disabled).
244 .It Va hint.acpi.0.disabled
245 Set this to 1 to disable all of ACPI.
246 If ACPI has been disabled on your system due to a blacklist entry for your
247 BIOS, you can set this to 0 to re-enable ACPI for testing.
248 .It Va hw.acpi.ec.poll_timeout
249 Delay in milliseconds to wait for the EC to respond.
250 Try increasing this number if you get the error
251 .Qq Li AE_NO_HARDWARE_RESPONSE .
252 .It Va hw.acpi.host_mem_start
253 Override the assumed memory starting address for PCI host bridges.
254 .It Va hw.acpi.install_interface , hw.acpi.remove_interface
255 Install or remove OS interface(s) to control the return value of the
258 When an OS interface is specified in
259 .Va hw.acpi.install_interface ,
262 query for the interface returns it is
264 Conversely, when an OS interface is specified in
265 .Va hw.acpi.remove_interface ,
270 Multiple interfaces can be specified in a comma-separated list and
271 any leading white spaces will be ignored.
273 .Qq Li FreeBSD, Linux
274 is a valid list of two interfaces
278 .It Va hw.acpi.reset_video
279 Enables calling the VESA reset BIOS vector on the resume path.
280 This can fix some graphics cards that have problems such as LCD white-out
282 Default is 0 (disabled).
283 .It Va hw.acpi.auto_serialize_methods
284 Auto-serialization of control methods to proactively prevent problems with
285 ill-behaved reentrant control methods that create named ACPI objects.
286 Default is 1 (enabled).
287 .It Va hw.acpi.verbose
288 Turn on verbose debugging information about what ACPI is doing.
289 .It Va hw.pci.link.%s.%d.irq
290 Override the interrupt to use for this link and index.
291 This capability should be used carefully, and only if a device is not
296 is the name of the link (e.g., LNKA).
298 is the resource index when the link supports multiple IRQs.
299 Most PCI links only have one IRQ resource, so the below form should be used.
300 .It Va hw.pci.link.%s.irq
301 Override the interrupt to use.
302 This capability should be used carefully, and only if a device is not
307 is the name of the link (e.g., LNKA).
310 Since ACPI support on different platforms varies greatly, there are many
311 debugging and tuning options available.
313 For machines known not to work with
315 enabled, there is a BIOS blacklist.
316 Currently, the blacklist only controls whether
318 should be disabled or not.
319 In the future, it will have more granularity to control features (the
320 infrastructure for that is already there).
324 (for debugging purposes, etc.) on machines that are on the blacklist, set the
325 kernel environment variable
326 .Va hint.acpi.0.disabled
328 Before trying this, consider updating your BIOS to a more recent version that
329 may be compatible with ACPI.
333 driver completely, set the kernel environment variable
334 .Va hint.acpi.0.disabled
337 Disabling all or part of ACPI may result in a non-functional system.
341 driver comprises a set of drivers, which may be selectively disabled
343 To disable a sub-driver, list it in the kernel
345 .Va debug.acpi.disabled .
346 Multiple entries can be listed, separated by a space.
348 ACPI sub-devices and features that can be disabled:
349 .Bl -tag -width ".Li sysresource"
351 Disable all ACPI features and devices.
357 Probes and attaches subdevices.
358 Disabling will avoid scanning the ACPI namespace entirely.
361 Attaches standard ACPI sub-drivers and devices enumerated in the
363 Disabling this has a similar effect to disabling
366 ACPI namespace will still be scanned.
369 Supports ACPI button devices (typically power and sleep buttons).
372 Control-method batteries device.
375 Supports CPU power-saving and speed-setting functions.
378 Supports CPU power-saving.
381 will also disable this device.
384 Supports CPU speed-setting.
387 will also disable this device.
390 Docking station device.
393 Supports the ACPI Embedded Controller interface, used to communicate
394 with embedded platform controllers.
397 Supports the High Precision Event Timer.
400 Supports an ISA bus bridge defined in the ACPI namespace,
401 typically as a child of a PCI bus.
404 Supports an ACPI laptop lid switch, which typically puts a
409 Quirks automatically disable ACPI functionality based on the XSDT table's
410 OEM vendor name and revision date.
413 Supports Host to PCI bridges.
416 Performs PCI interrupt routing.
419 Pseudo-devices containing resources which ACPI claims.
422 Supports system cooling and heat management.
425 Implements a timecounter using the ACPI fixed-frequency timer.
430 which may conflict with
437 .\"driver comprises a set of drivers,
438 .\"which may be selectively enabled in case of testing.
439 .\"To enable a sub-driver,
440 .\"list it in the kernel environment variable
441 .\".Va debug.acpi.enabled .
442 .\"Multiple entries can be listed,
443 .\"separated by a space.
445 .\"ACPI sub-devices and features that can be enabled:
446 .\".Bl -tag -width ".Li sysresource"
450 It is also possible to avoid portions of the ACPI namespace which
451 may be causing problems, by listing the full path of the root of
452 the region to be avoided in the kernel environment variable
453 .Va debug.acpi.avoid .
454 The object and all of its children will be ignored during the
455 bus/children scan of the namespace.
456 The ACPICA code will still know about the avoided region.
458 To enable debugging output,
460 must be compiled with
461 .Cd "options ACPI_DEBUG" .
462 Debugging output is separated between layers and levels, where a layer is
463 a component of the ACPI subsystem, and a level is a particular kind
466 Both layers and levels are specified as a whitespace-separated list of
467 tokens, with layers listed in
470 .Va debug.acpi.level .
472 The first set of layers is for ACPICA components, and the second is for
475 The ACPICA layer descriptions include the prefix for the files they
477 The supported layers are:
479 .Bl -tag -compact -width ".Li ACPI_CA_DISASSEMBLER"
480 .It Li ACPI_UTILITIES
481 Utility ("ut") functions
483 Hardware access ("hw")
488 .It Li ACPI_NAMESPACE
489 Namespace evaluation ("ns")
492 .It Li ACPI_DISPATCHER
493 Internal representation of interpreter state ("ds")
495 Execute AML methods ("ex")
496 .It Li ACPI_RESOURCES
497 Resource parsing ("rs")
498 .It Li ACPI_CA_DEBUGGER
499 Debugger implementation ("db", "dm")
500 .It Li ACPI_OS_SERVICES
501 Usermode support routines ("os")
502 .It Li ACPI_CA_DISASSEMBLER
503 Disassembler implementation (unused)
504 .It Li ACPI_ALL_COMPONENTS
505 All the above ACPICA components
506 .It Li ACPI_AC_ADAPTER
509 Control-method battery driver
511 ACPI, ISA, and PCI bus drivers
513 Power and sleep button driver
515 Embedded controller driver
519 Platform-specific driver for hotkeys, LED, etc.
521 Power resource driver
522 .It Li ACPI_PROCESSOR
528 .It Li ACPI_ALL_DRIVERS
534 The supported levels are:
536 .Bl -tag -compact -width ".Li ACPI_LV_AML_DISASSEMBLE"
538 Initialization progress
539 .It Li ACPI_LV_DEBUG_OBJECT
542 General information and progress
543 .It Li ACPI_LV_REPAIR
544 Repair a common problem with predefined methods
545 .It Li ACPI_LV_ALL_EXCEPTIONS
546 All the previous levels
548 .It Li ACPI_LV_DISPATCH
551 .It Li ACPI_LV_OPREGION
552 .It Li ACPI_LV_BFIELD
553 .It Li ACPI_LV_TABLES
554 .It Li ACPI_LV_VALUES
555 .It Li ACPI_LV_OBJECTS
556 .It Li ACPI_LV_RESOURCES
557 .It Li ACPI_LV_USER_REQUESTS
558 .It Li ACPI_LV_PACKAGE
559 .It Li ACPI_LV_EVALUATION
560 .It Li ACPI_LV_VERBOSITY1
561 All the previous levels
562 .It Li ACPI_LV_ALLOCATIONS
563 .It Li ACPI_LV_FUNCTIONS
564 .It Li ACPI_LV_OPTIMIZATIONS
565 .It Li ACPI_LV_VERBOSITY2
566 All the previous levels
569 .Qq Li ACPI_LV_VERBOSITY2
571 .It Li ACPI_LV_THREADS
573 .It Li ACPI_LV_INTERRUPTS
574 .It Li ACPI_LV_VERBOSITY3
575 All the previous levels
576 .It Li ACPI_LV_AML_DISASSEMBLE
577 .It Li ACPI_LV_VERBOSE_INFO
578 .It Li ACPI_LV_FULL_TABLES
579 .It Li ACPI_LV_EVENTS
580 .It Li ACPI_LV_VERBOSE
582 .Qq Li ACPI_LV_VERBOSITY3
583 .It Li ACPI_LV_INIT_NAMES
584 Needs to be specified separately
586 Needs to be specified separately
589 Selection of the appropriate layer and level values is important
590 to avoid massive amounts of debugging output.
591 For example, the following configuration is a good way to gather initial
593 It enables debug output for both ACPICA and the
595 driver, printing basic information about errors, warnings, and progress.
596 .Bd -literal -offset indent
597 debug.acpi.layer="ACPI_ALL_COMPONENTS ACPI_ALL_DRIVERS"
598 debug.acpi.level="ACPI_LV_ALL_EXCEPTIONS"
601 Debugging output by the ACPICA subsystem is prefixed with the
602 module name in lowercase, followed by a source line number.
605 code follows the same format, but
606 the module name is uppercased.
607 .Sh OVERRIDING YOUR BIOS BYTECODE
608 ACPI interprets bytecode named AML
609 (ACPI Machine Language)
610 provided by the BIOS vendor as a memory image at boot time.
611 Sometimes, the AML code contains a bug that does not appear when parsed
612 by the Microsoft implementation.
614 provides a way to override it with your own AML code to work around
615 or debug such problems.
616 Note that all AML in your DSDT and any SSDT tables is overridden.
618 In order to load your AML code, copy it to
619 .Pa /boot/kernel/acpi_dsdt.aml
620 and add the following line to
621 .Pa /boot/loader.conf .
622 .Bd -literal -offset indent
626 In order to prepare your AML code, you will need the
630 utilities and some ACPI knowledge.
637 .Xr acpi_panasonic 4 ,
640 .Xr acpi_thinkpad 4 ,
655 .%A "Hewlett-Packard Corporation"
656 .%A "Intel Corporation"
657 .%A "Microsoft Corporation"
658 .%A "Phoenix Technologies Ltd."
659 .%A "Toshiba Corporation"
660 .%D November 13, 2013
661 .%T "Advanced Configuration and Power Interface Specification"
662 .%O http://acpi.info/spec.htm
666 The ACPICA subsystem is developed and maintained by
667 Intel Architecture Labs.
669 The following people made notable contributions to the ACPI subsystem
673 .An Takanori Watanabe Aq Mt takawata@jp.FreeBSD.org ,
674 .An Mitsuru IWASAKI Aq Mt iwasaki@jp.FreeBSD.org ,
675 .An Munehiro Matsuda ,
677 the ACPI-jp mailing list at
678 .Aq Mt acpi-jp@jp.FreeBSD.org ,
679 and many other contributors.
681 This manual page was written by
682 .An Michael Smith Aq Mt msmith@FreeBSD.org .
684 Many BIOS versions have serious bugs that may cause system instability,
685 break suspend/resume, or prevent devices from operating properly due to
686 IRQ routing problems.
687 Upgrade your BIOS to the latest version available from the vendor before
688 deciding it is a problem with
693 .\"CPU idle power management drive conflicts with the local APIC (LAPIC)
695 .\"Disable APIC mode with
696 .\".Va hint.apic.0.disabled
701 .\"states if APIC mode is enabled.