Received: by 2002:a05:7412:6592:b0:d7:7d3a:4fe2 with SMTP id m18csp2111971rdg; Sun, 13 Aug 2023 09:40:53 -0700 (PDT) X-Google-Smtp-Source: AGHT+IEHMZTqIAE8losqIMVKdqUBDva+bNOTewVw8VzgMGxFAPjA5ifjXWhGT35DwDWUsQgJN1TE X-Received: by 2002:aa7:cb11:0:b0:522:2ce0:d80a with SMTP id s17-20020aa7cb11000000b005222ce0d80amr6404759edt.35.1691944852976; Sun, 13 Aug 2023 09:40:52 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1691944852; cv=none; d=google.com; s=arc-20160816; b=btm70fTYk/x7+EqAnGKpC/SYdh+6gyJjj/W7yw3+0XeXsZlHFxnTswrx3loflz8W1T hfe8SiaEEwX9eHSTw72AuECmjGfvv0DhE4URCNccAokJVplhxczNziGp+w177EcVlk6s zLSCEfatnit6QZB4FmG+B2Kc1ZHAyeu84dUY5h6XjvuJtacaB+IRyZ8Mvu9f0brmrCqj 5nNPt9wy2gIQ3WMtfYTEWP0CSD5pziQ3O+0DuG88ULH+xAGpyxzG4eg5Ke6189DV+u6M 0igLXRxVK0wbvBkvGQPn0RKZuDjA2jxIsIsE0GCf0bB8582eA032MI6CgweIbnKvdxsw fbng== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=U3JrN3IYzNeBTTQQhWnLC+hLIW6HSuEo5wZvz+QntgY=; fh=7euZ0aZk3VaPL9VZryL0z3ZgAN+t4rcGfeQAZM+Kzcc=; b=vfcBP7LRVzNYCPsG6d46Zl9QGjwwGdeRv7FM3iUOfsghK80M4Y21RR8hkiKLpPlpbP kdBydBBNBTbB/oGYA8vwNprh4Z4gS0S7QpUBaf1jvvhGolYWwO70LBmRWxWjqCtwvyzW 9ZCxL/TgrU+no66DJdDhFtVldYhd8mPWoeg5AZmAwh7TYtRO0CL6ObV34rwqKN8RKSvz i0rQpu9+97LAj+iEblliB1oheShAF7qJef1i471wu/Xmx/cRTV/idww00r2oj12ea9QM cuFdpbdVPxpVBwAD3BGc75upPzFpxwGEjviEs/bm9hFhM6q29R+pCB/ewGqG4Y7qbACP UoJg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=T2NmsK3v; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id f24-20020a05640214d800b005223a219e26si6937037edx.191.2023.08.13.09.40.28; Sun, 13 Aug 2023 09:40:52 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=T2NmsK3v; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231806AbjHMQIi (ORCPT + 99 others); Sun, 13 Aug 2023 12:08:38 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:41820 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231696AbjHMQIV (ORCPT ); Sun, 13 Aug 2023 12:08:21 -0400 Received: from dfw.source.kernel.org (dfw.source.kernel.org [IPv6:2604:1380:4641:c500::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 1E4B71FD9; Sun, 13 Aug 2023 09:08:07 -0700 (PDT) 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 2FA30637C7; Sun, 13 Aug 2023 16:06:56 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 131D2C433C8; Sun, 13 Aug 2023 16:06:53 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1691942815; bh=2uZGWpA2Cw6gJZFacx//UWrWb5ImcFVmVETFWA5mVd4=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=T2NmsK3vjKydUD8iPphmRILJa5VGIQ6YX0JNZkHe+GlRwpRWqdDYuVHgxe9M/ui1G OdewiJBA6fCuDrdRXW6ZRph+gb8DfgI0XFVvkzvRqy24ridnSPLPpBOZDzWVeugn3X NKjCOjCaYbJvXxT6cLFwQ2cppwMdGi1x6TydepqcIsD1tFdam1i+4jlVANKtghoO8i x8hI7Sf+ptJTj7kIKOwpLl7zoKSSFJuQ1Ct0FRRixqMhUNkSm67ICT2nBKRGOgUuDV mlQfJ/LD0wNuWcfeqT+4LtoGHF0IMfctdL5/GEAjo6FyAMAG44lOk38FORzLUMM0zS X8dJIjBc21sDQ== 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 5.15 08/31] ASoC: da7219: Flush pending AAD IRQ when suspending Date: Sun, 13 Aug 2023 12:05:41 -0400 Message-Id: <20230813160605.1080385-8-sashal@kernel.org> X-Mailer: git-send-email 2.40.1 In-Reply-To: <20230813160605.1080385-1-sashal@kernel.org> References: <20230813160605.1080385-1-sashal@kernel.org> MIME-Version: 1.0 X-stable: review X-Patchwork-Hint: Ignore X-stable-base: Linux 5.15.126 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-4.4 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_MED, SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 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 7998fdd3b378e..6b368ab945be5 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_component *component) } } } + + synchronize_irq(da7219_aad->irq); } void da7219_aad_resume(struct snd_soc_component *component) -- 2.40.1