debug.txt 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148
  1. ACPI Debug Output
  2. The ACPI CA, the Linux ACPI core, and some ACPI drivers can generate debug
  3. output. This document describes how to use this facility.
  4. Compile-time configuration
  5. --------------------------
  6. ACPI debug output is globally enabled by CONFIG_ACPI_DEBUG. If this config
  7. option is turned off, the debug messages are not even built into the
  8. kernel.
  9. Boot- and run-time configuration
  10. --------------------------------
  11. When CONFIG_ACPI_DEBUG=y, you can select the component and level of messages
  12. you're interested in. At boot-time, use the acpi.debug_layer and
  13. acpi.debug_level kernel command line options. After boot, you can use the
  14. debug_layer and debug_level files in /sys/module/acpi/parameters/ to control
  15. the debug messages.
  16. debug_layer (component)
  17. -----------------------
  18. The "debug_layer" is a mask that selects components of interest, e.g., a
  19. specific driver or part of the ACPI interpreter. To build the debug_layer
  20. bitmask, look for the "#define _COMPONENT" in an ACPI source file.
  21. You can set the debug_layer mask at boot-time using the acpi.debug_layer
  22. command line argument, and you can change it after boot by writing values
  23. to /sys/module/acpi/parameters/debug_layer.
  24. The possible components are defined in include/acpi/acoutput.h and
  25. include/acpi/acpi_drivers.h. Reading /sys/module/acpi/parameters/debug_layer
  26. shows the supported mask values, currently these:
  27. ACPI_UTILITIES 0x00000001
  28. ACPI_HARDWARE 0x00000002
  29. ACPI_EVENTS 0x00000004
  30. ACPI_TABLES 0x00000008
  31. ACPI_NAMESPACE 0x00000010
  32. ACPI_PARSER 0x00000020
  33. ACPI_DISPATCHER 0x00000040
  34. ACPI_EXECUTER 0x00000080
  35. ACPI_RESOURCES 0x00000100
  36. ACPI_CA_DEBUGGER 0x00000200
  37. ACPI_OS_SERVICES 0x00000400
  38. ACPI_CA_DISASSEMBLER 0x00000800
  39. ACPI_COMPILER 0x00001000
  40. ACPI_TOOLS 0x00002000
  41. ACPI_BUS_COMPONENT 0x00010000
  42. ACPI_AC_COMPONENT 0x00020000
  43. ACPI_BATTERY_COMPONENT 0x00040000
  44. ACPI_BUTTON_COMPONENT 0x00080000
  45. ACPI_SBS_COMPONENT 0x00100000
  46. ACPI_FAN_COMPONENT 0x00200000
  47. ACPI_PCI_COMPONENT 0x00400000
  48. ACPI_POWER_COMPONENT 0x00800000
  49. ACPI_CONTAINER_COMPONENT 0x01000000
  50. ACPI_SYSTEM_COMPONENT 0x02000000
  51. ACPI_THERMAL_COMPONENT 0x04000000
  52. ACPI_MEMORY_DEVICE_COMPONENT 0x08000000
  53. ACPI_VIDEO_COMPONENT 0x10000000
  54. ACPI_PROCESSOR_COMPONENT 0x20000000
  55. debug_level
  56. -----------
  57. The "debug_level" is a mask that selects different types of messages, e.g.,
  58. those related to initialization, method execution, informational messages, etc.
  59. To build debug_level, look at the level specified in an ACPI_DEBUG_PRINT()
  60. statement.
  61. The ACPI interpreter uses several different levels, but the Linux
  62. ACPI core and ACPI drivers generally only use ACPI_LV_INFO.
  63. You can set the debug_level mask at boot-time using the acpi.debug_level
  64. command line argument, and you can change it after boot by writing values
  65. to /sys/module/acpi/parameters/debug_level.
  66. The possible levels are defined in include/acpi/acoutput.h. Reading
  67. /sys/module/acpi/parameters/debug_level shows the supported mask values,
  68. currently these:
  69. ACPI_LV_INIT 0x00000001
  70. ACPI_LV_DEBUG_OBJECT 0x00000002
  71. ACPI_LV_INFO 0x00000004
  72. ACPI_LV_INIT_NAMES 0x00000020
  73. ACPI_LV_PARSE 0x00000040
  74. ACPI_LV_LOAD 0x00000080
  75. ACPI_LV_DISPATCH 0x00000100
  76. ACPI_LV_EXEC 0x00000200
  77. ACPI_LV_NAMES 0x00000400
  78. ACPI_LV_OPREGION 0x00000800
  79. ACPI_LV_BFIELD 0x00001000
  80. ACPI_LV_TABLES 0x00002000
  81. ACPI_LV_VALUES 0x00004000
  82. ACPI_LV_OBJECTS 0x00008000
  83. ACPI_LV_RESOURCES 0x00010000
  84. ACPI_LV_USER_REQUESTS 0x00020000
  85. ACPI_LV_PACKAGE 0x00040000
  86. ACPI_LV_ALLOCATIONS 0x00100000
  87. ACPI_LV_FUNCTIONS 0x00200000
  88. ACPI_LV_OPTIMIZATIONS 0x00400000
  89. ACPI_LV_MUTEX 0x01000000
  90. ACPI_LV_THREADS 0x02000000
  91. ACPI_LV_IO 0x04000000
  92. ACPI_LV_INTERRUPTS 0x08000000
  93. ACPI_LV_AML_DISASSEMBLE 0x10000000
  94. ACPI_LV_VERBOSE_INFO 0x20000000
  95. ACPI_LV_FULL_TABLES 0x40000000
  96. ACPI_LV_EVENTS 0x80000000
  97. Examples
  98. --------
  99. For example, drivers/acpi/bus.c contains this:
  100. #define _COMPONENT ACPI_BUS_COMPONENT
  101. ...
  102. ACPI_DEBUG_PRINT((ACPI_DB_INFO, "Device insertion detected\n"));
  103. To turn on this message, set the ACPI_BUS_COMPONENT bit in acpi.debug_layer
  104. and the ACPI_LV_INFO bit in acpi.debug_level. (The ACPI_DEBUG_PRINT
  105. statement uses ACPI_DB_INFO, which is macro based on the ACPI_LV_INFO
  106. definition.)
  107. Enable all AML "Debug" output (stores to the Debug object while interpreting
  108. AML) during boot:
  109. acpi.debug_layer=0xffffffff acpi.debug_level=0x2
  110. Enable PCI and PCI interrupt routing debug messages:
  111. acpi.debug_layer=0x400000 acpi.debug_level=0x4
  112. Enable all ACPI hardware-related messages:
  113. acpi.debug_layer=0x2 acpi.debug_level=0xffffffff
  114. Enable all ACPI_DB_INFO messages after boot:
  115. # echo 0x4 > /sys/module/acpi/parameters/debug_level
  116. Show all valid component values:
  117. # cat /sys/module/acpi/parameters/debug_layer