Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

ACPI: update debug parameter documentation

Reformat acpi.debug_layer and acpi.debug_level documentation so it's
more readable, add some clues about how to figure out the mask bits that
enable a specific ACPI_DEBUG_PRINT statement, and include some useful
examples.

Move the list of masks to Documentation/acpi/debug.txt (these are
copies of the authoritative values in acoutput.h and acpi_drivers.h).

Signed-off-by: Bjorn Helgaas <bjorn.helgaas@hp.com>
Signed-off-by: Len Brown <len.brown@intel.com>

authored by

Bjorn Helgaas and committed by
Len Brown
a0d84a92 87b58608

+176 -53
+148
Documentation/acpi/debug.txt
··· 1 + ACPI Debug Output 2 + 3 + 4 + The ACPI CA, the Linux ACPI core, and some ACPI drivers can generate debug 5 + output. This document describes how to use this facility. 6 + 7 + Compile-time configuration 8 + -------------------------- 9 + 10 + ACPI debug output is globally enabled by CONFIG_ACPI_DEBUG. If this config 11 + option is turned off, the debug messages are not even built into the 12 + kernel. 13 + 14 + Boot- and run-time configuration 15 + -------------------------------- 16 + 17 + When CONFIG_ACPI_DEBUG=y, you can select the component and level of messages 18 + you're interested in. At boot-time, use the acpi.debug_layer and 19 + acpi.debug_level kernel command line options. After boot, you can use the 20 + debug_layer and debug_level files in /sys/module/acpi/parameters/ to control 21 + the debug messages. 22 + 23 + debug_layer (component) 24 + ----------------------- 25 + 26 + The "debug_layer" is a mask that selects components of interest, e.g., a 27 + specific driver or part of the ACPI interpreter. To build the debug_layer 28 + bitmask, look for the "#define _COMPONENT" in an ACPI source file. 29 + 30 + You can set the debug_layer mask at boot-time using the acpi.debug_layer 31 + command line argument, and you can change it after boot by writing values 32 + to /sys/module/acpi/parameters/debug_layer. 33 + 34 + The possible components are defined in include/acpi/acoutput.h and 35 + include/acpi/acpi_drivers.h. Reading /sys/module/acpi/parameters/debug_layer 36 + shows the supported mask values, currently these: 37 + 38 + ACPI_UTILITIES 0x00000001 39 + ACPI_HARDWARE 0x00000002 40 + ACPI_EVENTS 0x00000004 41 + ACPI_TABLES 0x00000008 42 + ACPI_NAMESPACE 0x00000010 43 + ACPI_PARSER 0x00000020 44 + ACPI_DISPATCHER 0x00000040 45 + ACPI_EXECUTER 0x00000080 46 + ACPI_RESOURCES 0x00000100 47 + ACPI_CA_DEBUGGER 0x00000200 48 + ACPI_OS_SERVICES 0x00000400 49 + ACPI_CA_DISASSEMBLER 0x00000800 50 + ACPI_COMPILER 0x00001000 51 + ACPI_TOOLS 0x00002000 52 + ACPI_BUS_COMPONENT 0x00010000 53 + ACPI_AC_COMPONENT 0x00020000 54 + ACPI_BATTERY_COMPONENT 0x00040000 55 + ACPI_BUTTON_COMPONENT 0x00080000 56 + ACPI_SBS_COMPONENT 0x00100000 57 + ACPI_FAN_COMPONENT 0x00200000 58 + ACPI_PCI_COMPONENT 0x00400000 59 + ACPI_POWER_COMPONENT 0x00800000 60 + ACPI_CONTAINER_COMPONENT 0x01000000 61 + ACPI_SYSTEM_COMPONENT 0x02000000 62 + ACPI_THERMAL_COMPONENT 0x04000000 63 + ACPI_MEMORY_DEVICE_COMPONENT 0x08000000 64 + ACPI_VIDEO_COMPONENT 0x10000000 65 + ACPI_PROCESSOR_COMPONENT 0x20000000 66 + 67 + debug_level 68 + ----------- 69 + 70 + The "debug_level" is a mask that selects different types of messages, e.g., 71 + those related to initialization, method execution, informational messages, etc. 72 + To build debug_level, look at the level specified in an ACPI_DEBUG_PRINT() 73 + statement. 74 + 75 + The ACPI interpreter uses several different levels, but the Linux 76 + ACPI core and ACPI drivers generally only use ACPI_LV_INFO. 77 + 78 + You can set the debug_level mask at boot-time using the acpi.debug_level 79 + command line argument, and you can change it after boot by writing values 80 + to /sys/module/acpi/parameters/debug_level. 81 + 82 + The possible levels are defined in include/acpi/acoutput.h. Reading 83 + /sys/module/acpi/parameters/debug_level shows the supported mask values, 84 + currently these: 85 + 86 + ACPI_LV_INIT 0x00000001 87 + ACPI_LV_DEBUG_OBJECT 0x00000002 88 + ACPI_LV_INFO 0x00000004 89 + ACPI_LV_INIT_NAMES 0x00000020 90 + ACPI_LV_PARSE 0x00000040 91 + ACPI_LV_LOAD 0x00000080 92 + ACPI_LV_DISPATCH 0x00000100 93 + ACPI_LV_EXEC 0x00000200 94 + ACPI_LV_NAMES 0x00000400 95 + ACPI_LV_OPREGION 0x00000800 96 + ACPI_LV_BFIELD 0x00001000 97 + ACPI_LV_TABLES 0x00002000 98 + ACPI_LV_VALUES 0x00004000 99 + ACPI_LV_OBJECTS 0x00008000 100 + ACPI_LV_RESOURCES 0x00010000 101 + ACPI_LV_USER_REQUESTS 0x00020000 102 + ACPI_LV_PACKAGE 0x00040000 103 + ACPI_LV_ALLOCATIONS 0x00100000 104 + ACPI_LV_FUNCTIONS 0x00200000 105 + ACPI_LV_OPTIMIZATIONS 0x00400000 106 + ACPI_LV_MUTEX 0x01000000 107 + ACPI_LV_THREADS 0x02000000 108 + ACPI_LV_IO 0x04000000 109 + ACPI_LV_INTERRUPTS 0x08000000 110 + ACPI_LV_AML_DISASSEMBLE 0x10000000 111 + ACPI_LV_VERBOSE_INFO 0x20000000 112 + ACPI_LV_FULL_TABLES 0x40000000 113 + ACPI_LV_EVENTS 0x80000000 114 + 115 + Examples 116 + -------- 117 + 118 + For example, drivers/acpi/bus.c contains this: 119 + 120 + #define _COMPONENT ACPI_BUS_COMPONENT 121 + ... 122 + ACPI_DEBUG_PRINT((ACPI_DB_INFO, "Device insertion detected\n")); 123 + 124 + To turn on this message, set the ACPI_BUS_COMPONENT bit in acpi.debug_layer 125 + and the ACPI_LV_INFO bit in acpi.debug_level. (The ACPI_DEBUG_PRINT 126 + statement uses ACPI_DB_INFO, which is macro based on the ACPI_LV_INFO 127 + definition.) 128 + 129 + Enable all AML "Debug" output (stores to the Debug object while interpreting 130 + AML) during boot: 131 + 132 + acpi.debug_layer=0xffffffff acpi.debug_level=0x2 133 + 134 + Enable PCI and PCI interrupt routing debug messages: 135 + 136 + acpi.debug_layer=0x400000 acpi.debug_level=0x4 137 + 138 + Enable all ACPI hardware-related messages: 139 + 140 + acpi.debug_layer=0x2 acpi.debug_level=0xffffffff 141 + 142 + Enable all ACPI_DB_INFO messages after boot: 143 + 144 + # echo 0x4 > /sys/module/acpi/parameters/debug_level 145 + 146 + Show all valid component values: 147 + 148 + # cat /sys/module/acpi/parameters/debug_layer
+21 -50
Documentation/kernel-parameters.txt
··· 198 198 that require a timer override, but don't have 199 199 HPET 200 200 201 - acpi.debug_layer= [HW,ACPI] 201 + acpi.debug_layer= [HW,ACPI,ACPI_DEBUG] 202 + acpi.debug_level= [HW,ACPI,ACPI_DEBUG] 202 203 Format: <int> 203 - Each bit of the <int> indicates an ACPI debug layer, 204 - 1: enable, 0: disable. It is useful for boot time 205 - debugging. After system has booted up, it can be set 206 - via /sys/module/acpi/parameters/debug_layer. 207 - CONFIG_ACPI_DEBUG must be enabled for this to produce any output. 208 - Available bits (add the numbers together) to enable debug output 209 - for specific parts of the ACPI subsystem: 210 - 0x01 utilities 0x02 hardware 0x04 events 0x08 tables 211 - 0x10 namespace 0x20 parser 0x40 dispatcher 212 - 0x80 executer 0x100 resources 0x200 acpica debugger 213 - 0x400 os services 0x800 acpica disassembler. 214 - The number can be in decimal or prefixed with 0x in hex. 215 - Warning: Many of these options can produce a lot of 216 - output and make your system unusable. Be very careful. 204 + CONFIG_ACPI_DEBUG must be enabled to produce any ACPI 205 + debug output. Bits in debug_layer correspond to a 206 + _COMPONENT in an ACPI source file, e.g., 207 + #define _COMPONENT ACPI_PCI_COMPONENT 208 + Bits in debug_level correspond to a level in 209 + ACPI_DEBUG_PRINT statements, e.g., 210 + ACPI_DEBUG_PRINT((ACPI_DB_INFO, ... 211 + See Documentation/acpi/debug.txt for more information 212 + about debug layers and levels. 217 213 218 - acpi.debug_level= [HW,ACPI] 219 - Format: <int> 220 - Each bit of the <int> indicates an ACPI debug level, 221 - which corresponds to the level in an ACPI_DEBUG_PRINT 222 - statement. After system has booted up, this mask 223 - can be set via /sys/module/acpi/parameters/debug_level. 214 + Enable AML "Debug" output, i.e., stores to the Debug 215 + object while interpreting AML: 216 + acpi.debug_layer=0xffffffff acpi.debug_level=0x2 217 + Enable PCI/PCI interrupt routing info messages: 218 + acpi.debug_layer=0x400000 acpi.debug_level=0x4 219 + Enable all messages related to ACPI hardware: 220 + acpi.debug_layer=0x2 acpi.debug_level=0xffffffff 224 221 225 - CONFIG_ACPI_DEBUG must be enabled for this to produce 226 - any output. The number can be in decimal or prefixed 227 - with 0x in hex. Some of these options produce so much 228 - output that the system is unusable. 229 - 230 - The following global components are defined by the 231 - ACPI CA: 232 - 0x01 error 233 - 0x02 warn 234 - 0x04 init 235 - 0x08 debug object 236 - 0x10 info 237 - 0x20 init names 238 - 0x40 parse 239 - 0x80 load 240 - 0x100 dispatch 241 - 0x200 execute 242 - 0x400 names 243 - 0x800 operation region 244 - 0x1000 bfield 245 - 0x2000 tables 246 - 0x4000 values 247 - 0x8000 objects 248 - 0x10000 resources 249 - 0x20000 user requests 250 - 0x40000 package 251 - The number can be in decimal or prefixed with 0x in hex. 252 - Warning: Many of these options can produce a lot of 253 - output and make your system unusable. Be very careful. 222 + Some values produce so much output that the system is 223 + unusable. The "log_buf_len" parameter may be useful 224 + if you need to capture more output. 254 225 255 226 acpi.power_nocheck= [HW,ACPI] 256 227 Format: 1/0 enable/disable the check of power state.
+7 -3
drivers/acpi/Kconfig
··· 312 312 bool "Debug Statements" 313 313 default n 314 314 help 315 - The ACPI driver can optionally report errors with a great deal 316 - of verbosity. Saying Y enables these statements. This will increase 317 - your kernel size by around 50K. 315 + The ACPI subsystem can produce debug output. Saying Y enables this 316 + output and increases the kernel size by around 50K. 317 + 318 + Use the acpi.debug_layer and acpi.debug_level kernel command-line 319 + parameters documented in Documentation/acpi/debug.txt and 320 + Documentation/kernel-parameters.txt to control the type and 321 + amount of debug output. 318 322 319 323 config ACPI_DEBUG_FUNC_TRACE 320 324 bool "Additionally enable ACPI function tracing"