AnsweredAssumed Answered

Unable to handle kernel paging request with rcu process callback

Question asked by Eric Shen on Oct 2, 2017

Hi,

My imx6dl system occurs kernel panic randomly as following log.

system configuration:

SOC: i.MX6DL v1.3

Memory: 1G

EMMC: 16G

OS: Yocto 1.7

kernel: 3.14.28

 

The kernel panic occurs about 3~8 hours.

root@RainbowB:~# Unable to handle kernel paging request at virtual address 2a9ae00a^M
pgd = 80004000^M
[2a9ae00a] *pgd=00000000^M
Internal error: Oops: 5 [#1] PREEMPT SMP ARM^M
Modules linked in: cp2056 asix usbnet mxc_dcic^M
CPU: 0 PID: 0 Comm: swapper/0 Not tainted 3.14.28-1.0.0_ga+g91cf351 #5^M
task: 80d97aa8 ti: 80d8c000 task.ti: 80d8c000^M
PC is at rcu_process_callbacks+0x7c/0x4bc^M
LR is at rcu_process_callbacks+0xc0/0x4bc^M
pc : [<8007066c>]    lr : [<800706b0>]    psr: a00b0113^M
sp : 80d8de58  ip : 00000000  fp : 2a9ae000^M
r10: 80d8e088  r9 : 00000101  r8 : 80d8c010^M
r7 : 80d8c000  r6 : 80d8e0a4  r5 : ab73676c  r4 : 80d9fb5c^M
r3 : 2a9ae000  r2 : ab73676c  r1 : ab736758  r0 : 00000000^M
Flags: NzCv  IRQs on  FIQs on  Mode SVC_32  ISA ARM  Segment kernel^M
Control: 10c53c7d  Table: 38b3404a  DAC: 00000015^M
Process swapper/0 (pid: 0, stack limit = 0x80d8c238)^M
Stack: (0x80d8de58 to 0x80d8e000)^M
de40:                                                       00000000 806e93cc^M
de60: 80d8de60 80d9f680 75ba3d96 00000000 00000009 80d8e0a4 80d8c000 80d8c010^M
de80: 00000101 80d8e088 40000007 80031abc 752acd89 000007da 752acd89 00000000^M
dea0: 80d8e080 80d88458 80deecc0 0000000a 806e93d8 000cb7ce 80d8e0c0 00200000^M
dec0: 00000000 80d8c028 0000001d 00000000 f4a00100 75212a16 000007da 80d8c000^M
dee0: 00000000 80031e4c 80d88e54 8000ed90 f4a0010c 80d94970 80d8df18 8000856c^M
df00: 00000009 804e7b9c 000b0013 ffffffff 80d8df4c 800122c0 80d8df60 3b9aca00^M
df20: 752abf36 000007da 80d9a2c8 80d9a2c8 ab7370d0 00000000 75212a16 000007da^M
df40: 80d8c000 00000000 00000017 80d8df60 00000009 804e7b9c 000b0013 ffffffff^M
df60: 752abf36 000007da 80d9fd54 ab7370d0 80d94574 ab7370d0 00000000 00000000^M
df80: 00000000 80e47434 80d9a2c8 804e7ce0 00000000 80d8c000 80d94574 806e93cc^M
dfa0: 80d8c038 80decb51 80decb51 8000f0bc 00000000 80067d2c ffffffff 80d37b10^M
dfc0: ffffffff ffffffff 80d3758c 00000000 00000000 80d7bcb8 00000000 10c53c7d^M
dfe0: 80d944fc 80d7bcb4 80d98b40 1000406a 412fc09a 10008074 00000000 00000000^M
[<8007066c>] (rcu_process_callbacks) from [<80031abc>] (__do_softirq+0x140/0x248)^M
[<80031abc>] (__do_softirq) from [<80031e4c>] (irq_exit+0xb8/0xf4)^M
[<80031e4c>] (irq_exit) from [<8000ed90>] (handle_IRQ+0x44/0x90)^M
[<8000ed90>] (handle_IRQ) from [<8000856c>] (gic_handle_irq+0x2c/0x5c)^M

 

I found that if I changed the CPU mode from CONFIG_CPU_FREQ_GOV_PERFORMANCE to CONFIG_CPU_FREQ_GOV_INTERACTIVE, the kernel panic would not occurs. However I need the system running at 1G Hz frequency for the performance requirement.

 

I have checked rcu process callback function and found the kernel panic occurs  here linux/kernel/rcu/tree.c - Elixir - Free Electrons and it's previous condition. But it seems like this is corrected.

 

Does any one meet similar issue or can provide the direction about the cause of this issue?

Any help would be appreciated, thank you.#####

Original Attachment has been moved to: log.zip

Original Attachment has been moved to: kernel.config.zip

Outcomes