Part Number: AM5728
Tool/software: Linux
Hi,
I am encountering an issue where under certain conditions, a watchdog timeout is observed and later all connectivity is lost. This is using Kernel 4.4.32-rt41 on a custom board.
It looks like this thread is about the same issue however it is not clear how the issue was solved.
Here is the kernel trace that appears after a short time with sufficient UDP traffic:
[ 670.004814] ------------[ cut here ]------------ [ 670.012508] WARNING: CPU: 0 PID: 4 at [removed]/kernel-source/net/sched/sch_generic.c:306 dev_watchdog+0x26c/0x278() [ 670.041482] NETDEV WATCHDOG: eth1 (cpsw): transmit queue 0 timed out [ 670.050634] Modules linked in: pm4351(O) jupiter_pcie(O) cryptodev(O) cpu_comms_fifos(O) cmemk(O) [ 670.063589] CPU: 0 PID: 4 Comm: ktimersoftd/0 Tainted: G O 4.4.32-rt41 #1 [ 670.063592] Hardware name: Generic DRA74X (Flattened Device Tree) [ 670.063596] Backtrace: [ 670.063613] [<c0013b90>] (dump_backtrace) from [<c0013d8c>] (show_stack+0x18/0x1c) [ 670.063622] r7:c0563098 r6:200f0013 r5:00000000 r4:c099c604 [ 670.063634] [<c0013d74>] (show_stack) from [<c0298a44>] (dump_stack+0x8c/0xa0) [ 670.063645] [<c02989b8>] (dump_stack) from [<c00361f4>] (warn_slowpath_common+0x88/0xb8) [ 670.063653] r7:c0563098 r6:00000132 r5:00000009 r4:ee4a1e00 [ 670.063662] [<c003616c>] (warn_slowpath_common) from [<c003625c>] (warn_slowpath_fmt+0x38/0x40) [ 670.063671] r8:edf68e00 r7:00000001 r6:c0968580 r5:ee512000 r4:c08bc250 [ 670.063680] [<c0036228>] (warn_slowpath_fmt) from [<c0563098>] (dev_watchdog+0x26c/0x278) [ 670.063685] r3:ee512000 r2:c08bc250 [ 670.063688] r4:00000000 [ 670.063696] [<c0562e2c>] (dev_watchdog) from [<c0093850>] (call_timer_fn.constprop.3+0x30/0xa0) [ 670.063706] r10:c0562e2c r9:ee512000 r8:eed305d4 r7:c0562e2c r6:00000000 r5:00000000 [ 670.063709] r4:ffffe000 [ 670.063715] [<c0093820>] (call_timer_fn.constprop.3) from [<c0093a5c>] (run_timer_softirq+0x19c/0x228) [ 670.063722] r7:00000200 r6:00000000 r5:00000000 r4:eed30580 [ 670.063730] [<c00938c0>] (run_timer_softirq) from [<c0039138>] (do_current_softirqs+0x1b8/0x254) [ 670.063739] r10:00000001 r9:ee4a1ed0 r8:00000000 r7:04208140 r6:ee4a0000 r5:00000004 [ 670.063742] r4:c09612b0 [ 670.063748] [<c0038f80>] (do_current_softirqs) from [<c0039490>] (run_ksoftirqd+0x34/0x64) [ 670.063757] r10:00000000 r9:00000000 r8:ffffe000 r7:c0980c70 r6:00000001 r5:ee443c40 [ 670.063759] r4:ffffe000 [ 670.063768] [<c003945c>] (run_ksoftirqd) from [<c0054668>] (smpboot_thread_fn+0x164/0x2b8) [ 670.063772] r5:ee443c40 r4:ee4a0000 [ 670.063780] [<c0054504>] (smpboot_thread_fn) from [<c0051124>] (kthread+0xe4/0xfc) [ 670.063790] r10:00000000 r9:00000000 r8:00000000 r7:c0054504 r6:ee443c40 r5:ee443cc0 [ 670.063793] r4:00000000 r3:ee4915c0 [ 670.063801] [<c0051040>] (kthread) from [<c0010790>] (ret_from_fork+0x14/0x24) [ 670.063808] r7:00000000 r6:00000000 r5:c0051040 r4:ee443cc0 [ 670.063810] ---[ end trace 0000000000000002 ]---
Some additional information:
Looking at /proc/softirqs, we can see that there is a lack of symmetry between the TX and RX counters. I would have expected them to be close to 1:1
~# cat /proc/softirqs
CPU0 CPU1
HI: 0 2
TIMER: 142416 142438
NET_TX: 526 4
NET_RX: 2380381 20020
BLOCK: 0 0
BLOCK_IOPOLL: 0 0
TASKLET: 2 31
SCHED: 140379 77417
HRTIMER: 407 194
RCU: 0 0