The AML Debugger

Copyright (C) 2016, Intel Corporation
Author: Lv Zheng <lv.zheng@intel.com>


This document describes the usage of the AML debugger embedded in the Linux
kernel.

1. Build the debugger

   The following kernel configuration items are required to enable the AML
   debugger interface from the Linux kernel:

   CONFIG_ACPI_DEBUGGER=y
   CONFIG_ACPI_DEBUGGER_USER=m

   The userspace utilities can be built from the kernel source tree using
   the following commands:

   $ cd tools
   $ make acpi

   The resultant userspace tool binary is then located at:

     tools/acpi/power/acpi/acpidbg/acpidbg

   It can be installed to system directories by running "make install" (as a
   sufficiently privileged user).

2. Start the userspace debugger interface

   After booting the kernel with the debugger built-in, the debugger can be
   started by using the following commands:

   # mount -t debugfs none /sys/kernel/debug
   # modprobe acpi_dbg
   # tools/acpi/power/acpi/acpidbg/acpidbg

   That spawns the interactive AML debugger environment where you can execute
   debugger commands.

   The commands are documented in the "ACPICA Overview and Programmer Reference"
   that can be downloaded from

   https://acpica.org/documentation

   The detailed debugger commands reference is located in Chapter 12 "ACPICA
   Debugger Reference".  The "help" command can be used for a quick reference.

3. Stop the userspace debugger interface

   The interactive debugger interface can be closed by pressing Ctrl+C or using
   the "quit" or "exit" commands.  When finished, unload the module with:

   # rmmod acpi_dbg

   The module unloading may fail if there is an acpidbg instance running.

4. Run the debugger in a script

   It may be useful to run the AML debugger in a test script. "acpidbg" supports
   this in a special "batch" mode.  For example, the following command outputs
   the entire ACPI namespace:

   # acpidbg -b "namespace"
