Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
ACPI(4)			    Kernel Interfaces Manual		       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/Microsoft/Compaq/Toshiba
       ACPI  standard.	This support includes platform hardware	discovery (su-
       perseding the PnP and PCI BIOS),	as well	as power management (supersed-
       ing 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.

SYSCTLS
       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 algo-
	       rithm 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 transition  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	inter-
	       rupt occurs.

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 enabled.

       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  dis-
	       abled  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  in-
	       creasing	    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 problems for you.

       hw.acpi.serialize_methods
	       Allow  override	of whether methods execute in parallel or not.
	       Enable	 this	 for	serial	  behavior,    which	 fixes
	       "AE_ALREADY_EXISTS"  errors  for	 AML that really cannot	handle
	       parallel	method execution.  It is off  by  default  since  this
	       breaks recursive	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 environment vari-
       able 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.	 Disabling all
       or part of ACPI on non-i386 platforms (i.e., platforms where ACPI  sup-
       port is mandatory) may result in	a non-functional system.

       The  acpi  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 debug.acpi.disabled.  Multiple entries 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 entirely.

       children	    (feature)  Attaches	 standard ACPI sub-drivers and devices
		    enumerated in the ACPI namespace.  Disabling  this	has  a
		    similar  effect  to	 disabling "bus", except that the ACPI
		    namespace will still be scanned.

       button	    (device) Supports ACPI button devices (typically power and
		    sleep buttons).

       cmbat	    (device) Control-method batteries device.

       cpu	    (device) Supports CPU power-saving and speed-setting func-
		    tions.

       ec	    (device) Supports the ACPI Embedded	Controller  interface,
		    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 automatically dis-
		    able ACPI functionality based on the XSDT table's OEM ven-
		    dor	name and revision date.

       pci	    (device) Supports Host to PCI bridges.

       pci_link	    (feature) Performs PCI interrupt routing.

       sysresource  (device) Pseudo-devices containing	resources  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 which may conflict  with  agp
		    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-separated 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  interpreter	 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 (unused)
       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_VERBOSITY3"

       Selection  of  the  appropriate	layer and level	values is important to
       avoid massive amounts of	debugging output.  For example,	the  following
       configuration  is a good	way to gather initial information.  It enables
       debug output for	both ACPI-CA and the acpi driver, printing  basic  in-
       formation 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 up-
       percased.

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  Microsoft
       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 in-
       clude 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 <takawata@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@FreeBSD.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.

FreeBSD	5.4		       February	13, 2005		       ACPI(4)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=acpi&sektion=4&manpath=FreeBSD+5.4-RELEASE+and+Ports>

home | help