AnsweredAssumed Answered

Linux Crashes on Boot - iMX6D-PoP

Question asked by Chris Down on Nov 17, 2016
Latest reply on Nov 21, 2016 by Chris Down

I am testing a custom board that uses an iMX6D-PoP with 1GB of LPDDR2. Initially I built the Linux OS using kernel the 4.8.x+fslc branch from github.com/freescale/linux-fslc. This worked fine except a number of imx6 drivers are missing from the kernel, and in particularly the vivante GPU.

To overcome this I rebuilt using branch 4.1-1.0-imx. For some reason this version crashes just after the kernel starts. I have tried other versions, including imx_4.1.15_2.0.0_ga with the same result. Below is the console output during boot:

 

Uncompressing Linux... done, booting the kernel.

Booting Linux on physical CPU 0x0

Linux version 4.1.35-01745-g3eb51bc (chris@polaris) (gcc version 4.9.3 (GCC) ) #1 SMP PREEMPT Thu Nov 17 17:18:27 GMT 2016

CPU: ARMv7 Processor [412fc09a] revision 10 (ARMv7), cr=10c53c7d

CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache

Machine model: Master SOC

bootconsole [earlycon0] enabled

Reserved memory: created CMA memory pool at 0x3c000000, size 320 MiB

Reserved memory: initialized node linux,cma, compatible id shared-dma-pool

Memory policy: Data cache writealloc

PERCPU: Embedded 12 pages/cpu @ab722000 s16960 r8192 d24000 u49152

Built 1 zonelists in Zone order, mobility grouping on. Total pages: 260096

Kernel command line: console=ttymxc3,115200n8 earlyprintk=serial noinitrd rw ubi.mtd=1,4096 rootfstype=ubifs root=ubi0:rootfs

PID hash table entries: 4096 (order: 2, 16384 bytes)

Dentry cache hash table entries: 131072 (order: 7, 524288 bytes)

Inode-cache hash table entries: 65536 (order: 6, 262144 bytes)

Memory: 698916K/1048576K available (7964K kernel code, 427K rwdata, 2792K rodata, 432K init, 440K bss, 21980K reserved, 327680K cma-reserved, 0K highmem)

Virtual kernel memory layout:

vector : 0xffff0000 - 0xffff1000 ( 4 kB)

fixmap : 0xffc00000 - 0xfff00000 (3072 kB)

vmalloc : 0xc0800000 - 0xff000000 (1000 MB)

lowmem : 0x80000000 - 0xc0000000 (1024 MB)

pkmap : 0x7fe00000 - 0x80000000 ( 2 MB)

modules : 0x7f000000 - 0x7fe00000 ( 14 MB)

.text : 0x80008000 - 0x80a89438 (10758 kB)

.init : 0x80a8a000 - 0x80af6000 ( 432 kB)

.data : 0x80af6000 - 0x80b60ca0 ( 428 kB)

.bss : 0x80b63000 - 0x80bd131c ( 441 kB)

SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=2, Nodes=1

Preemptible hierarchical RCU implementation.

Additional per-CPU info printed with stalls.

RCU restricting CPUs from NR_CPUS=4 to nr_cpu_ids=2.

RCU: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=2

NR_IRQS:16 nr_irqs:16 16

------------[ cut here ]------------

WARNING: CPU: 0 PID: 0 at /home/chris/git/linux-fslc/arch/arm/mach-imx/anatop.c:210 imx_init_revision_from_anatop+0x3c/0xf0()

Modules linked in:

CPU: 0 PID: 0 Comm: swapper/0 Not tainted 4.1.35-01745-g3eb51bc #1

Hardware name: Freescale i.MX6 Quad/DualLite (Device Tree)

[<80015ec0>] (unwind_backtrace) from [<80012814>] (show_stack+0x10/0x14)

[<80012814>] (show_stack) from [<8078f80c>] (dump_stack+0x88/0x9c)

[<8078f80c>] (dump_stack) from [<80034b5c>] (warn_slowpath_common+0x84/0xb4)

[<80034b5c>] (warn_slowpath_common) from [<80034c28>] (warn_slowpath_null+0x1c/0x24)

[<80034c28>] (warn_slowpath_null) from [<80a97a14>] (imx_init_revision_from_anatop+0x3c/0xf0)

[<80a97a14>] (imx_init_revision_from_anatop) from [<80a9dfb4>] (imx6q_init_irq+0xc/0x1c)

[<80a9dfb4>] (imx6q_init_irq) from [<80a8d3cc>] (init_IRQ+0x2c/0x80)

[<80a8d3cc>] (init_IRQ) from [<80a8ab0c>] (start_kernel+0x248/0x3a4)

[<80a8ab0c>] (start_kernel) from [<1000807c>] (0x1000807c)

---[ end trace cb88537fdc8fa200 ]---

Unable to handle kernel NULL pointer dereference at virtual address 00000260

pgd = 80004000

[00000260] *pgd=00000000

Internal error: Oops: 5 [#1] PREEMPT SMP ARM

Modules linked in:

CPU: 0 PID: 0 Comm: swapper/0 Tainted: G W 4.1.35-01745-g3eb51bc #1

Hardware name: Freescale i.MX6 Quad/DualLite (Device Tree)

task: 80afb970 ti: 80af6000 task.ti: 80af6000

PC is at imx_init_revision_from_anatop+0x74/0xf0

LR is at _raw_spin_unlock_irqrestore+0x28/0x54

pc : [<80a97a4c>] lr : [<8079558c>] psr: 600001d3

sp : 80af7fa0 ip : 88003763 fp : 00000000

r10: abfff900 r9 : 80ae3030 r8 : 80b63000

r7 : ffffffff r6 : 00000000 r5 : 80b63000 r4 : 00000260

r3 : 00000200 r2 : 00000001 r1 : 600001d3 r0 : 00000000

Flags: nZCv IRQs off FIQs off Mode SVC_32 ISA ARM Segment kernel

Control: 10c53c7d Table: 1000404a DAC: 00000015

Process swapper/0 (pid: 0, stack limit = 0x80af6210)

Stack: (0x80af7fa0 to 0x80af8000)

7fa0: 80ae3020 80b63000 80af84c0 80a9dfb4 80a9dfa8 80a8d3cc 00000001 80a8ab0c

7fc0: ffffffff ffffffff 80a8a67c 00000000 00000000 80ae3030 80b63294 80af8540

7fe0: 80ae302c 80afca74 1000406a 412fc09a 00000000 1000807c 00000000 00000000

[<80a97a4c>] (imx_init_revision_from_anatop) from [<80a9dfb4>] (imx6q_init_irq+0xc/0x1c)

[<80a9dfb4>] (imx6q_init_irq) from [<80a8d3cc>] (init_IRQ+0x2c/0x80)

[<80a8d3cc>] (init_IRQ) from [<80a8ab0c>] (start_kernel+0x248/0x3a4)

[<80a8ab0c>] (start_kernel) from [<1000807c>] (0x1000807c)

Code: ebebdfb9 e3500000 13a04b02 e0864004 (e5945000)

---[ end trace cb88537fdc8fa201 ]---

Kernel panic - not syncing: Attempted to kill the idle task!

---[ end Kernel panic - not syncing: Attempted to kill the idle task!

 

Reverting back to 4.8 and the board boot s OK. I have used the same device tree for both and similar defconfigs. Has anyone any suggestions as to how I can find the cause of the crash.

 

If not, does anyone know if there is a port of the vivante GPU code to kernel version 4.8.

 

Thanks

 

Chris Down

Outcomes