kexec panic: external abort on non-linefetch (0x1008) at 0x03510000
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
linux-ti-omap4 (Ubuntu) |
New
|
Undecided
|
Unassigned |
Bug Description
from ssh:
flag@panda:~$ sudo kexec -l /boot/vmlinuz-
flag@panda:~$ sudo kexec -e
on serial console:
panda login:
Ubuntu natty (development branch) panda ttyO2
panda login: [ 348.565948] omapdss DISPC error: timeout waiting for EVSYNC
[ 348.667510] omapdss DISPC error: timeout waiting for EVSYNC
[ 348.673431] Starting new kernel
[ 348.678527] Unhandled prefetch abort: external abort on non-linefetch (0x1008) at 0x03510000
[ 348.688690] Internal error: : 1008 [#1] PREEMPT SMP
[ 348.694519] last sysfs file: /sys/kernel/
[ 348.700531] Modules linked in: btrfs l2cap bnep dm_log dm_region_hash sco dm_mirror fuse dm_crypt wl12xx wl12xx_sdio btsdio
[ 348.714874] CPU: 1 Not tainted (2.6.38-1208-omap4 #11)
[ 348.721435] PC is at 0x3510000
[ 348.725250] LR is at machine_
[ 348.730743] pc : [<03510000>] lr : [<c0058cc8>] psr: 600f01d3
[ 348.731018] sp : ecd0fe60 ip : 00000000 fp : 0000a89a
[ 348.744384] r10: 000221d0 r9 : 00000000 r8 : adaef000
[ 348.750732] r7 : ecd0e000 r6 : ec4ad000 r5 : adaef000 r4 : ecb59200
[ 348.758544] r3 : 00000002 r2 : 00000005 r1 : 701fe019 r0 : 03510000
[ 348.766387] Flags: nZCv IRQs off FIQs off Mode SVC_32 ISA ARM Segment user
[ 348.775115] Control: 10c52879 Table: 96ebc04a DAC: 00000015
[ 348.782043] Process kexec (pid: 1452, stack limit = 0xecd0e2f8)
[ 348.789123] Stack: (0xecd0fe60 to 0xecd10000)
[ 348.794616] fe60: c08c635c ecb59200 45584543 00000000 c0052708 c00d0870 45584543 c0858888
[ 348.804534] fe80: 28121969 c00acea8 00000002 c1a68a80 ecd0fec4 c00934d4 ffffffef 200f0013
[ 348.814453] fea0: c1806e0c ecd0e000 ed28b000 ec4cc800 00000000 c1806e00 00000000 c1806e0c
[ 348.824371] fec0: ecd0fed4 c05de7a4 00000002 00000000 00000001 c1986c14 00000001 00000001
[ 348.834259] fee0: ecd0fef4 c05e31f8 db8ebc34 db8ebc20 edb176f4 c004b4c8 00000001 00000001
[ 348.844177] ff00: ecd0ff14 c05e31f8 db978330 ecd0e000 db978330 00000000 db97837c db8ebc20
[ 348.854095] ff20: c1a0ff08 c0154b30 00000014 db978330 00000000 c01570dc 00000001 00000001
[ 348.864013] ff40: ecd0ff54 c05e31f8 00000001 ed80f460 00000001 00000001 ecd0ff6c c05e31f8
[ 348.873931] ff60: c1a0ff00 00000000 000221c0 c015cf4c c1a0ff00 c0140f84 00000003 c19ca540
[ 348.883819] ff80: c19ca548 c014108c 00000002 271beb3a be81ef4a 00000000 401ae934 00000001
[ 348.893737] ffa0: 00000058 c0052520 00000000 401ae934 fee1dead 28121969 45584543 00000000
[ 348.903625] ffc0: 00000000 401ae934 00000001 00000058 00000000 00000000 00000001 000221d0
[ 348.913513] ffe0: be81f738 be81f728 0000a5eb 40237d90 80000010 fee1dead 00000000 00100000
[ 348.923492] [<c0058cc8>] (machine_
[ 348.934020] [<c00d0870>] (kernel_
[ 348.944244] [<c00acea8>] (sys_reboot+
[ 348.954620] Unhandled fault: external abort on non-linefetch (0x1008) at 0x0350fff0
flag@panda:~$ cat /proc/cmdline
mem=460M@0x80000000 vram=32Mconsole
flag@panda:~$ uname -a
Linux panda 2.6.38-1208-omap4 #11 SMP PREEMPT Thu Apr 21 10:13:14 CEST 2011 armv7l armv7l armv7l GNU/Linux
flag@panda:~$ kexec -v
kexec-tools 2.0.1 released 13th August 2009
flag@panda:~$ dpkg -l | grep kexec
ii kexec-tools 1:2.0.1-2ubuntu4 kexec tool for kexec reboots
flag@panda:~$
flag@panda:~$ lsb_release -rd
Description: Ubuntu Natty (development branch)
Release: 11.04
tags: | added: armel kernel-oops |
looks like a corruption is happening in machine_ kexec.c: machine_ kexec() in the final part - let's see a debugging session:
reboot the panda board and connect via openocd+gdb:
(gdb) l machine_kexec,+50 code_buffer_ phys; code_buffer; code_buffer_ phys = pfn(image- >control_ code_page) << PAGE_SHIFT; image-> control_ code_page) ; code_buffer* / on_page = page_list; ZIMAGE_ OFFSET + KEXEC_ARM_ ATAGS_OFFSET; reboot_ code_buffer, new_kernel, relocate_ new_kernel_ size); address: 0x%08lx reboot_code_buffer: %p reboot_ code_buffer_ phys: 0x%08lx relocate_ new_kernel_ size: %u\n", address, reboot_code_buffer, reboot_ code_buffer_ phys, relocate_ new_kernel_ size); range(( unsigned long) reboot_code_buffer, PAGE_SIZE) ; disable( ); disable( ); for_reboot( 0); /* mode is not used, so just pass 0*/ reboot_ code_buffer_ phys); canonical/ ubuntu- natty/arch/ arm/kernel/ machine_ kexec.c, line 111.
84 {
85 unsigned long page_list;
86 unsigned long reboot_
87 void *reboot_
88
89 printk("%s::%d\n", __FUNCTION__, __LINE__);
90 page_list = image->head & PAGE_MASK;
91
92 /* we need both effective and real address here */
93 reboot_
94 page_to_
95 reboot_code_buffer = page_address(
96
97 /* Prepare parameters for reboot_
98 kexec_start_address = image->start;
99 kexec_indirecti
100 kexec_mach_type = machine_arch_type;
101 kexec_boot_atags = image->start - KEXEC_ARM_
102 printk("%s::%d\n", __FUNCTION__, __LINE__);
103
104 /* copy our kernel relocation code to the control code page */
105 memcpy(
106 relocate_
107
108 printk("%s::%d kexec_start_
109 __FUNCTION__, __LINE__, kexec_start_
110
111 flush_icache_
112 (unsigned long) reboot_code_buffer + KEXEC_CONTROL_
113 printk(KERN_INFO "Bye!\n");
114
115 if (kexec_reinit)
116 kexec_reinit();
117 local_irq_
118 local_fiq_
119 setup_mm_
120 flush_cache_all();
121 outer_flush_all();
122 outer_disable();
123 cpu_proc_fin();
124 outer_inv_all();
125 flush_cache_all();
126 cpu_reset(
127 }
(gdb) break machine_kexec.c:111
Breakpoint 1 at 0xc0051bc4: file /home/flag/
(gdb) c
Continuing.
via ssh i execute kexec:
flag@omap:~$ uname -a 2.6.38- 1208-omap4 --initrd= /boot/initrd. img-2.6. 38-1208- omap4 --command- line="` cat /proc/cmdline`"
Linux omap 2.6.38-1208-omap4 #11 PREEMPT Thu Apr 28 10:44:16 CEST 2011 armv7l GNU/Linux
flag@omap:~$ sudo kexec -l /boot/vmlinuz-
flag@omap:~$ sudo kexec -e
on the serial console:
[ 72.652587] sys_reboot::380 address: 0x80008000 reboot_code_buffer: ee4af000 reboot_ code_buffer_ phy...
[ 72.655517] kernel_kexec::1504
[ 72.986114] omapdss DISPC error: timeout waiting for EVSYNC
[ 73.087677] omapdss DISPC error: timeout waiting for EVSYNC
[ 73.093566] Starting new kernel
[ 73.097625] machine_kexec::89
[ 73.100738] machine_kexec::102
[ 73.104339] machine_kexec::109 kexec_start_