/****************************************************************************
* I.MX6 android shutdown 内核崩溃
* 说明:
* 本文主要是记录解决I.MX6的关机会进入halt模式,导致内核崩溃。
*
* 2016-3-24 深圳 南山平山村 曾剑锋
***************************************************************************/ 一、参考文章:
android 关机 流程分析
http://blog.chinaunix.net/uid-24227137-id-3248111.html 二、 现象:
SysRq : Emergency Remount R/O
EXT4-fs (mmcblk0p4): re-mounted. Opts: (null)
EXT4-fs (mmcblk0p6): re-mounted. Opts: (null)
Emergency Remount complete
System halted.
BUG: soft lockup - CPU# stuck for 23s! [Thread-:]
Modules linked in: Pid: , comm: Thread-
CPU: Not tainted (3.0. #)
PC is at machine_halt+0x8/0xc
LR is at smp_send_stop+0x9c/0xc4
pc : [<c004d7dc>] lr : [<c0052f98>] psr:
sp : d0e53e88 ip : fp : 78393c6c
r10: r9 : d0e52000 r8 : c004ca84
r7 : r6 : 4321fedc r5 : r4 : 4321fedc
r3 : r2 : r1 : r0 :
Flags: nZCv IRQs on FIQs on Mode SVC_32 ISA ARM Segment user
Control: 10c53c7d Table: 24fa804a DAC: PC: 0xc004d75c:
d75c e5843004 eaffffda eb01b99d e3500000 1affffed e5973004 e12fff33 e10f3000
d77c e3130080 1a000003 f1080080 eaffffd4 eb19c101 eaffffe0 e59f0018 e3a010fa
d79c eb0101fd f1080080 eaffffcd c06dccf4 c0a0ce64 c09886b4 c085477c e1a0200d 三、 解决方法:
cat kernel/sys.c
/*
* Reboot system call: for obvious reasons only root may call it,
* and even root needs to set up some magic numbers in the registers
* so that some mistake won't make this reboot the whole machine.
* You can also set the meaning of the ctrl-alt-del-key here.
*
* reboot doesn't sync: do that yourself before calling this.
*/
SYSCALL_DEFINE4(reboot, int, magic1, int, magic2, unsigned int, cmd,
void __user *, arg)
{
......
//if ((cmd == LINUX_REBOOT_CMD_POWER_OFF) && !pm_power_off)
// cmd = LINUX_REBOOT_CMD_HALT;
......
}