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
Hi Chris
what uboot version was used in the case, please try uboot-imx
http://git.freescale.com/git/cgit.cgi/imx/uboot-imx.git/tree/?h=imx_v2015.04_4.1.15_1.0.0_ga
and linux imx_4.1.15_1.0.0
http://git.freescale.com/git/cgit.cgi/imx/linux-2.6-imx.git/?h=imx_4.1.15_1.0.0_ga
Also was custom board tested with ddr test and image biuld with new ddr calibration coefficients
obtained from ddr tester
https://community.freescale.com/docs/DOC-105652
Best regards
igor
-----------------------------------------------------------------------------------------------------------------------
Note: If this post answers your question, please click the Correct Answer button. Thank you!
-----------------------------------------------------------------------------------------------------------------------
Hi Igor,
Thanks for the reply.
I am currently using u-boot-fsl branch 2016.11+fslc.
The board has been fully tested with the ddr stress tool and the calibration coefficients have been implemented in the build.
I have also built a version of linux-4.4 with ports for the iMX drivers and this boots fine.
I will try with the version of u-boot that you have recommended and will let you know the result.
Best regards
Chris