ACPI(4) | Device Drivers Manual | ACPI(4) |
acpi
—
acpi0 at mainbus0
options ACPI_DEBUG
options ACPIVERBOSE
options ACPI_ACTIVATE_DEV
options ACPI_DSDT_OVERRIDE
options ACPI_DSDT_FILE=""
options ACPI_BLACKLIST_YEAR=2000
options ACPI__DIS_IS_BROKEN
The NetBSD implementation of ACPI integrates Intel's ACPI Component Architecture (ACPI-CA) for the OS-independent part. The ACPI-CA provides OS-neutral ACPI functionalities such as ACPI BIOS table support, an ACPI event framework and an ACPI Machine Language (AML) interpreter.
Options:
ACPI_DEBUG
ACPIVERBOSE
ACPI_ACTIVATE_DEV
ACPI_DSDT_OVERRIDE
ACPI_DSDT_FILE
to specify a DSDT.ACPI_DSDT_FILE="filename"
ACPI_DSDT_FILE
is not specified, default to
“dsdt.hex” in the build directory.ACPI_BLACKLIST_YEAR=2000
ACPI__DIS_IS_BROKEN
acpi
driver:
hw.acpi.root
hw.acpi.sleep.state
hw.acpi.sleep.states
hw.acpi.sleep.beep
hw.acpi.sleep.vbios
vbetool post
from the
pkgsrc/sysutils/vbetool package.If the system has problems in resuming from the S3 state, experimenting with different values may provide a solution.
hw.acpi.stat.gpe
hw.acpi.stat.sci
hw.acpi.stat.fixed
hw.acpi.stat.method
hw.acpi.power
hw.acpi.wake
To ease the task of diagnosing and fixing different problems, the
ACPICA reference implementation provides a rich facility of different
debugging methods. In NetBSD these are generally
only available if the kernel has been compiled with the
ACPI_DEBUG
option.
ACPIVERBOSE
compile time option enables some verbose
debug messages printed during the system startup. In a
MODULAR
(see
options(4)) system, the
information can be printed also at runtime, regardless of the presence of
ACPIVERBOSE
. To print the messages,
modload(8) the
acpiverbose
module using the option
-b
dump=true
.
acpi
is implemented in the so-called Differentiated
System Descriptor Table (DSDT). NetBSD provides
support for overriding the default DSDT supplied by the BIOS.
The following steps can be used to override the DSDT:
-tc
.src/sys/dev/acpi/acpica/Osd/custom_dsdt.hex
or use the option
ACPI_DSDT_FILE="/some/directory/custom_dsdt.hex"
in the kernel configuration file.
ACPI_DSDT_OVERRIDE
in the kernel
configuration file and rebuild.call
with the argument
acpi_osd_debugger
.
hw.acpi.debug.layer
variable limits the output to a specific ACPI layer and the
hw.acpi.debug.level
variable controls the debug level.
Both sysctl(8) variables are
string literals. The third variable is
hw.acpi.debug.object
. This is a boolean that controls
whether debug messages internal to the AML are enabled.
For the first two variables, the possible values are:
In addition, there is ACPI_DEBUG_DEFAULT
that is used by ACPICA as the default debug level. It includes
ACPI_LV_INIT
and
ACPI_LV_DEBUG_OBJECT
.
The debug layer can be divided into two groups: the first one is
specific to the ACPICA interpreter and the second one contains the internal
ACPI components of NetBSD. The constant
ACPI_ALL_DRIVERS
includes all
NetBSD specific parts.
The ACPICA interpreter uses several debug levels internally, but
the NetBSD specific parts are typically limited to
ACPI_LV_DEBUG_OBJECT
and
ACPI_LV_INFO
. The debug output can be stopped by
setting hw.acpi.debug.level
to
ACPI_DEBUG_NONE
.
#define _COMPONENT ACPI_BUS_COMPONENT ACPI_MODULE_NAME ("acpi_example")
The driver may also utilize the debug facility:
ACPI_DEBUG_PRINT((ACPI_DB_INFO, "Failed to evaluate _STA\n"));
With these options the debug message from the
ACPI_DEBUG_PRINT
macro is only visible when
hw.acpi.debug.layer
is either
ACPI_BUS_COMPONENT
or a compound constant including
it, and hw.acpi.debug.level
is
ACPI_LV_INFO
or some constant that includes it.
Finally, it can be noted that the ACPI implementation uses the prefix
ACPI_DB
, whereas the debug level
sysctl(8) variable is always
specified with the prefix ACPI_LV
.
Another example can be mentioned for the use of
hw.acpi.debug.object
. The following could appear in
an ASL code:
Method(_Q19, 0, NotSerialized) { Store("_Q19 invoked", Debug) Notify(ACAD, 0x80) }
When hw.acpi.debug.object
is set to 1, the
message stored to the debug object is printed every time the method is
called by the interpreter.
Hewlett-Packard Corporation, Intel Corporation, Microsoft Corporation, Phoenix Technologies Ltd., and Toshiba Corporation, Advanced Configuration and Power Interface Specification, Revision 4.0, http://www.acpi.info/spec.htm, June 16, 2009.
Intel Corporation, ACPI Component Architecture,, Programmer Reference,, OS-Independent Subsystem, Debugger, and Utilities, Revision 1.27, http://www.acpica.org/download/acpica-reference.pdf, January 20, 2010.
Len Brown, ACPI in Linux - Myths vs. Reality, http://www.linuxsymposium.org/archives/OLS/Reprints-2007/brown_1-Reprint.pdf, 65-74, June 27-30, 2007, Proceedings of the Linux Symposium.
Joerg Sonnenberger and Jared D. McNeill, Sleeping Beauty - NetBSD on Modern Laptops, http://2008.asiabsdcon.org/papers/P9A-paper.pdf, 127-134, February 3, 2008, Proceedings of AsiaBSDCon 2008.
Takanori Watanabe, ACPI Implementation on FreeBSD, Proceedings of the FREENIX Track: 2002 USENIX Annual Technical Conference, USENIX Association, http://www.usenix.org/event/usenix02/tech/freenix/full_papers/watanabe/watanabe.pdf, 121-131, June 10-15, 2002.
acpi
driver appeared in NetBSD
1.6.
acpi
subsystem include
Charles M. Hannum, Frank van der
Linden, Jared D. McNeill,
Jason R. Thorpe, Joerg
Sonnenberger, and Jukka Ruohonen, among others.
The ACPI__DIS_IS_BROKEN
option should not
be necessary.
March 4, 2018 | NetBSD 9.4 |