From mboxrd@z Thu Jan 1 00:00:00 1970 From: Shengjiu Wang Subject: Re: [PATCH] ASoC: dapm: Don't check dummy dai in soc_dapm_dai_stream_event Date: Thu, 2 Jul 2015 17:32:57 +0800 Message-ID: <20150702093255.GA17950@shlinux2> References: <1434512468-25555-1-git-send-email-shengjiu.wang@freescale.com> <5595031F.2090608@metafoo.de> <55950A51.2060605@metafoo.de> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: Received: from na01-bn1-obe.outbound.protection.outlook.com (mail-bn1bon0117.outbound.protection.outlook.com [157.56.111.117]) by alsa0.perex.cz (Postfix) with ESMTP id 7286B2615C0 for ; Thu, 2 Jul 2015 12:41:44 +0200 (CEST) Content-Disposition: inline In-Reply-To: <55950A51.2060605@metafoo.de> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: alsa-devel-bounces@alsa-project.org Sender: alsa-devel-bounces@alsa-project.org To: Lars-Peter Clausen Cc: tiwai@suse.de, alsa-devel@alsa-project.org, broonie@kernel.org, lgirdwood@gmail.com List-Id: alsa-devel@alsa-project.org On Thu, Jul 02, 2015 at 11:54:25AM +0200, Lars-Peter Clausen wrote: > On 07/02/2015 11:23 AM, Lars-Peter Clausen wrote: > >On 06/17/2015 05:41 AM, Shengjiu Wang wrote: > >>Dummy dai can be used by multiple sound card. But it only belong to one > >>card's dapm list. If another card use it, there will be dapm_assert_locked > >>warning. > >> > >>[ 20.015782] WARNING: CPU: 1 PID: 661 at sound/soc/soc-dapm.c:124 > >>dapm_assert_locked.isra.36+0x4c/0x58() > >>[ 20.025249] Modules linked in: > >>[ 20.028349] CPU: 1 PID: 661 Comm: aplay Not tainted > >>4.1.0-rc6-next-20150605-00004-gaee05d8-dirty #92 > >>[ 20.037528] Hardware name: Freescale i.MX6 Quad/DualLite (Device Tree) > >>[ 20.044110] Backtrace: > >>[ 20.046614] [<80012e00>] (dump_backtrace) from [<80012fa0>] > >>(show_stack+0x18/0x1c) > >>[ 20.054229] r6:809e8060 r5:00000000 r4:00000000 r3:00000000 > >>[ 20.060002] [<80012f88>] (show_stack) from [<807a0f74>] > >>(dump_stack+0x80/0x9c) > >>[ 20.067293] [<807a0ef4>] (dump_stack) from [<8002b144>] > >>(warn_slowpath_common+0x7c/0xb4) > >>[ 20.075427] r5:0000007c r4:00000000 > >>[ 20.079065] [<8002b0c8>] (warn_slowpath_common) from [<8002b1a0>] > >>(warn_slowpath_null+0x24/0x2c) > >>[ 20.087898] r8:00000001 r7:88007c28 r6:ed94a680 r5:809e83e4 r4:ed83d6c0 > >>[ 20.094747] [<8002b17c>] (warn_slowpath_null) from [<8058403c>] > >>(dapm_assert_locked.isra.36+0x4c/0x58) > >>[ 20.104101] [<80583ff0>] (dapm_assert_locked.isra.36) from [<805842ec>] > >>(dapm_mark_dirty+0x64/0xa4) > >>[ 20.113165] [<80584288>] (dapm_mark_dirty) from [<805853a8>] > >>(soc_dapm_dai_stream_event.isra.42+0x30/0xc8) > >>[ 20.122863] r8:ed9b5dbc r7:00000000 r6:00000001 r5:00000001 r4:ed83d6c0 > >>[ 20.129706] [<80585378>] (soc_dapm_dai_stream_event.isra.42) from > >>[<80587e28>] (snd_soc_dapm_stream_event+0x78/0xa0) > >>[ 20.140264] r5:ee2ee62c r4:00000001 > >>[ 20.143918] [<80587db0>] (snd_soc_dapm_stream_event) from [<8058957c>] > >>(soc_pcm_prepare+0x138/0x21c) > >>[ 20.153058] r8:ed8d9480 r7:00000000 r6:ed9b0e00 r5:00000001 > >>r4:ee2ee62c r3:00000000 > >>... > >> > >>Signed-off-by: Shengjiu Wang > >>--- > >> sound/soc/soc-dapm.c | 3 +++ > >> 1 file changed, 3 insertions(+) > >> > >>diff --git a/sound/soc/soc-dapm.c b/sound/soc/soc-dapm.c > >>index aa327c9..b618541 100644 > >>--- a/sound/soc/soc-dapm.c > >>+++ b/sound/soc/soc-dapm.c > >>@@ -3856,6 +3856,9 @@ static void soc_dapm_dai_stream_event(struct > >>snd_soc_dai *dai, int stream, > >> { > >> struct snd_soc_dapm_widget *w; > >> > >>+ if (snd_soc_dai_is_dummy(dai)) > >>+ return; > >>+ > > > >While this will silence the lockdep warning the underlying issue is still > >there. When the dummy DAI is used in multiple cards for each card a set of > >widgets is created for the DAI which is then stored in > >dai->playback/capture_widget. This means the second card will overwrite the > >widgets created by the first card. > > > >The correct way to fix this is to not create any widgets for the dummy DAI. > >This also means you can remove the dummy check in > >dapm_connect_dai_link_widgets(). > > Btw. this should affect more than just DAPM, if you have the dummy > DAI in multiple cards the dummy CODEC ends up getting attached to > both cards which should result in the component and CODEC list > getting corrupted. Why you think the codec list should be corrupted? I didn't meet this corruption. I check the codec list, there is only one "snd-soc-dummy" in it. Best regards wang shengjiu