i.MX8MP: SError & Page Fault when running M7 with SAI3 audio enabled Hello NXP official team: We are developing a system using the i.MX 8M Plus platform, running Linux A53 and FreeRTOS M7 . While attempting to allocate the SAI3 audio interface to Linux while running M7, we encountered a kernel crash (SError/page fault). 1. Software version and environment: Kernel version: Linux 5.10.72 U-Boot version: U-Boot 2021.04 M7 SDK: MCUXpresso SDK for i.MX8MP (rpmsg_lite_str_echo_rtos) Refer to the official article: NXP Knowledge Base: Test SAI3 while running M7 firmware with remoteproc 2. System configuration: <1> The M7 firmware (m7.bin) is stored in the system partition and...The U-Boot stage is started directly using the command bootaux 0x007e0000. <2> On the Cortex-A53 Linux side, we use a physical sound card chip (SGTL5000) mounted on the SAI3 + I2C3 + SDMA3 bus. <3> The Cortex-M7 is responsible for acquiring data on the GPIO2_IO09 pin and triggering a high-frequency sampling interrupt, and interacting with the A53 Linux across cores via the RPMsg virtual serial port (/dev/ttyRPMSG30). 3. Problems encountered: If the sound card resources are not adjusted to A53, the operation of the /dev/ttyRPMSG30 device is normal; Currently, an A53 sound card is required. Following the official post < Test SAI3 while running M7 firmware with remoteproc >, the following adjustments were made, but kernel booting will cause issues. The changes are as follows: <1> The kernel DTS configuration has been restored, and the sound card configuration has been changed to A53, as shown in the attached <2> u-boot dts: Allocates sound card resources to the A53, such as <3> ATF, assign SAI3, sdma3, and i2c3 to A53, modify imx8mp_bl31_setup.c, such as: <4> M7 SDK: Comments on the BOARD_BootClockRUN and BOARD_RdcInit functions related to AUDIO changes, as shown in the attached and . 4. Kernel dmesg crash log: The system freezes during boot into the kernel, as shown in the following log: [ 2.992289] i2c i2c-1: IMX I2C adapter registered
[ 2.997631] SError Interrupt on CPU2, code 0xbf000002 -- SError
[ 2.997634] CPU: 2 PID: 135 Comm: kworker/2:1 Not tainted 5.10.72-gf8ca51a867fa-dirty #56
[ 2.997636] Hardware name: EMB-3512-V11-M7 (DT)
[ 2.997638] Workqueue: events deferred_probe_work_func
[ 2.997642] pstate: 80000005 (Nzcv daif -PAN -UAO -TCO BTYPE=--)
[ 2.997644] pc : i2c_imx_probe+0x31c/0x8fc
[ 2.997645] lr : i2c_imx_probe+0x2b0/0x8fc
[ 2.997647] sp : ffff8000126a3af0
[ 2.997648] x29: ffff8000126a3af0 x28: ffff80001135c3f0
[ 2.997654] x27: ffff0000c50aa880 x26: 0000000000000023
[ 2.997660] x25: ffff0000c50aaca0 x24: ffff0000c50aa8f0
[ 2.997666] x23: ffff800011d7c090 x22: ffff0000c4410e40
[ 2.997672] x21: ffff80001135c428 x20: ffff0000c041d800
[ 2.997677] x19: ffff0000c041d810 x18: 0000000000000020
[ 2.997683] x17: 0000000000000000 x16: 0000000000000000
[ 2.997689] x15: ffff0000c44112b8 x14: 0000000000000000
[ 2.997695] x13: ffff0000c4410e40 x12: ffff8000126a3a70
[ 2.997700] x11: aaaaaaaaaaaaaaab x10: 0000000000000060
[ 2.997706] x9 : ffff800011b993b4 x8 : ffff800011b99000
[ 2.997712] x7 : 00007dfed2122a00 x6 : 000000000007a120
[ 2.997718] x5 : 0000000000b71aff x4 : 0000000000000002
[ 2.997723] x3 : 0000000000000002 x2 : 0000000000000000
[ 2.997729] x1 : ffff0000ff86ea08 x0 : ffff800013c8000c
[ 2.997736] Kernel panic - not syncing: Asynchronous SError Interrupt
[ 2.997741] CPU: 2 PID: 135 Comm: kworker/2:1 Not tainted 5.10.72-gf8ca51a867fa-dirty #56
[ 2.997742] Hardware name: EMB-3512-V11-M7 (DT)
[ 2.997744] Workqueue: events deferred_probe_work_func
[ 2.997747] Call trace:
[ 2.997748] dump_backtrace+0x0/0x1a0
[ 2.997750] show_stack+0x18/0x70
[ 2.997751] dump_stack+0xd0/0x12c
[ 2.997752] panic+0x16c/0x334
[ 2.997754] nmi_panic+0x8c/0x90
[ 2.997755] arm64_serror_panic+0x78/0x84
[ 2.997757] do_serror+0x64/0x6c
[ 2.997758] el1_error+0x90/0x110
[ 2.997760] i2c_imx_probe+0x31c/0x8fc
[ 2.997762] platform_drv_probe+0x54/0xb0
[ 2.997763] really_probe+0xec/0x4d0
[ 2.997765] driver_probe_device+0x58/0xc0
[ 2.997766] __device_attach_driver+0xa8/0x10c
[ 2.997768] bus_for_each_drv+0x78/0xd0
[ 2.997769] __device_attach+0xd8/0x180
[ 2.997771] device_initial_probe+0x14/0x20
[ 2.997773] bus_probe_device+0x9c/0xa4
[ 2.997774] deferred_probe_work_func+0x80/0xc0
[ 2.997776] process_one_work+0x1cc/0x350
[ 2.997777] worker_thread+0x2bc/0x46c
[ 2.997779] kthread+0x154/0x160
[ 2.997780] ret_from_fork+0x10/0x30
[ 2.998109] SMP: stopping secondary CPUs
[ 2.998111] Kernel Offset: disabled
[ 2.998113] CPU features: 0x0240002,2000200c
[ 2.998114] Memory Limit: none Please take a look at the problem and see if there are any relevant documents or modifications that can resolve it. Looking forward to your suggestions and replies! Thank you! 回复: i.MX8MP: SError & Page Fault when running M7 with SAI3 audio enabled Resolved; the audio configuration on the M7 side needs to be completely disabled.
查看全文