| # ACPI debugging | |
| ## ACPICA debug interfaces | |
| To turn on ACPICA's debug output, pass the "enable_acpi_debug = true" build | |
| argument to GN. When this option is enabled, ACPICA uses two global variables | |
| to control debug output. | |
| ### AcpiDbgLevel | |
| AcpiDbgLevel is a bitmap of values defined in | |
| third\_party/lib/acpica/source/include/acpica/acoutput.h with the prefix | |
| "ACPI\_LV\_". For convenience, there are some pre-defined verbosity levels: | |
| ACPI\_LV\_VERBOSITY1, ACPI\_LV\_VERBOSITY2, ACPI\_LV\_VERBOSITY3. These control | |
| types of tracing events to log. For example, if you want to trace all function | |
| calls and mutex operations, you can set AcpiDbgLevel to | |
| "ACPI\_LV\_FUNCTIONS | ACPI\_LV\_MUTEX" | |
| ### AcpiDbgLayer | |
| AcpiDbgLayer is a bitmap of values defined in | |
| third\_party/lib/acpica/source/include/acpica/acoutput.h. These do not have a | |
| common prefix, but are listed as "Component IDs". These control which | |
| submodules of ACPICA are to be traced. For example, to trace through the | |
| namespace logic and the executor, you can set AcpiDbgLayer to | |
| "ACPI\_NAMESPACE | ACPI\_EXECUTOR" | |
| ### Setting these values | |
| One easy place to set these in the AcpiOsInitialize method that we define in | |
| third\_party/lib/acpica/source/os\_specific/service\_layers/osfuchsia.cpp. | |
| One technique that may be useful is zeroing both values in AcpiOsInitialize, and | |
| setting it to a non-zero value immediate before a call into ACPICA of interest. | |
| ### AcpiDebugTrace | |
| There is additionally a method named AcpiDebugTrace in the ACPIA API. It | |
| supposedly supports tracing particular ACPI methods by their 4-character | |
| namespace names (but with no scoping to particular Nodes). See the ACPICA | |
| manual for details. |