/sys/devices/systemsuspend/hibernate 時:
Suspending System Devices
Suspending type 'vfp':
vfp0
Suspending type 'clocksource':
clocksource0
Suspending type 'timekeeping':
timekeeping0
Suspending type 'timer':
timer0
Suspending type 'mxc_gpio':
mxc_gpio0
Suspending type 'cpu':
cpu0
跟 /sys/device/system 下的目錄一致。hibernate fail 時,是 cpu0 fail。
所以把 function address 印出來,到 System.mp 就可以查到 function name。
結果 vfp0, clocksource0,.. mxc_gpio0 都沒有 suspend function。
只有 cpu0 有,是 cpufreq_suspend。
driver/cpufreq/cpufreq.c 中的 printk 是用 cpufreq_debug_printk( ) 作動態控制。
控制的參數有 debug, debug_ratelimit
這兩個參數被宣告成 module_param,所以都會在 /sys/module/cpufreq 裡出現。
還有要開啟這個功能,要define CONFIG_CPU_FREQ_DEBUG。
這在 menuconfig 打開:
CPU Power Management --> Enable CPUfreq debugging
另外,看 cpufreq_debug_printk( ) 的 code,是 KERN_INFO,所以不會直接 output 到 console。
要直接輸出(不經 dmesg),就把他刪掉。
這樣 build 好kernel 啟動後,還要:
echo 7 > /sys/module/cpufreq/debug
echo 0 > /sys/module/cpufreq/debug_ratelimit
改一下 cpufreq 的debug 參數,讓他output message。然後作 hibernate ,就可以看到 cpufreq-core 的 message 了。
沒有留言:
張貼留言