i.MX8MP Memory Abort

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

i.MX8MP Memory Abort

Jump to solution
554 Views
Wobaffet
Senior Contributor I

Hello,

We are bringing up our custom board with i.MX8MP. Before we brought up our board with 512 MiB LPDDR4, now we are trying for the 2GiB variant. We were able to get the lpddr4_timing.c via the Mscale tool run some tests with it and arrange our DTS / DTSI accordingly. However we are having issues with the peripherals that were running on the 512MiB variant. For example, when kernel tries to load audio codec it throws this error on the boot: 

[    5.656311] Mem abort info:
         Starting D-Bus [    5.700042]   ESR = 0x8600000f
System Message Bus...
[    5.703332] tlv320aic31xx-codec 4-0018: Unable to sync registers 0x9f-0x9f. -6
[    5.704264]   EC = 0x21: IABT (current EL), IL = 32 bits
[    5.709052] random: dbus-daemon: uninitialized urandom read (12 bytes read)
[    5.715480] tlv320aic31xx-codec 4-0018: Failed to restore cache: -6
[    5.721791]   SET = 0, FnV = 0
[    5.726902] random: dbus-daemon: uninitialized urandom read (12 bytes read)
[    5.732594]   EA = 0, S1PTW = 0
[    5.746750]   FSC = 0x0f: level 3 permission fault
[    5.756455] swapper pgtable: 4k pages, 48-bit VAs, pgdp=0000000041ee6000
[    5.764663] [ffff000040bcd1a0] pgd=18000000bfff8003, p4d=18000000bfff8003, pud=18000000bfe6a003, pmd=18000000bfe64003, pte=0068000080bcd707
[    5.768145] ## sai enters here
[    5.778228] Internal error: Oops: 8600000f [#1] PREEMPT SMP
[    5.785884] Modules linked in: snd_soc_fsl_easrc imx8_media_dev(C+) snd_soc_fsl_asrc caam secvio imx_sdma error imx_dsp_rproc fuse
[    5.790222] ## fsl_sai_set_dai_sysclk
[    5.797656] CPU: 2 PID: 224 Comm: systemd-udevd Tainted: G         C        5.15.71+ #1
[    5.797663] Hardware name: NXP i.MX8MPlus EVK board (DT)
         Starting Enable swap...
[    5.797667] pstate: 80000005 (Nzcv daif -PAN -UAO -TCO -DIT -SSBS BTYPE=--)
[    5.797673] pc : 0xffff000040bcd1a0
[    5.797680] lr : fwnode_property_present+0x38/0x9c
[    5.797689] sp : ffff80000a663700
[    5.809427] ## mclk clock is not from sai
[    5.818728] x29: ffff80000a663700 x28: ffff0000449f0850 x27: ffff0000449f07d0
[    5.818741] x26: ffff0000449f0080 x25: ffff00007fc4b7b0 x24: ffff0000449f0880
[    5.818748] x23: ffff0000449f0850 x22: ffff0000449f0850 x21: ffff800009877e88
[    5.818756] x20: ffff800009877e88 x19: ffff000040bcd180 x18: ffffffffffffffff
[    5.818764] x17: 0000000000000000
[    5.828079] Adding 524284k swap on /dev/mmcblk2p3.  Priority:-2 extents:1 across:524284k SS
[    5.829202]  x16: ffff80000a663748 x15: ffffffffffffffff
[    5.881553] x14: ffffff0000000000 x13: ffffffffffffffff x12: 0000000000000028
[    5.894002] x11: 0000000000000028 x10: 0101010101010101 x9 : 0000000000000000
[    5.901140] x8 : 7f7f7f7f7f7f7f7f x7 : 00007bfff457674c x6 : 000000000080701a
    [         S5t.a9r0t82i7n7g]  x5 : ffff00007fc4dfe8 x4 : 0000000000000000 x3 : ffff800008d31ac0
Enable dynamic de…for specific kernel modules...
[    5.922618] x2 : ffff000040bcd1a0 x1 : ffff800009877e88 x0 : ffff000040bcd180
[    5.929756] Call trace:
[    5.932200]  0xffff000040bcd1a0
[    5.935343]  match_fwnode+0x58/0x140
[    5.938922]  v4l2_async_find_match+0x4c/0xc0
[    5.943192]  v4l2_async_notifier_try_all_subdevs+0x78/0xc4
[    5.948678]  __v4l2_async_notifier_register+0xd4/0x140
[    5.953817]  v4l2_async_notifier_register+0x44/0x70
[    5.958695]  mxc_md_probe+0x6c0/0xaac [imx8_media_dev]
[    5.963840]  platform_probe+0x68/0xe0
[    5.967503]  really_probe+0xbc/0x46c
[    5.971078]  __driver_probe_device+0x114/0x190
[    5.975539]  driver_probe_device+0x40/0x100
[    5.979742]  __driver_attach+0xac/0x210
[    5.983580]  bus_for_each_dev+0x70/0xd0
[    5.987416]  driver_attach+0x24/0x30
[[ 0 ; 35.29m9 0 9O9K0 ]  bus_add_driver+0x144/0x244
0m] Started Linux Firmware Loader Daemon.
[    6.001075]  driver_register+0x78/0x130
[    6.004910]  __platform_driver_register+0x28/0x34
[    6.009614]  mxc_md_driver_init+0x20/0x1000 [imx8_media_dev]
[    6.015278]  do_one_initcall+0x50/0x1b0
[    6.019113]  do_init_module+0x44/0x234
[    6.022863]  load_module+0x2294/0x290c
[    6.026611]  __do_sys_finit_module+0xa8/0x114

 The same thing also happens with our video decoder isl79987. But there are no issues with the stress test tools such as stress-ng. Everything seems to be okay. What could be the reason?

Thanks!

Best Regards.

0 Kudos
Reply
1 Solution
517 Views
AldoG
NXP TechSupport
NXP TechSupport
0 Kudos
Reply
3 Replies
528 Views
Wobaffet
Senior Contributor I

Hello @AldoG,

Thank you for the quick response. Is there any procedure documented to test out the amount of memory being used when actually running?

Thanks!

0 Kudos
Reply
518 Views
AldoG
NXP TechSupport
NXP TechSupport

Hello,

For this one could use Linux tools:
https://www.linuxfoundation.org/blog/blog/classic-sysadmin-linux-101-5-commands-for-checking-memory-...

Best regards/Saludos,
Aldo.

0 Kudos
Reply
532 Views
AldoG
NXP TechSupport
NXP TechSupport

Hello,

I would recommend checking the amount of memory being used when actually running, please note that DDR test will only test the available memory but it won't test if it will be enough for your use case.

Best regards/Saludos,
Aldo.

0 Kudos
Reply