Skip to content
Snippets Groups Projects
Commit d751c3d6 authored by Robin Gong's avatar Robin Gong Committed by Jason Liu
Browse files

LF-4435: dmaengine: imx-sdma: fix kernel dump during MP3 decoding


update base_bd_ptr for channel0 after bd0 descriptor allocated again.
Otherwise, sdma may hang if the stale/wrong bd0 data touched by channel0
as below:

[  221.334360] imx-sdma 30e10000.dma-controller: Timeout waiting for CH0 ready
[  221.341333] imx-sdma 30e10000.dma-controller: save context error!
[  221.347437] PM: dpm_run_callback(): sdma_suspend+0x0/0x160 returns -110
[  221.354054] PM: Device 30e10000.dma-controller failed to suspend late: error -110
[  221.361937] PM: late suspend of devices failed
[  221.370127] ------------[ cut here ]------------
[  221.374745] lcdif_pixel_clk already disabled
[  221.379050] WARNING: CPU: 0 PID: 4510 at drivers/clk/clk.c:952 clk_core_disable+0xa4/0xb0
[  221.387222] Modules linked in: snvs_ui(O) fsl_jr_uio caam_jr caamkeyblob_desc caamhash_desc caamalg_desc crypto_engine rng_core authenc libdes crct10dif_ce imx8_media_dev(C) flexcan can_dev caam secvio error fuse [last unloaded: snvs_ui]
[  221.408283] CPU: 0 PID: 4510 Comm: rtc_wakeup.sh Tainted: G         C O      5.10.52-lts-5.10.y+g5788c4507376 #1
[  221.418451] Hardware name: NXP i.MX8MPlus EVK board (DT)
[  221.423761] pstate: 40000085 (nZcv daIf -PAN -UAO -TCO BTYPE=--)
[  221.429764] pc : clk_core_disable+0xa4/0xb0
[  221.433943] lr : clk_core_disable+0xa4/0xb0
[  221.438122] sp : ffff800012fdb820
[  221.441433] x29: ffff800012fdb820 x28: 0000000000000000
[  221.446743] x27: 0000000000000008 x26: ffff800011621f60
[  221.452053] x25: ffff0000c4b7f000 x24: ffff80001128d138
[  221.457364] x23: 0000000000000038 x22: ffff0000c18fea00
[  221.462674] x21: ffff800011d0ba70 x20: ffff0000c1873a00
[  221.467984] x19: ffff0000c1873a00 x18: 0000000000000030
[  221.473294] x17: 0000000000000000 x16: 0000000000000000
[  221.478604] x15: ffff0000c48d12b8 x14: ffffffffffffffff
[  221.483913] x13: ffff800011b51780 x12: 000000000000095a
[  221.489223] x11: 000000000000031e x10: ffff800011ba9780
[  221.494534] x9 : 00000000fffff000 x8 : ffff800011b51780
[  221.499844] x7 : ffff800011ba9780 x6 : 0000000000000000
[  221.505154] x5 : ffff00017f3ee900 x4 : 0000000000000000
[  221.510464] x3 : 0000000000000027 x2 : 0000000000000023
[  221.515774] x1 : f7f28654584c0c00 x0 : 0000000000000000
[  221.521085] Call trace:
[  221.523529]  clk_core_disable+0xa4/0xb0
[  221.527363]  clk_disable+0x34/0x50
[  221.530764]  lcdifv3_set_mode+0x40/0x2f0
[  221.534685]  lcdifv3_crtc_atomic_enable+0x88/0xcc
[  221.539387]  drm_atomic_helper_commit_modeset_enables+0x200/0x250
[  221.545478]  lcdifv3_drm_atomic_commit_tail+0x30/0x70
[  221.550526]  commit_tail+0xa0/0x180
[  221.554012]  drm_atomic_helper_commit+0x160/0x390
[  221.558714]  drm_atomic_commit+0x4c/0x60
[  221.562633]  drm_atomic_helper_commit_duplicated_state+0xf0/0x10c
[  221.568723]  drm_atomic_helper_resume+0x94/0x170
[  221.573338]  drm_mode_config_helper_resume+0x24/0x90
[  221.578299]  imx_drm_resume+0x14/0x20
[  221.581959]  platform_pm_resume+0x30/0x70
[  221.585968]  dpm_run_callback.constprop.0+0x3c/0xe4
[  221.590842]  device_resume+0x88/0x180
[  221.594501]  dpm_resume+0xe8/0x220
[  221.597900]  dpm_resume_end+0x18/0x30
[  221.601562]  suspend_devices_and_enter+0x1a4/0x5a0
[  221.606349]  pm_suspend+0x2e0/0x34c
[  221.609835]  state_store+0x8c/0x110
[  221.613323]  kobj_attr_store+0x1c/0x30
[  221.617070]  sysfs_kf_write+0x48/0x60
[  221.620730]  kernfs_fop_write_iter+0x118/0x1ac
[  221.625171]  new_sync_write+0xe8/0x180
[  221.628917]  vfs_write+0x244/0x2a4
[  221.632316]  ksys_write+0x6c/0x100
[  221.635714]  __arm64_sys_write+0x20/0x30
[  221.639636]  el0_svc_common.constprop.0+0x78/0x1a0
[  221.644423]  do_el0_svc+0x24/0x90
[  221.647737]  el0_svc+0x14/0x20
[  221.650789]  el0_sync_handler+0x1a4/0x1b0
[  221.654796]  el0_sync+0x180/0x1c0
[  221.658107] ---[ end trace c48b0b0e987f7565 ]---
[  221.662752] ------------[ cut here ]------------

Signed-off-by: default avatarRobin Gong <yibin.gong@nxp.com>
Reviewed-by: default avatarShengjiu Wang <shengjiu.wang@nxp.com>
Acked-by: default avatarJason Liu <jason.hui.liu@nxp.com>
parent 7ead3860
No related branches found
No related tags found
No related merge requests found
......@@ -1631,6 +1631,9 @@ static int sdma_runtime_resume(struct device *dev)
if (!sdma->bd0)
ret = -ENOMEM;
sdma->channel_control[0].base_bd_ptr = sdma->bd0_phys;
sdma->channel_control[0].current_bd_ptr = sdma->bd0_phys;
sdma->is_on = true;
sdma->fw_loaded = true;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment