Linux Kernel Crash - gianfar.c ethernet driver

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

Linux Kernel Crash - gianfar.c ethernet driver

1,619 Views
akshayak
Contributor I

Hi,

We are using QorIQ P1021 processor, SDK - QorIQ-SDK-V1.7 , Linux version 3.12.19. Facing a kernel crash issue with ethernet driver gianfar.c - gfar_clean_rx_ring function. I am attaching crash logs here. Disassembling the gianfar.c function points to line   -> " newskb = gfar_new_skb(dev); skb = rx_queue->rx_skbuff[rx_queue->skb_currx]; "

 

 

Crash Logs:

 

uChar port 1  ee

Unable to handle kernel paging request for data at address 0xffffff54

Faulting instruction address: 0xc0518a7c

Oops: Kernel access of bad area, sig: 11 [#1]

SMP NR_CPUS=4 P1021PLCM-ISDN

Modules linked in: isdn_gw(PO+)

CPU: 0 PID: 0 Comm: swapper/0 Tainted: P           O 3.12.19-rt30isdn-svn714 #2

task: c0855300 ti: effea000 task.ti: c08a6000

NIP: c0518a7c LR: c03c5d24 CTR: c000d280

REGS: effebe20 TRAP: 0300   Tainted: P           O  (3.12.19-rt30isdn-svn714)

MSR: 00029000 <CE,EE,ME>  CR: 44024048  XER: 20000000

DEAR: ffffff54, ESR: 00000000

 

GPR00: c03c5c7c effebed0 c0855300 ffffff00 0000006c 00000000 07610e80 00000600

GPR08: 00000800 00000101 c72415c0 00000001 84024048 1001a6f0 ef024658 ef024650

GPR16: ef024648 ef024640 c08b0000 c70dd000 ef5665c0 ffffff00 c0670000 00000008

GPR24: c08b4274 c70dd000 c11f0ae8 00000001 0000006c 00000040 c654f6c0 ef024000

NIP [c0518a7c] skb_put+0x0/0x5c

LR [c03c5d24] gfar_clean_rx_ring+0x2b4/0x558

Call Trace:

[effebed0] [c03c5c7c] gfar_clean_rx_ring+0x20c/0x558 (unreliable)

[effebf50] [c03c6004] gfar_poll_rx_sq+0x3c/0xa8

[effebf70] [c05272b4] net_rx_action+0x120/0x1d8

[effebfa0] [c00434f8] __do_softirq+0x100/0x1cc

[effebff0] [c000d6d4] call_do_softirq+0x24/0x3c

[effe9fc0] [c00048ec] do_softirq+0x90/0xb8

[effe9fe0] [c0043ec4] irq_exit+0xa4/0xc8

[effe9ff0] [c000d710] call_do_irq+0x24/0x3c

[c08a7ea0] [c000467c] do_IRQ+0x8c/0xf8

[c08a7ec0] [c000f69c] ret_from_except+0x0/0x18

--- Exception: 501 at arch_cpu_idle+0x24/0x5c

    LR = arch_cpu_idle+0x24/0x5c

[c08a7f80] [c00a5528] rcu_idle_enter+0xac/0xec (unreliable)

[c08a7f90] [c007f980] cpu_startup_entry+0x120/0x170

[c08a7fc0] [c08107a4] start_kernel+0x2f0/0x304

[c08a7ff0] [c00003fc] skpinv+0x2e8/0x324

Instruction dump:

4bfffe1d 54692834 3929ffe0 7d5f482e 554a003c 614a0002 7d5f492e 80010014

83e1000c 38210010 7c0803a6 4e800020 <81230054> 81430094 7d290034 5529d97e

---[ end trace 60191b6bdb0b3477 ]---

Kernel panic - not syncing: Fatal exception in interrupt

Rebooting in 180 seconds..

 

Is there a fix available for this? Or any idea on the cause?

Original Attachment has been moved to: gianfar.c.zip

0 Kudos
2 Replies

1,003 Views
ivanlukyanchuk
Contributor I
0 Kudos

1,003 Views
yipingwang
NXP TechSupport
NXP TechSupport

Hello Akshaya K,

Linux SDK 1.7 has been tested strictly on Freescale demo board, probably your problem is not caused by Linux Kernel Ethernet driver itself.

According to the Kernel call trace information, it fails at handling Kernel paging request, it seems that this problem is caused by inappropriate DDR controller parameters configuration. I suggest you test DDR memory first, you could use mtest command in u-boot to do verification, and use DDRv Tool to assist you to do adjustment.


Have a great day,
Yiping

-----------------------------------------------------------------------------------------------------------------------
Note: If this post answers your question, please click the Correct Answer button. Thank you!
-----------------------------------------------------------------------------------------------------------------------

0 Kudos