diff options
author | Lv Zheng <lv.zheng@intel.com> | 2015-08-05 04:24:04 -0400 |
---|---|---|
committer | Rafael J. Wysocki <rafael.j.wysocki@intel.com> | 2015-08-06 20:42:22 -0400 |
commit | cb4ff766c42f0511ead5488b8de77fd392677464 (patch) | |
tree | 5f6e31bb96547baaf2d529f4e98a52c9b2dc4e23 /Documentation/acpi/method-tracing.txt | |
parent | a0186bcf7c21907c78ab2b4bc50f3fb2b5047806 (diff) |
ACPI / Documentation: Update method tracing documentation.
This patch updates method tracing documentation.
Signed-off-by: Lv Zheng <lv.zheng@intel.com>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Diffstat (limited to 'Documentation/acpi/method-tracing.txt')
-rw-r--r-- | Documentation/acpi/method-tracing.txt | 204 |
1 files changed, 185 insertions, 19 deletions
diff --git a/Documentation/acpi/method-tracing.txt b/Documentation/acpi/method-tracing.txt index f6efb1ea559a..c2505eefc878 100644 --- a/Documentation/acpi/method-tracing.txt +++ b/Documentation/acpi/method-tracing.txt | |||
@@ -1,26 +1,192 @@ | |||
1 | /sys/module/acpi/parameters/: | 1 | ACPICA Trace Facility |
2 | 2 | ||
3 | trace_method_name | 3 | Copyright (C) 2015, Intel Corporation |
4 | The AML method name that the user wants to trace | 4 | Author: Lv Zheng <lv.zheng@intel.com> |
5 | 5 | ||
6 | trace_debug_layer | ||
7 | The temporary debug_layer used when tracing the method. | ||
8 | Using 0xffffffff by default if it is 0. | ||
9 | 6 | ||
10 | trace_debug_level | 7 | Abstract: |
11 | The temporary debug_level used when tracing the method. | ||
12 | Using 0x00ffffff by default if it is 0. | ||
13 | 8 | ||
14 | trace_state | 9 | This document describes the functions and the interfaces of the method |
15 | The status of the tracing feature. | 10 | tracing facility. |
11 | |||
12 | 1. Functionalities and usage examples: | ||
13 | |||
14 | ACPICA provides method tracing capability. And two functions are | ||
15 | currently implemented using this capability. | ||
16 | |||
17 | A. Log reducer | ||
18 | ACPICA subsystem provides debugging outputs when CONFIG_ACPI_DEBUG is | ||
19 | enabled. The debugging messages which are deployed via | ||
20 | ACPI_DEBUG_PRINT() macro can be reduced at 2 levels - per-component | ||
21 | level (known as debug layer, configured via | ||
22 | /sys/module/acpi/parameters/debug_layer) and per-type level (known as | ||
23 | debug level, configured via /sys/module/acpi/parameters/debug_level). | ||
24 | |||
25 | But when the particular layer/level is applied to the control method | ||
26 | evaluations, the quantity of the debugging outputs may still be too | ||
27 | large to be put into the kernel log buffer. The idea thus is worked out | ||
28 | to only enable the particular debug layer/level (normally more detailed) | ||
29 | logs when the control method evaluation is started, and disable the | ||
30 | detailed logging when the control method evaluation is stopped. | ||
31 | |||
32 | The following command examples illustrate the usage of the "log reducer" | ||
33 | functionality: | ||
34 | a. Filter out the debug layer/level matched logs when control methods | ||
35 | are being evaluated: | ||
36 | # cd /sys/module/acpi/parameters | ||
37 | # echo "0xXXXXXXXX" > trace_debug_layer | ||
38 | # echo "0xYYYYYYYY" > trace_debug_level | ||
39 | # echo "enable" > trace_state | ||
40 | b. Filter out the debug layer/level matched logs when the specified | ||
41 | control method is being evaluated: | ||
42 | # cd /sys/module/acpi/parameters | ||
43 | # echo "0xXXXXXXXX" > trace_debug_layer | ||
44 | # echo "0xYYYYYYYY" > trace_debug_level | ||
45 | # echo "\PPPP.AAAA.TTTT.HHHH" > trace_method_name | ||
46 | # echo "method" > /sys/module/acpi/parameters/trace_state | ||
47 | c. Filter out the debug layer/level matched logs when the specified | ||
48 | control method is being evaluated for the first time: | ||
49 | # cd /sys/module/acpi/parameters | ||
50 | # echo "0xXXXXXXXX" > trace_debug_layer | ||
51 | # echo "0xYYYYYYYY" > trace_debug_level | ||
52 | # echo "\PPPP.AAAA.TTTT.HHHH" > trace_method_name | ||
53 | # echo "method-once" > /sys/module/acpi/parameters/trace_state | ||
54 | Where: | ||
55 | 0xXXXXXXXX/0xYYYYYYYY: Refer to Documentation/acpi/debug.txt for | ||
56 | possible debug layer/level masking values. | ||
57 | \PPPP.AAAA.TTTT.HHHH: Full path of a control method that can be found | ||
58 | in the ACPI namespace. It needn't be an entry | ||
59 | of a control method evaluation. | ||
60 | |||
61 | B. AML tracer | ||
62 | |||
63 | There are special log entries added by the method tracing facility at | ||
64 | the "trace points" the AML interpreter starts/stops to execute a control | ||
65 | method, or an AML opcode. Note that the format of the log entries are | ||
66 | subject to change: | ||
67 | [ 0.186427] exdebug-0398 ex_trace_point : Method Begin [0xf58394d8:\_SB.PCI0.LPCB.ECOK] execution. | ||
68 | [ 0.186630] exdebug-0398 ex_trace_point : Opcode Begin [0xf5905c88:If] execution. | ||
69 | [ 0.186820] exdebug-0398 ex_trace_point : Opcode Begin [0xf5905cc0:LEqual] execution. | ||
70 | [ 0.187010] exdebug-0398 ex_trace_point : Opcode Begin [0xf5905a20:-NamePath-] execution. | ||
71 | [ 0.187214] exdebug-0398 ex_trace_point : Opcode End [0xf5905a20:-NamePath-] execution. | ||
72 | [ 0.187407] exdebug-0398 ex_trace_point : Opcode Begin [0xf5905f60:One] execution. | ||
73 | [ 0.187594] exdebug-0398 ex_trace_point : Opcode End [0xf5905f60:One] execution. | ||
74 | [ 0.187789] exdebug-0398 ex_trace_point : Opcode End [0xf5905cc0:LEqual] execution. | ||
75 | [ 0.187980] exdebug-0398 ex_trace_point : Opcode Begin [0xf5905cc0:Return] execution. | ||
76 | [ 0.188146] exdebug-0398 ex_trace_point : Opcode Begin [0xf5905f60:One] execution. | ||
77 | [ 0.188334] exdebug-0398 ex_trace_point : Opcode End [0xf5905f60:One] execution. | ||
78 | [ 0.188524] exdebug-0398 ex_trace_point : Opcode End [0xf5905cc0:Return] execution. | ||
79 | [ 0.188712] exdebug-0398 ex_trace_point : Opcode End [0xf5905c88:If] execution. | ||
80 | [ 0.188903] exdebug-0398 ex_trace_point : Method End [0xf58394d8:\_SB.PCI0.LPCB.ECOK] execution. | ||
16 | 81 | ||
17 | "enabled" means this feature is enabled | 82 | Developers can utilize these special log entries to track the AML |
18 | and the AML method is traced every time it's executed. | 83 | interpretion, thus can aid issue debugging and performance tuning. Note |
84 | that, as the "AML tracer" logs are implemented via ACPI_DEBUG_PRINT() | ||
85 | macro, CONFIG_ACPI_DEBUG is also required to be enabled for enabling | ||
86 | "AML tracer" logs. | ||
19 | 87 | ||
20 | "1" means this feature is enabled and the AML method | 88 | The following command examples illustrate the usage of the "AML tracer" |
21 | will only be traced during the next execution. | 89 | functionality: |
90 | a. Filter out the method start/stop "AML tracer" logs when control | ||
91 | methods are being evaluated: | ||
92 | # cd /sys/module/acpi/parameters | ||
93 | # echo "0x80" > trace_debug_layer | ||
94 | # echo "0x10" > trace_debug_level | ||
95 | # echo "enable" > trace_state | ||
96 | b. Filter out the method start/stop "AML tracer" when the specified | ||
97 | control method is being evaluated: | ||
98 | # cd /sys/module/acpi/parameters | ||
99 | # echo "0x80" > trace_debug_layer | ||
100 | # echo "0x10" > trace_debug_level | ||
101 | # echo "\PPPP.AAAA.TTTT.HHHH" > trace_method_name | ||
102 | # echo "method" > trace_state | ||
103 | c. Filter out the method start/stop "AML tracer" logs when the specified | ||
104 | control method is being evaluated for the first time: | ||
105 | # cd /sys/module/acpi/parameters | ||
106 | # echo "0x80" > trace_debug_layer | ||
107 | # echo "0x10" > trace_debug_level | ||
108 | # echo "\PPPP.AAAA.TTTT.HHHH" > trace_method_name | ||
109 | # echo "method-once" > trace_state | ||
110 | d. Filter out the method/opcode start/stop "AML tracer" when the | ||
111 | specified control method is being evaluated: | ||
112 | # cd /sys/module/acpi/parameters | ||
113 | # echo "0x80" > trace_debug_layer | ||
114 | # echo "0x10" > trace_debug_level | ||
115 | # echo "\PPPP.AAAA.TTTT.HHHH" > trace_method_name | ||
116 | # echo "opcode" > trace_state | ||
117 | e. Filter out the method/opcode start/stop "AML tracer" when the | ||
118 | specified control method is being evaluated for the first time: | ||
119 | # cd /sys/module/acpi/parameters | ||
120 | # echo "0x80" > trace_debug_layer | ||
121 | # echo "0x10" > trace_debug_level | ||
122 | # echo "\PPPP.AAAA.TTTT.HHHH" > trace_method_name | ||
123 | # echo "opcode-opcode" > trace_state | ||
22 | 124 | ||
23 | "disabled" means this feature is disabled. | 125 | Note that all above method tracing facility related module parameters can |
24 | Users can enable/disable this debug tracing feature by | 126 | be used as the boot parameters, for example: |
25 | "echo string > /sys/module/acpi/parameters/trace_state". | 127 | acpi.trace_debug_layer=0x80 acpi.trace_debug_level=0x10 \ |
26 | "string" should be one of "enable", "disable" and "1". | 128 | acpi.trace_method_name=\_SB.LID0._LID acpi.trace_state=opcode-once |
129 | |||
130 | 2. Interface descriptions: | ||
131 | |||
132 | All method tracing functions can be configured via ACPI module | ||
133 | parameters that are accessible at /sys/module/acpi/parameters/: | ||
134 | |||
135 | trace_method_name | ||
136 | The full path of the AML method that the user wants to trace. | ||
137 | Note that the full path shouldn't contain the trailing "_"s in its | ||
138 | name segments but may contain "\" to form an absolute path. | ||
139 | |||
140 | trace_debug_layer | ||
141 | The temporary debug_layer used when the tracing feature is enabled. | ||
142 | Using ACPI_EXECUTER (0x80) by default, which is the debug_layer | ||
143 | used to match all "AML tracer" logs. | ||
144 | |||
145 | trace_debug_level | ||
146 | The temporary debug_level used when the tracing feature is enabled. | ||
147 | Using ACPI_LV_TRACE_POINT (0x10) by default, which is the | ||
148 | debug_level used to match all "AML tracer" logs. | ||
149 | |||
150 | trace_state | ||
151 | The status of the tracing feature. | ||
152 | Users can enable/disable this debug tracing feature by executing | ||
153 | the following command: | ||
154 | # echo string > /sys/module/acpi/parameters/trace_state | ||
155 | Where "string" should be one of the followings: | ||
156 | "disable" | ||
157 | Disable the method tracing feature. | ||
158 | "enable" | ||
159 | Enable the method tracing feature. | ||
160 | ACPICA debugging messages matching | ||
161 | "trace_debug_layer/trace_debug_level" during any method | ||
162 | execution will be logged. | ||
163 | "method" | ||
164 | Enable the method tracing feature. | ||
165 | ACPICA debugging messages matching | ||
166 | "trace_debug_layer/trace_debug_level" during method execution | ||
167 | of "trace_method_name" will be logged. | ||
168 | "method-once" | ||
169 | Enable the method tracing feature. | ||
170 | ACPICA debugging messages matching | ||
171 | "trace_debug_layer/trace_debug_level" during method execution | ||
172 | of "trace_method_name" will be logged only once. | ||
173 | "opcode" | ||
174 | Enable the method tracing feature. | ||
175 | ACPICA debugging messages matching | ||
176 | "trace_debug_layer/trace_debug_level" during method/opcode | ||
177 | execution of "trace_method_name" will be logged. | ||
178 | "opcode-once" | ||
179 | Enable the method tracing feature. | ||
180 | ACPICA debugging messages matching | ||
181 | "trace_debug_layer/trace_debug_level" during method/opcode | ||
182 | execution of "trace_method_name" will be logged only once. | ||
183 | Note that, the difference between the "enable" and other feature | ||
184 | enabling options are: | ||
185 | 1. When "enable" is specified, since | ||
186 | "trace_debug_layer/trace_debug_level" shall apply to all control | ||
187 | method evaluations, after configuring "trace_state" to "enable", | ||
188 | "trace_method_name" will be reset to NULL. | ||
189 | 2. When "method/opcode" is specified, if | ||
190 | "trace_method_name" is NULL when "trace_state" is configured to | ||
191 | these options, the "trace_debug_layer/trace_debug_level" will | ||
192 | apply to all control method evaluations. | ||