First implementation is done. (software suspend on MIPS)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



First implementation is done.My work includes "cpu.c, swsusp.S" which is located onarch/mips/xxx/power. (xxx is your specific architecture)But, problem still exist. When system resumed, kernel panic isoccured. (See below)I think that problem is occured by missing context. (I saved only few register)Please watch my code and please comment my mistake.
===================================================swsusp.S===================================================.text
/* * Suspend support for MIPS. * * Distribute under GPLv2 * * Copyright (c) 2007 Hyon Lim <alex@xxxxxxxxxxx> */
#include <linux/linkage.h>#include <asm/segment.h>#include <asm/page.h>#include <asm/asm.h>#include <asm/offset.h>#include <asm/regdef.h>
	.text
/* this macro generates local word(unsigned long) sized variable */#define	LOCAL_WORD(x)	\	.data		;\	.align 2	;\	.type x, @object;\	.size x, 4	;\x:	.space 4
#define WORD_ADDR(x)	\	.align 2	;\.L##x:			;\	.word x		
#define FUNC(x)		\	.text		;\	.align 2	;\	.globl x	;\	.ent x		;\	.type x,@function;\x:
#define FUNC_END(x)	\	.end x
LOCAL_WORD(saved_context_s0);LOCAL_WORD(saved_context_s1);LOCAL_WORD(saved_context_s2);LOCAL_WORD(saved_context_s3);LOCAL_WORD(saved_context_s4);LOCAL_WORD(saved_context_s5);LOCAL_WORD(saved_context_s6);LOCAL_WORD(saved_context_s7);LOCAL_WORD(saved_context_ra);
FUNC(swsusp_arch_suspend)	sw s0,saved_context_s0;	sw s1,saved_context_s1;	sw s2,saved_context_s2;	sw s3,saved_context_s3;	sw s4,saved_context_s4;	sw s5,saved_context_s5;	sw s6,saved_context_s6;	sw s7,saved_context_s7;	sw ra,saved_context_ra;
	jal swsusp_save;
	lw ra,saved_context_ra;	// this statement corresponds to RET in x86 asm.	//PRINT("[ASM] RETURN TO C!!");	j ra;				//	FUNC_END(swsusp_arch_suspend)
// for using printk.rdata.align 2$LC0:	.ascii "[DEBUG] RETURN TO C!!! from ASM\n\000"	.align 2$LC1:	.ascii "@@#\000"	.align 2$LC2:	.ascii "Copy %d!\n\000"	.align 2$LC3:	.ascii "End loop\n\000"	.align 2$LC4:	.ascii "[ASM] RESUME SUCCESS!!\n\000"	.align 2$LC5:	.ascii "[ASM] Start copying pages ... \n\000"	.align 2$LC6:	.ascii "[ASM] Load nr_copy_pages and pagedir_nosave success!!\n\000"
LOCAL_WORD(tmp_var);LOCAL_WORD(tmp_var2);
FUNC(swsusp_arch_resume)/**    This pseudo code should be implemented.**    register u32 *src,*dst;*    for (j=nr_copy_pages; j>0; j--)*     {*	src = pagedir_nosave[j].src;*	dst = pagedir_nosave[j].dst;*	for(i=0;i<1024;i++){*		*dst++ = *src++;*	}*     }*//**	typedef struct pbe{*		unsigned long address;	// address of the copy			: base addr;*		unsigned long orig_address;	//original address...		: base addr + 4;*	...*/	// Used register lookup table	// $t0 : orig's contents	// $t1 :	// $t2 : counter, 1024	// $t3 :	// $t4 :	// $t5 :	// $t6 :	// $t7 :	//	// $s0 : pagedir_nosave's address	// $s1 : nr_copy_pages's address	// $s2 : temp_var	// $s3 : src pointer	// $s4 : dst pointer	// $s5 :	// $s6 :	// $s7 :	//		// Get pointer from variables.	lw s0,pagedir_nosave;		// load pagedir_nosave's address	lw s1,nr_copy_pages;			// $s1=nr_copy_pages;$copy_loop:	lw s3,0(s0);		// $s3 has source destination's address	lw s4,4(s0);		// $s4 has orignal address				// Objective : copy orig_address's contents to address	li t2,1024;		// $t2 = 1024;, index variable.$copy_loop_inner:	lw t0,0(s3);		// orig's contents into $t0	sw t0,0(s4);		// orig's contents to target address's contents
	addiu s3,s3,4		// address++	addiu s4,s4,4		// orig_addr++		addiu t2,t2,-1		// decrease counter	blez t2,$end_inner_loop	// less than or equal zero	j $copy_loop_inner;	// jmp!$end_inner_loop:	//PRINT("#");	addiu s0,s0,16	addiu s1,s1,-1		// nr_copy_pages = nr_copy_pages - 1;	blez s1,$end_copy	j $copy_loop$end_copy:	lw s0, saved_context_s0;	lw s1, saved_context_s1;	lw s2, saved_context_s2;	lw s3, saved_context_s3;	lw s4, saved_context_s4;	lw s5, saved_context_s5;	lw s6, saved_context_s6;	lw s7, saved_context_s7;	jal swsusp_restore;	lw ra, saved_context_ra;	j ra;FUNC_END(swsusp_arch_resume)

