From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from alsa0.perex.cz (alsa0.perex.cz [77.48.224.243]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 3F595C04A6A for ; Sun, 13 Aug 2023 16:15:49 +0000 (UTC) Received: from alsa1.perex.cz (alsa1.perex.cz [207.180.221.201]) (using TLSv1.2 with cipher ADH-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by alsa0.perex.cz (Postfix) with ESMTPS id 76F4AE84; Sun, 13 Aug 2023 18:14:57 +0200 (CEST) DKIM-Filter: OpenDKIM Filter v2.11.0 alsa0.perex.cz 76F4AE84 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=alsa-project.org; s=default; t=1691943347; bh=7iJvwYYjNFxrDaQvJsuVJmiSfLGX74qbUoTjwC9Jxfs=; h=From:To:Cc:Subject:Date:In-Reply-To:References:List-Id: List-Archive:List-Help:List-Owner:List-Post:List-Subscribe: List-Unsubscribe:From; b=ZzIiR3hkYM7X/qrCUvxB5bUXKEIiulzJi91E9H1LV6k/7dJopTPej0kHQUITjKx06 UNbXOr6nwgE8lhxy8M6y1MW0rbrfWORlkAan6s4uUfc21u3m7PGVstHhkSB97wOfqh kbRzqZuylFn6R7EKl6J10Wt8fgv+GLsnRFyVbBb0= Received: by alsa1.perex.cz (Postfix, from userid 50401) id A4461F80549; Sun, 13 Aug 2023 18:14:42 +0200 (CEST) Received: from mailman-core.alsa-project.org (mailman-core.alsa-project.org [10.254.200.10]) by alsa1.perex.cz (Postfix) with ESMTP id 65906F8055A; Sun, 13 Aug 2023 18:14:42 +0200 (CEST) Received: by alsa1.perex.cz (Postfix, from userid 50401) id D05A4F80557; Sun, 13 Aug 2023 18:14:38 +0200 (CEST) Received: from dfw.source.kernel.org (dfw.source.kernel.org [IPv6:2604:1380:4641:c500::1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits)) (No client certificate requested) by alsa1.perex.cz (Postfix) with ESMTPS id C9776F80290 for ; Sun, 13 Aug 2023 18:14:36 +0200 (CEST) DKIM-Filter: OpenDKIM Filter v2.11.0 alsa1.perex.cz C9776F80290 Authentication-Results: alsa1.perex.cz; dkim=pass (2048-bit key, unprotected) header.d=kernel.org header.i=@kernel.org header.a=rsa-sha256 header.s=k20201202 header.b=NiTYea0Y Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id BD65663C7E; Sun, 13 Aug 2023 16:14:35 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 4BA8FC433CA; Sun, 13 Aug 2023 16:14:33 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1691943275; bh=7iJvwYYjNFxrDaQvJsuVJmiSfLGX74qbUoTjwC9Jxfs=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=NiTYea0YHW9lnXbI+Gb65/sah54jeI7DKwuMsxoUjadyV0BBSAZBR5ZgD8op7N2S1 wn4pVk0U3dQzo92RmV/0xr8AxyU03YG2oqabQf1Z0wN/6NsgApVowQpIXMrBbQBzRL V3hP3UMxEuZekLPsSrzIR3BLp95017sTTErJlpfddk8DpIP4lsoA7PkJl4vEm3axTV jpDQjKrITo7lOyfZbjgpM4Dh4tmjNNRh+yy5JWXv+TJFpvMNNin1aF5Xz4vVCLOHVw G/l4cxxtSunRqcKPAW8Zn86Ela1sPa07/tcyoQvUZCogLCvVwdkVPdQAtCa5Z+IuaC y6xHh4NoCPsRg== From: Sasha Levin To: linux-kernel@vger.kernel.org, stable@vger.kernel.org Cc: Dmytro Maluka , Mark Brown , Sasha Levin , support.opensource@diasemi.com, lgirdwood@gmail.com, perex@perex.cz, tiwai@suse.com, alsa-devel@alsa-project.org Subject: [PATCH AUTOSEL 4.14 2/9] ASoC: da7219: Flush pending AAD IRQ when suspending Date: Sun, 13 Aug 2023 12:14:20 -0400 Message-Id: <20230813161427.1089101-2-sashal@kernel.org> X-Mailer: git-send-email 2.40.1 In-Reply-To: <20230813161427.1089101-1-sashal@kernel.org> References: <20230813161427.1089101-1-sashal@kernel.org> MIME-Version: 1.0 X-stable: review X-Patchwork-Hint: Ignore X-stable-base: Linux 4.14.322 Content-Transfer-Encoding: 8bit Message-ID-Hash: XFI4QAFSP5LT2PTW2OG57MJUHWKEBHE3 X-Message-ID-Hash: XFI4QAFSP5LT2PTW2OG57MJUHWKEBHE3 X-MailFrom: sashal@kernel.org X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; header-match-alsa-devel.alsa-project.org-0; header-match-alsa-devel.alsa-project.org-1; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header X-Mailman-Version: 3.3.8 Precedence: list List-Id: "Alsa-devel mailing list for ALSA developers - http://www.alsa-project.org" Archived-At: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: From: Dmytro Maluka [ Upstream commit 91e292917dad64ab8d1d5ca2ab3069ad9dac6f72 ] da7219_aad_suspend() disables jack detection, which should prevent generating new interrupts by DA7219 while suspended. However, there is a theoretical possibility that there is a pending interrupt generated just before suspending DA7219 and not handled yet, so the IRQ handler may still run after DA7219 is suspended. To prevent that, wait until the pending IRQ handling is done. This patch arose as an attempt to fix the following I2C failure occurring sometimes during system suspend or resume: [ 355.876211] i2c_designware i2c_designware.3: Transfer while suspended [ 355.876245] WARNING: CPU: 2 PID: 3576 at drivers/i2c/busses/i2c-designware-master.c:570 i2c_dw_xfer+0x411/0x440 ... [ 355.876462] Call Trace: [ 355.876468] [ 355.876475] ? update_load_avg+0x1b3/0x615 [ 355.876484] __i2c_transfer+0x101/0x1d8 [ 355.876494] i2c_transfer+0x74/0x10d [ 355.876504] regmap_i2c_read+0x6a/0x9c [ 355.876513] _regmap_raw_read+0x179/0x223 [ 355.876521] regmap_raw_read+0x1e1/0x28e [ 355.876527] regmap_bulk_read+0x17d/0x1ba [ 355.876532] ? __wake_up+0xed/0x1bb [ 355.876542] da7219_aad_irq_thread+0x54/0x2c9 [snd_soc_da7219 5fb8ebb2179cf2fea29af090f3145d68ed8e2184] [ 355.876556] irq_thread+0x13c/0x231 [ 355.876563] ? irq_forced_thread_fn+0x5f/0x5f [ 355.876570] ? irq_thread_fn+0x4d/0x4d [ 355.876576] kthread+0x13a/0x152 [ 355.876581] ? synchronize_irq+0xc3/0xc3 [ 355.876587] ? kthread_blkcg+0x31/0x31 [ 355.876592] ret_from_fork+0x1f/0x30 [ 355.876601] which indicates that the AAD IRQ handler is unexpectedly running when DA7219 is suspended, and as a result, is trying to read data from DA7219 over I2C and is hitting the I2C driver "Transfer while suspended" failure. However, with this patch the above failure is still reproducible. So this patch does not fix any real observed issue so far, but at least is useful for confirming that the above issue is not caused by a pending IRQ but rather looks like a DA7219 hardware issue with an IRQ unexpectedly generated after jack detection is already disabled. Signed-off-by: Dmytro Maluka Link: https://lore.kernel.org/r/20230717193737.161784-2-dmy@semihalf.com Signed-off-by: Mark Brown Signed-off-by: Sasha Levin --- sound/soc/codecs/da7219-aad.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/sound/soc/codecs/da7219-aad.c b/sound/soc/codecs/da7219-aad.c index 1d1d10dd92ae2..793c8768f7c44 100644 --- a/sound/soc/codecs/da7219-aad.c +++ b/sound/soc/codecs/da7219-aad.c @@ -854,6 +854,8 @@ void da7219_aad_suspend(struct snd_soc_codec *codec) } } } + + synchronize_irq(da7219_aad->irq); } void da7219_aad_resume(struct snd_soc_codec *codec) -- 2.40.1