AnsweredAssumed Answered

iMX6Q Automotive crashes with NULL pointer dereference

Question asked by Hal Reid on Aug 12, 2015
Latest reply on Aug 18, 2015 by Hal Reid

After fabricating one set of boards, all which boot fine, we've fabricated another set that use the automotive grade iMX6Q and different eMMC memory, which is supposed to be plug-in compatible. The image is programmed over the USB OTG using the mfgtool, but on boot, it often looks like this:


U-Boot 0E90  (Jul 22 2015 - 14:03:30)



CPU: Freescale i.MX6 family TO1.5 at 792 MHz

Temperature:   29 C, calibration data 0x56d4bf7d

mx6q pll1: 792MHz

mx6q pll2: 528MHz

mx6q pll3: 480MHz

mx6q pll8: 50MHz

ipg clock     : 66000000Hz

ipg per clock : 66000000Hz

uart clock    : 80000000Hz

cspi clock    : 60000000Hz

ahb clock     : 132000000Hz

axi clock   : 264000000Hz

emi_slow clock: 132000000Hz

ddr clock     : 528000000Hz

usdhc1 clock  : 198000000Hz

usdhc2 clock  : 198000000Hz

usdhc3 clock  : 198000000Hz

usdhc4 clock  : 198000000Hz

nfc clock     : 24000000Hz

Board: i.MX6Q-SABRESD: unknown-board Board: 0x63015 [POR ]

Boot Device: MMC

I2C:   ready

DRAM:  512 MB


In:    serial

Out:   serial

Err:   serial

Net:   mxc_fec_initialize called

got MAC address from IIM: 00:00:00:00:00:00

enet_board_init->reseting switch.


Hit any key to stop autoboot:  0

Set voltage succeed!

Name            Voltage

vddpu:          1200000

Loading file "/boot/uImage" from mmc device 2:2 (xxc2)

3569756 bytes read

## Booting kernel from Legacy Image at 10800000 ...

   Image Name:   Linux-3.0.35

   Image Type:   ARM Linux Kernel Image (uncompressed)

   Data Size:    3569692 Bytes =  3.4 MB

   Load Address: 10008000

   Entry Point:  10008000

   Verifying Checksum ... OK

   Loading Kernel Image ... OK




Starting kernel ...



Can't recover from RESET HBA!

hub 1-0:1.0: unable to enumerate USB device on port 1

Unable to handle kernel NULL pointer dereference at virtual address 00000008

pgd = 94434000

[00000008] *pgd=24750831, *pte=00000000, *ppte=00000000

