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: Robin Gong <yibin.gong@nxp.com>
Reviewed-by: Shengjiu Wang <shengjiu.wang@nxp.com>
Acked-by: Jason Liu <jason.hui.liu@nxp.com>