1b6695bd0SMike Smith.\" 2b6695bd0SMike Smith.\" Copyright (c) 2001 Michael Smith 3b6695bd0SMike Smith.\" All rights reserved. 4b6695bd0SMike Smith.\" 5b6695bd0SMike Smith.\" Redistribution and use in source and binary forms, with or without 6b6695bd0SMike Smith.\" modification, are permitted provided that the following conditions 7b6695bd0SMike Smith.\" are met: 8b6695bd0SMike Smith.\" 1. Redistributions of source code must retain the above copyright 9b6695bd0SMike Smith.\" notice, this list of conditions and the following disclaimer. 10b6695bd0SMike Smith.\" 2. Redistributions in binary form must reproduce the above copyright 11b6695bd0SMike Smith.\" notice, this list of conditions and the following disclaimer in the 12b6695bd0SMike Smith.\" documentation and/or other materials provided with the distribution. 13b6695bd0SMike Smith.\" 14b6695bd0SMike Smith.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 15b6695bd0SMike Smith.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 16b6695bd0SMike Smith.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 17b6695bd0SMike Smith.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 18b6695bd0SMike Smith.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 19b6695bd0SMike Smith.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 20b6695bd0SMike Smith.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 21b6695bd0SMike Smith.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 22b6695bd0SMike Smith.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 23b6695bd0SMike Smith.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 24b6695bd0SMike Smith.\" SUCH DAMAGE. 25b6695bd0SMike Smith.\" 26*0a34d050SJohn Baldwin.Dd July 15, 2024 27b6695bd0SMike Smith.Dt ACPI 4 28b6695bd0SMike Smith.Os 29b6695bd0SMike Smith.Sh NAME 30b6695bd0SMike Smith.Nm acpi 31b6695bd0SMike Smith.Nd Advanced Configuration and Power Management support 32b6695bd0SMike Smith.Sh SYNOPSIS 3309f84dd1SRuslan Ermilov.Cd "device acpi" 34b6695bd0SMike Smith.Pp 3509f84dd1SRuslan Ermilov.Cd "options ACPI_DEBUG" 36ba526146SWojciech A. Koszek.Cd "options DDB" 37b6695bd0SMike Smith.Sh DESCRIPTION 38b6695bd0SMike SmithThe 39b6695bd0SMike Smith.Nm 40b6695bd0SMike Smithdriver provides support for the Intel/Microsoft/Compaq/Toshiba ACPI 41b6695bd0SMike Smithstandard. 42b6695bd0SMike SmithThis support includes platform hardware discovery (superseding the 43b6695bd0SMike SmithPnP and PCI BIOS), as well as power management (superseding APM) and 44b6695bd0SMike Smithother features. 45b6695bd0SMike SmithACPI core support is provided by the ACPI CA reference implementation 46b6695bd0SMike Smithfrom Intel. 47d1f717d1SMike Smith.Pp 48d1f717d1SMike SmithNote that the 49d1f717d1SMike Smith.Nm 502010c542SRuslan Ermilovdriver is automatically loaded by the 512010c542SRuslan Ermilov.Xr loader 8 , 522010c542SRuslan Ermilovand should only be 53edd84e48SNate Lawsoncompiled into the kernel on platforms where ACPI is mandatory. 5444cb3ab0SHiroki Sato.Sh SYSCTL VARIABLES 55edd84e48SNate LawsonThe 56edd84e48SNate Lawson.Nm 57edd84e48SNate Lawsondriver is intended to provide power management without user intervention. 5893870c05SNate LawsonIf the default settings are not optimal, the following sysctls can be 5993870c05SNate Lawsonused to modify or monitor 6093870c05SNate Lawson.Nm 6193870c05SNate Lawsonbehavior. 620782e8faSChristian BruefferNote that some variables will be available only if the given hardware supports 630782e8faSChristian Bruefferthem (such as 640782e8faSChristian Brueffer.Va hw.acpi.acline ) . 65edd84e48SNate Lawson.Bl -tag -width indent 66ef47c93fSJung-uk Kim.It Va debug.acpi.enable_debug_objects 67ef47c93fSJung-uk KimEnable dumping Debug objects without 68ef47c93fSJung-uk Kim.Cd "options ACPI_DEBUG" . 69ef47c93fSJung-uk KimDefault is 0, ignore Debug objects. 70b57a73f8SKonstantin Belousov.It Va dev.cpu.N.cx_usage 71edd84e48SNate LawsonDebugging information listing the percent of total usage for each sleep state. 72edd84e48SNate LawsonThe values are reset when 73b57a73f8SKonstantin Belousov.Va dev.cpu.N.cx_lowest 74edd84e48SNate Lawsonis modified. 75b57a73f8SKonstantin Belousov.It Va dev.cpu.N.cx_lowest 76edd84e48SNate LawsonLowest Cx state to use for idling the CPU. 7703335ffbSYaroslav TykhiyA scheduling algorithm will select states between 7803335ffbSYaroslav Tykhiy.Li C1 7903335ffbSYaroslav Tykhiyand this setting 80edd84e48SNate Lawsonas system load dictates. 81edd84e48SNate LawsonTo enable ACPI CPU idling control, 82947bb4a4SAndriy Gapon.Va machdep.idle 83947bb4a4SAndriy Gaponshould be set to 84947bb4a4SAndriy Gapon.Li acpi 85947bb4a4SAndriy Gaponif it is listed in 860782e8faSChristian Brueffer.Va machdep.idle_available . 876882064dSFelix Johnson.It Va dev.cpu.N.cx_supported 88edd84e48SNate LawsonList of supported CPU idle states and their transition latency 89edd84e48SNate Lawsonin microseconds. 9003335ffbSYaroslav TykhiyEach state has a type (e.g., 9103335ffbSYaroslav Tykhiy.Li C2 ) . 9203335ffbSYaroslav Tykhiy.Li C1 9303335ffbSYaroslav Tykhiyis equivalent to the ia32 9403335ffbSYaroslav Tykhiy.Li HLT 9503335ffbSYaroslav Tykhiyinstruction, 9603335ffbSYaroslav Tykhiy.Li C2 9703335ffbSYaroslav Tykhiyprovides a deeper 9803335ffbSYaroslav Tykhiysleep with the same semantics, and 9903335ffbSYaroslav Tykhiy.Li C3 10003335ffbSYaroslav Tykhiyprovides the deepest sleep 101edd84e48SNate Lawsonbut additionally requires bus mastering to be disabled. 10203335ffbSYaroslav TykhiyStates greater than 10303335ffbSYaroslav Tykhiy.Li C3 10403335ffbSYaroslav Tykhiyprovide even more power savings with the same 10503335ffbSYaroslav Tykhiysemantics as the 10603335ffbSYaroslav Tykhiy.Li C3 10703335ffbSYaroslav Tykhiystate. 108edd84e48SNate LawsonDeeper sleeps provide more power savings but increased transition 109edd84e48SNate Lawsonlatency when an interrupt occurs. 110b57a73f8SKonstantin Belousov.It Va dev.cpu.N.cx_method 111b57a73f8SKonstantin BelousovList of supported CPU idle states and their transition methods, as 112b57a73f8SKonstantin Belousovdirected by the firmware. 113b57a73f8SKonstantin Belousov.It Va hw.acpi.acline 114b57a73f8SKonstantin BelousovAC line state (1 means online, 0 means on battery power). 11593870c05SNate Lawson.It Va hw.acpi.disable_on_reboot 11693870c05SNate LawsonDisable ACPI during the reboot process. 11793870c05SNate LawsonMost systems reboot fine with ACPI still enabled, but some require 11893870c05SNate Lawsonexiting to legacy mode first. 11993870c05SNate LawsonDefault is 0, leave ACPI enabled. 12093870c05SNate Lawson.It Va hw.acpi.handle_reboot 12193870c05SNate LawsonUse the ACPI Reset Register capability to reboot the system. 12293870c05SNate LawsonSome newer systems require use of this register, while some only work 12393870c05SNate Lawsonwith legacy rebooting support. 12493870c05SNate Lawson.It Va hw.acpi.lid_switch_state 12513a8aa9fSNate LawsonSuspend state 12603335ffbSYaroslav Tykhiy.Pq Li S1 Ns \[en] Ns Li S5 127970ffdceSYuri Pankovto enter when the lid switch (i.e., a notebook screen) is closed, or 12803335ffbSYaroslav Tykhiy.Dq Li NONE 129970ffdceSYuri Pankov.Pq do nothing . 130970ffdceSYuri PankovDefault is 131970ffdceSYuri Pankov.Dq Li NONE . 13293870c05SNate Lawson.It Va hw.acpi.power_button_state 13313a8aa9fSNate LawsonSuspend state 13403335ffbSYaroslav Tykhiy.Pq Li S1 Ns \[en] Ns Li S5 135970ffdceSYuri Pankovto enter when the power button is pressed, or 136970ffdceSYuri Pankov.Dq Li NONE 137970ffdceSYuri Pankov.Pq do nothing . 13813a8aa9fSNate LawsonDefault is 13903335ffbSYaroslav Tykhiy.Li S5 14013a8aa9fSNate Lawson(power-off nicely). 14193870c05SNate Lawson.It Va hw.acpi.reset_video 14293870c05SNate LawsonReset the video adapter from real mode during the resume path. 14393870c05SNate LawsonSome systems need this help, others have display problems if it is enabled. 14493870c05SNate LawsonDefault is 0 (disabled). 14593870c05SNate Lawson.It Va hw.acpi.s4bios 14613a8aa9fSNate LawsonIndicate whether the system supports 14703335ffbSYaroslav Tykhiy.Li S4BIOS . 14893870c05SNate LawsonThis means that the BIOS can handle all the functions of suspending the 14993870c05SNate Lawsonsystem to disk. 15013a8aa9fSNate LawsonOtherwise, the OS is responsible for suspending to disk 15103335ffbSYaroslav Tykhiy.Pq Li S4OS . 15213a8aa9fSNate LawsonMost current systems do not support 15303335ffbSYaroslav Tykhiy.Li S4BIOS . 15493870c05SNate Lawson.It Va hw.acpi.sleep_button_state 15513a8aa9fSNate LawsonSuspend state 15603335ffbSYaroslav Tykhiy.Pq Li S1 Ns \[en] Ns Li S5 15713a8aa9fSNate Lawsonto enter when the sleep button is pressed. 15893870c05SNate LawsonThis is usually a special function button on the keyboard. 15913a8aa9fSNate LawsonDefault is 16003335ffbSYaroslav Tykhiy.Li S3 16113a8aa9fSNate Lawson(suspend-to-RAM). 16293870c05SNate Lawson.It Va hw.acpi.sleep_delay 16393870c05SNate LawsonWait this number of seconds between preparing the system to suspend and 16493870c05SNate Lawsonactually entering the suspend state. 16593870c05SNate LawsonDefault is 1 second. 16693870c05SNate Lawson.It Va hw.acpi.supported_sleep_state 16713a8aa9fSNate LawsonSuspend states 16803335ffbSYaroslav Tykhiy.Pq Li S1 Ns \[en] Ns Li S5 16913a8aa9fSNate Lawsonsupported by the BIOS. 17093870c05SNate Lawson.Bl -tag -width indent 17103335ffbSYaroslav Tykhiy.It Li S1 17293870c05SNate LawsonQuick suspend to RAM. 17303335ffbSYaroslav TykhiyThe CPU enters a lower power state, but most peripherals are left running. 17403335ffbSYaroslav Tykhiy.It Li S2 17513a8aa9fSNate LawsonLower power state than 17603335ffbSYaroslav Tykhiy.Li S1 , 17713a8aa9fSNate Lawsonbut with the same basic characteristics. 17893870c05SNate LawsonNot supported by many systems. 17903335ffbSYaroslav Tykhiy.It Li S3 18093870c05SNate LawsonSuspend to RAM. 18103335ffbSYaroslav TykhiyMost devices are powered off, and the system stops running except for 18293870c05SNate Lawsonmemory refresh. 18303335ffbSYaroslav Tykhiy.It Li S4 18493870c05SNate LawsonSuspend to disk. 18503335ffbSYaroslav TykhiyAll devices are powered off, and the system stops running. 18693870c05SNate LawsonWhen resuming, the system starts as if from a cold power on. 18793870c05SNate LawsonNot yet supported by 18893870c05SNate Lawson.Fx 18913a8aa9fSNate Lawsonunless 19003335ffbSYaroslav Tykhiy.Li S4BIOS 19113a8aa9fSNate Lawsonis available. 19203335ffbSYaroslav Tykhiy.It Li S5 19393870c05SNate LawsonSystem shuts down cleanly and powers off. 19493870c05SNate Lawson.El 19593870c05SNate Lawson.It Va hw.acpi.verbose 19693870c05SNate LawsonEnable verbose printing from the various ACPI subsystems. 197edd84e48SNate Lawson.El 19844cb3ab0SHiroki Sato.Sh LOADER TUNABLES 1993184cf5aSNate LawsonTunables can be set at the 20087b6284aSRuslan Ermilov.Xr loader 8 2013184cf5aSNate Lawsonprompt before booting the kernel or stored in 2023184cf5aSNate Lawson.Pa /boot/loader.conf . 203b46f4324SNate LawsonMany of these tunables also have a matching 204b46f4324SNate Lawson.Xr sysctl 8 205b46f4324SNate Lawsonentry for access after boot. 206edd84e48SNate Lawson.Bl -tag -width indent 207edd84e48SNate Lawson.It Va acpi_dsdt_load 208edd84e48SNate LawsonEnables loading of a custom ACPI DSDT. 209edd84e48SNate Lawson.It Va acpi_dsdt_name 210edd84e48SNate LawsonName of the DSDT table to load, if loading is enabled. 211edd84e48SNate Lawson.It Va debug.acpi.disabled 212edd84e48SNate LawsonSelectively disables portions of ACPI for debugging purposes. 213ef47c93fSJung-uk Kim.It Va debug.acpi.interpreter_slack 214ef47c93fSJung-uk KimEnable less strict ACPI implementations. 215ef47c93fSJung-uk KimDefault is 1, ignore common BIOS mistakes. 21626db811eSNate Lawson.It Va debug.acpi.max_threads 21726db811eSNate LawsonSpecify the number of task threads that are started on boot. 21826db811eSNate LawsonLimiting this to 1 may help work around various BIOSes that cannot 21926db811eSNate Lawsonhandle parallel requests. 22026db811eSNate LawsonThe default value is 3. 22147bc6a5eSNate Lawson.It Va debug.acpi.quirks 22247bc6a5eSNate LawsonOverride any automatic quirks completely. 223b46f4324SNate Lawson.It Va debug.acpi.resume_beep 224b46f4324SNate LawsonBeep the PC speaker on resume. 225b46f4324SNate LawsonThis can help diagnose suspend/resume problems. 226b46f4324SNate LawsonDefault is 0 (disabled). 227edd84e48SNate Lawson.It Va hint.acpi.0.disabled 228edd84e48SNate LawsonSet this to 1 to disable all of ACPI. 229edd84e48SNate LawsonIf ACPI has been disabled on your system due to a blacklist entry for your 230edd84e48SNate LawsonBIOS, you can set this to 0 to re-enable ACPI for testing. 231edd84e48SNate Lawson.It Va hw.acpi.ec.poll_timeout 232edd84e48SNate LawsonDelay in milliseconds to wait for the EC to respond. 233edd84e48SNate LawsonTry increasing this number if you get the error 2342010c542SRuslan Ermilov.Qq Li AE_NO_HARDWARE_RESPONSE . 23547bc6a5eSNate Lawson.It Va hw.acpi.host_mem_start 23647bc6a5eSNate LawsonOverride the assumed memory starting address for PCI host bridges. 23766f369d0SJung-uk Kim.It Va hw.acpi.install_interface , hw.acpi.remove_interface 23866f369d0SJung-uk KimInstall or remove OS interface(s) to control return value of 23966f369d0SJung-uk Kim.Ql _OSI 2409f4fae39SAlexander Motinquery method. 2419f4fae39SAlexander MotinWhen an OS interface is specified in 24266f369d0SJung-uk Kim.Va hw.acpi.install_interface , 24366f369d0SJung-uk Kim.Li _OSI 24466f369d0SJung-uk Kimquery for the interface returns it is 24566f369d0SJung-uk Kim.Em supported . 24666f369d0SJung-uk KimConversely, when an OS interface is specified in 24766f369d0SJung-uk Kim.Va hw.acpi.remove_interface , 24866f369d0SJung-uk Kim.Li _OSI 24966f369d0SJung-uk Kimquery returns it is 25066f369d0SJung-uk Kim.Em not supported . 25166f369d0SJung-uk KimMultiple interfaces can be specified in a comma-separated list and 2529f4fae39SAlexander Motinany leading white spaces will be ignored. 2539f4fae39SAlexander MotinFor example, 25466f369d0SJung-uk Kim.Qq Li FreeBSD, Linux 25566f369d0SJung-uk Kimis a valid list of two interfaces 25666f369d0SJung-uk Kim.Qq Li FreeBSD 25766f369d0SJung-uk Kimand 25866f369d0SJung-uk Kim.Qq Li Linux . 259*0a34d050SJohn Baldwin.It Va hw.acpi.hw.acpi.override_isa_irq_polarity (x86) 260*0a34d050SJohn BaldwinForces active-lo polarity for edge-triggered ISA interrupts. 261*0a34d050SJohn BaldwinSome older systems incorrectly specify active-lo polarity for ISA 262*0a34d050SJohn Baldwininterrupts and this override fixes those systems. 263*0a34d050SJohn BaldwinThis override is enabled by default on systems with Intel CPUs, 264*0a34d050SJohn Baldwinbut can be enabled or disabled by setting the tunable explicitly. 265edd84e48SNate Lawson.It Va hw.acpi.reset_video 266edd84e48SNate LawsonEnables calling the VESA reset BIOS vector on the resume path. 267b46f4324SNate LawsonThis can fix some graphics cards that have problems such as LCD white-out 268b46f4324SNate Lawsonafter resume. 269b46f4324SNate LawsonDefault is 0 (disabled). 270edd84e48SNate Lawson.It Va hw.acpi.serialize_methods 271edd84e48SNate LawsonAllow override of whether methods execute in parallel or not. 2722010c542SRuslan ErmilovEnable this for serial behavior, which fixes 2732010c542SRuslan Ermilov.Qq Li AE_ALREADY_EXISTS 2742010c542SRuslan Ermiloverrors for 2752010c542SRuslan ErmilovAML that really cannot handle parallel method execution. 276edd84e48SNate LawsonIt is off by default since this breaks recursive methods and some IBMs use 277edd84e48SNate Lawsonsuch code. 278edd84e48SNate Lawson.It Va hw.acpi.verbose 279edd84e48SNate LawsonTurn on verbose debugging information about what ACPI is doing. 280e862bc66SChristian Brueffer.It Va hw.pci.link.%s.%d.irq 28193870c05SNate LawsonOverride the interrupt to use for this link and index. 28293870c05SNate LawsonThis capability should be used carefully, and only if a device is not 28393870c05SNate Lawsonworking with 28493870c05SNate Lawson.Nm 28593870c05SNate Lawsonenabled. 28693870c05SNate Lawson.Qq %s 28793870c05SNate Lawsonis the name of the link (e.g., LNKA). 28893870c05SNate Lawson.Qq %d 28993870c05SNate Lawsonis the resource index when the link supports multiple IRQs. 29093870c05SNate LawsonMost PCI links only have one IRQ resource, so the below form should be used. 291e862bc66SChristian Brueffer.It Va hw.pci.link.%s.irq 292e862bc66SChristian BruefferOverride the interrupt to use. 29393870c05SNate LawsonThis capability should be used carefully, and only if a device is not 29493870c05SNate Lawsonworking with 29593870c05SNate Lawson.Nm 29693870c05SNate Lawsonenabled. 29793870c05SNate Lawson.Qq %s 29893870c05SNate Lawsonis the name of the link (e.g., LNKA). 299b6695bd0SMike Smith.El 300edd84e48SNate Lawson.Sh DISABLING ACPI 301edd84e48SNate LawsonSince ACPI support on different platforms varies greatly, there are many 302edd84e48SNate Lawsondebugging and tuning options available. 303b6695bd0SMike Smith.Pp 30407e2d046SMark SantcroosFor machines known not to work with 30507e2d046SMark Santcroos.Nm 30655c71dc9SMark Santcroosenabled, there is a BIOS blacklist. 30755c71dc9SMark SantcroosCurrently, the blacklist only controls whether 30807e2d046SMark Santcroos.Nm 30955c71dc9SMark Santcroosshould be disabled or not. 31055c71dc9SMark SantcroosIn the future, it will have more granularity to control features (the 31155c71dc9SMark Santcroosinfrastructure for that is already there). 31207e2d046SMark Santcroos.Pp 31307e2d046SMark SantcroosTo enable 31407e2d046SMark Santcroos.Nm 31555c71dc9SMark Santcroos(for debugging purposes, etc.) on machines that are on the blacklist, set the 31655c71dc9SMark Santcrooskernel environment variable 31707e2d046SMark Santcroos.Va hint.acpi.0.disabled 31855c71dc9SMark Santcroosto 0. 31955c71dc9SMark SantcroosBefore trying this, consider updating your BIOS to a more recent version that 32055c71dc9SMark Santcroosmay be compatible with ACPI. 32107e2d046SMark Santcroos.Pp 3224e3148f4SWarner LoshTo disable the 3234e3148f4SWarner Losh.Nm 3244e3148f4SWarner Loshdriver completely, set the kernel environment variable 3254e3148f4SWarner Losh.Va hint.acpi.0.disabled 326d865f9efSWes Petersto 1. 327d865f9efSWes Peters.Pp 3284e3148f4SWarner LoshSome i386 machines totally fail to operate with some or all of ACPI disabled. 3294e3148f4SWarner LoshOther i386 machines fail with ACPI enabled. 330edd84e48SNate LawsonDisabling all or part of ACPI on non-i386 platforms (i.e., platforms where 331edd84e48SNate LawsonACPI support is mandatory) may result in a non-functional system. 3324e3148f4SWarner Losh.Pp 333b6695bd0SMike SmithThe 334b6695bd0SMike Smith.Nm 335b6695bd0SMike Smithdriver comprises a set of drivers, which may be selectively disabled 336b6695bd0SMike Smithin case of problems. 337b6695bd0SMike SmithTo disable a sub-driver, list it in the kernel 338b6695bd0SMike Smithenvironment variable 3393184cf5aSNate Lawson.Va debug.acpi.disabled . 34037c51fd9SNate LawsonMultiple entries can be listed, separated by a space. 341b6695bd0SMike Smith.Pp 342b6695bd0SMike SmithACPI sub-devices and features that can be disabled: 3432010c542SRuslan Ermilov.Bl -tag -width ".Li sysresource" 34437c51fd9SNate Lawson.It Li all 345e821c364SNate LawsonDisable all ACPI features and devices. 34618974fe8SNate Lawson.It Li acad 34718974fe8SNate Lawson.Pq Vt device 34818974fe8SNate LawsonSupports AC adapter. 34987b6284aSRuslan Ermilov.It Li bus 350b6695bd0SMike Smith.Pq Vt feature 351b6695bd0SMike SmithProbes and attaches subdevices. 352b6695bd0SMike SmithDisabling will avoid scanning the ACPI namespace entirely. 35387b6284aSRuslan Ermilov.It Li children 354b6695bd0SMike Smith.Pq Vt feature 355b6695bd0SMike SmithAttaches standard ACPI sub-drivers and devices enumerated in the 356b6695bd0SMike SmithACPI namespace. 357b6695bd0SMike SmithDisabling this has a similar effect to disabling 35887b6284aSRuslan Ermilov.Dq Li bus , 359b6695bd0SMike Smithexcept that the 360b6695bd0SMike SmithACPI namespace will still be scanned. 36187b6284aSRuslan Ermilov.It Li button 362b6695bd0SMike Smith.Pq Vt device 363bf7f20c2SRuslan ErmilovSupports ACPI button devices (typically power and sleep buttons). 36437c51fd9SNate Lawson.It Li cmbat 36537c51fd9SNate Lawson.Pq Vt device 36637c51fd9SNate LawsonControl-method batteries device. 36737c51fd9SNate Lawson.It Li cpu 36837c51fd9SNate Lawson.Pq Vt device 36937c51fd9SNate LawsonSupports CPU power-saving and speed-setting functions. 37087b6284aSRuslan Ermilov.It Li ec 371b6695bd0SMike Smith.Pq Vt device 37237c51fd9SNate LawsonSupports the ACPI Embedded Controller interface, used to communicate 37337c51fd9SNate Lawsonwith embedded platform controllers. 37487b6284aSRuslan Ermilov.It Li isa 375b6695bd0SMike Smith.Pq Vt device 376b6695bd0SMike SmithSupports an ISA bus bridge defined in the ACPI namespace, 377b6695bd0SMike Smithtypically as a child of a PCI bus. 37887b6284aSRuslan Ermilov.It Li lid 379b6695bd0SMike Smith.Pq Vt device 380b6695bd0SMike SmithSupports an ACPI laptop lid switch, which typically puts a 381b6695bd0SMike Smithsystem to sleep. 382b57a73f8SKonstantin Belousov.It Li mwait 383b57a73f8SKonstantin Belousov.Pq Vt feature 384b57a73f8SKonstantin BelousovDo not ask firmware for available x86-vendor specific methods to enter 385b57a73f8SKonstantin Belousov.Li Cx 386b57a73f8SKonstantin Belousovsleep states. 387b57a73f8SKonstantin BelousovOnly query and use the generic I/O-based entrance method. 388b57a73f8SKonstantin BelousovThe knob is provided to work around inconsistencies in the tables 389b57a73f8SKonstantin Belousovfilled by firmware. 3904e376d58SNate Lawson.It Li quirks 3914e376d58SNate Lawson.Pq Vt feature 392bf7f20c2SRuslan ErmilovDo not honor quirks. 3934e376d58SNate LawsonQuirks automatically disable ACPI functionality based on the XSDT table's 3944e376d58SNate LawsonOEM vendor name and revision date. 39587b6284aSRuslan Ermilov.It Li pci 396b6695bd0SMike Smith.Pq Vt device 397b6695bd0SMike SmithSupports Host to PCI bridges. 39837c51fd9SNate Lawson.It Li pci_link 399e821c364SNate Lawson.Pq Vt feature 40037c51fd9SNate LawsonPerforms PCI interrupt routing. 40137c51fd9SNate Lawson.It Li sysresource 40237c51fd9SNate Lawson.Pq Vt device 40337c51fd9SNate LawsonPseudo-devices containing resources which ACPI claims. 40487b6284aSRuslan Ermilov.It Li thermal 405b6695bd0SMike Smith.Pq Vt device 406b6695bd0SMike SmithSupports system cooling and heat management. 40787b6284aSRuslan Ermilov.It Li timer 408b6695bd0SMike Smith.Pq Vt device 409b6695bd0SMike SmithImplements a timecounter using the ACPI fixed-frequency timer. 410401cdd95STom Rhodes.It Li video 411401cdd95STom Rhodes.Pq Vt device 4124f068961SRuslan ErmilovSupports 4134f068961SRuslan Ermilov.Xr acpi_video 4 4144f068961SRuslan Ermilovwhich may conflict with 4154f068961SRuslan Ermilov.Xr agp 4 4164f068961SRuslan Ermilovdevice. 417b6695bd0SMike Smith.El 418b6695bd0SMike Smith.Pp 419b6695bd0SMike SmithIt is also possible to avoid portions of the ACPI namespace which 420b6695bd0SMike Smithmay be causing problems, by listing the full path of the root of 421b6695bd0SMike Smiththe region to be avoided in the kernel environment variable 422b6695bd0SMike Smith.Va debug.acpi.avoid . 423b6695bd0SMike SmithThe object and all of its children will be ignored during the 42487b6284aSRuslan Ermilovbus/children scan of the namespace. 425401b484bSNate LawsonThe ACPI CA code will still know about the avoided region. 426edd84e48SNate Lawson.Sh DEBUGGING OUTPUT 427edd84e48SNate LawsonTo enable debugging output, 428edd84e48SNate Lawson.Nm 429edd84e48SNate Lawsonmust be compiled with 4302010c542SRuslan Ermilov.Cd "options ACPI_DEBUG" . 431edd84e48SNate LawsonDebugging output is separated between layers and levels, where a layer is 432edd84e48SNate Lawsona component of the ACPI subsystem, and a level is a particular kind 433edd84e48SNate Lawsonof debugging output. 434edd84e48SNate Lawson.Pp 435edd84e48SNate LawsonBoth layers and levels are specified as a whitespace-separated list of 436edd84e48SNate Lawsontokens, with layers listed in 437edd84e48SNate Lawson.Va debug.acpi.layer 438edd84e48SNate Lawsonand levels in 439edd84e48SNate Lawson.Va debug.acpi.level . 440401b484bSNate Lawson.Pp 441401b484bSNate LawsonThe first set of layers is for ACPI-CA components, and the second is for 442401b484bSNate Lawson.Fx 443401b484bSNate Lawsondrivers. 444401b484bSNate LawsonThe ACPI-CA layer descriptions include the prefix for the files they 445401b484bSNate Lawsonrefer to. 446edd84e48SNate LawsonThe supported layers are: 447edd84e48SNate Lawson.Pp 4482010c542SRuslan Ermilov.Bl -tag -compact -width ".Li ACPI_CA_DISASSEMBLER" 449edd84e48SNate Lawson.It Li ACPI_UTILITIES 450401b484bSNate LawsonUtility ("ut") functions 451edd84e48SNate Lawson.It Li ACPI_HARDWARE 452401b484bSNate LawsonHardware access ("hw") 453edd84e48SNate Lawson.It Li ACPI_EVENTS 454401b484bSNate LawsonEvent and GPE ("ev") 455edd84e48SNate Lawson.It Li ACPI_TABLES 456401b484bSNate LawsonTable access ("tb") 457edd84e48SNate Lawson.It Li ACPI_NAMESPACE 458401b484bSNate LawsonNamespace evaluation ("ns") 459edd84e48SNate Lawson.It Li ACPI_PARSER 460401b484bSNate LawsonAML parser ("ps") 461edd84e48SNate Lawson.It Li ACPI_DISPATCHER 462401b484bSNate LawsonInternal representation of interpreter state ("ds") 463edd84e48SNate Lawson.It Li ACPI_EXECUTER 464401b484bSNate LawsonExecute AML methods ("ex") 465edd84e48SNate Lawson.It Li ACPI_RESOURCES 466401b484bSNate LawsonResource parsing ("rs") 467edd84e48SNate Lawson.It Li ACPI_CA_DEBUGGER 468401b484bSNate LawsonDebugger implementation ("db", "dm") 469edd84e48SNate Lawson.It Li ACPI_OS_SERVICES 470401b484bSNate LawsonUsermode support routines ("os") 471edd84e48SNate Lawson.It Li ACPI_CA_DISASSEMBLER 472401b484bSNate LawsonDisassembler implementation (unused) 473edd84e48SNate Lawson.It Li ACPI_ALL_COMPONENTS 474edd84e48SNate LawsonAll the above ACPI-CA components 475edd84e48SNate Lawson.It Li ACPI_AC_ADAPTER 476edd84e48SNate LawsonAC adapter driver 477edd84e48SNate Lawson.It Li ACPI_BATTERY 478edd84e48SNate LawsonControl-method battery driver 479edd84e48SNate Lawson.It Li ACPI_BUS 480edd84e48SNate LawsonACPI, ISA, and PCI bus drivers 481edd84e48SNate Lawson.It Li ACPI_BUTTON 482edd84e48SNate LawsonPower and sleep button driver 483edd84e48SNate Lawson.It Li ACPI_EC 484edd84e48SNate LawsonEmbedded controller driver 485edd84e48SNate Lawson.It Li ACPI_FAN 486edd84e48SNate LawsonFan driver 487edd84e48SNate Lawson.It Li ACPI_OEM 488edd84e48SNate LawsonPlatform-specific driver for hotkeys, LED, etc. 489edd84e48SNate Lawson.It Li ACPI_POWER 490edd84e48SNate LawsonPower resource driver 491edd84e48SNate Lawson.It Li ACPI_PROCESSOR 492edd84e48SNate LawsonCPU driver 493edd84e48SNate Lawson.It Li ACPI_THERMAL 494edd84e48SNate LawsonThermal zone driver 495edd84e48SNate Lawson.It Li ACPI_TIMER 496edd84e48SNate LawsonTimer driver 497edd84e48SNate Lawson.It Li ACPI_ALL_DRIVERS 498edd84e48SNate LawsonAll the above 499edd84e48SNate Lawson.Fx 500edd84e48SNate LawsonACPI drivers 501edd84e48SNate Lawson.El 502edd84e48SNate Lawson.Pp 503edd84e48SNate LawsonThe supported levels are: 504edd84e48SNate Lawson.Pp 5052010c542SRuslan Ermilov.Bl -tag -compact -width ".Li ACPI_LV_AML_DISASSEMBLE" 506edd84e48SNate Lawson.It Li ACPI_LV_INIT 507401b484bSNate LawsonInitialization progress 508edd84e48SNate Lawson.It Li ACPI_LV_DEBUG_OBJECT 509401b484bSNate LawsonStores to objects 510edd84e48SNate Lawson.It Li ACPI_LV_INFO 511401b484bSNate LawsonGeneral information and progress 512cc6455afSJung-uk Kim.It Li ACPI_LV_REPAIR 513cc6455afSJung-uk KimRepair a common problem with predefined methods 514edd84e48SNate Lawson.It Li ACPI_LV_ALL_EXCEPTIONS 515401b484bSNate LawsonAll the previous levels 516edd84e48SNate Lawson.It Li ACPI_LV_PARSE 517edd84e48SNate Lawson.It Li ACPI_LV_DISPATCH 518edd84e48SNate Lawson.It Li ACPI_LV_EXEC 519edd84e48SNate Lawson.It Li ACPI_LV_NAMES 520edd84e48SNate Lawson.It Li ACPI_LV_OPREGION 521edd84e48SNate Lawson.It Li ACPI_LV_BFIELD 522edd84e48SNate Lawson.It Li ACPI_LV_TABLES 523edd84e48SNate Lawson.It Li ACPI_LV_VALUES 524edd84e48SNate Lawson.It Li ACPI_LV_OBJECTS 525edd84e48SNate Lawson.It Li ACPI_LV_RESOURCES 526edd84e48SNate Lawson.It Li ACPI_LV_USER_REQUESTS 527edd84e48SNate Lawson.It Li ACPI_LV_PACKAGE 528edd84e48SNate Lawson.It Li ACPI_LV_VERBOSITY1 529401b484bSNate LawsonAll the previous levels 530edd84e48SNate Lawson.It Li ACPI_LV_ALLOCATIONS 531edd84e48SNate Lawson.It Li ACPI_LV_FUNCTIONS 532edd84e48SNate Lawson.It Li ACPI_LV_OPTIMIZATIONS 533edd84e48SNate Lawson.It Li ACPI_LV_VERBOSITY2 534240d2af5SJung-uk KimAll the previous levels 535edd84e48SNate Lawson.It Li ACPI_LV_ALL 536240d2af5SJung-uk KimSynonym for 537240d2af5SJung-uk Kim.Qq Li ACPI_LV_VERBOSITY2 538edd84e48SNate Lawson.It Li ACPI_LV_MUTEX 539edd84e48SNate Lawson.It Li ACPI_LV_THREADS 540edd84e48SNate Lawson.It Li ACPI_LV_IO 541edd84e48SNate Lawson.It Li ACPI_LV_INTERRUPTS 542edd84e48SNate Lawson.It Li ACPI_LV_VERBOSITY3 543401b484bSNate LawsonAll the previous levels 544edd84e48SNate Lawson.It Li ACPI_LV_AML_DISASSEMBLE 545edd84e48SNate Lawson.It Li ACPI_LV_VERBOSE_INFO 546edd84e48SNate Lawson.It Li ACPI_LV_FULL_TABLES 547edd84e48SNate Lawson.It Li ACPI_LV_EVENTS 548edd84e48SNate Lawson.It Li ACPI_LV_VERBOSE 549401b484bSNate LawsonAll levels after 550401b484bSNate Lawson.Qq Li ACPI_LV_VERBOSITY3 551240d2af5SJung-uk Kim.It Li ACPI_LV_INIT_NAMES 552240d2af5SJung-uk Kim.It Li ACPI_LV_LOAD 553edd84e48SNate Lawson.El 554edd84e48SNate Lawson.Pp 555edd84e48SNate LawsonSelection of the appropriate layer and level values is important 556edd84e48SNate Lawsonto avoid massive amounts of debugging output. 557401b484bSNate LawsonFor example, the following configuration is a good way to gather initial 558401b484bSNate Lawsoninformation. 559401b484bSNate LawsonIt enables debug output for both ACPI-CA and the 560401b484bSNate Lawson.Nm 561401b484bSNate Lawsondriver, printing basic information about errors, warnings, and progress. 562401b484bSNate Lawson.Bd -literal -offset indent 563401b484bSNate Lawsondebug.acpi.layer="ACPI_ALL_COMPONENTS ACPI_ALL_DRIVERS" 564401b484bSNate Lawsondebug.acpi.level="ACPI_LV_ALL_EXCEPTIONS" 565401b484bSNate Lawson.Ed 566edd84e48SNate Lawson.Pp 567edd84e48SNate LawsonDebugging output by the ACPI CA subsystem is prefixed with the 568edd84e48SNate Lawsonmodule name in lowercase, followed by a source line number. 569edd84e48SNate LawsonOutput from the 570edd84e48SNate Lawson.Fx Ns -local 571edd84e48SNate Lawsoncode follows the same format, but 572edd84e48SNate Lawsonthe module name is uppercased. 573f0da5f56STakanori Watanabe.Sh OVERRIDING YOUR BIOS BYTECODE 574287460e8SNate LawsonACPI interprets bytecode named AML 575287460e8SNate Lawson(ACPI Machine Language) 576287460e8SNate Lawsonprovided by the BIOS vendor as a memory image at boot time. 577287460e8SNate LawsonSometimes, the AML code contains a bug that does not appear when parsed 578287460e8SNate Lawsonby the Microsoft implementation. 579287460e8SNate Lawson.Fx 580287460e8SNate Lawsonprovides a way to override it with your own AML code to work around 581287460e8SNate Lawsonor debug such problems. 582287460e8SNate LawsonNote that all AML in your DSDT and any SSDT tables is overridden. 583f0da5f56STakanori Watanabe.Pp 584287460e8SNate LawsonIn order to load your AML code, you must edit 585f0da5f56STakanori Watanabe.Pa /boot/loader.conf 586287460e8SNate Lawsonand include the following lines. 587f0da5f56STakanori Watanabe.Bd -literal -offset indent 588f0da5f56STakanori Watanabeacpi_dsdt_load="YES" 589287460e8SNate Lawsonacpi_dsdt_name="/boot/acpi_dsdt.aml" # You may change this name. 590f0da5f56STakanori Watanabe.Ed 591f0da5f56STakanori Watanabe.Pp 592a627f55aSRuslan ErmilovIn order to prepare your AML code, you will need the 593a627f55aSRuslan Ermilov.Xr acpidump 8 594a627f55aSRuslan Ermilovand 5952010c542SRuslan Ermilov.Xr iasl 8 596297835bcSNate Lawsonutilities and some ACPI knowledge. 597b6695bd0SMike Smith.Sh COMPATIBILITY 598e7d939bdSMarcel MoolenaarACPI is only found and supported on i386/ia32 and amd64. 599b6695bd0SMike Smith.Sh SEE ALSO 6005413d9e0SWes Peters.Xr kenv 1 , 601673fbcacSRuslan Ermilov.Xr acpi_thermal 4 , 6025413d9e0SWes Peters.Xr device.hints 5 , 603f0da5f56STakanori Watanabe.Xr loader.conf 5 , 604f64a0a56SRobert Watson.Xr acpiconf 8 , 605f0da5f56STakanori Watanabe.Xr acpidump 8 , 606297835bcSNate Lawson.Xr config 8 , 607297835bcSNate Lawson.Xr iasl 8 608f0da5f56STakanori Watanabe.Rs 609a627f55aSRuslan Ermilov.%A "Compaq Computer Corporation" 610a627f55aSRuslan Ermilov.%A "Intel Corporation" 611a627f55aSRuslan Ermilov.%A "Microsoft Corporation" 612a627f55aSRuslan Ermilov.%A "Phoenix Technologies Ltd." 613a627f55aSRuslan Ermilov.%A "Toshiba Corporation" 614c25a3f8aSNate Lawson.%D August 25, 2003 615f0da5f56STakanori Watanabe.%T "Advanced Configuration and Power Interface Specification" 616aa4a335bSRuslan Ermilov.%U http://acpi.info/spec.htm 617f0da5f56STakanori Watanabe.Re 61887b6284aSRuslan Ermilov.Sh AUTHORS 61987b6284aSRuslan Ermilov.An -nosplit 620b6695bd0SMike SmithThe ACPI CA subsystem is developed and maintained by 621b6695bd0SMike SmithIntel Architecture Labs. 622b6695bd0SMike Smith.Pp 623b6695bd0SMike SmithThe following people made notable contributions to the ACPI subsystem 624b6695bd0SMike Smithin 625b6695bd0SMike Smith.Fx : 626718a5d6aSNate Lawson.An Michael Smith , 6276c899950SBaptiste Daroussin.An Takanori Watanabe Aq Mt takawata@jp.FreeBSD.org , 6286c899950SBaptiste Daroussin.An Mitsuru IWASAKI Aq Mt iwasaki@jp.FreeBSD.org , 629b6695bd0SMike Smith.An Munehiro Matsuda , 630718a5d6aSNate Lawson.An Nate Lawson , 631b6695bd0SMike Smiththe ACPI-jp mailing list at 6326c899950SBaptiste Daroussin.Aq Mt acpi-jp@jp.FreeBSD.org , 633b6695bd0SMike Smithand many other contributors. 634b6695bd0SMike Smith.Pp 635b6695bd0SMike SmithThis manual page was written by 6366c899950SBaptiste Daroussin.An Michael Smith Aq Mt msmith@FreeBSD.org . 637b6695bd0SMike Smith.Sh BUGS 63893870c05SNate LawsonMany BIOS versions have serious bugs that may cause system instability, 63993870c05SNate Lawsonbreak suspend/resume, or prevent devices from operating properly due to 64093870c05SNate LawsonIRQ routing problems. 64193870c05SNate LawsonUpgrade your BIOS to the latest version available from the vendor before 64281ae4b8dSRuslan Ermilovdeciding it is a problem with 64393870c05SNate Lawson.Nm . 644