===================================================cpu.c===================================================/* * Suspend support for MIPS. * * Distribute under GPLv2 * * Copyright (c) 2007 Hyon Lim <alex@xxxxxxxxxxx> */
#include <linux/config.h>#include <linux/kernel.h>#include <linux/module.h>#include <linux/init.h>#include <linux/types.h>#include <linux/spinlock.h>#include <linux/poll.h>#include <linux/delay.h>#include <linux/sysrq.h>#include <linux/proc_fs.h>#include <linux/irq.h>#include <linux/pm.h>#include <linux/device.h>#include <linux/suspend.h>#include <asm/uaccess.h>#include <asm/tlbflush.h>
static struct saved_context saved_context;
// This is callee-saved registers//unsigned long saved_context_s0;//unsigned long saved_context_s1;//unsigned long saved_context_s2;//unsigned long saved_context_s3;//unsigned long saved_context_s4;//unsigned long saved_context_s5;//unsigned long saved_context_s6;//unsigned long saved_context_s7;//unsigned long saved_context_ra;	// return address
void __save_processor_state(void){	preempt_disable();
	// kernel_fpu_begin();	// mips uses PF_USEDFPU, but there isn't function of kernel_fpu_begin.	// Think of storing fp related registers.		/*                            CPU registers                        */	/*	 * save the general registers.	 * note that gcc has constructs to specify output of certain registers,	 * but they're not used here, because it assumes that you want to modify	 * those registers, so it tries to be smart and save them beforehand.	 * It's really not necessary, and kinda fishy (check the assembly output),	 * so it's avoided.	 */
	/*	 * can't use output with "m" constraint. because direct addressing isnot permitted	 * on MIPS inline assembly. (register relative addressing as I see)	 * compiler usually allocates first "r" constraint register with'v0'. (in my opinion)	 * if it doesn't, I'll describe really really massive clobber listfor stability.	 *	 * "at" register is only used by assembler.	 * "zero" register always contains zero.	 */	asm volatile ("subu $29, 4");	asm volatile ("sw $2, ($29)");		asm volatile ("sw $3, (%0)" : : "r" (&saved_context.v[1]));	asm volatile ("sw $4, (%0)" : : "r" (&saved_context.a[0]));	asm volatile ("sw $5, (%0)" : : "r" (&saved_context.a[1]));	asm volatile ("sw $6, (%0)" : : "r" (&saved_context.a[2]));	asm volatile ("sw $7, (%0)" : : "r" (&saved_context.a[3]));	asm volatile ("sw $8, (%0)" : : "r" (&saved_context.t[0]));	asm volatile ("sw $9, (%0)" : : "r" (&saved_context.t[1]));	asm volatile ("sw $10, (%0)" : : "r" (&saved_context.t[2]));	asm volatile ("sw $11, (%0)" : : "r" (&saved_context.t[3]));	asm volatile ("sw $12, (%0)" : : "r" (&saved_context.t[4]));	asm volatile ("sw $13, (%0)" : : "r" (&saved_context.t[5]));	asm volatile ("sw $14, (%0)" : : "r" (&saved_context.t[6]));	asm volatile ("sw $15, (%0)" : : "r" (&saved_context.t[7]));	asm volatile ("sw $16, (%0)" : : "r" (&saved_context.s[0]));	asm volatile ("sw $17, (%0)" : : "r" (&saved_context.s[1]));	asm volatile ("sw $18, (%0)" : : "r" (&saved_context.s[2]));	asm volatile ("sw $19, (%0)" : : "r" (&saved_context.s[3]));	asm volatile ("sw $20, (%0)" : : "r" (&saved_context.s[4]));	asm volatile ("sw $21, (%0)" : : "r" (&saved_context.s[5]));	asm volatile ("sw $22, (%0)" : : "r" (&saved_context.s[6]));	asm volatile ("sw $23, (%0)" : : "r" (&saved_context.s[7]));	asm volatile ("sw $24, (%0)" : : "r" (&saved_context.t[8]));	asm volatile ("sw $25, (%0)" : : "r" (&saved_context.t[9]));	asm volatile ("sw $26, (%0)" : : "r" (&saved_context.k[0]));	asm volatile ("sw $27, (%0)" : : "r" (&saved_context.k[1]));	asm volatile ("sw $28, (%0)" : : "r" (&saved_context.gp));	asm volatile ("sw $30, (%0)" : : "r" (&saved_context.fp));	asm volatile ("sw $31, (%0)" : : "r" (&saved_context.ra));
	asm volatile ("lw $2, ($29)");	asm volatile ("addu $29, 4");		asm volatile ("sw $2, (%0)" : : "r" (&saved_context.v[0]) : "$2");	asm volatile ("sw $29, (%0)" : : "r" (&saved_context.sp));		/*	 * special registers	 */	asm volatile ("mfhi %0" : "=r" (saved_context.hi));	asm volatile ("mflo %0" : "=r" (saved_context.lo));	// load/link register??
	/*	 * coprocessor 0 registers (inclde/asm-mips/mipsregs.h)	 */	asm volatile ("mfc0 %0, $0" : "=r" (saved_context.cp0[0]));	asm volatile ("mfc0 %0, $1" : "=r" (saved_context.cp0[1]));	asm volatile ("mfc0 %0, $2" : "=r" (saved_context.cp0[2]));	asm volatile ("mfc0 %0, $3" : "=r" (saved_context.cp0[3]));	asm volatile ("mfc0 %0, $4" : "=r" (saved_context.cp0[4]));	asm volatile ("mfc0 %0, $5" : "=r" (saved_context.cp0[5]));	asm volatile ("mfc0 %0, $6" : "=r" (saved_context.cp0[6]));	asm volatile ("mfc0 %0, $7" : "=r" (saved_context.cp0[7]));	asm volatile ("mfc0 %0, $8" : "=r" (saved_context.cp0[8]));	asm volatile ("mfc0 %0, $9" : "=r" (saved_context.cp0[9]));	asm volatile ("mfc0 %0, $10" : "=r" (saved_context.cp0[10]));	asm volatile ("mfc0 %0, $11" : "=r" (saved_context.cp0[11]));	asm volatile ("mfc0 %0, $12" : "=r" (saved_context.cp0[12]));	asm volatile ("mfc0 %0, $13" : "=r" (saved_context.cp0[13]));	asm volatile ("mfc0 %0, $14" : "=r" (saved_context.cp0[14]));	asm volatile ("mfc0 %0, $15" : "=r" (saved_context.cp0[15]));	asm volatile ("mfc0 %0, $16" : "=r" (saved_context.cp0[16]));	asm volatile ("mfc0 %0, $17" : "=r" (saved_context.cp0[17]));	asm volatile ("mfc0 %0, $18" : "=r" (saved_context.cp0[18]));	asm volatile ("mfc0 %0, $19" : "=r" (saved_context.cp0[19]));	asm volatile ("mfc0 %0, $20" : "=r" (saved_context.cp0[20]));	asm volatile ("mfc0 %0, $21" : "=r" (saved_context.cp0[21]));	asm volatile ("mfc0 %0, $22" : "=r" (saved_context.cp0[22]));	asm volatile ("mfc0 %0, $23" : "=r" (saved_context.cp0[23]));	asm volatile ("mfc0 %0, $24" : "=r" (saved_context.cp0[24]));	asm volatile ("mfc0 %0, $25" : "=r" (saved_context.cp0[25]));	asm volatile ("mfc0 %0, $26" : "=r" (saved_context.cp0[26]));	asm volatile ("mfc0 %0, $27" : "=r" (saved_context.cp0[27]));	asm volatile ("mfc0 %0, $28" : "=r" (saved_context.cp0[28]));	asm volatile ("mfc0 %0, $29" : "=r" (saved_context.cp0[29]));	asm volatile ("mfc0 %0, $30" : "=r" (saved_context.cp0[30]));	asm volatile ("mfc0 %0, $31" : "=r" (saved_context.cp0[31]));}
