Kernel-4.18.0-80.el8_method-tracing

ACPICA Trace Facility

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

Abstract:

This document describes the functions and the interfaces of the method
tracing facility.

  1. Functionalities and usage examples:

    ACPICA provides method tracing capability. And two functions are
    currently implemented using this capability.

    A. Log reducer
    ACPICA subsystem provides debugging outputs when CONFIG_ACPI_DEBUG is
    enabled. The debugging messages which are deployed via
    ACPI_DEBUG_PRINT() macro can be reduced at 2 levels - per-component
    level (known as debug layer, configured via
    /sys/module/acpi/parameters/debug_layer) and per-type level (known as
    debug level, configured via /sys/module/acpi/parameters/debug_level).

    But when the particular layer/level is applied to the control method
    evaluations, the quantity of the debugging outputs may still be too
    large to be put into the kernel log buffer. The idea thus is worked out
    to only enable the particular debug layer/level (normally more detailed)
    logs when the control method evaluation is started, and disable the
    detailed logging when the control method evaluation is stopped.

    The following command examples illustrate the usage of the “log reducer”
    functionality:
    a. Filter out the debug layer/level matched logs when control methods
    are being evaluated:

    cd /sys/module/acpi/parameters

    echo “0xXXXXXXXX” > trace_debug_layer

    echo “0xYYYYYYYY” > trace_debug_level

    echo “enable” > trace_state

    b. Filter out the debug layer/level matched logs when the specified
    control method is being evaluated:

    cd /sys/module/acpi/parameters

    echo “0xXXXXXXXX” > trace_debug_layer

    echo “0xYYYYYYYY” > trace_debug_level

    echo “\PPPP.AAAA.TTTT.HHHH” > trace_method_name

    echo “method” > /sys/module/acpi/parameters/trace_state

    c. Filter out the debug layer/level matched logs when the specified
    control method is being evaluated for the first time:

    cd /sys/module/acpi/parameters

    echo “0xXXXXXXXX” > trace_debug_layer

    echo “0xYYYYYYYY” > trace_debug_level

    echo “\PPPP.AAAA.TTTT.HHHH” > trace_method_name

    echo “method-once” > /sys/module/acpi/parameters/trace_state

    Where:
    0xXXXXXXXX/0xYYYYYYYY: Refer to Documentation/acpi/debug.txt for

              possible debug layer/level masking values.
    

    \PPPP.AAAA.TTTT.HHHH: Full path of a control method that can be found

             in the ACPI namespace. It needn't be an entry
             of a control method evaluation.
    

    B. AML tracer

    There are special log entries added by the method tracing facility at
    the “trace points” the AML interpreter starts/stops to execute a control
    method, or an AML opcode. Note that the format of the log entries are
    subject to change:
    [ 0.186427] exdebug-0398 ex_trace_point : Method Begin [0xf58394d8:_SB.PCI0.LPCB.ECOK] execution.
    [ 0.186630] exdebug-0398 ex_trace_point : Opcode Begin [0xf5905c88:If] execution.
    [ 0.186820] exdebug-0398 ex_trace_point : Opcode Begin [0xf5905cc0:LEqual] execution.
    [ 0.187010] exdebug-0398 ex_trace_point : Opcode Begin [0xf5905a20:-NamePath-] execution.
    [ 0.187214] exdebug-0398 ex_trace_point : Opcode End [0xf5905a20:-NamePath-] execution.
    [ 0.187407] exdebug-0398 ex_trace_point : Opcode Begin [0xf5905f60:One] execution.
    [ 0.187594] exdebug-0398 ex_trace_point : Opcode End [0xf5905f60:One] execution.
    [ 0.187789] exdebug-0398 ex_trace_point : Opcode End [0xf5905cc0:LEqual] execution.
    [ 0.187980] exdebug-0398 ex_trace_point : Opcode Begin [0xf5905cc0:Return] execution.
    [ 0.188146] exdebug-0398 ex_trace_point : Opcode Begin [0xf5905f60:One] execution.
    [ 0.188334] exdebug-0398 ex_trace_point : Opcode End [0xf5905f60:One] execution.
    [ 0.188524] exdebug-0398 ex_trace_point : Opcode End [0xf5905cc0:Return] execution.
    [ 0.188712] exdebug-0398 ex_trace_point : Opcode End [0xf5905c88:If] execution.
    [ 0.188903] exdebug-0398 ex_trace_point : Method End [0xf58394d8:_SB.PCI0.LPCB.ECOK] execution.

    Developers can utilize these special log entries to track the AML
    interpretion, thus can aid issue debugging and performance tuning. Note
    that, as the “AML tracer” logs are implemented via ACPI_DEBUG_PRINT()
    macro, CONFIG_ACPI_DEBUG is also required to be enabled for enabling
    “AML tracer” logs.

    The following command examples illustrate the usage of the “AML tracer”
    functionality:
    a. Filter out the method start/stop “AML tracer” logs when control
    methods are being evaluated:

    cd /sys/module/acpi/parameters

    echo “0x80” > trace_debug_layer

    echo “0x10” > trace_debug_level

    echo “enable” > trace_state

    b. Filter out the method start/stop “AML tracer” when the specified
    control method is being evaluated:

    cd /sys/module/acpi/parameters

    echo “0x80” > trace_debug_layer

    echo “0x10” > trace_debug_level

    echo “\PPPP.AAAA.TTTT.HHHH” > trace_method_name

    echo “method” > trace_state

    c. Filter out the method start/stop “AML tracer” logs when the specified
    control method is being evaluated for the first time:

    cd /sys/module/acpi/parameters

    echo “0x80” > trace_debug_layer

    echo “0x10” > trace_debug_level

    echo “\PPPP.AAAA.TTTT.HHHH” > trace_method_name

    echo “method-once” > trace_state

    d. Filter out the method/opcode start/stop “AML tracer” when the
    specified control method is being evaluated:

    cd /sys/module/acpi/parameters

    echo “0x80” > trace_debug_layer

    echo “0x10” > trace_debug_level

    echo “\PPPP.AAAA.TTTT.HHHH” > trace_method_name

    echo “opcode” > trace_state

    e. Filter out the method/opcode start/stop “AML tracer” when the
    specified control method is being evaluated for the first time:

    cd /sys/module/acpi/parameters

    echo “0x80” > trace_debug_layer

    echo “0x10” > trace_debug_level

    echo “\PPPP.AAAA.TTTT.HHHH” > trace_method_name

    echo “opcode-opcode” > trace_state

    Note that all above method tracing facility related module parameters can
    be used as the boot parameters, for example:
    acpi.trace_debug_layer=0x80 acpi.trace_debug_level=0x10
    acpi.trace_method_name=_SB.LID0._LID acpi.trace_state=opcode-once

  2. Interface descriptions:

    All method tracing functions can be configured via ACPI module
    parameters that are accessible at /sys/module/acpi/parameters/:

    trace_method_name
    The full path of the AML method that the user wants to trace.
    Note that the full path shouldn’t contain the trailing “_”s in its
    name segments but may contain “" to form an absolute path.

    trace_debug_layer
    The temporary debug_layer used when the tracing feature is enabled.
    Using ACPI_EXECUTER (0x80) by default, which is the debug_layer
    used to match all “AML tracer” logs.

    trace_debug_level
    The temporary debug_level used when the tracing feature is enabled.
    Using ACPI_LV_TRACE_POINT (0x10) by default, which is the
    debug_level used to match all “AML tracer” logs.

    trace_state
    The status of the tracing feature.
    Users can enable/disable this debug tracing feature by executing
    the following command:

     # echo string > /sys/module/acpi/parameters/trace_state
    

    Where “string” should be one of the following:
    “disable”

     Disable the method tracing feature.
    

    “enable”

     Enable the method tracing feature.
     ACPICA debugging messages matching
     "trace_debug_layer/trace_debug_level" during any method
     execution will be logged.
    

    “method”

     Enable the method tracing feature.
     ACPICA debugging messages matching
     "trace_debug_layer/trace_debug_level" during method execution
     of "trace_method_name" will be logged.
    

    “method-once”

     Enable the method tracing feature.
     ACPICA debugging messages matching
     "trace_debug_layer/trace_debug_level" during method execution
     of "trace_method_name" will be logged only once.
    

    “opcode”

     Enable the method tracing feature.
     ACPICA debugging messages matching
     "trace_debug_layer/trace_debug_level" during method/opcode
     execution of "trace_method_name" will be logged.
    

    “opcode-once”

     Enable the method tracing feature.
     ACPICA debugging messages matching
     "trace_debug_layer/trace_debug_level" during method/opcode
     execution of "trace_method_name" will be logged only once.
    

    Note that, the difference between the “enable” and other feature

     enabling options are:
    
    1. When “enable” is specified, since
      “trace_debug_layer/trace_debug_level” shall apply to all control
      method evaluations, after configuring “trace_state” to “enable”,
      “trace_method_name” will be reset to NULL.
    2. When “method/opcode” is specified, if
      “trace_method_name” is NULL when “trace_state” is configured to
      these options, the “trace_debug_layer/trace_debug_level” will
      apply to all control method evaluations.