AnsweredAssumed Answered

How to disable RAM in imx6q u-boot ?

Question asked by Peter Amond on Jul 14, 2017
Latest reply on Jul 16, 2017 by igorpadykov

Hi All,

 

This is regarding imx6q, 2GB Alliance Memory (4Gb x 4, 4 RAM chips) custom hardware design which is most similar to nitrogen6_max. This hardware was stable about one week and could run ubuntu os without any failures. But now it is unstable and get random errors like stuck in root login, stuck in u boot, some times it even can't uboot or some times stuck while running the OS. 

 

Sucked kernel log ***

Welcome to Ubuntu 16.04.1 LTS (GNU/Linux 4.1.15-g0356095-dirty armv7l)

* Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com
* Support: https://ubuntu.com/advantage

413 packages can be updated.
0 updates are security updates.

ubuntu@nitrogen:~$ sh /home/DISP.sh
imx-ipuv3 2400000.ipu: WARNING: adapt panel end blank lines
ubuntu@nitrogen:~$ Unable to handle kernel paging request at virtual address 1211103b
pgd = cf370000
[1211103b] *pgd=00000000
Internal error: Oops: 5 [#1] PREEMPT SMP ARM
Modules linked in: mxc_v4l2_capture ipu_bg_overlay_sdc ipu_still ipu_prp_enc ipu_csi_enc ipu_fg_overlay_sdc v4l2_int_device tw6869 videobuf2_dma_contig videobuf2_memops galcore(O)
CPU: 1 PID: 2206 Comm: mate-netspeed-a Tainted: G O 4.1.15-g0356095-dirty #6
Hardware name: Freescale i.MX6 Quad/DualLite (Device Tree)
task: ce0df800 ti: cf352000 task.ti: cf352000
PC is at __fd_install+0x2c/0x54
LR is at get_parent_ip+0x14/0x50
pc : [<802286f8>] lr : [<80153270>] psr: 60010013
sp : cf353f18 ip : cf353ed0 fp : cf353f34
r10: ba1cb608 r9 : cc6c3178 r8 : 00000020
r7 : ba1cb600 r6 : ce70a640 r5 : 0000000b r4 : ce70a600
Unable to handle kernel paging request at virtual address eece3725
pgd = cf258000
[eece3725] *pgd=00000000
r3 : ce70000b r2 : 000045be r1 : 1211100f r0 : 802286f0
Flags: nZCv IRQs on FIQs on Mode SVC_32 ISA ARM Segment user
Control: 10c5387d Table: 5f37004a DAC: 00000015
Process mate-netspeed-a (pid: 2206, stack limit = 0xcf352210)
Stack: (0xcf353f18 to 0xcf354000)
3f00: 0000000b 80d02508
3f20: ba1cb600 cecee000 cf353f44 cf353f38 8022874c 802286d8 cf353f94 cf353f48
3f40: 8020a840 8022872c 00000000 00000000 00000000 cf350000 00000024 00000100
3f60: 00000001 dc8ba30f 80149774 00000000 00002000 7ec5f344 00000005 80107e44
3f80: cf352000 00000000 cf353fa4 cf353f98 8020a8c0 8020a6b0 00000000 cf353fa8
3fa0: 80107ca0 8020a8ac 00000000 00002000 7ec5f344 00000000 00000000 7ec5f36c
3fc0: 00000000 00002000 7ec5f344 00000005 76f2240c 76f74ce8 76f33238 00000000
3fe0: 00000000 7ec5f338 00000000 767a3e52 00010030 7ec5f344 00000000 00000000
Backtrace:
[<802286cc>] (__fd_install) from [<8022874c>] (fd_install+0x2c/0x30)
r7:cecee000 r6:ba1cb600 r5:80d02508 r4:0000000b
[<80228720>] (fd_install) from [<8020a840>] (do_sys_open+0x19c/0x1fc)
[<8020a6a4>] (do_sys_open) from [<8020a8c0>] (SyS_open+0x20/0x24)
r10:00000000 r9:cf352000 r8:80107e44 r7:00000005 r6:7ec5f344 r5:00002000
r4:00000000
[<8020a8a0>] (SyS_open) from [<80107ca0>] (ret_fast_syscall+0x0/0x3c)
Code: e1a00006 eb18f5b9 e5943004 e5931004 (e7911105)
Internal error: Oops: 1 [#2] PREEMPT SMP ARM
Unable to handle kernel paging request at virtual address 0ad68ba0
pgd = cf370000
[0ad68ba0] *pgd=00000000
Modules linked in: mxc_v4l2_capture ipu_bg_overlay_sdc ipu_still ipu_prp_enc ipu_csi_enc ipu_fg_overlay_sdc v4l2_int_device tw6869 videobuf2_dma_contig videobuf2_memops galcore(O)
CPU: 2 PID: 2154 Comm: gmain Tainted: G D O 4.1.15-g0356095-dirty #6
Hardware name: Freescale i.MX6 Quad/DualLite (Device Tree)
task: cebc9e00 ti: cf2b4000 task.ti: cf2b4000
PC is at ktime_get_ts64+0x54/0x178
LR is at 0xfcc
pc : [<00000000>] lr : [<00000fcc>] psr: dc8ba30f
sp : cf2b5ed8 ip : 00000020 fp : cf2b5be4
r10: cc1d8990 r9 : 00000000 r8 : cf14ec00
r7 : ceea5019 r6 : 00000008 r5 : eece36cd r4 : cc45ef68
r3 : ce6d2d90 r2 : 00000000 r1 : 55852920 r0 : ceea5000
Unable to handle kernel paging request at virtual address 7f680000
pgd = cf258000
[7f680000] *pgd=00000000

*******

 

I have done proper RAM calibration and stress test (about 2 hours without errors, may be not enough) and system was stable long time.

 

1) Could you please give me an idea of this issue ?

 

2) Let's say it is a RAM corruption. Can we disable the corrupted RAM in uboot or any other way to do it ? Actually for 4 RAM blocks I am using only one chip select in the design. So is it possible to use those RAMS separately or identify the corrupted RAM ?

 

3) Is there anyway to validate whether the RAM modules have got damaged ?

 

Regards,

Peter.

Outcomes