void save_processor_state(void){		printk("[DEBUG] before __save_processor_state() %s,%d\n",__FILE__,__LINE__);	__save_processor_state();			printk("[DEBUG] after __save_processor_state() %s,%d\n",__FILE__,__LINE__);}
void __restore_processor_state(void){	/*	 * first restore %ds, so we can access our data properly	 */	asm volatile (".align 4");//	asm volatile ("movw %0, %%ds" :: "r" ((u16)__KERNEL_DS));

	/*	 * coprocessor 0 registers (inclde/asm-mips/mipsregs.h)	 */	asm volatile ("mtc0 %0, $0" : : "r" (saved_context.cp0[0]));	asm volatile ("mtc0 %0, $1" : : "r" (saved_context.cp0[1]));	asm volatile ("mtc0 %0, $2" : : "r" (saved_context.cp0[2]));	asm volatile ("mtc0 %0, $3" : : "r" (saved_context.cp0[3]));	asm volatile ("mtc0 %0, $4" : : "r" (saved_context.cp0[4]));	asm volatile ("mtc0 %0, $5" : : "r" (saved_context.cp0[5]));	asm volatile ("mtc0 %0, $6" : : "r" (saved_context.cp0[6]));	asm volatile ("mtc0 %0, $7" : : "r" (saved_context.cp0[7]));	asm volatile ("mtc0 %0, $8" : : "r" (saved_context.cp0[8]));	asm volatile ("mtc0 %0, $9" : : "r" (saved_context.cp0[9]));	asm volatile ("mtc0 %0, $10" : : "r" (saved_context.cp0[10]));	asm volatile ("mtc0 %0, $11" : : "r" (saved_context.cp0[11]));	asm volatile ("mtc0 %0, $12" : : "r" (saved_context.cp0[12]));	asm volatile ("mtc0 %0, $13" : : "r" (saved_context.cp0[13]));	asm volatile ("mtc0 %0, $14" : : "r" (saved_context.cp0[14]));	asm volatile ("mtc0 %0, $15" : : "r" (saved_context.cp0[15]));	asm volatile ("mtc0 %0, $16" : : "r" (saved_context.cp0[16]));	asm volatile ("mtc0 %0, $17" : : "r" (saved_context.cp0[17]));	asm volatile ("mtc0 %0, $18" : : "r" (saved_context.cp0[18]));	asm volatile ("mtc0 %0, $19" : : "r" (saved_context.cp0[19]));	asm volatile ("mtc0 %0, $20" : : "r" (saved_context.cp0[20]));	asm volatile ("mtc0 %0, $21" : : "r" (saved_context.cp0[21]));	asm volatile ("mtc0 %0, $22" : : "r" (saved_context.cp0[22]));	asm volatile ("mtc0 %0, $23" : : "r" (saved_context.cp0[23]));	asm volatile ("mtc0 %0, $24" : : "r" (saved_context.cp0[24]));	asm volatile ("mtc0 %0, $25" : : "r" (saved_context.cp0[25]));	asm volatile ("mtc0 %0, $26" : : "r" (saved_context.cp0[26]));	asm volatile ("mtc0 %0, $27" : : "r" (saved_context.cp0[27]));	asm volatile ("mtc0 %0, $28" : : "r" (saved_context.cp0[28]));	asm volatile ("mtc0 %0, $29" : : "r" (saved_context.cp0[29]));	asm volatile ("mtc0 %0, $30" : : "r" (saved_context.cp0[30]));	asm volatile ("mtc0 %0, $31" : : "r" (saved_context.cp0[31]));
	/*	 * special registers	 */	asm volatile ("mthi %0" : : "r" (saved_context.hi));	asm volatile ("mtlo %0" : : "r" (saved_context.lo));
	/*	 * the other general registers	 *	 * note that even though gcc has constructs to specify memory	 * input into certain registers, it will try to be too smart	 * and save them at the beginning of the function.  This is esp.	 * bad since we don't have a stack set up when we enter, and we	 * want to preserve the values on exit. So, we set them manually.	 */	asm volatile ("lw $3, (%0)" : : "r" (&saved_context.v[1]));	asm volatile ("lw $4, (%0)" : : "r" (&saved_context.a[0]));	asm volatile ("lw $5, (%0)" : : "r" (&saved_context.a[1]));	asm volatile ("lw $6, (%0)" : : "r" (&saved_context.a[2]));	asm volatile ("lw $7, (%0)" : : "r" (&saved_context.a[3]));	asm volatile ("lw $8, (%0)" : : "r" (&saved_context.t[0]));	asm volatile ("lw $9, (%0)" : : "r" (&saved_context.t[1]));	asm volatile ("lw $10, (%0)" : : "r" (&saved_context.t[2]));	asm volatile ("lw $11, (%0)" : : "r" (&saved_context.t[3]));	asm volatile ("lw $12, (%0)" : : "r" (&saved_context.t[4]));	asm volatile ("lw $13, (%0)" : : "r" (&saved_context.t[5]));	asm volatile ("lw $14, (%0)" : : "r" (&saved_context.t[6]));	asm volatile ("lw $15, (%0)" : : "r" (&saved_context.t[7]));	asm volatile ("lw $16, (%0)" : : "r" (&saved_context.s[0]));	asm volatile ("lw $17, (%0)" : : "r" (&saved_context.s[1]));	asm volatile ("lw $18, (%0)" : : "r" (&saved_context.s[2]));	asm volatile ("lw $19, (%0)" : : "r" (&saved_context.s[3]));	asm volatile ("lw $20, (%0)" : : "r" (&saved_context.s[4]));	asm volatile ("lw $21, (%0)" : : "r" (&saved_context.s[5]));	asm volatile ("lw $22, (%0)" : : "r" (&saved_context.s[6]));	asm volatile ("lw $23, (%0)" : : "r" (&saved_context.s[7]));	asm volatile ("lw $24, (%0)" : : "r" (&saved_context.t[8]));	asm volatile ("lw $25, (%0)" : : "r" (&saved_context.t[9]));	asm volatile ("lw $26, (%0)" : : "r" (&saved_context.k[0]));	asm volatile ("lw $27, (%0)" : : "r" (&saved_context.k[1]));	asm volatile ("lw $28, (%0)" : : "r" (&saved_context.gp));	asm volatile ("lw $29, (%0)" : : "r" (&saved_context.sp));	asm volatile ("lw $30, (%0)" : : "r" (&saved_context.fp));	asm volatile ("lw $31, (%0)" : : "r" (&saved_context.ra));	// Good job 'v0'. It's your turn!	asm volatile ("lw $2, (%0)" : : "r" (&saved_context.v[0]));
	preempt_enable();}
