/****************************************************************************
* 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#1 stuck for 23s! [Thread-88:3327]
Modules linked in:
Pid: 3327, comm: Thread-88
CPU: 1 Not tainted (3.0.35 #617)
PC is at machine_halt+0x8/0xc
LR is at smp_send_stop+0x9c/0xc4
pc : [<c004d7dc>] lr : [<c0052f98>] psr: 60000013
sp : d0e53e88 ip : 00000000 fp : 78393c6c
r10: 00000000 r9 : d0e52000 r8 : c004ca84
r7 : 00000000 r6 : 4321fedc r5 : 28121969 r4 : 4321fedc
r3 : 00000001 r2 : 00000001 r1 : 00000000 r0 : 00000001
Flags: nZCv IRQs on FIQs on Mode SVC_32 ISA ARM Segment user
Control: 10c53c7d Table: 24fa804a DAC: 00000015
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;
......
}