01.org
Open in
urlscan Pro
2001:19d0:306:9::2
Public Scan
URL:
https://01.org/linux-acpi/documentation/debug-how-isolate-linux-acpi-issues
Submission: On December 03 via manual from US — Scanned from DE
Submission: On December 03 via manual from US — Scanned from DE
Form analysis
0 forms found in the DOMText Content
* Facebook * Twitter * Linkedin * Youtube * Github * Projects01 * Community01 * About01 * Contribute * Jobs TOP PROJECTS * Celadon * OpenStack* on Intel® Architecture * Intel® Graphics for Linux* PROJECTS BY TYPE * Autonomous Systems * Cloud Computing & Virtualization * Communications & Connectivity * Developer Toolkits * Embedded * Graphics & Visualization * Operating Systems * Power & Performance Optimization * System and Resource Management * Technologies * WEBSITES To provide more information about a Project, an external dedicated Website is created. This establishes a clear link between 01 and the project, and help to have a stronger presence in all Internet. See all * MAILING LIST A mailing list improves communication for all the people interested in a 01.org Project: developers, final users and contributors. A more direct channel to solve your questions and help others to get involved. See all * GITHUB REPOS Github repositories are the most preferred way to store and share a Project's source files for its easy way to navigate repos. Click here to find and download 01.org Projects' files! See all * BUG TRACKING Bug tracking allows the developers to have a record of the bugs and issues found in an application for a more efficient way to fix them. See all * IRC This is another way to interact with the developers of a Project, solve your questions or contribute to improve it: IRC channels. See all * OTHER Here's the place to find additional information about that Project. Could be more repos, external blogs or other websites related to the Project. See all * Home * Documentation * Patch Flow * Git Source Code * Applying Patches * Submitting Patches * Debug * Overriding a DSDT * Reference * Get Involved * Mailing Lists * Bugzilla * Utilities * FAQ LINUX*-ACPI Linux*-ACPI * Home * Documentation * Patch Flow * Git Source Code * Applying Patches * Submitting Patches * Debug * Overriding a DSDT * Reference * Get Involved * Mailing Lists * Bugzilla * Utilities * FAQ * Main Site * Git Repo * Share SHARE This project enables Linux to take advantage of platforms supporting Advanced Configuration & Power Interface -- virtually all high-volume i386, x86_64, and ia64 systems since 1999. ACPI, known as a Hardware Abstraction Layer (HAL) in embedded computing, is an abstraction layer between the operating system, platform firmware and hardware. This allows the OS and the platform to evolve independently. The core of the Linux ACPI implementation comes from ACPICA (ACPI Component Architecture). ACPICA includes an ACPI Machine Language (AML) interpreter that is resident in the Linux kernel. Several other operating systems use the same ACPICA core interpreter, including BSD and OpenSolaris. ACPICA also comes with a simulator, test suites, and a compiler, to translate ACPI Source Language (ASL) into AML. * http://www.acpi.info/(link is external) * Github Repo(link is external) Share SHARE * Home * Documentation * Patch Flow * Git Source Code * Applying Patches * Submitting Patches * Debug * Overriding a DSDT * Reference * Get Involved * Mailing Lists * Bugzilla * Utilities * FAQ * Patch Flow * Git Source Code * Applying Patches * Submitting Patches * Debug * Overriding a DSDT * Reference Start by identifying if the issue at hand: * has always occurred on every version of Linux tested. * is a regression as compared to some earlier version of Linux. If the issue is a regression, please find the version where the issue first appeared. This can be done by downloading older kernels from kernel.org, such as ftp://ftp.kernel.org/pub/linux/kernel/v2.6/linux-2.6.22.6.tar.gz Or, the coolest way to isolate where a regression started, is to use git-bisect, as detailed in the following handbook and git tutorial. * Linux Kernel testing handbook: http://www.stardust.webpages.pl/files/handbook/handbook-en.pdf(link is external) * Git tutorial: http://www.kernel.org/pub/software/scm/git/docs/tutorial.html(link is external) * git-bisect man page: http://www.kernel.org/pub/software/scm/git/docs/git-bisect.html(link is external) DECODING ACPI CONSOLE MESSAGES ------------------------------TBD MY SYSTEM DOESN'T BOOT First, boot with "acpi=off" (or build with CONFIG_ACPI=n), or disable ACPI in BIOS SETUP. * If the same failure occurs with ACPI disabled, then that should be noted and the issue reported to the appropriate mailing list or linux-kernel@vger.kernel.org. * If "acpi=off" makes the failure goes away, then it is likely an ACPI bug. But if a different failure occurs with ACPI disabled, then the test was inconclusive. * If the system boots with "acpi=off", but fails otherwise, there are a number of boot parameters that disable different parts of ACPI that can be used to isolate where the issue lies. acpi=ht the most like "acpi=off", disables all of ACPI except what is needed to enumerate processors. If acpi=off works and acpi=ht fails, then the issue is in the ACPI table parsing code itself, or perhaps the SMP code. pci=noacpi Disables ACPI for PCI root bus enumeration. Disables ACPI for IRQ routing. acpi=noirq Disables ACPI for IRQ routing. pnpacpi=off Disables the ACPI component of the Linux Plug and Play code. noapic Disables the IO-APIC for IRQ routing. nolapic Disables the Local-APIC and the IO-APIC. DEVICE INTERRUPT ISSUES * The most common interrupt issue is "irqXX: nobody cared!" and a stack trace. This means that the kernel received an interrupt, but there was no driver registered on that IRQ to handle it. As nobody handled it, the kernel had to disable that IRQ to get it to stop bothering the system. Any other devices sharing that IRQ are now dead, as they can not receive any interrupts. * "irqpoll" will make the kernel poll for interrupts, and will work-around dead devices due to the failure above. However, it doesn't help debug the root cause. * pci=noacpi, acpi=noirq, pnpacpi=off, noapic, nolapic are all knobs that can be turned to help isolate the problem. THERMAL ISSUES If the fan is spinning too much, or the system still gets hot when the fan is spinning fast: * If the system is a laptop, most times this means that there is dust blocking the air flow from the fan over the heat-sink. * Clean out the air vents. * Some people find that blowing compressed air through the air vents helps. * If you build your own system: * Verify that you used thermal grease on the heat-sink. * Verify that it is securely attached. Does the same issue happen with and without "acpi=off"? If yes, then Linux ACPI is not related to the failure. Does ACPI control the fan on this system? Virtually no desktops or servers use ACPI fan control. Instead, they use an embedded controller or other hardware on the motherboard that is independent of ACPI. Note that sometimes you can view and control this hardware with BIOS SETUP. Some systems, for example, run all fans at maximum speed by default and require you to enable fan speed control in SETUP. From Linux, you may be able to view and sometimes control native fan speed control with CONFIG_HWMON=y and the appropriate drivers sensors sub-system. Note, however, that some machines have conflicts between CONFIG_HWMON and CONFIG_ACPI because they may access the same underlying hardware using two different methods. Most notebooks also use native fan control instead of ACPI. There are, however, a couple of notable exceptions: HP/Compaq, Acer, and Fujitsu-Siemens often use ACPI-based fan-control. If /proc/acpi/fan is empty and /proc/acpi/thermal_zone/*/trip_points has no active trip points (those starting with "AC") then there is no ACPI-based fan control on your system. If you have dis-assembled the DSDT, you can also check if the device "PNP0C0B" is present. That is the standard identifier for a fan device. SUSPEND TO RAM ISSUES ---------------------TBD SUSPEND TO DISK ISSUES ----------------------TBD USING ACPI_DEBUG BOOT PARAMETERS: ACPI.DEBUG_LEVEL AND ACPI.DEBUG_LAYER ACPI can produce tons of debug output if these debug masks are switched to full on. include/acpi/acoutput.h shows which flags can be enabled for level and layer, and cat /sys/module/acpi/parameters/debug_{level,layer} also shows you the flags. Therefore, switch on debug flags carefully. You also might want to increase the kernel ring buffer by passing: log_buf_len=XY in bytes and later use dmesg -s XY to get more than 16k kernel log output. Instead of serial console logging you might want to use the netconsole interface (Documentation/networking/netconsole.txt) to send syslog messages over network or firewire to send syslog messages over firewire. The latter might be the only way to debug early hangs on laptops without a serial device anyway. USING ACPI_DEBUG BOOT PARAMETERS USING /SYSFS AND /PROC You can also pass the parameters at runtime, for example, using: # echo 0x1F >/sys/module/acpi/parameters/debug_{level,layer} Note that this interface exists since 2.6.22. In older kernels, it is /proc/acpi/debug_{level,layer}, which worked in the same way. Wrapping such statements around loading and unloading a bug affected ACPI module might give you the possibility to increase debug_level, but still only give you a manageable amount of debug output. Using ACPI_DEBUG acpi_dbg_layer and acpi_dbg_level kernel variables. Similar, but more powerful than 3.2.3, is to modify the global kernel variables for level and layer conditionally in the kernel code for your needs. For example: /* increase debug output to max */ acpi_debug_level=0xFFFFFFFF; /* * invoke an ACPI method that your desire be invoked * with full debugging enabled */ status = acpi_ut_evaluate_object(...); /* restore debug level again */ acpi_debug_level=0x3; OVERRIDING A DSDT ----------------- TBD Project: Linux*-ACPI * Privacy Policy * Terms of Service * Contact Us * Jobs * *Trademarks * Cookies * Facebook * Twitter * Linkedin * Youtube * Github Copyright © 2021 Intel Corporation. All rights reserved *Other names and brands may be claimed as the property of others Close Menu → * Projects01 TOP PROJECTS * Celadon * OpenStack* on Intel® Architecture * Intel® Graphics for Linux* PROJECTS BY TYPE * Autonomous Systems * Cloud Computing & Virtualization * Communications & Connectivity * Developer Toolkits * Embedded * Graphics & Visualization * Operating Systems * Power & Performance Optimization * System and Resource Management * Technologies * Community01 * About01 * Contribute * WEBSITES To provide more information about a Project, an external dedicated Website is created. This establishes a clear link between 01 and the project, and help to have a stronger presence in all Internet. See all * MAILING LIST A mailing list improves communication for all the people interested in a 01.org Project: developers, final users and contributors. A more direct channel to solve your questions and help others to get involved. See all * GITHUB REPOS Github repositories are the most preferred way to store and share a Project's source files for its easy way to navigate repos. Click here to find and download 01.org Projects' files! See all * BUG TRACKING Bug tracking allows the developers to have a record of the bugs and issues found in an application for a more efficient way to fix them. See all * IRC This is another way to interact with the developers of a Project, solve your questions or contribute to improve it: IRC channels. See all * OTHER Here's the place to find additional information about that Project. Could be more repos, external blogs or other websites related to the Project. See all * Jobs Facebook Twitter ✓ Thanks for sharing! AddToAny More… WE USE COOKIES ON THIS SITE TO ENHANCE YOUR USER EXPERIENCE By clicking the Accept button, you agree to us doing so. No, give me more info OK, I agree No, thanks