异常现场:
在__exp_main.txt和SYS_KERNEL_LOG里看到如下log:
死机位置在函数dpm_wd_handler()中,是这里的BUG()触发了Exception
<4>[ 341.525222] 2)PC is at dpm_wd_handler+0x2c/0x30 <7>[ 328.440667] 2)[57] bus device_suspend 。。。。。。 <0>[ 340.489412] 2)akm8963 2-000c: **** DPM device timeout **** 。。。。。。 |
代码位置:
kernel-3.10/drivers/base/power/main.c
/** 411 * dpm_wd_handler - Driver suspend / resume watchdog handler. 412 * 413 * Called when a driver has timed out suspending or resuming. 414 * There's not much we can do here to recover so BUG() out for 415 * a crash-dump 416 */ 417static void dpm_wd_handler(unsigned long data) 418{ 419 struct dpm_watchdog *wd = (void *)data; 420 struct device *dev = wd->dev; 421 struct task_struct *tsk = wd->tsk; 422 423 dev_emerg(dev, "**** DPM device timeout ****\n"); 424 show_stack(tsk, NULL); 425 426 BUG(); 427} |
问题分析:
问题解决:
第一,根据上述log中Backtrace 找到是哪个device导致,如是自己添加的device驱动,特别是客制化的部分,需自己查看一下是否存在device suspend太久的情况。
第二,如这部分code没有做任何修改,请提交e-service并注明是哪部分驱动引起的问题,以便我们迅速处理问题。