Best Way to Begin Debugging Kernel Oops
I am running 2.6.30 on the AT91SAM9G45 and about twice a day, I get a Kernel Oops that is usually catastrophic. Although I have been doing embedded firmware for a long time, I only have a few months on Linux and was wondering what is the best way to begin to look at the Kernel Oops Dump (shown below). Is there a way to decode this other then the obvious. From my newbie eyes, it looks like the I2C (mdio) read on the Ethernet Phy during an interrupt cause a failure but since this is my first real problem to solve in Linux, I wanted to ask the experts first and then to ask how to enable and add debug commands properly into the kernel to debug the problem. Thanks, Gary
# Unable to handle kernel paging request at virtual address fffff100
pgd = c0004000
[fffff100] *pgd=7065a031, *pte=00000000, *ppte=00000000
Internal error: Oops: 17 [#1] PREEMPT
Modules linked in:
CPU: 0 Not tainted (2.6.30-e400-armv5l #90)
PC is at __irq_svc+0x48/0x8c
LR is at _text+0x4c/0x80
pc : [<c002da48>] lr : [<c002d04c>] psr: 00000093
sp : cf825f08 ip : 00000000 fp : cfa89b04
r10: 00000000 r9 : cf824000 r8 : 00000000
r7 : 00000001 r6 : 00000019 r5 : fffff000 r4 : ffffffff
r3 : cf824000 r2 : 00000002 r1 : cfa6b338 r0 : 00000001
Flags: nzcv IRQs off FIQs on Mode SVC_32 ISA ARM Segment kernel
Control: 0005317f Table: 7fb5c000 DAC: 00000017
Process events/0 (pid: 4, stack limit = 0xcf824268)
Stack: (0xcf825f08 to 0xcf826000)
5f00: d0880000 00000002 d0880000 cfa6b300 cfa89c00 cfa89c28
5f20: 00000005 00000001 c01c8d74 cf825fa4 00000000 cfa89b04 cf825f50 cf825f50
5f40: c01ca168 c01ca764 60000013 ffffffff cfa89a00 00000000 cfa89b30 00000000
5f60: c01c8d74 c01c9564 cfa89a00 cfa89b04 cfa89b30 c0414400 c01c8d74 c01c8fe8
5f80: cf801880 cf824000 cf801880 c0414400 c01c8d74 c0058868 cf801888 00000000
5fa0: c03f4f18 00000000 cf812340 c005cc18 cf825fb0 cf825fb0 cf801880 cf824000
5fc0: c041aa70 c00586ec cf801880 00000000 00000000 00000000 00000000 c005c884
5fe0: 00000000 00000000 00000000 00000000 00000000 c0049714 fff7ffff ffbfffff
[<c002da48>] (__irq_svc+0x48/0x8c) from [<c01ca168>] (mdiobus_read+0x50/0x74)
[<c01ca168>] (mdiobus_read+0x50/0x74) from [<c01c9564>] (genphy_read_status+0xd4
/0x18c)
[<c01c9564>] (genphy_read_status+0xd4/0x18c) from [<c01c8fe8>] (phy_state_machin
e+0x274/0x450)
[<c01c8fe8>] (phy_state_machine+0x274/0x450) from [<c0058868>] (worker_thread+0x
17c/0x2f0)
[<c0058868>] (worker_thread+0x17c/0x2f0) from [<c005c884>] (kthread+0x54/0x8c)
[<c005c884>] (kthread+0x54/0x8c) from [<c0049714>] (do_exit+0x0/0x6fc)
[<c0049714>] (do_exit+0x0/0x6fc) from [<cf8121c8>] (0xcf8121c8)
Code: e5998004 e2887001 e5897004 e59f503c (e5950100)
---[ end trace 632a28868c477a32 ]---
note: events/0[4] exited with preempt_count 1
|