alsa-devel.alsa-project.org archive mirror
 help / color / mirror / Atom feed
* [alsa-devel] some lock needed for flush_delayed_work ?
@ 2019-09-03  8:00 Kuninori Morimoto
  2019-09-03 10:28 ` Takashi Iwai
  0 siblings, 1 reply; 3+ messages in thread
From: Kuninori Morimoto @ 2019-09-03  8:00 UTC (permalink / raw)
  To: Linux-ALSA


Hi ALSA ML

I got below error when I unbind/bind CPU DAI.
It seems we need to have some kind of lock ?
I think => message came from

	linux/kernel/locking/lockdep.c :: assign_lock_key

	...
	[    6.392640] asoc-audio-graph-card sound: ASoC: CPU DAI  not registered
=>	[    6.399430] INFO: trying to register non-static key.
=>	[    6.404393] the code is fine but needs lockdep annotation.
=>	[    6.409875] turning off the locking correctness validator.
	[    6.415362] CPU: 2 PID: 193 Comm: test-bind-unbin Not tainted 5.3.0-rc1+ #625
	[    6.422495] Hardware name: Renesas H3ULCB Kingfisher board based on r8a7795 ES2.0+ (DT)
	[    6.430497] Call trace:
	[    6.432949]  dump_backtrace+0x0/0x140
	[    6.436609]  show_stack+0x24/0x30
	[    6.439927]  dump_stack+0xc4/0x10c
	[    6.443328]  register_lock_class+0x4e0/0x618
	[    6.447594]  __lock_acquire+0x7c/0x1de8
	[    6.451426]  lock_acquire+0xdc/0x1e0
	[    6.455000]  del_timer_sync+0x60/0xe8
	[    6.458660]  flush_delayed_work+0x2c/0x70
	[    6.462671]  soc_cleanup_card_resources+0x50/0x348
	[    6.467459]  snd_soc_bind_card+0x1e4/0x990
	[    6.471551]  snd_soc_add_component+0x248/0x310
	[    6.475992]  snd_soc_register_component+0x54/0x70
	[    6.480696]  devm_snd_soc_register_component+0x60/0xb8
	[    6.485833]  rsnd_probe+0x164/0x448
	[    6.489321]  platform_drv_probe+0x58/0xa8
	[    6.493330]  really_probe+0xec/0x2a0
	[    6.496902]  driver_probe_device+0x5c/0xf0
	[    6.500996]  device_driver_attach+0x74/0x80
	[    6.505177]  bind_store+0xdc/0x120
	[    6.508575]  drv_attr_store+0x40/0x58
	[    6.512237]  sysfs_kf_write+0x50/0x78
	[    6.515896]  kernfs_fop_write+0xf0/0x1e8
	[    6.519819]  __vfs_write+0x48/0x90
	[    6.523218]  vfs_write+0xac/0x1b8
	[    6.526529]  ksys_write+0x74/0xf8
	[    6.529840]  __arm64_sys_write+0x24/0x30
	[    6.533762]  el0_svc_common.constprop.0+0x98/0x170
	[    6.538550]  el0_svc_compat_handler+0x2c/0x38
	[    6.542904]  el0_svc_compat+0x8/0x10


Thank you for your help !!
Best regards
---
Kuninori Morimoto
_______________________________________________
Alsa-devel mailing list
Alsa-devel@alsa-project.org
https://mailman.alsa-project.org/mailman/listinfo/alsa-devel

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [alsa-devel] some lock needed for flush_delayed_work ?
  2019-09-03  8:00 [alsa-devel] some lock needed for flush_delayed_work ? Kuninori Morimoto
@ 2019-09-03 10:28 ` Takashi Iwai
  2019-09-04  1:13   ` Kuninori Morimoto
  0 siblings, 1 reply; 3+ messages in thread
From: Takashi Iwai @ 2019-09-03 10:28 UTC (permalink / raw)
  To: Kuninori Morimoto; +Cc: Linux-ALSA

On Tue, 03 Sep 2019 10:00:22 +0200,
Kuninori Morimoto wrote:
> 
> 
> Hi ALSA ML
> 
> I got below error when I unbind/bind CPU DAI.
> It seems we need to have some kind of lock ?

No, this kind of error usually is due to the missing initialization of
the lock object.  In this case, the work hasn't been initialized
before calling the flush_delayed_work().

I suppose it's an error path at snd_soc_bind_card(), and the patch
like below might fix the issue.


Takashi

--- a/sound/soc/soc-core.c
+++ b/sound/soc/soc-core.c
@@ -371,6 +371,7 @@ struct snd_pcm_substream *snd_soc_get_dai_substream(struct snd_soc_card *card,
 EXPORT_SYMBOL_GPL(snd_soc_get_dai_substream);
 
 static const struct snd_soc_ops null_snd_soc_ops;
+static void codec2codec_close_delayed_work(struct work_struct *work);
 
 static struct snd_soc_pcm_runtime *soc_new_pcm_runtime(
 	struct snd_soc_card *card, struct snd_soc_dai_link *dai_link)
@@ -382,6 +383,7 @@ static struct snd_soc_pcm_runtime *soc_new_pcm_runtime(
 		return NULL;
 
 	INIT_LIST_HEAD(&rtd->component_list);
+	INIT_DELAYED_WORK(&rtd->delayed_work, codec2codec_close_delayed_work);
 	rtd->card = card;
 	rtd->dai_link = dai_link;
 	if (!rtd->dai_link->ops)
@@ -1573,9 +1575,6 @@ static int soc_probe_link_dais(struct snd_soc_card *card,
 					   rtd->num_codecs, rtd);
 		if (ret < 0)
 			return ret;
-	} else {
-		INIT_DELAYED_WORK(&rtd->delayed_work,
-				  codec2codec_close_delayed_work);
 	}
 
 	return 0;
_______________________________________________
Alsa-devel mailing list
Alsa-devel@alsa-project.org
https://mailman.alsa-project.org/mailman/listinfo/alsa-devel

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [alsa-devel] some lock needed for flush_delayed_work ?
  2019-09-03 10:28 ` Takashi Iwai
@ 2019-09-04  1:13   ` Kuninori Morimoto
  0 siblings, 0 replies; 3+ messages in thread
From: Kuninori Morimoto @ 2019-09-04  1:13 UTC (permalink / raw)
  To: Takashi Iwai; +Cc: Linux-ALSA


Hi Takashi

Thank you for your feedback

> > I got below error when I unbind/bind CPU DAI.
> > It seems we need to have some kind of lock ?
> 
> No, this kind of error usually is due to the missing initialization of
> the lock object.  In this case, the work hasn't been initialized
> before calling the flush_delayed_work().
> 
> I suppose it's an error path at snd_soc_bind_card(), and the patch
> like below might fix the issue.

I double checked this issue.
It seems below 2 things happend in the same time.
Thank you. Your feedback/hint helped it.
Good things is that there is no issue at upstream code.

	1) latest ASoC branch had delayed_work update
	2) my local patch didn't care about it

Thank you for your help !!
Best regards
---
Kuninori Morimoto
_______________________________________________
Alsa-devel mailing list
Alsa-devel@alsa-project.org
https://mailman.alsa-project.org/mailman/listinfo/alsa-devel

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2019-09-04  1:14 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-09-03  8:00 [alsa-devel] some lock needed for flush_delayed_work ? Kuninori Morimoto
2019-09-03 10:28 ` Takashi Iwai
2019-09-04  1:13   ` Kuninori Morimoto

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).