Fix the init, debug, info level definitions, which changed recently. 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. Signed-off-by: Bjorn Helgaas <bjorn.helgaas@xxxxxx> --- Documentation/kernel-parameters.txt | 98 ++++++++++++++++++++++------------- drivers/acpi/Kconfig | 12 +++- 2 files changed, 70 insertions(+), 40 deletions(-) diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt index 1bbcaa8..ddc791e 100644 --- a/Documentation/kernel-parameters.txt +++ b/Documentation/kernel-parameters.txt @@ -198,42 +198,69 @@ and is between 256 and 4096 characters. It is defined in the file that require a timer override, but don't have HPET - acpi.debug_layer= [HW,ACPI] + acpi.debug_*= [HW,ACPI,ACPI_DEBUG] + CONFIG_ACPI_DEBUG must be enabled to produce any ACPI + debug output. The type and amount of output is + controlled by debug_layer and debug_level parameters, + which can be in decimal or hex (prefixed with "0x"). + Some values produce so much output that the system is + unusable. The "log_buf_len" parameter may be useful + if you need to capture more output. + + To see AML "Debug" output (stores to the Debug object + while interpreting AML (this is enabled by default)): + acpi.debug_layer=0xffffffff acpi.debug_level=0x2 + For debugging PCI/_PRT issues (PCI, info msgs): + acpi.debug_layer=0x400000 acpi.debug_level=0x4 + For ACPI hardware issues (hardware, all msgs): + acpi.debug_layer=0x2 acpi.debug_level=0xffffffff + + acpi.debug_layer= [HW,ACPI,ACPI_DEBUG] Format: <int> - Each bit of the <int> indicates an ACPI debug layer, - 1: enable, 0: disable. It is useful for boot time - debugging. After system has booted up, it can be set - via /sys/module/acpi/parameters/debug_layer. - CONFIG_ACPI_DEBUG must be enabled for this to produce any output. - Available bits (add the numbers together) to enable debug output - for specific parts of the ACPI subsystem: - 0x01 utilities 0x02 hardware 0x04 events 0x08 tables - 0x10 namespace 0x20 parser 0x40 dispatcher - 0x80 executer 0x100 resources 0x200 acpica debugger - 0x400 os services 0x800 acpica disassembler. - The number can be in decimal or prefixed with 0x in hex. - Warning: Many of these options can produce a lot of - output and make your system unusable. Be very careful. - - acpi.debug_level= [HW,ACPI] + Bits in <int> correspond to _COMPONENT definitions in + ACPI source files. After boot, this mask can changed + on the fly, e.g., + echo 0x2 > /sys/module/acpi/parameters/debug_layer + The contents of debug_layer show the names of all the + defined bits and their current state. + + The following are some of the global components + defined by the ACPI CA and the Linux OSPM: + 0x01 utilities + 0x02 hardware + 0x04 events + 0x08 tables + 0x10 namespace + 0x20 parser + 0x40 dispatcher + 0x80 executer + 0x100 resources + 0x200 ACPI CA debugger + 0x400 OS services + 0x800 ACPI CA disassembler + 0x40000 battery + 0x80000 button + 0x200000 fan + 0x400000 PCI + 0x10000000 bay + + Many others, e.g., ACPI_BUS_COMPONENT and + ACPI_AC_COMPONENT, are defined by the Linux OSPM and + individual drivers. + + acpi.debug_level= [HW,ACPI,ACPI_DEBUG] Format: <int> - Each bit of the <int> indicates an ACPI debug level, - which corresponds to the level in an ACPI_DEBUG_PRINT - statement. After system has booted up, this mask - can be set via /sys/module/acpi/parameters/debug_level. - - CONFIG_ACPI_DEBUG must be enabled for this to produce - any output. The number can be in decimal or prefixed - with 0x in hex. Some of these options produce so much - output that the system is unusable. - - The following global components are defined by the - ACPI CA: - 0x01 error - 0x02 warn - 0x04 init - 0x08 debug object - 0x10 info + Bits in <int> correspond to levels in ACPI_DEBUG_PRINT + statements. After boot, this mask can be changed on + the fly, e.g., + echo 0x2 > /sys/module/acpi/parameters/debug_level + The contents of debug_level show the names of all the + defined bits and their current state. + + The following levels are defined by the ACPI CA: + 0x01 init + 0x02 debug (AML stores to the Debug object) + 0x04 info 0x20 init names 0x40 parse 0x80 load @@ -248,9 +275,6 @@ and is between 256 and 4096 characters. It is defined in the file 0x10000 resources 0x20000 user requests 0x40000 package - The number can be in decimal or prefixed with 0x in hex. - Warning: Many of these options can produce a lot of - output and make your system unusable. Be very careful. acpi.power_nocheck= [HW,ACPI] Format: 1/0 enable/disable the check of power state. diff --git a/drivers/acpi/Kconfig b/drivers/acpi/Kconfig index f4f6329..1c954a7 100644 --- a/drivers/acpi/Kconfig +++ b/drivers/acpi/Kconfig @@ -312,9 +312,15 @@ config ACPI_DEBUG bool "Debug Statements" default n help - The ACPI driver can optionally report errors with a great deal - of verbosity. Saying Y enables these statements. This will increase - your kernel size by around 50K. + The ACPI subsystem can produce debug output. Saying Y enables this + output and increases the kernel size by around 50K. + + Use the acpi.debug_layer and acpi.debug_level kernel command-line + parameters documented in Documentation/kernel-parameters.txt to + control the type and amount of debug output. + + When no parameters are supplied, the default settings cause AML + stores to the "Debug" object to produce console output. config ACPI_DEBUG_FUNC_TRACE bool "Additionally enable ACPI function tracing" -- To unsubscribe from this list: send the line "unsubscribe linux-acpi" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html