6b74f9b7f5
* Use the cpu_idle_hook() to do idling for C1-C3. * Use both _CST and the FADT to detect Cx states. * Use both _PTC and P_CNT for controlling throttling. * Add a notify handler to detect changes in _CST and _PSS * Call the _INI function for each processor if present. This will be done by ACPI-CA in the future. * Fix a bug on SMP systems where CPUs will attach multiple times if the bus is rescan. * Document new sysctls for controlling idling.
395 lines
9.9 KiB
Groff
395 lines
9.9 KiB
Groff
.\"
|
|
.\" Copyright (c) 2001 Michael Smith
|
|
.\" All rights reserved.
|
|
.\"
|
|
.\" Redistribution and use in source and binary forms, with or without
|
|
.\" modification, are permitted provided that the following conditions
|
|
.\" are met:
|
|
.\" 1. Redistributions of source code must retain the above copyright
|
|
.\" notice, this list of conditions and the following disclaimer.
|
|
.\" 2. Redistributions in binary form must reproduce the above copyright
|
|
.\" notice, this list of conditions and the following disclaimer in the
|
|
.\" documentation and/or other materials provided with the distribution.
|
|
.\"
|
|
.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
|
|
.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
|
|
.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
|
.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
|
.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
|
.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
|
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
|
.\" SUCH DAMAGE.
|
|
.\"
|
|
.\" $FreeBSD$
|
|
.\"
|
|
.Dd July 2, 2001
|
|
.Dt ACPI 4
|
|
.Os
|
|
.Sh NAME
|
|
.Nm acpi
|
|
.Nd Advanced Configuration and Power Management support
|
|
.Sh SYNOPSIS
|
|
.Cd "device acpi"
|
|
.Pp
|
|
.Cd "options ACPI_DEBUG"
|
|
.Sh DESCRIPTION
|
|
The
|
|
.Nm
|
|
driver provides support for the Intel/Microsoft/Compaq/Toshiba ACPI
|
|
standard.
|
|
This support includes platform hardware discovery (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.
|
|
.Pp
|
|
Note that the
|
|
.Nm
|
|
driver is automatically loaded by the bootloader, and should not normally
|
|
be compiled into the kernel.
|
|
.Sh ENVIRONMENT
|
|
This support is still experimental, and thus there are many debugging
|
|
and tuning options which are managed via the kernel environment
|
|
space, and set in the
|
|
.Xr loader 8
|
|
before booting the kernel.
|
|
.Pp
|
|
Debugging is separated between layers and levels, where a layer is
|
|
a portion of the ACPI subsystem, and a level is a particular kind
|
|
of debugging output.
|
|
.Pp
|
|
Both layers and levels are specified as a whitespace-separated list of
|
|
tokens, with layers listed in
|
|
.Va debug.acpi.layer
|
|
and levels in
|
|
.Va debug.acpi.level .
|
|
The supported layers are:
|
|
.Pp
|
|
.Bl -item -offset indent -compact
|
|
.It
|
|
.Li ACPI_UTILITIES
|
|
.It
|
|
.Li ACPI_HARDWARE
|
|
.It
|
|
.Li ACPI_EVENTS
|
|
.It
|
|
.Li ACPI_TABLES
|
|
.It
|
|
.Li ACPI_NAMESPACE
|
|
.It
|
|
.Li ACPI_PARSER
|
|
.It
|
|
.Li ACPI_DISPATCHER
|
|
.It
|
|
.Li ACPI_EXECUTER
|
|
.It
|
|
.Li ACPI_RESOURCES
|
|
.It
|
|
.Li ACPI_CA_DEBUGGER
|
|
.It
|
|
.Li ACPI_OS_SERVICES
|
|
.It
|
|
.Li ACPI_CA_DISASSEMBLER
|
|
.It
|
|
.Li ACPI_ALL_COMPONENTS
|
|
.It
|
|
.Li ACPI_BUS
|
|
.It
|
|
.Li ACPI_SYSTEM
|
|
.It
|
|
.Li ACPI_POWER
|
|
.It
|
|
.Li ACPI_EC
|
|
.It
|
|
.Li ACPI_AC_ADAPTER
|
|
.It
|
|
.Li ACPI_BATTERY
|
|
.It
|
|
.Li ACPI_BUTTON
|
|
.It
|
|
.Li ACPI_PROCESSOR
|
|
.It
|
|
.Li ACPI_THERMAL
|
|
.It
|
|
.Li ACPI_FAN
|
|
.It
|
|
.Li ACPI_ALL_DRIVERS
|
|
.El
|
|
.Pp
|
|
The supported levels are:
|
|
.Pp
|
|
.Bl -item -offset indent -compact
|
|
.It
|
|
.Li ACPI_LV_ERROR
|
|
.It
|
|
.Li ACPI_LV_WARN
|
|
.It
|
|
.Li ACPI_LV_INIT
|
|
.It
|
|
.Li ACPI_LV_DEBUG_OBJECT
|
|
.It
|
|
.Li ACPI_LV_INFO
|
|
.It
|
|
.Li ACPI_LV_ALL_EXCEPTIONS
|
|
.It
|
|
.Li ACPI_LV_INIT_NAMES
|
|
.It
|
|
.Li ACPI_LV_PARSE
|
|
.It
|
|
.Li ACPI_LV_LOAD
|
|
.It
|
|
.Li ACPI_LV_DISPATCH
|
|
.It
|
|
.Li ACPI_LV_EXEC
|
|
.It
|
|
.Li ACPI_LV_NAMES
|
|
.It
|
|
.Li ACPI_LV_OPREGION
|
|
.It
|
|
.Li ACPI_LV_BFIELD
|
|
.It
|
|
.Li ACPI_LV_TABLES
|
|
.It
|
|
.Li ACPI_LV_VALUES
|
|
.It
|
|
.Li ACPI_LV_OBJECTS
|
|
.It
|
|
.Li ACPI_LV_RESOURCES
|
|
.It
|
|
.Li ACPI_LV_USER_REQUESTS
|
|
.It
|
|
.Li ACPI_LV_PACKAGE
|
|
.It
|
|
.Li ACPI_LV_VERBOSITY1
|
|
.It
|
|
.Li ACPI_LV_ALLOCATIONS
|
|
.It
|
|
.Li ACPI_LV_FUNCTIONS
|
|
.It
|
|
.Li ACPI_LV_OPTIMIZATIONS
|
|
.It
|
|
.Li ACPI_LV_VERBOSITY2
|
|
.It
|
|
.Li ACPI_LV_ALL
|
|
.It
|
|
.Li ACPI_LV_MUTEX
|
|
.It
|
|
.Li ACPI_LV_THREADS
|
|
.It
|
|
.Li ACPI_LV_IO
|
|
.It
|
|
.Li ACPI_LV_INTERRUPTS
|
|
.It
|
|
.Li ACPI_LV_VERBOSITY3
|
|
.It
|
|
.Li ACPI_LV_AML_DISASSEMBLE
|
|
.It
|
|
.Li ACPI_LV_VERBOSE_INFO
|
|
.It
|
|
.Li ACPI_LV_FULL_TABLES
|
|
.It
|
|
.Li ACPI_LV_EVENTS
|
|
.It
|
|
.Li ACPI_LV_VERBOSE
|
|
.El
|
|
.Pp
|
|
Selection of the appropriate layer and level values is important
|
|
to avoid massive amounts of debugging output.
|
|
Check the code to see which you need.
|
|
.Pp
|
|
Debugging output by the ACPI CA subsystem is prefixed with the
|
|
module name in lowercase, followed by a source line number.
|
|
Output from the
|
|
.Fx Ns -local
|
|
code follows the same format, but
|
|
the module name is uppercased.
|
|
.Pp
|
|
To disable the
|
|
.Nm
|
|
driver completely, set the kernel environment variable
|
|
.Va 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.
|
|
Non-i386 platforms do not support operating systems which do not use ACPI.
|
|
Disabling all or part of ACPI on non-i386 platforms may result in a
|
|
non-functional system.
|
|
.Pp
|
|
The
|
|
.Nm
|
|
driver comprises a set of drivers, which may be selectively disabled
|
|
in case of problems.
|
|
To disable a sub-driver, list it in the kernel
|
|
environment variable
|
|
.Va debug.acpi.disable .
|
|
.Pp
|
|
ACPI sub-devices and features that can be disabled:
|
|
.Bl -tag -width children
|
|
.It Li bus
|
|
.Pq Vt feature
|
|
Probes and attaches subdevices.
|
|
Disabling will avoid scanning the ACPI namespace entirely.
|
|
.It Li children
|
|
.Pq Vt feature
|
|
Attaches standard ACPI sub-drivers and devices enumerated in the
|
|
ACPI namespace.
|
|
Disabling this has a similar effect to disabling
|
|
.Dq Li bus ,
|
|
except that the
|
|
ACPI namespace will still be scanned.
|
|
.It Li button
|
|
.Pq Vt device
|
|
Supports ACPI button devices (typically power and sleep buttons).
|
|
.It Li ec
|
|
.Pq Vt device
|
|
Supports the ACPI Embedded Controller interface, used to
|
|
communicate with embedded platform controllers.
|
|
.It Li isa
|
|
.Pq Vt device
|
|
Supports an ISA bus bridge defined in the ACPI namespace,
|
|
typically as a child of a PCI bus.
|
|
.It Li lid
|
|
.Pq Vt device
|
|
Supports an ACPI laptop lid switch, which typically puts a
|
|
system to sleep.
|
|
.It Li pci
|
|
.Pq Vt device
|
|
Supports Host to PCI bridges.
|
|
.It Li cpu
|
|
.Pq Vt device
|
|
Supports CPU power-saving and speed-setting functions.
|
|
.It Li thermal
|
|
.Pq Vt device
|
|
Supports system cooling and heat management.
|
|
.It Li timer
|
|
.Pq Vt device
|
|
Implements a timecounter using the ACPI fixed-frequency timer.
|
|
.El
|
|
.Pp
|
|
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
|
|
.Va 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.
|
|
.Sh 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 problem that does not appear in the Microsoft implementation.
|
|
So we provide a way to override it with your own AML code.
|
|
.Pp
|
|
In order to load your AML code,
|
|
you must edit
|
|
.Pa /boot/loader.conf
|
|
and
|
|
include the following lines.
|
|
.Bd -literal -offset indent
|
|
acpi_dsdt_load="YES"
|
|
acpi_dsdt_name="/boot/acpi_dsdt.aml" #You may change the name.
|
|
.Ed
|
|
.Pp
|
|
In order to prepare your AML code, you will need the
|
|
.Xr acpidump 8
|
|
and
|
|
.Xr iasl 1
|
|
utilities and some ACPI knowledge.
|
|
.Sh TUNABLES
|
|
.Bl -tag -width indent
|
|
.It Va acpi_dsdt_load
|
|
Enables loading of a custom ACPI DSDT.
|
|
.It Va acpi_dsdt_name
|
|
Name of the DSDT table to load, if loading is enabled.
|
|
.It Va debug.acpi.disable
|
|
Selectively disables portions of ACPI for debugging purposes.
|
|
.It Va hint.acpi.0.disabled
|
|
Disables all of ACPI.
|
|
.It Va hw.acpi.ec.poll_timeout
|
|
Delay in milliseconds to wait for the EC to respond. Try increasing this
|
|
number if you get the error
|
|
.Er AE_NO_HARDWARE_RESPONSE .
|
|
.It Va hw.acpi.no_reset_video
|
|
Disables 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 1 if necessary.
|
|
.It Va hw.acpi.os_name
|
|
Some systems' ASL may have problems because they look for names
|
|
of Microsoft operating systems. This tunable overrides the
|
|
default value of "FreeBSD".
|
|
.It Va hw.acpi.pci.link.%d.%d.%d.irq
|
|
Override the interrupt to use.
|
|
.It Va hw.acpi.verbose
|
|
Turn on verbose debugging information about what ACPI is doing.
|
|
.El
|
|
.Sh SYSCTLS
|
|
.Bl -tag -width indent
|
|
.It Va hw.acpi.cpu.performance_speed
|
|
Sets the speed of the CPU, if it supports multiple speeds, while in
|
|
the performance power profile.
|
|
.It Va hw.acpi.cpu.economy_speed
|
|
Sets the speed of the CPU, if it supports multiple speeds, while in
|
|
the economy power profile.
|
|
.It Va hw.acpi.cpu.cx_history
|
|
Debugging information listing all sleep states and the number of
|
|
long and short sleeps for each one.
|
|
The counters are reset when
|
|
.Va hw.acpi.cpu.cx_lowest
|
|
is modified.
|
|
.It Va hw.acpi.cpu.cx_lowest
|
|
Zero-based index of the lowest CPU idle state to use.
|
|
A value of -1 disables ACPI CPU idle states.
|
|
To enable ACPI CPU idling control,
|
|
.Va machdep.cpu_idle_hlt
|
|
must be set to 1.
|
|
.It Va hw.acpi.cpu.cx_supported
|
|
List of supported CPU idle states and their transition latency
|
|
in microseconds.
|
|
.El
|
|
.Sh COMPATIBILITY
|
|
ACPI is only found and supported on i386/ia32, ia64, and amd64.
|
|
.Sh SEE ALSO
|
|
.Xr loader.conf 5 ,
|
|
.Xr acpiconf 8 ,
|
|
.Xr acpidump 8 ,
|
|
.Xr config 8 ,
|
|
.Xr iasl 8
|
|
.Rs
|
|
.%A "Compaq Computer Corporation"
|
|
.%A "Intel Corporation"
|
|
.%A "Microsoft Corporation"
|
|
.%A "Phoenix Technologies Ltd."
|
|
.%A "Toshiba Corporation"
|
|
.%D July 27 2000
|
|
.%T "Advanced Configuration and Power Interface Specification"
|
|
.%O http://acpi.info/spec.htm
|
|
.Re
|
|
.Sh AUTHORS
|
|
.An -nosplit
|
|
The ACPI CA subsystem is developed and maintained by
|
|
Intel Architecture Labs.
|
|
.Pp
|
|
The following people made notable contributions to the ACPI subsystem
|
|
in
|
|
.Fx :
|
|
.An Michael Smith ,
|
|
.An Takanori Watanabe Aq takawata@jp.FreeBSD.org ,
|
|
.An Mitsuru IWASAKI Aq iwasaki@jp.FreeBSD.org ,
|
|
.An Munehiro Matsuda ,
|
|
.An Nate Lawson ,
|
|
the ACPI-jp mailing list at
|
|
.Aq acpi-jp@jp.FreeBSD.org ,
|
|
and many other contributors.
|
|
.Pp
|
|
This manual page was written by
|
|
.An Michael Smith Aq msmith@FreeBSD.org .
|
|
.Sh BUGS
|
|
If the
|
|
.Nm
|
|
driver is loaded as a module when it is already linked as part of the
|
|
kernel, odd things may happen.
|