Internal error: Oops: 17 [#1] PREEMPT SMP

Modules linked in:

CPU: 3    Not tainted  (3.0.35 #410)

PC is at rb_insert_color+0x28/0x168

LR is at vma_adjust+0x370/0x458

pc : [<802287c8>]    lr : [<800d29b4>]    psr: 60000013

sp : 9491dec0  ip : 947f9e70  fp : 00000000

r10: 00000000  r9 : 00000000  r8 : 947136c4

r7 : 947136c0  r6 : 947f9e8c  r5 : 2ad9d000  r4 : 00000000

r3 : 00000000  r2 : 00000000  r1 : 947136c4  r0 : 947f9e8c

Flags: nZCv  IRQs on  FIQs on  Mode SVC_32  ISA ARM  Segment user

Control: 10c53c7d  Table: 2443404a  DAC: 00000015

Process sudo (pid: 1431, stack limit = 0x9491c2f0)

Stack: (0x9491dec0 to 0x9491e000)

dec0: 943c1630 943c1b58 00000000 947136c0 00000000 800d29b4 9491df0c 947136c0

dee0: 2aaf4000 2ad9d000 943c1650 00000000 2ad9d000 2ad9a000 0002ad9a 00000000

df00: 943c1668 943c1630 943c1650 2ad9d000 0002ad9d 947f9e70 943c1630 2ad9d000

df20: 806dd5f0 947136c0 9491c000 00000000 00000000 800d2c1c 947f9e70 947f9e70

df40: 947136c4 947136c0 00000000 2ad9d000 2ae1e000 943c1630 943c1108 800d2fd4

df60: 947136fc 804c7748 00000000 947136fc 00081000 2ad9d000 947136c0 8003dfc4

df80: 9491c000 00000000 00000000 800d440c 2ad9a248 2ad9d000 2abb4008 00000007

dfa0: 0000005b 8003de40 2ad9d000 2abb4008 2ad9d000 00081000 00081000 2ad9a248

dfc0: 2ad9d000 2abb4008 00000007 0000005b 00000000 00000000 7e818e14 00000000

dfe0: 2ad9d008 7e817ad8 2acde2ac 2ad342ac 60000010 2ad9d000 27ffc811 27ffcc11

[<802287c8>] (rb_insert_color+0x28/0x168) from [<800d29b4>] (vma_adjust+0x370/0x458)

[<800d29b4>] (vma_adjust+0x370/0x458) from [<800d2c1c>] (__split_vma+0x180/0x1a8)

[<800d2c1c>] (__split_vma+0x180/0x1a8) from [<800d2fd4>] (do_munmap+0xac/0x2a4)

[<800d2fd4>] (do_munmap+0xac/0x2a4) from [<800d440c>] (sys_munmap+0x3c/0x50)

[<800d440c>] (sys_munmap+0x3c/0x50) from [<8003de40>] (ret_fast_syscall+0x0/0x30)

Code: e5952000 e3120001 1a000013 e3c24003 (e5943008)

---[ end trace 41cb41707687c66e ]---

ehci_fsl_bus_suspend begins, Host 1

ehci_fsl_bus_suspend ends, Host 1

otg udc wakeup, host sends resume signal

irq 75: nobody cared (try booting with the "irqpoll" option)

[<80044d28>] (unwind_backtrace+0x0/0xf8) from [<800a51c4>] (__report_bad_irq+0x24/0xbc)

[<800a51c4>] (__report_bad_irq+0x24/0xbc) from [<800a5504>] (note_interrupt+0x1e4/0x240)

[<800a5504>] (note_interrupt+0x1e4/0x240) from [<800a3a70>] (handle_irq_event_percpu+0xa8/0x180)

[<800a3a70>] (handle_irq_event_percpu+0xa8/0x180) from [<800a3b84>] (handle_irq_event+0x3c/0x5c)

[<800a3b84>] (handle_irq_event+0x3c/0x5c) from [<800a5ec4>] (handle_fasteoi_irq+0x98/0x158)

[<800a5ec4>] (handle_fasteoi_irq+0x98/0x158) from [<800a338c>] (generic_handle_irq+0x28/0x3c)

[<800a338c>] (generic_handle_irq+0x28/0x3c) from [<8003e6f0>] (handle_IRQ+0x4c/0xac)

[<8003e6f0>] (handle_IRQ+0x4c/0xac) from [<8003d88c>] (__irq_svc+0x4c/0xe8)

[<8003d88c>] (__irq_svc+0x4c/0xe8) from [<8003e99c>] (default_idle+0x24/0x28)

[<8003e99c>] (default_idle+0x24/0x28) from [<8003eb94>] (cpu_idle+0xbc/0xf8)

[<8003eb94>] (cpu_idle+0xbc/0xf8) from [<800088ac>] (start_kernel+0x290/0x2e0)

[<800088ac>] (start_kernel+0x290/0x2e0) from [<10008040>] (0x10008040)


[<8005ec24>] usb_wakeup_handler

[<8031fc78>] fsl_otg_isr

[<8031bb40>] ehci_fsl_pre_irq

[<80305300>] usb_hcd_irq

[<80324bdc>] fsl_udc_irq

Disabling IRQ #75

/usr/bin/ cd: line 71: can't cd to /sys/devices/pci0000:00/0000:00:00.0/

/usr/bin/ line 74: can't create remove: nonexistent directory

/usr/bin/ cd: line 75: can't cd to /sys/devices/pci0000:00/pci_bus/0000:00

/usr/bin/ line 78: can't create rescan: nonexistent directory

eth0: no IPv6 routers present




The errors are not always the same, and i've run the DDR memory test without problems. Has anyone seen this kind of problem show up before?