In arch/arm/kernel/process.c, arm_machine_restart () function,
Void arm_machine_restart (char mode, const char *cmd)
/ * Flush the console to make sure all the relevant messages make it
* out to the console drivers
/ * Disable interrupts first * /
* Tell the MM system that we are going to reboot
* we may need it to insert some 1:1 mappings so that
* soft boot works
/ * Clean and * / invalidate caches
/ * Turn off caching * /
/ * Push out any further dirty data, and ensure cache is empty
* Now call the architecture specific reboot code
Arch_reset (mode, CMD);
* Whoops the architecture was unable to reboot
* Tell the user!
Printk ("Reboot failed - System halted\n");
On the command line, enter the reboot command, but system is not reboot.
SysRq: Emergency Remount R/O
EXT4-fs (mmcblk0p4): re-mounted. Opts: (null)
EXT4-fs (mmcblk0p6): re-mounted. Opts: (null)
Emergency Remount complete
Imx2-wdt imx2-wdt.0: Device shutdown: Expect reboot!
Last printk which gets into Klog is before cpu_proc_fin () function,
cpu_proc_fin() is call /arch/arm/mm/proc-v7.S
mrc p15, 0, r0, c1, c0, 0 @ ctrl register
bic r0, r0, #0x1000 @ ...i............
bic r0, r0, #0x0006 @ .............ca.
mcr p15, 0, r0, c1, c0, 0 @ disable caches
mov pc, lr
Why hang before cpu_proc_fin () function?how to solve this problem?