On Friday, July 24, 2015 02:02:33 AM Zheng, Lv wrote:
> Hi, Rafael

Hi,

> ACPICA logs contain details (trace logs) that may be useful for development.
> But the quantity of the trace logs are huge to be put into the kernel log 
> buffer.
> Originally, we have a "trace log reducer" in /sys/modules/acpi/parameter, it 
> is the method tracing facility.
> We can specify a method name, for example, "_PS0", and corresponding debug 
> layer/level for the "trace log reducer".
> When the AML interpreter starts to execute the method, the tracing debug 
> level/layer will be applied.
> When the AML interpreter stops to execute the method, the original debug 
> level/layer is restored.
> Thus the ACPICA trace logs can only be enabled during the period the 
> specified method is executed and its output thus can be reduced.
> The facility invokes acpi_debug_trace() to do the flexible settings.
> See Documentation/acpi/method-tracing.txt for reference.
> 
> Actually, the "trace log reducer" facility is buggy and some of the 
> shortcomings put us into the trouble in using it.
> 1. We cannot specify a full path for the tracing method. For example, though 
> we only want to track \_SB,PCI0.I2C0._PS0, we can only specify "_PS0" and all 
> _PS0 method execution logs will be dumped, the unwanted _PS0 execution trace 
> logs may still blow the kernel log buffer up.
> 2. We can only specify a method that is passed to acpi_evaluate_object(). For 
> example, if \_SB.LID0._LID invokes \_SB.PCI0.LPCB.H_EC.ECRD, since Linux 
> never passes \_SB.PCI0.LPCB.H_EC.ECRD to acpi_evaluate_object(), specifying 
> "ECRD" cannot match the start of the execution to enable the "trace log 
> reducer".
> 
> So during this ACPICA release, we re-implement the facility in the ACPICA 
> dispatcher rather than implementing it in acpi_evaluate_object and allows the 
> full path to be specified to precisely lock on a specific control method.
> It is achieved by doing the following improvements:
> 1. Re-implements the facility in the ACPICA dispatcher component.
> 1. Introduce a new AML path -> ASL path decoding facility to zap the trailing 
> underscore. Originally ACPICA decodes AML path into such a format that the 
> user must explicitly specify the trailing. And users are likely to forget to 
> put the underscores and leave us with useless trace logs.
> 2. Move the exception stack walker from the ACPICA debugger component to the 
> ACPICA dispatcher component. When an exception is encountered, AML 
> interpreter just jumps to the top of the stack. Thus we need a facility to 
> walk the stack so that the method can be matched to implement the "end of the 
> tracing".
> 
> And with the improvements, we now can do an exciting tracing:
> 1. When the trace is enabled, we add new log entries for the begin/end of 
> each control method that is executed by the interpreter.
> 2. When the trace is enabled, we add new log entries for the begin/end of 
> each opcode that is executed by the interpreter.
> 3. We allow the method virtual address and the opcode virtual address to be 
> dumped along with the begin/end logs.
> This makes it possible to draw a AML call graph using the dumped log and we 
> can calculate the execution time of a control method/opcode.
> We can use it either for performance tuning or remote debugging.
> The new feature is known as "AML execution tracer".
> 
> All of above improvements are done to the acpi_debug_trace(), new 
> features/parameters are added to this ACPICA interface.
> Now acpi_debug_trace() can be used not only as the "trace log reducer" but 
> also the "AML execution tracer".
> As its user, /sys/modules/acpi/parameters/trace_xxx files need to be updated 
> so that we can use the fixed/improved old feature and the new feature in the 
> Linux kernel.
> 
> There is an user experience example of the new feature (AML execution tracer) 
> on the kernel Bugzilla:
> https://bugzilla.kernel.org/show_bug.cgi?id=70891
> The user reported a delay to the ACPICA developers mailing list and I helped 
> to file a bug there.
> With the assistance of this debugging facility (see comment 29, 30, 31), I 
> found the delay was caused by the EC driver (so this is really an effective 
> debugging facility).
> This bug (erroneously reported as an ACPICA issue) motivated me to look at 
> the Linux EC driver and offered the fixes to help to improve the quality of 
> the EC/GPE implementations.
> 
> Hope this explanation can help.

All of that is good information, so what about sending a documentation patch
with it?

Rafael

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to