1 .. SPDX-License-Identifier: GPL-2.0
2 .. include:: <isonum.txt>
8 :Copyright: |copy| 2015, Intel Corporation
9 :Author: Lv Zheng <lv.zheng@intel.com>
14 This document describes the functions and the interfaces of the
15 method tracing facility.
17 Functionalities and usage examples
18 ==================================
20 ACPICA provides method tracing capability. And two functions are
21 currently implemented using this capability.
26 ACPICA subsystem provides debugging outputs when CONFIG_ACPI_DEBUG is
27 enabled. The debugging messages which are deployed via
28 ACPI_DEBUG_PRINT() macro can be reduced at 2 levels - per-component
29 level (known as debug layer, configured via
30 /sys/module/acpi/parameters/debug_layer) and per-type level (known as
31 debug level, configured via /sys/module/acpi/parameters/debug_level).
33 But when the particular layer/level is applied to the control method
34 evaluations, the quantity of the debugging outputs may still be too
35 large to be put into the kernel log buffer. The idea thus is worked out
36 to only enable the particular debug layer/level (normally more detailed)
37 logs when the control method evaluation is started, and disable the
38 detailed logging when the control method evaluation is stopped.
40 The following command examples illustrate the usage of the "log reducer"
43 a. Filter out the debug layer/level matched logs when control methods
46 # cd /sys/module/acpi/parameters
47 # echo "0xXXXXXXXX" > trace_debug_layer
48 # echo "0xYYYYYYYY" > trace_debug_level
49 # echo "enable" > trace_state
51 b. Filter out the debug layer/level matched logs when the specified
52 control method is being evaluated::
54 # cd /sys/module/acpi/parameters
55 # echo "0xXXXXXXXX" > trace_debug_layer
56 # echo "0xYYYYYYYY" > trace_debug_level
57 # echo "\PPPP.AAAA.TTTT.HHHH" > trace_method_name
58 # echo "method" > /sys/module/acpi/parameters/trace_state
60 c. Filter out the debug layer/level matched logs when the specified
61 control method is being evaluated for the first time::
63 # cd /sys/module/acpi/parameters
64 # echo "0xXXXXXXXX" > trace_debug_layer
65 # echo "0xYYYYYYYY" > trace_debug_level
66 # echo "\PPPP.AAAA.TTTT.HHHH" > trace_method_name
67 # echo "method-once" > /sys/module/acpi/parameters/trace_state
71 Refer to Documentation/firmware-guide/acpi/debug.rst for possible debug layer/level
74 Full path of a control method that can be found in the ACPI namespace.
75 It needn't be an entry of a control method evaluation.
80 There are special log entries added by the method tracing facility at
81 the "trace points" the AML interpreter starts/stops to execute a control
82 method, or an AML opcode. Note that the format of the log entries are
85 [ 0.186427] exdebug-0398 ex_trace_point : Method Begin [0xf58394d8:\_SB.PCI0.LPCB.ECOK] execution.
86 [ 0.186630] exdebug-0398 ex_trace_point : Opcode Begin [0xf5905c88:If] execution.
87 [ 0.186820] exdebug-0398 ex_trace_point : Opcode Begin [0xf5905cc0:LEqual] execution.
88 [ 0.187010] exdebug-0398 ex_trace_point : Opcode Begin [0xf5905a20:-NamePath-] execution.
89 [ 0.187214] exdebug-0398 ex_trace_point : Opcode End [0xf5905a20:-NamePath-] execution.
90 [ 0.187407] exdebug-0398 ex_trace_point : Opcode Begin [0xf5905f60:One] execution.
91 [ 0.187594] exdebug-0398 ex_trace_point : Opcode End [0xf5905f60:One] execution.
92 [ 0.187789] exdebug-0398 ex_trace_point : Opcode End [0xf5905cc0:LEqual] execution.
93 [ 0.187980] exdebug-0398 ex_trace_point : Opcode Begin [0xf5905cc0:Return] execution.
94 [ 0.188146] exdebug-0398 ex_trace_point : Opcode Begin [0xf5905f60:One] execution.
95 [ 0.188334] exdebug-0398 ex_trace_point : Opcode End [0xf5905f60:One] execution.
96 [ 0.188524] exdebug-0398 ex_trace_point : Opcode End [0xf5905cc0:Return] execution.
97 [ 0.188712] exdebug-0398 ex_trace_point : Opcode End [0xf5905c88:If] execution.
98 [ 0.188903] exdebug-0398 ex_trace_point : Method End [0xf58394d8:\_SB.PCI0.LPCB.ECOK] execution.
100 Developers can utilize these special log entries to track the AML
101 interpretation, thus can aid issue debugging and performance tuning. Note
102 that, as the "AML tracer" logs are implemented via ACPI_DEBUG_PRINT()
103 macro, CONFIG_ACPI_DEBUG is also required to be enabled for enabling
106 The following command examples illustrate the usage of the "AML tracer"
109 a. Filter out the method start/stop "AML tracer" logs when control
110 methods are being evaluated::
112 # cd /sys/module/acpi/parameters
113 # echo "0x80" > trace_debug_layer
114 # echo "0x10" > trace_debug_level
115 # echo "enable" > trace_state
117 b. Filter out the method start/stop "AML tracer" when the specified
118 control method is being evaluated::
120 # cd /sys/module/acpi/parameters
121 # echo "0x80" > trace_debug_layer
122 # echo "0x10" > trace_debug_level
123 # echo "\PPPP.AAAA.TTTT.HHHH" > trace_method_name
124 # echo "method" > trace_state
126 c. Filter out the method start/stop "AML tracer" logs when the specified
127 control method is being evaluated for the first time::
129 # cd /sys/module/acpi/parameters
130 # echo "0x80" > trace_debug_layer
131 # echo "0x10" > trace_debug_level
132 # echo "\PPPP.AAAA.TTTT.HHHH" > trace_method_name
133 # echo "method-once" > trace_state
135 d. Filter out the method/opcode start/stop "AML tracer" when the
136 specified control method is being evaluated::
138 # cd /sys/module/acpi/parameters
139 # echo "0x80" > trace_debug_layer
140 # echo "0x10" > trace_debug_level
141 # echo "\PPPP.AAAA.TTTT.HHHH" > trace_method_name
142 # echo "opcode" > trace_state
144 e. Filter out the method/opcode start/stop "AML tracer" when the
145 specified control method is being evaluated for the first time::
147 # cd /sys/module/acpi/parameters
148 # echo "0x80" > trace_debug_layer
149 # echo "0x10" > trace_debug_level
150 # echo "\PPPP.AAAA.TTTT.HHHH" > trace_method_name
151 # echo "opcode-opcode" > trace_state
153 Note that all above method tracing facility related module parameters can
154 be used as the boot parameters, for example::
156 acpi.trace_debug_layer=0x80 acpi.trace_debug_level=0x10 \
157 acpi.trace_method_name=\_SB.LID0._LID acpi.trace_state=opcode-once
160 Interface descriptions
161 ======================
163 All method tracing functions can be configured via ACPI module
164 parameters that are accessible at /sys/module/acpi/parameters/:
167 The full path of the AML method that the user wants to trace.
169 Note that the full path shouldn't contain the trailing "_"s in its
170 name segments but may contain "\" to form an absolute path.
173 The temporary debug_layer used when the tracing feature is enabled.
175 Using ACPI_EXECUTER (0x80) by default, which is the debug_layer
176 used to match all "AML tracer" logs.
179 The temporary debug_level used when the tracing feature is enabled.
181 Using ACPI_LV_TRACE_POINT (0x10) by default, which is the
182 debug_level used to match all "AML tracer" logs.
185 The status of the tracing feature.
187 Users can enable/disable this debug tracing feature by executing
188 the following command::
190 # echo string > /sys/module/acpi/parameters/trace_state
192 Where "string" should be one of the following:
195 Disable the method tracing feature.
198 Enable the method tracing feature.
200 ACPICA debugging messages matching "trace_debug_layer/trace_debug_level"
201 during any method execution will be logged.
204 Enable the method tracing feature.
206 ACPICA debugging messages matching "trace_debug_layer/trace_debug_level"
207 during method execution of "trace_method_name" will be logged.
210 Enable the method tracing feature.
212 ACPICA debugging messages matching "trace_debug_layer/trace_debug_level"
213 during method execution of "trace_method_name" will be logged only once.
216 Enable the method tracing feature.
218 ACPICA debugging messages matching "trace_debug_layer/trace_debug_level"
219 during method/opcode execution of "trace_method_name" will be logged.
222 Enable the method tracing feature.
224 ACPICA debugging messages matching "trace_debug_layer/trace_debug_level"
225 during method/opcode execution of "trace_method_name" will be logged only
228 Note that, the difference between the "enable" and other feature
229 enabling options are:
231 1. When "enable" is specified, since
232 "trace_debug_layer/trace_debug_level" shall apply to all control
233 method evaluations, after configuring "trace_state" to "enable",
234 "trace_method_name" will be reset to NULL.
235 2. When "method/opcode" is specified, if
236 "trace_method_name" is NULL when "trace_state" is configured to
237 these options, the "trace_debug_layer/trace_debug_level" will
238 apply to all control method evaluations.