xref: /freebsd/share/man/man4/acpi.4 (revision d2387d42b8da231a5b95cbc313825fb2aadf26f6)
1.\"
2.\" Copyright (c) 2001 Michael Smith
3.\" All rights reserved.
4.\"
5.\" Redistribution and use in source and binary forms, with or without
6.\" modification, are permitted provided that the following conditions
7.\" are met:
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.
13.\"
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
24.\" SUCH DAMAGE.
25.\"
26.\" $FreeBSD$
27.\"
28.Dd July 2, 2001
29.Dt ACPI 4
30.Os
31.Sh NAME
32.Nm acpi
33.Nd Advanced Configuration and Power Management support
34.Sh SYNOPSIS
35.Cd "device acpi"
36.Pp
37.Cd "options ACPI_DEBUG"
38.Sh DESCRIPTION
39The
40.Nm
41driver provides support for the Intel/Microsoft/Compaq/Toshiba ACPI
42standard.
43This support includes platform hardware discovery (superseding the
44PnP and PCI BIOS), as well as power management (superseding APM) and
45other features.
46ACPI core support is provided by the ACPI CA reference implementation
47from Intel.
48.Pp
49Note that the
50.Nm
51driver is automatically loaded by the bootloader, and should not normally
52be compiled into the kernel.
53.Sh ENVIRONMENT
54This support is still experimental, and thus there are many debugging
55and tuning options which are managed via the kernel environment.
56Tunables can be set at the
57.Xr loader 8
58prompt before booting the kernel or stored in
59.Pa /boot/loader.conf .
60.Pp
61Debugging is separated between layers and levels, where a layer is
62a portion of the ACPI subsystem, and a level is a particular kind
63of debugging output.
64.Pp
65Both layers and levels are specified as a whitespace-separated list of
66tokens, with layers listed in
67.Va debug.acpi.layer
68and levels in
69.Va debug.acpi.level .
70The supported layers are:
71.Pp
72.Bl -item -offset indent -compact
73.It
74.Li ACPI_UTILITIES
75.It
76.Li ACPI_HARDWARE
77.It
78.Li ACPI_EVENTS
79.It
80.Li ACPI_TABLES
81.It
82.Li ACPI_NAMESPACE
83.It
84.Li ACPI_PARSER
85.It
86.Li ACPI_DISPATCHER
87.It
88.Li ACPI_EXECUTER
89.It
90.Li ACPI_RESOURCES
91.It
92.Li ACPI_CA_DEBUGGER
93.It
94.Li ACPI_OS_SERVICES
95.It
96.Li ACPI_CA_DISASSEMBLER
97.It
98.Li ACPI_ALL_COMPONENTS
99.It
100.Li ACPI_AC_ADAPTER
101.It
102.Li ACPI_BATTERY
103.It
104.Li ACPI_BUS
105.It
106.Li ACPI_BUTTON
107.It
108.Li ACPI_EC
109.It
110.Li ACPI_FAN
111.It
112.Li ACPI_POWER
113.It
114.Li ACPI_PROCESSOR
115.It
116.Li ACPI_THERMAL
117.It
118.Li ACPI_TIMER
119.It
120.Li ACPI_ALL_DRIVERS
121.El
122.Pp
123The supported levels are:
124.Pp
125.Bl -item -offset indent -compact
126.It
127.Li ACPI_LV_ERROR
128.It
129.Li ACPI_LV_WARN
130.It
131.Li ACPI_LV_INIT
132.It
133.Li ACPI_LV_DEBUG_OBJECT
134.It
135.Li ACPI_LV_INFO
136.It
137.Li ACPI_LV_ALL_EXCEPTIONS
138.It
139.Li ACPI_LV_INIT_NAMES
140.It
141.Li ACPI_LV_PARSE
142.It
143.Li ACPI_LV_LOAD
144.It
145.Li ACPI_LV_DISPATCH
146.It
147.Li ACPI_LV_EXEC
148.It
149.Li ACPI_LV_NAMES
150.It
151.Li ACPI_LV_OPREGION
152.It
153.Li ACPI_LV_BFIELD
154.It
155.Li ACPI_LV_TABLES
156.It
157.Li ACPI_LV_VALUES
158.It
159.Li ACPI_LV_OBJECTS
160.It
161.Li ACPI_LV_RESOURCES
162.It
163.Li ACPI_LV_USER_REQUESTS
164.It
165.Li ACPI_LV_PACKAGE
166.It
167.Li ACPI_LV_VERBOSITY1
168.It
169.Li ACPI_LV_ALLOCATIONS
170.It
171.Li ACPI_LV_FUNCTIONS
172.It
173.Li ACPI_LV_OPTIMIZATIONS
174.It
175.Li ACPI_LV_VERBOSITY2
176.It
177.Li ACPI_LV_ALL
178.It
179.Li ACPI_LV_MUTEX
180.It
181.Li ACPI_LV_THREADS
182.It
183.Li ACPI_LV_IO
184.It
185.Li ACPI_LV_INTERRUPTS
186.It
187.Li ACPI_LV_VERBOSITY3
188.It
189.Li ACPI_LV_AML_DISASSEMBLE
190.It
191.Li ACPI_LV_VERBOSE_INFO
192.It
193.Li ACPI_LV_FULL_TABLES
194.It
195.Li ACPI_LV_EVENTS
196.It
197.Li ACPI_LV_VERBOSE
198.El
199.Pp
200Selection of the appropriate layer and level values is important
201to avoid massive amounts of debugging output.
202Check the code to see which you need.
203.Pp
204Debugging output by the ACPI CA subsystem is prefixed with the
205module name in lowercase, followed by a source line number.
206Output from the
207.Fx Ns -local
208code follows the same format, but
209the module name is uppercased.
210.Pp
211To disable the
212.Nm
213driver completely, set the kernel environment variable
214.Va hint.acpi.0.disabled
215to 1.
216.Pp
217Some i386 machines totally fail to operate with some or all of ACPI disabled.
218Other i386 machines fail with ACPI enabled.
219Non-i386 platforms do not support operating systems which do not use ACPI.
220Disabling all or part of ACPI on non-i386 platforms may result in a
221non-functional system.
222.Pp
223The
224.Nm
225driver comprises a set of drivers, which may be selectively disabled
226in case of problems.
227To disable a sub-driver, list it in the kernel
228environment variable
229.Va debug.acpi.disabled .
230Multiple entries can be listed, separated by a space.
231.Pp
232ACPI sub-devices and features that can be disabled:
233.Bl -tag -width sysresource
234.It Li all
235Disable all ACPI features and devices.
236.It Li bus
237.Pq Vt feature
238Probes and attaches subdevices.
239Disabling will avoid scanning the ACPI namespace entirely.
240.It Li children
241.Pq Vt feature
242Attaches standard ACPI sub-drivers and devices enumerated in the
243ACPI namespace.
244Disabling this has a similar effect to disabling
245.Dq Li bus ,
246except that the
247ACPI namespace will still be scanned.
248.It Li button
249.Pq Vt device
250Supports ACPI button devices (typically power and sleep buttons.)
251.It Li cmbat
252.Pq Vt device
253Control-method batteries device.
254.It Li cpu
255.Pq Vt device
256Supports CPU power-saving and speed-setting functions.
257.It Li ec
258.Pq Vt device
259Supports the ACPI Embedded Controller interface, used to communicate
260with embedded platform controllers.
261.It Li isa
262.Pq Vt device
263Supports an ISA bus bridge defined in the ACPI namespace,
264typically as a child of a PCI bus.
265.It Li lid
266.Pq Vt device
267Supports an ACPI laptop lid switch, which typically puts a
268system to sleep.
269.It Li quirks
270.Pq Vt feature
271Don't honor quirks.
272Quirks automatically disable ACPI functionality based on the XSDT table's
273OEM vendor name and revision date.
274.It Li pci
275.Pq Vt device
276Supports Host to PCI bridges.
277.It Li pci_link
278.Pq Vt feature
279Performs PCI interrupt routing.
280.It Li sysresource
281.Pq Vt device
282Pseudo-devices containing resources which ACPI claims.
283.It Li thermal
284.Pq Vt device
285Supports system cooling and heat management.
286.It Li timer
287.Pq Vt device
288Implements a timecounter using the ACPI fixed-frequency timer.
289.El
290.Pp
291It is also possible to avoid portions of the ACPI namespace which
292may be causing problems, by listing the full path of the root of
293the region to be avoided in the kernel environment variable
294.Va debug.acpi.avoid .
295The object and all of its children will be ignored during the
296bus/children scan of the namespace.
297The ACPI CA code will still
298know about the avoided region.
299.Sh OVERRIDING YOUR BIOS BYTECODE
300ACPI interprets bytecode named AML, ACPI Machine Language, provided by the BIOS
301vendor as a memory image at boot time.
302Sometimes, the AML code contains
303a problem that does not appear in the Microsoft implementation.
304So we provide a way to override it with your own AML code.
305.Pp
306In order to load your AML code,
307you must edit
308.Pa /boot/loader.conf
309and
310include the following lines.
311.Bd -literal -offset indent
312acpi_dsdt_load="YES"
313acpi_dsdt_name="/boot/acpi_dsdt.aml" #You may change the name.
314.Ed
315.Pp
316In order to prepare your AML code, you will need the
317.Xr acpidump 8
318and
319.Xr iasl 1
320utilities and some ACPI knowledge.
321.Sh TUNABLES
322.Bl -tag -width indent
323.It Va acpi_dsdt_load
324Enables loading of a custom ACPI DSDT.
325.It Va acpi_dsdt_name
326Name of the DSDT table to load, if loading is enabled.
327.It Va debug.acpi.disabled
328Selectively disables portions of ACPI for debugging purposes.
329.It Va hint.acpi.0.disabled
330Disables all of ACPI.
331.It Va hw.acpi.ec.poll_timeout
332Delay in milliseconds to wait for the EC to respond.
333Try increasing this number if you get the error
334.Er AE_NO_HARDWARE_RESPONSE .
335.It Va hw.acpi.reset_video
336Enables calling the VESA reset BIOS vector on the resume path.
337Some graphic chips have problems such as LCD white-out after resume.
338Try setting this to 0 if this causes problems for you.
339.It Va hw.acpi.osname
340Some systems' ASL may have problems because they look for names
341of Microsoft operating systems.
342This tunable overrides the value of the
343.Qq Li \e_OS
344object from its default of
345.Qq Li FreeBSD .
346.It Va hw.acpi.pci.link.%d.%d.%d.irq
347Override the interrupt to use.
348.It Va hw.acpi.verbose
349Turn on verbose debugging information about what ACPI is doing.
350.El
351.Sh SYSCTLS
352.Bl -tag -width indent
353.It Va hw.acpi.cpu.throttle_max
354Maximum value for CPU throttling, equal to 100% of the clock rate.
355.It Va hw.acpi.cpu.throttle_state
356Get or set the current throttling state, from 1 to
357.Va hw.acpi.cpu.throttle_max .
358This scales back the CPU clock rate and the corresponding power consumption.
359.It Va hw.acpi.cpu.cx_history
360Debugging information listing all sleep states and the number of
361long and short sleeps for each one.
362The counters are reset when
363.Va hw.acpi.cpu.cx_lowest
364is modified.
365.It Va hw.acpi.cpu.cx_lowest
366Zero-based index of the lowest CPU idle state to use.
367A scheduling algorithm will select between 0...index for the state
368to use during the next sleep.
369To enable ACPI CPU idling control,
370.Va machdep.cpu_idle_hlt
371must be set to 1.
372.It Va hw.acpi.cpu.cx_supported
373List of supported CPU idle states and their transition latency
374in microseconds.
375Each state has a type, C1-3.
376C1 is equivalent to the ia32 HLT instruction, C2 provides a deeper
377sleep with the same semantics, and C3 provides the deepest sleep
378but additionally requires bus mastering to be disabled.
379Deeper sleeps provide more power savings but increased transition
380latency when an interrupt occurs.
381.El
382.Sh COMPATIBILITY
383ACPI is only found and supported on i386/ia32, ia64, and amd64.
384.Sh SEE ALSO
385.Xr kenv 1 ,
386.Xr acpi_thermal 4 ,
387.Xr device.hints 5 ,
388.Xr loader.conf 5 ,
389.Xr acpiconf 8 ,
390.Xr acpidump 8 ,
391.Xr config 8 ,
392.Xr iasl 8
393.Rs
394.%A "Compaq Computer Corporation"
395.%A "Intel Corporation"
396.%A "Microsoft Corporation"
397.%A "Phoenix Technologies Ltd."
398.%A "Toshiba Corporation"
399.%D August 25, 2003
400.%T "Advanced Configuration and Power Interface Specification"
401.%O http://acpi.info/spec.htm
402.Re
403.Sh AUTHORS
404.An -nosplit
405The ACPI CA subsystem is developed and maintained by
406Intel Architecture Labs.
407.Pp
408The following people made notable contributions to the ACPI subsystem
409in
410.Fx :
411.An Michael Smith ,
412.An Takanori Watanabe Aq takawata@jp.FreeBSD.org ,
413.An Mitsuru IWASAKI Aq iwasaki@jp.FreeBSD.org ,
414.An Munehiro Matsuda ,
415.An Nate Lawson ,
416the ACPI-jp mailing list at
417.Aq acpi-jp@jp.FreeBSD.org ,
418and many other contributors.
419.Pp
420This manual page was written by
421.An Michael Smith Aq msmith@FreeBSD.org .
422.Sh BUGS
423If the
424.Nm
425driver is loaded as a module when it is already linked as part of the
426kernel, odd things may happen.
427