Understanding exception inside linux kernel -
i trying debug our embedded linux system under low temperatures (<40c). problem not boot correctly , trying figure out why. after analysis saw kernel goes panic during start-up following output:
can: controller area network core (rev 20090105 abi 8) net: registered protocol family 29 can: raw protocol (rev 20090105) /opt/elinos-5.1/linux/linux-ppc-2.6.34/drivers/rtc/hctosys.c: unable open rtc device (rtc0) addrconf(netdev_up): eth0: link not ready ip-config: complete: device=eth0, addr=192.168.100.100, mask=255.255.255.0, gw=255.255.255.255, host=192.168.100.100, domain=, nis-domain=(none), bootserver=192.168.100.20, rootserver=192.168.100.20, rootpath= freeing unused kernel memory: 156k init init started: busybox v1.6.1 (2013-06-03 11:53:03 cest) multi-call binary addrconf(netdev_change): eth0: link becomes ready udevd-work[84]: '/sbin/modprobe -bv of:nioctlt<null>cfsl,mpc5125-ioctl' unexpect ed exit status 0x000b ------------[ cut here ]------------ badness @ /opt/elinos-5.1/linux/linux-ppc-2.6.34/kernel/sched.c:3574 nip: c001acfc lr: c001ace4 ctr: c01c5fa4 regs: c790f7c0 trap: 0700 not tainted (2.6.34.7-elinos-146-ipipe) msr: 00021032 <me,ce,ir,dr> cr: 28000482 xer: 20000000 task = c3ba6cb0[71] 'udevd' thread: c78e0000 gpr00: 00000000 c790f870 c3ba6cb0 00000001 c790f8b8 00000008 00000000 00000000 gpr08: 00000000 c0370000 00000001 c0370000 5d0fabd2 10033420 10019a6c 00000000 gpr16: 10019328 100194d4 100194c0 1002bad0 10019328 10019474 bfa35428 100192fc gpr24: 100321f0 00000000 00000000 c649e840 00000000 00000901 00000000 00000000 nip [c001acfc] add_preempt_count+0x48/0xac lr [c001ace4] add_preempt_count+0x30/0xac call trace: instruction dump: 409e0038 54290024 8009000c 2f800000 40bc0028 48133285 2f830000 419e0068 3d20c037 8009d298 2f800000 409e0058 <0fe00000> 48000050 3d20c037 8009d130 unable handle kernel paging request instruction fetch faulting instruction address: 0x00000000 oops: kernel access of bad area, sig: 11 [#1] preempt ltt nesting level : 0 orion last sysfs file: /sys/devices/platform/gpio-keys-polled/input/input0/uevent nip: 00000000 lr: 00000000 ctr: c01c7778 regs: c790f990 trap: 0400 tainted: g w (2.6.34.7-elinos-146-ipipe) msr: 20009032 <ee,me,ir,dr> cr: 28000484 xer: 20000000 task = c3ba6cb0[71] 'udevd' thread: c78e0000 gpr00: 00000000 c790fa40 c3ba6cb0 00000008 00000008 00000008 c7912804 c0348ba4 gpr08: 00000047 c78a5414 00000000 00000004 28000482 10033420 10019a6c 00000000 gpr16: 10019328 100194d4 100194c0 1002bad0 10019328 10019474 bfa35428 100192fc gpr24: 100321f0 00000000 c790f618 00200200 00000000 c790fa34 00200200 00000000 nip [00000000] (null) lr [00000000] (null) call trace: instruction dump: xxxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx kernel panic - not syncing: fatal exception in interrupt call trace: rebooting in 180 seconds.. info: rcu detected cpu 0 stall (t=2500 jiffies) info: rcu detected cpu 0 stall (t=10000 jiffies) info: rcu detected cpu 0 stall (t=17500 jiffies) info: rcu detected cpu 0 stall (t=25000 jiffies) info: rcu detected cpu 0 stall (t=32500 jiffies) info: rcu detected cpu 0 stall (t=40000 jiffies) system halted, ok turn off power ------------[ cut here ]------------ kernel bug @ /opt/elinos-5.1/linux/linux-ppc-2.6.34/mm/vmalloc.c:1228! oops: exception in kernel mode, sig: 5 [#2] preempt ltt nesting level : 0 orion last sysfs file: /sys/devices/platform/gpio-keys-polled/input/input0/uevent nip: c009b0cc lr: c0013518 ctr: 00000000 regs: c790f7c0 trap: 0700 tainted: g d w (2.6.34.7-elinos-146-ipipe) msr: 00029032 <ee,me,ce,ir,dr> cr: 28000484 xer: 20000000 task = c3ba6cb0[71] 'udevd' thread: c78e0000 gpr00: 078fe000 c790f870 c3ba6cb0 00001000 00000001 00000001 c9000000 fddff000 gpr08: ffffffff 000000d0 c001018c c790e000 48000488 10033420 10019a6c 00000000 gpr16: 10019328 100194d4 100194c0 1002bad0 10019328 10019474 bfa35428 100192fc gpr24: c001018c 000000d0 00001000 ffffffff c9000000 fddff000 00000001 00000001 nip [c009b0cc] __get_vm_area_node+0x68/0x204 lr [c0013518] __ioremap_caller+0x90/0x134 call trace: instruction dump: 7c9e2378 93e1003c 7cbf2b78 90010044 9261000c 92810010 92a10014 92c10018 92e1001c 93410028 800b000c 5400016e <0f000000> 70a00001 41820030 7c7e0034 kernel panic - not syncing: fatal exception in interrupt call trace: rebooting in 180 seconds..:
could give me hints how approach problem? want understand component of system (i.e. memory chip, etc.) causes failure. happy hear ideas. thanks.
all oops/panic information show exception happened in udevd context, think may triggered "/sbin/modprobe -bv of:nioctltcfsl,mpc5125-ioctl". verify this, can remove "/sbin/modprobe -bv of:nioctltcfsl,mpc5125-ioctl" entry in root file system see whether system can boot successfully.
i guess platform cpu powerpc architecture. if so, exception vector 0x700, means instruction fetch exception. cpu tried fetch 1 instruction invalid address. instruction flow incremented if there no jump/branch instructions. if option 1 verified related "/sbin/modprobe", please check kernel module analysis instruction fetch exception.
good luck!
Comments
Post a Comment