Posts Tagged ‘kernelshark’

Debugging Embedded Linux (Kernel) Power Management – ELCE 2012

January 17th, 2013 No comments

Tero Kristo, Linux kernel developer at Texas Instruments, explains how to debug power management in Embedded Linux at ELCE 2012.


The presentation will talk about debugging various problems a kernel developer can face when working with power management. These include hardware related issues (IC / HW layout bugs, bad documentation) and software related (kernel bugs, driver problems, adding new kernel features, bad userspace behavior.) Along with presenting some of these problems, I will discuss about ways to debug these… power management typically requires specific tools to be used. I will base the discussion on my first hand experience from working with Linux PM. Target audience is (kernel) software developers interested in power management.

Linux Power Management Architecture

Linux Power Management Architecture

The presentation is divided into 3 sections:

  • Debugging tools / methods for PM
    • Disabling kernel features
    • Stress testing
    • Tracing (printk / low level UART)
    • GPIO / LED trace
    • Debugger
    • Buffered traces / statistics with trace-cmd & kernelshark
  • Kernel power management features
    • Suspend – echo mem > /sys/power/state
    • Cpuidle – Debug info available at /sys/devices/system/cpu/*/cpuidle/*
    • Regulators – Userspace API available at /sys/class/regulator
    • Clock framework – Userspace interface: /sys/kernel/debug/clk/*
    • Cpufreq – Debug info in /sys/devices/system/cpu/*/cpufreq/*, /sys/class/regulator/* and /sys/kernel/debug/clk/
    • Devfreq
  • Typical power management problems / bugs
    • Bootloader madness insanity
    • Device crash
    • Device malfunction
    • Increased power consumption – Can be kernel, hardware or userspace issues

You canĀ  download the slides for this presentation, and you may also want to have a look at Powertop & Powerdebug for Linux power management debugging.