Hello everybody,
I am working at running both A53 and M7 on an i.MX8M Plus at the same time.
Yocto-compiled Linux runs on top of A53 cores, while at the moment I am simply running MCUXpresso's hello_world demo on M7 (compiled for using TCM only).
I have configured remoteproc on Linux, and now I am perfectly able to start/stop M7 from Linux console, deploying to M7 the ELF of hello_world demo. And both (A53 and M7) work perfectly fine.
Now I am managing to fire the execution of M7 from U-Boot.
Even in this case everything is fine and I am able to start the M7 from U-Boot (deploying to M7 the BIN of hello_world demo). The problem arises when then I attempt to start Linux on A53s. The operating system crashes during boot with the following message:
[    2.914112] remoteproc remoteproc0: imx-rproc is available 
[    2.923854] remoteproc remoteproc0: attaching to imx-rproc 
[    2.929418] Unable to handle kernel paging request at virtual address ffff80000a264fff 
[    2.937347] Mem abort info: 
[    2.940154]   ESR = 0x0000000096000007 
[    2.943920]   EC = 0x25: DABT (current EL), IL = 32 bits 
[    2.947769] mmc1: SDHCI controller on 30b50000.mmc [30b50000.mmc] using ADMA 
[    2.949239]   SET = 0, FnV = 0 
[    2.959338]   EA = 0, S1PTW = 0 
[    2.962476]   FSC = 0x07: level 3 translation fault 
[    2.967354] Data abort info: 
[    2.970230]   ISV = 0, ISS = 0x00000007 
[    2.974066]   CM = 0, WnR = 0 
[    2.977035] swapper pgtable: 4k pages, 48-bit VAs, pgdp=0000000041d89000 
[    2.983737] [ffff80000a264fff] pgd=1000000074eee003, p4d=1000000074eee003, pud=1000000074eed003, pmd=10000000444ef003, pte=0000000000000000 
[    2.996274] Internal error: Oops: 0000000096000007 [#1] PREEMPT SMP 
[    3.002539] Modules linked in: 
[    3.005592] CPU: 2 PID: 8 Comm: kworker/u8:0 Not tainted 6.1.55+g97604c995a86 #1 
[    3.012986] Hardware name: AESYS 2319A (DT) 
[    3.016976] mmc1: host does not support reading read-only switch, assuming write-enable 
[    3.017166] Workqueue: events_unbound deferred_probe_work_func 
[    3.030991] pstate: 00000005 (nzcv daif -PAN -UAO -TCO -DIT -SSBS BTYPE=--) 
[    3.037950] pc : rproc_handle_resources.constprop.0+0x8c/0x164 
[    3.043786] lr : rproc_boot+0x304/0x580 
[    3.047621] sp : ffff800009fab9f0 
[    3.050931] x29: ffff800009fab9f0 x28: ffff000024d53a98 x27: ffff8000098bb780 
[    3.050978] mmc1: new ultra high speed SDR104 SDHC card at address 0001 
[    3.058068] x26: 0000000000000006 x25: ffffffffffffffff x24: ffff80000a265000 
[    3.058074] x23: ffff000004a1c038 
[    3.065096] mmcblk1: mmc1:0001 SD32G 28.9 GiB  
[    3.071809]  x22: 0000000000000000 x21: ffff800009e1a2f0 
[    3.071814] x20: ffff000004a1c000 x19: 0000000000000000 x18: 0000000000000006 
[    3.071820] x17: 000000040044ffff x16: ffff000024cfc7e0 x15: ffffffffffffffff 
[    3.071827] x14: fff7ffffffefffff x13: ffffffffffffffff 
[    3.076558]  mmcblk1: p1 p2 p3 p4 
[    3.079574]  x12: fff7ffffffefffff 
[    3.079577] x11: ffffffffffffffff x10: ffffffffffffffff x9 : ffffffffffffffff 
[    3.079584] x8 : ffffffffffffffff x7 : ffffffffffffffff x6 : ffffffffffffffff 
[    3.125331] x5 : ffff000004b33000 x4 : ffff80000a265400 x3 : 00000000000003fd 
[    3.132466] x2 : 00000000ffffffff x1 : ffff80000a265003 x0 : ffff80000a265000 
[    3.139602] Call trace: 
[    3.142045]  rproc_handle_resources.constprop.0+0x8c/0x164 
[    3.147532]  rproc_boot+0x304/0x580 
[    3.151019]  rproc_add+0xd0/0x170 
[    3.154332]  imx_rproc_probe+0x464/0x5b0 
[    3.158254]  platform_probe+0x68/0xc0 
[    3.161915]  really_probe+0xbc/0x2dc 
[    3.165490]  __driver_probe_device+0x78/0x114 
[    3.169847]  driver_probe_device+0xd8/0x15c 
[    3.174030]  __device_attach_driver+0xb8/0x134 
[    3.178473]  bus_for_each_drv+0x80/0xdc 
[    3.182308]  __device_attach+0xa0/0x1a0 
[    3.186144]  device_initial_probe+0x14/0x20 
[    3.190327]  bus_probe_device+0x98/0xa0 
[    3.194162]  deferred_probe_work_func+0x80/0xc0 
[    3.198693]  process_one_work+0x1d4/0x330 
[    3.202702]  worker_thread+0x224/0x42c 
[    3.206450]  kthread+0x108/0x10c 
[    3.209676]  ret_from_fork+0x10/0x20 
[    3.213253] Code: 128002b3 913f6021 97ffb5f6 1400002f (b8796b00)  
[    3.219345] ---[ end trace 0000000000000000 ]---
I just suspect some troubles with memory reservation/mapping... but why does it happen only when M7 is started from U-Boot, and not if M7 is started from remoteproc?
The relevant portion of Linux DTS is the following:
Any ideas?
Thanks + regards.
已解决! 转到解答。
Hello Harvey021,
thanks for your feedback.
I just found a viable solution: it turned out that:
Hello Harvey021,
thanks for your feedback.
I just found a viable solution: it turned out that:
