MLK-21440-1: ASoC: fsl_rpmsg_i2s: init spin lock

With CONFIG_LOCKDEP=y, there will kernel dump

[   55.305563] INFO: trying to register non-static key.
[   55.310540] the code is fine but needs lockdep annotation.
[   55.316027] turning off the locking correctness validator.
[   55.321520] CPU: 0 PID: 32 Comm: kworker/0:1 Tainted: G        W       4.14.78-00007-g524e1b1f0b3f #18
[   55.330827] Hardware name: FSL i.MX8MM EVK board (DT)
[   55.335892] Workqueue: events rpmsg_work_handler
[   55.340515] Call trace:
[   55.342971] [<ffff00000808c438>] dump_backtrace+0x0/0x270
[   55.348375] [<ffff00000808c6cc>] show_stack+0x24/0x30
[   55.353433] [<ffff000009078f38>] dump_stack+0xb8/0xf0
[   55.358490] [<ffff000008150404>] register_lock_class+0x364/0x548
[   55.364501] [<ffff000008153544>] __lock_acquire+0x7c/0x18a8
[   55.370077] [<ffff0000081555e8>] lock_acquire+0xc8/0x290
[   55.375394] [<ffff00000909422c>] _raw_spin_lock_irqsave+0x54/0x70
[   55.381493] [<ffff000008d80888>] i2s_rpmsg_cb+0xe8/0x1b0
[   55.386810] [<ffff000008d01dc4>] rpmsg_recv_done+0x144/0x210
[   55.392476] [<ffff000008713f44>] vring_interrupt+0x44/0x78
[   55.397966] [<ffff000008d025d4>] imx_mu_rpmsg_callback+0x6c/0x80
[   55.403977] [<ffff000008111f44>] notifier_call_chain+0x5c/0x98
[   55.409813] [<ffff0000081124f8>] __blocking_notifier_call_chain+0x58/0xa0
[   55.416605] [<ffff00000811257c>] blocking_notifier_call_chain+0x3c/0x50
[   55.423223] [<ffff000008d029a0>] rpmsg_work_handler+0x88/0xe8
[   55.428974] [<ffff000008108380>] process_one_work+0x290/0x738
[   55.434723] [<ffff000008108880>] worker_thread+0x58/0x460
[   55.440127] [<ffff000008110084>] kthread+0x104/0x130
[   55.445096] [<ffff000008085a4c>] ret_from_fork+0x10/0x1c

The reason is that the spin lock is not initilized.

Signed-off-by: Shengjiu Wang <shengjiu.wang@nxp.com>
(cherry picked from commit 0e98ac55f1)
(cherry picked from commit 314ef30b1b)
This commit is contained in:
Shengjiu Wang
2019-04-11 19:39:47 +08:00
committed by Leonard Crestez
parent b439b338ac
commit 98633a4cd3

View File

@ -200,6 +200,8 @@ static int fsl_rpmsg_i2s_probe(struct platform_device *pdev)
mutex_init(&i2s_info->tx_lock);
mutex_init(&i2s_info->i2c_lock);
spin_lock_init(&i2s_info->lock[0]);
spin_lock_init(&i2s_info->lock[1]);
if (of_device_is_compatible(pdev->dev.of_node,
"fsl,imx7ulp-rpmsg-i2s")) {