void restore_processor_state(void){			printk("[DEBUG] before __restore_processor_state()%s,%d\n",__FILE__,__LINE__);	__restore_processor_state();				printk("[DEBUG] after __restore_processor_state()%s,%d\n",__FILE__,__LINE__);}
/* Needed by apm.c */EXPORT_SYMBOL(save_processor_state);EXPORT_SYMBOL(restore_processor_state);

==============================================Kernel Panic Message==============================================kswapd0 left refrigerator, kernel/power/process.c,67init left refrigerator, kernel/power/process.c,67CPU 0 Unable to handle kernel paging request at virtual addressfffff689, epc ==  801e258c, ra == 801e2c44Oops in arch/mips/mm/fault.c::do_page_fault, line 204[#1]:Cpu 0$ 0   : 00000000 1000f800 fffff689 80364418$ 4   : 80364018 00000400 fffff689 8038ff34$ 8   : 00004642 802f3e28 80370000 80370000$12   : 80370000 fffffffa ffffffff 0000000a$16   : 80364018 80364417 1000f801 8038ff34$20   : 00000000 802f0000 80364018 00000400$24   : 00000001 8038fd22$28   : 8038e000 8038fe80 8014a438 801e2c44Hi    : 00000083Lo    : e42b2000epc   : 801e258c vsnprintf+0x58/0x6fc     Tainted: Pra    : 801e2c44 vscnprintf+0x14/0x30Status: 1000f802    KERNEL EXLCause : 00800008BadVA : fffff689PrId  : 00018448Modules linked in: rfs atyx220 atifplibProcess init (pid: 1, threadinfo=8038e000, task=80388b90)Stack 1: 8031e920 0000305f 000030b0 802f0000 802f0000 802f3e28 80370000 80370000        00000400 802f0000 1000f801 8014a438 00000000 802f0000 802e0000 8014a438        801e2c44 000030b0 80126a24 80126b5c fffff689 8014a438 80360000 80126d00        80364069 802f0000 1000f800 802f3e28 00000051 802f0000 00000001 802f0000        8014a438 8014a438 00000000 80126edc 80126f78 8014a438 00000000 80126edc        802e0000 8014a438 8014a440 8014a438 8014a438 802f0000 00000001 00000000        8014a438 8014a438 8014a438 8014a438 8025305c 00000000 ffffffff 802df120        000000fc 8037a4c8 8014a438 8014a45c 8038ae40 802f0000 00000001 00000000        00000003 0a737974 7fff7c70 00000003 00410000 00000000 7fff7f14 00000001        00000001 00443f10 00000000 00492c80 00000000 00000000 1000e7a0 7fff7ba8        00443fd0 0040baf8 0000f813 00000000 00000000 1000e6f0 10800020 0047038c        55555555 55555555 55555555 55555555 55555555 55555555 55555555 55555555Stack 2: fffff689 8038ff34 00004642 802f3e28 80370000 80370000 80370000 fffffffa        ffffffff 0000000a 80364018 80364417 1000f801 8038ff34 00000000 802f0000        80364018 00000400 00000001 8038fd22 801063dc 8010d6f4 8038e000 8038fe80        8014a438 801e2c44 1000f802 e42b2000 00000083 fffff689 00800008 801e258c        ...Call Trace: [<8014a438>] swsusp_suspend+0x78/0xc0 [<8014a438>] swsusp_suspend+0x78/0xc0 [<801e2c44>] vscnprintf+0x14/0x30 [<80126a24>] release_console_sem+0xec/0x364 [<80126b5c>] release_console_sem+0x224/0x364 [<8014a438>] swsusp_suspend+0x78/0xc0 [<80126d00>] vprintk+0x64/0x2c0 [<8014a438>] swsusp_suspend+0x78/0xc0 [<8014a438>] swsusp_suspend+0x78/0xc0 [<80126edc>] vprintk+0x240/0x2c0 [<80126f78>] printk+0x1c/0x28 [<8014a438>] swsusp_suspend+0x78/0xc0 [<80126edc>] vprintk+0x240/0x2c0 [<8014a438>] swsusp_suspend+0x78/0xc0 [<8014a440>] swsusp_suspend+0x80/0xc0 [<8014a438>] swsusp_suspend+0x78/0xc0 [<8014a438>] swsusp_suspend+0x78/0xc0 [<8014a438>] swsusp_suspend+0x78/0xc0 [<8014a438>] swsusp_suspend+0x78/0xc0 [<8014a438>] swsusp_suspend+0x78/0xc0 [<8014a438>] swsusp_suspend+0x78/0xc0 [<8025305c>] restore_processor_state+0x24/0x5c [<8014a438>] swsusp_suspend+0x78/0xc0 [<8014a45c>] swsusp_suspend+0x9c/0xc0


Code:        18400009  25adffff  24040020  020c102b  01a01821  1440000225adffff  a1840000        1c60fffa  258c0001  01801821  8fb70064  8fb60060  8fb5005c8fb40058  8fb30054        8fb20050  8fb1004c  8fb00048  00601021  03e00008  27bd006804e00041  00111082        30420001  14400033  001110c2  30420001  1040ff90  0011914225adffff  08078890        24150020  0807892c  00c71025  00071002  00402021  1040000425ce0001  004f001b        00002012  00001010  00804021  00c03821  00402021  0000b0210000b821  10000006        24050021  00040840  0004bfc2  00232025  00073840  0016b04016e00002  008f182b        14600003  24a5ffff  008f2023  26d60001  14a0fff4  00071fc200942021  90850000        00081800  00001021  00005821  00564025  006b4825  0100302101203821  01091025        a3250000  1440ffd9  01ddc821  0807889f  030e102a  25adffff0807888f  2415002b        020c102b  14400002  24020030  a1820000  080788bd  258c000108078898  25adfffe        00063023  00073823  0006102b  00e23823  25adffff  0807888f2415002d  10400008        24020030  258c0001  020c102b  1440fff0  00000000  9282002108078937  a1820000        08078944  a1820000  27bdffb8  afb7003c  afb60038  afb3002cafbf0040  afb50034        afb40030  afb20028  afb10024  afb00020  00a0b821  0080b021afa60050  04a000c7        00e09821  00851821  2471ffff  2482ffff  0222102b  1440002300808021  00c01021       <90440000> 10800010  00403021  00041e00  00031e03  240200251062001d  0230102b        14400004  24c20001  a2040000  8fa60050  24c20001  26100001afa20050  90440000        1480fff2  00403021  0230102b  1440001e  02161023  a20000008fbf0040  8fb7003c        8fb60038  8fb50034  8fb40030  8fb3002c  8fb20028  8fb100248fb00020  03e00008        27bd0048  2411ffff  08078962  0004b823  00009021  24c60001afa60050  80c20000        2442ffe0  2c430011  1060000b  3c03802d  00021080  24638d8c00431021  8c440000        00800008  00000000  12e0ffe3  00000000  08078979  a220000090c50000  3c148032        2682d560  30a300ff  00621821  90640000  00042082  3084000114800049  2415ffff        00051e00  00031e03  2402002a  1062006c  26620003  80c300002402002e  10620048        2408ffff  80c40000  38830068  3882006c  2c630001  2c42000100621825  14600025        2405ffff  2402004c  10820022  2402005a  10820020  2402007a1082001e  00000000        80c30000  2463ffdb  2c620054  14400025  2409000a  0230102b14400003  24020025        a2020000  8fa60050  90c30000  1060003d  26100001  0230102b1440ffa6  24c20001        a2030000  0807896f  8fa60050  08078988  36520001  0807898836520010  08078988        36520004  08078988  36520020  08078988  36520008  80c500002402006c  24c60001        14a2ffdf  afa60050  80c20000  1445ffdc  00000000  24c600012405004c  080789bb
Kernel panic - not syncing: Attempted to kill init!
-- Hyon Lim (임현)Mobile. 010-8212-1240 (Intl' Call : +82-10-8212-1240)Fax. 032-232-0578 (Intl' Available)Homepage : http://www.alexlab.netBlog : http://www.alexlab.net/blog

[Index of Archives]     [Linux MIPS Home]     [LKML Archive]     [Linux ARM Kernel]     [Linux ARM]     [Linux]     [Git]     [Yosemite News]     [Linux SCSI]     [Linux Hams]

  Powered by Linux