imx6q boot core: oops PREEMPT SMP ARM in udevd

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

imx6q boot core: oops PREEMPT SMP ARM in udevd

3,819 Views
chenwei45
Contributor I

I'm using a customized board based on imx6q-sabresd board, yocto linux 4.9.88.

The udevd always crash at the boot time as below. But if I disable the CONFIG_SMP configuration in .config, there will be no crash.

udevd[157]: starting eudev-3.2.2
Unable to handle kernel paging request at virtual address ffffffff
pgd = a8ab4000
[ffffffff] *pgd=3bf5e861, *pte=00000000, *ppte=00000000
Internal error: Oops: 37 [#1] PREEMPT SMP ARM
Modules linked in:
CPU: 0 PID: 157 Comm: udevd Not tainted 4.9.88+g5e23f9d #27
Hardware name: Freescale i.MX6 Quad/DualLite (Device Tree)
task: a89a9080 task.stack: a8a34000
PC is at skb_copy_datagram_iter+0x9c/0x220
LR is at unix_dgram_recvmsg+0x174/0x3c8
pc : [<8063b84c>]    lr : [<806d8a3c>]    psr: 60070013
sp : a8a35d98  ip : 00000000  fp : a8a35dcc
r10: 88a150c0  r9 : 88a150c0  r8 : 00000000
r7 : 00000000  r6 : 00000000  r5 : 00000040  r4 : ffffffff
r3 : ffffffff  r2 : a8a35f60  r1 : 00000000  r0 : 88a150c0
Flags: nZCv  IRQs on  FIQs on  Mode SVC_32  ISA ARM  Segment none
Control: 10c53c7d  Table: 38ab404a  DAC: 00000051
Process udevd (pid: 157, stack limit = 0xa8a34210)
Stack: (0xa8a35d98 to 0xa8a36000)
5d80:                                                       a8a35dcc 8063b35c
5da0: 00000000 a8a35f60 a8a864c8 a8a88000 00000040 a8a881ec 00000000 00000000
5dc0: 88a150c0 00000000 a8a35e44 806d8a3c a8a35df4 a8a35dec a8a35e58 a6078480
5de0: 00000000 a8a35f58 00000018 88a150c0 00000000 ffffffa1 00000001 00000000
5e00: 00000000 a8a35e60 00000000 00000001 7e983608 00000000 a8a35f58 a8a35e5c
5e20: a8a35e54 806d88c8 00000040 a8a35ea0 7e983870 7e983760 a6078480 00000000
5e40: a8a35e54 8062c0cc a8a35f58 00000040 a8a35f44 8062dd90 00000000 00000000
5e60: 7e983600 00000000 00000000 a8a35e84 a845b600 60070013 a845b634 a8a35ea0
5e80: a8a35e94 807bea4c a8a35e94 807bee00 a8a35ecc 80244d64 3b9ac766 00000000
5ea0: a8a35ea0 a8a35ea0 a845b600 00000008 7e983660 a8958480 00000000 a8958480
5ec0: a845b600 a8a35f10 a8a35f74 80245dc4 15cd8865 802247dc 00000003 00000000
5ee0: 00000000 00000000 a8a97480 60070013 80c0e780 ab703040 00000000 00000001
5f00: 002dc6bf 00000000 a845b80c a845b634 7b6e4465 00000001 00000006 a8a35f64
5f20: 00005beb 7e983870 00000040 a6078480 00000129 80107de4 a8a34000 00000000
5f40: a8a35f9c 8062ec0c 00000000 00000000 00000000 fffffff7 00000000 00000000
5f60: 00000000 00000000 00000000 a8a35e60 00000001 7e983590 7e983760 00000018
5f80: 00000020 00000000 00000003 7e983870 0003dad8 0003e4f4 a8a35fa4 8062ec44
5fa0: 0005c3d8 80107c20 7e983870 0003dad8 00000008 7e983870 00000040 00000000
5fc0: 7e983870 0003dad8 0003e4f4 00000129 0003da54 7e983760 0005c358 0005c3d8
5fe0: 0005c294 7e983588 00015c88 76e8a3fc 60070010 00000008 6ffb0000 44100000
[<8063b84c>] (skb_copy_datagram_iter) from [<806d8a3c>] (unix_dgram_recvmsg+0x174/0x3c8)
[<806d8a3c>] (unix_dgram_recvmsg) from [<8062c0cc>] (sock_recvmsg+0x1c/0x20)
[<8062c0cc>] (sock_recvmsg) from [<8062dd90>] (___sys_recvmsg+0x94/0x164)
[<8062dd90>] (___sys_recvmsg) from [<8062ec0c>] (__sys_recvmsg+0x40/0x6c)
[<8062ec0c>] (__sys_recvmsg) from [<8062ec44>] (SyS_recvmsg+0xc/0x10)
[<8062ec44>] (SyS_recvmsg) from [<80107c20>] (ret_fast_syscall+0x0/0x48)
Code: e0837000 eafffff1 e51b702c e59a4098 (e5d43000)
---[ end trace 7bc5230c32440761 ]---
BUG: using smp_processor_id() in preemptible [00000000] code: udevd/160
caller is debug_smp_processor_id+0x1c/0x20
CPU: 1 PID: 160 Comm: udevd Tainted: G      D         4.9.88+g5e23f9d #27
Hardware name: Freescale i.MX6 Quad/DualLite (Device Tree)
[<8010f330>] (unwind_backtrace) from [<8010b988>] (show_stack+0x14/0x18)
[<8010b988>] (show_stack) from [<8038dd28>] (dump_stack+0x7c/0x90)
[<8038dd28>] (dump_stack) from [<803a9464>] (check_preemption_disabled+0x128/0x12c)
udevd[168]: failed to send result of seq 1112 to main daemon: Connection refused
[<803a9464>] (check_preemption_disabled) from [<803a9484>] (debug_smp_processor_id+0x1c/0x20)
[<803a9484>] (debug_smp_processor_id) from [<8016743c>] (osq_lock+0x10/0x1b8)
[<8016743c>] (osq_lock) from [<801687d4>] (rwsem_optimistic_spin+0x60/0x17c)
[<801687d4>] (rwsem_optimistic_spin) from [<807bd7b8>] (rwsem_down_write_failed+0x4c/0x24c)
[<807bd7b8>] (rwsem_down_write_failed) from [<807bd050>] (down_write+0x54/0x58)
[<807bd050>] (down_write) from [<801e76bc>] (unlink_file_vma+0x28/0x44)
[<801e76bc>] (unlink_file_vma) from [<801e1924>] (free_pgtables+0x84/0xd0)
[<801e1924>] (free_pgtables) from [<801e9018>] (exit_mmap+0xf8/0x1e4)
[<801e9018>] (exit_mmap) from [<8012773c>] (mmput+0x44/0xec)
[<8012773c>] (mmput) from [<8012cccc>] (do_exit+0x4b8/0x9dc)
[<8012cccc>] (do_exit) from [<8012e26c>] (do_group_exit+0x40/0xc0)
[<8012e26c>] (do_group_exit) from [<8012e300>] (__wake_up_parent+0x0/0x24)
[<8012e300>] (__wake_up_parent) from [<80107c20>] (ret_fast_syscall+0x0/0x48)

Labels (2)
Tags (1)
0 Kudos
5 Replies

2,699 Views
chenwei45
Contributor I

The issue was resolved. The udev will raise many thread which will enlarge the cpu load. The power of our board has some issue that when the load is large, the cpu/mem will run into wired status. We change to another demo board then the issue went away.

0 Kudos

2,699 Views
tommyduan
Contributor III

We encountered a problem, frequent restart, error is also this, how to solve this?

0 Kudos

2,699 Views
igorpadykov
NXP Employee
NXP Employee

Hi wei

one can check if workarounds for arm errata were enabled (#define CONFIG_ARM_ERRATA) in

uboot/include/configs/mx6_common.h

mx6_common.h\configs\include - uboot-imx - i.MX U-Boot 

Also one can retest memory with ddr test and update image with new ddr calibration

coefficients:

https://community.nxp.com/docs/DOC-105652 

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

0 Kudos

2,699 Views
chenwei45
Contributor I

Many thanks for your quick reply.

1. The CONFIG_ARM_ERRATA should be defined

In config.h

#define CONFIG_MX6Q    1

in mx6_common.h

It should define

#define CONFIG_ARM_ERRATA_751472
#define CONFIG_ARM_ERRATA_794072
#define CONFIG_ARM_ERRATA_761320
#define CONFIG_ARM_ERRATA_845369

2. For the mem tool, I use the GUI version but I dont' know what should be configured about usb, it report:

ERROR: Can't open USB device!!!

0 Kudos

2,699 Views
igorpadykov
NXP Employee
NXP Employee

please check presentation below describing tool usage, for questions related to tool usage

please create new thread

DES-N1936 i.MX 6UltraLite DDR Tools Overview and Hardware Design Considerations.pdf 

Best regards
igor

0 Kudos