acpi(4)
NAME
acpi - Advanced Configuration and Power Management support
SYNOPSIS
device acpi options ACPI_DEBUG
DESCRIPTION
- The acpi driver provides support for the Intel/Mi
- crosoft/Compaq/Toshiba
ACPI standard. This support includes platform hardware dis - covery (superseding the PnP and PCI BIOS), as well as power management
- (superseding
APM) and other features. ACPI core support is provided by - the ACPI CA
reference implementation from Intel. - Note that the acpi driver is automatically loaded by the
- loader(8), and
should only be compiled into the kernel on platforms where - ACPI is mandatory.
SYSCTL VARIABLES
- The acpi driver is intended to provide power management
- without user
intervention. Thus, some of these sysctls are controlled - automatically
by the power_profile rc(8) script, which can be configured - via
rc.conf(5). If values are specified manually, they may be - overridden.
- hw.acpi.cpu.cx_usage
- Debugging information listing the percent of total
- usage for each
sleep state. The values are reset when - hw.acpi.cpu.cx_lowest is
modified. - hw.acpi.cpu.cx_lowest
- Lowest Cx state to use for idling the CPU. A
- scheduling algorithm will select states between C1 and this setting
- as system
load dictates. To enable ACPI CPU idling control,
machdep.cpu_idle_hlt must be set to 1. - hw.acpi.cpu.cx_supported
- List of supported CPU idle states and their transi
- tion latency in
microseconds. Each state has a type (e.g., C2). C1 - is equivalent to the ia32 HLT instruction, C2 provides a
- deeper sleep with
the same semantics, and C3 provides the deepest - sleep but additionally requires bus mastering to be disabled.
- States greater
than C3 provide even more power savings with the - same semantics
as the C3 state. Deeper sleeps provide more power - savings but
increased transition latency when an interrupt oc - curs.
LOADER TUNABLES
- Tunables can be set at the loader(8) prompt before booting
- the kernel or
stored in /boot/loader.conf. - acpi_dsdt_load
- Enables loading of a custom ACPI DSDT.
- acpi_dsdt_name
- Name of the DSDT table to load, if loading is en
- abled.
- debug.acpi.disabled
- Selectively disables portions of ACPI for debugging
- purposes.
- debug.acpi.max_threads
- Specify the number of task threads that are started
- on boot.
Limiting this to 1 may help work around various - BIOSes that cannot handle parallel requests. The default value is
- 3.
- debug.acpi.quirks
- Override any automatic quirks completely.
- hint.acpi.0.disabled
- Set this to 1 to disable all of ACPI. If ACPI has
- been disabled
on your system due to a blacklist entry for your - BIOS, you can
set this to 0 to re-enable ACPI for testing. - hw.acpi.ec.poll_timeout
- Delay in milliseconds to wait for the EC to respond.
- Try
increasing this number if you get the error
"AE_NO_HARDWARE_RESPONSE". - hw.acpi.host_mem_start
- Override the assumed memory starting address for PCI
- host
bridges. - hw.acpi.pci.link.%d.%d.%d.irq
- Override the interrupt to use.
- hw.acpi.reset_video
- Enables calling the VESA reset BIOS vector on the
- resume path.
Some graphic chips have problems such as LCD white - out after
resume. Try setting this to 0 if this causes prob - lems for you.
- hw.acpi.serialize_methods
- Allow override of whether methods execute in paral
- lel or not.
Enable this for serial behavior, which fixes "AE_AL - READY_EXISTS"
errors for AML that really cannot handle parallel - method execution. It is off by default since this breaks recur
- sive methods
and some IBMs use such code. - hw.acpi.verbose
- Turn on verbose debugging information about what
- ACPI is doing.
DISABLING ACPI
- Since ACPI support on different platforms varies greatly,
- there are many
debugging and tuning options available. - For machines known not to work with acpi enabled, there is a
- BIOS blacklist. Currently, the blacklist only controls whether acpi
- should be disabled or not. In the future, it will have more granularity
- to control
features (the infrastructure for that is already there). - To enable acpi (for debugging purposes, etc.) on machines
- that are on the
blacklist, set the kernel environment variable - hint.acpi.0.disabled to 0.
Before trying this, consider updating your BIOS to a more - recent version
that may be compatible with ACPI. - To disable the acpi driver completely, set the kernel envi
- ronment variable hint.acpi.0.disabled to 1.
- Some i386 machines totally fail to operate with some or all
- of ACPI disabled. Other i386 machines fail with ACPI enabled. Dis
- abling all or
part of ACPI on non-i386 platforms (i.e., platforms where - ACPI support is
mandatory) may result in a non-functional system. - The acpi driver comprises a set of drivers, which may be se
- lectively disabled in case of problems. To disable a sub-driver, list it
- in the kernel environment variable debug.acpi.disabled. Multiple en
- tries can be
listed, separated by a space. - ACPI sub-devices and features that can be disabled:
- all Disable all ACPI features and devices.
- acad (device) Supports AC adapter.
- bus (feature) Probes and attaches subdevices.
- Disabling
- will avoid scanning the ACPI namespace en
- tirely.
- children (feature) Attaches standard ACPI sub
- drivers and devices
- enumerated in the ACPI namespace. Dis
- abling this has a
similar effect to disabling ``bus'', except - that the
ACPI namespace will still be scanned. - button (device) Supports ACPI button devices (typ
- ically power
- and sleep buttons).
- cmbat (device) Control-method batteries device.
- cpu (device) Supports CPU power-saving and
- speed-setting
- functions.
- ec (device) Supports the ACPI Embedded Con
- troller inter
- face, used to communicate with embedded
- platform controllers.
- isa (device) Supports an ISA bus bridge defined
- in the ACPI
- namespace, typically as a child of a PCI
- bus.
- lid (device) Supports an ACPI laptop lid
- switch, which typi
- cally puts a system to sleep.
- quirks (feature) Do not honor quirks. Quirks au
- tomatically
- disable ACPI functionality based on the XS
- DT table's OEM
vendor name and revision date. - pci (device) Supports Host to PCI bridges.
- pci_link (feature) Performs PCI interrupt routing.
- sysresource (device) Pseudo-devices containing re
- sources which ACPI
- claims.
- thermal (device) Supports system cooling and heat
- management.
- timer (device) Implements a timecounter using the
- ACPI fixed
- frequency timer.
- video (device) Supports acpi_video(4) which may
- conflict with
- agp(4) device.
- It is also possible to avoid portions of the ACPI namespace
- which may be
causing problems, by listing the full path of the root of - the region to
be avoided in the kernel environment variable - debug.acpi.avoid. The
object and all of its children will be ignored during the - bus/children
scan of the namespace. The ACPI CA code will still know - about the
avoided region.
DEBUGGING OUTPUT
- To enable debugging output, acpi must be compiled with
- options
ACPI_DEBUG. Debugging output is separated between layers - and levels,
where a layer is a component of the ACPI subsystem, and a - level is a particular kind of debugging output.
- Both layers and levels are specified as a whitespace-sepa
- rated list of
tokens, with layers listed in debug.acpi.layer and levels in debug.acpi.level. - The first set of layers is for ACPI-CA components, and the
- second is for
FreeBSD drivers. The ACPI-CA layer descriptions include the - prefix for
the files they refer to. The supported layers are: - ACPI_UTILITIES Utility ("ut") functions
ACPI_HARDWARE Hardware access ("hw")
ACPI_EVENTS Event and GPE ("ev")
ACPI_TABLES Table access ("tb")
ACPI_NAMESPACE Namespace evaluation ("ns")
ACPI_PARSER AML parser ("ps")
ACPI_DISPATCHER Internal representation of inter - preter state
- ("ds")
- ACPI_EXECUTER Execute AML methods ("ex")
ACPI_RESOURCES Resource parsing ("rs")
ACPI_CA_DEBUGGER Debugger implementation ("db", - "dm")
ACPI_OS_SERVICES Usermode support routines ("os")
ACPI_CA_DISASSEMBLER Disassembler implementation (un - used)
ACPI_ALL_COMPONENTS All the above ACPI-CA components
ACPI_AC_ADAPTER AC adapter driver
ACPI_BATTERY Control-method battery driver
ACPI_BUS ACPI, ISA, and PCI bus drivers
ACPI_BUTTON Power and sleep button driver
ACPI_EC Embedded controller driver
ACPI_FAN Fan driver
ACPI_OEM Platform-specific driver for - hotkeys, LED, etc.
ACPI_POWER Power resource driver
ACPI_PROCESSOR CPU driver
ACPI_THERMAL Thermal zone driver
ACPI_TIMER Timer driver
ACPI_ALL_DRIVERS All the above FreeBSD ACPI drivers - The supported levels are:
- ACPI_LV_ERROR Fatal error conditions
ACPI_LV_WARN Warnings and potential problems
ACPI_LV_INIT Initialization progress
ACPI_LV_DEBUG_OBJECT Stores to objects
ACPI_LV_INFO General information and - progress
ACPI_LV_ALL_EXCEPTIONS All the previous levels
ACPI_LV_INIT_NAMES
ACPI_LV_PARSE
ACPI_LV_LOAD
ACPI_LV_DISPATCH
ACPI_LV_EXEC
ACPI_LV_NAMES
ACPI_LV_OPREGION
ACPI_LV_BFIELD
ACPI_LV_TABLES
ACPI_LV_VALUES
ACPI_LV_OBJECTS
ACPI_LV_RESOURCES
ACPI_LV_USER_REQUESTS
ACPI_LV_PACKAGE
ACPI_LV_VERBOSITY1 All the previous levels
ACPI_LV_ALLOCATIONS
ACPI_LV_FUNCTIONS
ACPI_LV_OPTIMIZATIONS
ACPI_LV_VERBOSITY2
ACPI_LV_ALL
ACPI_LV_MUTEX
ACPI_LV_THREADS
ACPI_LV_IO
ACPI_LV_INTERRUPTS
ACPI_LV_VERBOSITY3 All the previous levels
ACPI_LV_AML_DISASSEMBLE
ACPI_LV_VERBOSE_INFO
ACPI_LV_FULL_TABLES
ACPI_LV_EVENTS
ACPI_LV_VERBOSE All levels after "ACPI_LV_VER - BOSITY3"
- Selection of the appropriate layer and level values is im
- portant to avoid
massive amounts of debugging output. For example, the fol - lowing configuration is a good way to gather initial information. It en
- ables debug
output for both ACPI-CA and the acpi driver, printing basic - information
about errors, warnings, and progress.
debug.acpi.layer="ACPI_ALL_COMPONENTS- ACPI_ALL_DRIVERS"
debug.acpi.level="ACPI_LV_ALL_EXCEPTIONS" - Debugging output by the ACPI CA subsystem is prefixed with
- the module
name in lowercase, followed by a source line number. Output - from the
FreeBSD-local code follows the same format, but the module - name is uppercased.
OVERRIDING YOUR BIOS BYTECODE
- ACPI interprets bytecode named AML (ACPI Machine Language)
- provided by
the BIOS vendor as a memory image at boot time. Sometimes, - the AML code
contains a bug that does not appear when parsed by the Mi - crosoft implementation. FreeBSD provides a way to override it with your
- own AML code
to work around or debug such problems. Note that all AML in - your DSDT
and any SSDT tables is overridden. - In order to load your AML code, you must edit
- /boot/loader.conf and
include the following lines.
acpi_dsdt_load="YES"
acpi_dsdt_name="/boot/acpi_dsdt.aml" # You may change- this name.
- In order to prepare your AML code, you will need the
- acpidump(8) and
iasl(8) utilities and some ACPI knowledge.
COMPATIBILITY
- ACPI is only found and supported on i386/ia32, ia64, and
- amd64.
SEE ALSO
- kenv(1), acpi_thermal(4), device.hints(5), loader.conf(5),
- acpiconf(8),
acpidump(8), config(8), iasl(8) - Compaq Computer Corporation, Intel Corporation, Microsoft
- Corporation,
Phoenix Technologies Ltd., and Toshiba Corporation, Advanced Configuration and Power Interface Specification, August 25, - 2003,
http://acpi.info/spec.htm.
AUTHORS
- The ACPI CA subsystem is developed and maintained by Intel
- Architecture
Labs. - The following people made notable contributions to the ACPI
- subsystem in
FreeBSD: Michael Smith, Takanori Watanabe <takawa - ta@jp.FreeBSD.org>,
Mitsuru IWASAKI <iwasaki@jp.FreeBSD.org>, Munehiro Matsuda, - Nate Lawson,
the ACPI-jp mailing list at <acpi-jp@jp.FreeBSD.org>, and - many other contributors.
- This manual page was written by Michael Smith <msmith@FreeB
- SD.org>.
BUGS
- If the acpi driver is loaded as a module when it is already
- linked as
part of the kernel, odd things may happen. - BSD February 13, 2005