From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-alma10-1.taild15c8.ts.net [100.103.45.18]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 8280C3AE198; Wed, 23 Sep 2026 14:37:20 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=100.103.45.18 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790174241; cv=none; b=c1sCdprrGGvRf2TCYi38QsLhSGp6KB+cuI6ku9QZ3rUYU5b+xMZVZpJWmvJrUjuGZmP6ALT4x460XWNSq1GErck77Bte0sZCARDN3uG+PsZLLsLjTh1Ow9HoLl2n4oCZzVPr2QKpsDJcTjoRcHa1lB6N/WOi9lVZxoytLM2B68Q= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790174241; c=relaxed/simple; bh=AxUJ7TrG4k3XsZelUV+IHd1szmNYfwAl4joELbBPxqM=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=duQiZU3/1eras1NyCAWP/lCqyyQu7t5sWlq7msmdNA76yDleGN0qJ3SqrNHWSBQ/QveRibTwDjw5v8tAjhVBDb1G91RkpJzzWKFAbBh522EIUBWl8oJNfZaXz+D2qU3sCmHfsuT7vqKAFMvXpdjDcth+xJM7JECoVDvkSbhQQ3E= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linuxfoundation.org header.i=@linuxfoundation.org header.b=qd6G+I1T; arc=none smtp.client-ip=100.103.45.18 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linuxfoundation.org header.i=@linuxfoundation.org header.b="qd6G+I1T" Received: by smtp.kernel.org (Postfix) with ESMTPSA id C43631F000FF; Wed, 23 Sep 2026 14:37:19 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linuxfoundation.org; s=korg; t=1790174240; bh=zcSuNAR7rMz3w3yFjKxoE3EKv7aEa5J7qwkelkPvpXQ=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=qd6G+I1TydJwRFLNQjNORkdbBwX2bXdpJrYRuLt/yLaXcew1T6k+fIPZsLsgJACjt OPtYEb3poYrO4Tn4q6dBF6sI8jMihP2A9OdEoAZPnqFhrL6J8G1E8lr8mTh7CTPuE0 Cdtb48b3Qhf2NSLkzVOyBZfLKidxwXTKzmHUM7zE= From: Greg Kroah-Hartman To: stable@vger.kernel.org Cc: Greg Kroah-Hartman , patches@lists.linux.dev, Bard Liao , David Lin , Shuming Fan , Pierre-Louis Bossart , Vinod Koul , Sasha Levin Subject: [PATCH 6.18 053/398] soundwire: cadence_master: wait and cancel cdns->work before clock stop Date: Wed, 23 Sep 2026 16:02:07 +0200 Message-ID: <20260923140644.795719435@linuxfoundation.org> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260923140643.441954610@linuxfoundation.org> References: <20260923140643.441954610@linuxfoundation.org> User-Agent: quilt/0.69 X-stable: review X-Patchwork-Hint: ignore Precedence: bulk X-Mailing-List: patches@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit 6.18-stable review patch. If anyone has any objections, please let me know. ------------------ From: Bard Liao [ Upstream commit aba7b41faeecb7692458095ce6fafc341fe0b80e ] A peripheral event could happen during the clock stop process. We need to wait for the event be handled before stopping the bus clock. Otherwise, we will get the IO transfer timed out issue. Fixes: af4cc917826f ("soundwire: cadence: mask Slave interrupt before stopping clock") Signed-off-by: Bard Liao Reviewed-by: David Lin Reviewed-by: Shuming Fan Reviewed-by: Pierre-Louis Bossart Link: https://patch.msgid.link/20260901031019.233254-1-yung-chuan.liao@linux.intel.com Signed-off-by: Vinod Koul Signed-off-by: Sasha Levin --- drivers/soundwire/cadence_master.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/drivers/soundwire/cadence_master.c b/drivers/soundwire/cadence_master.c index d7a0a14ad9626..9c7296afd711a 100644 --- a/drivers/soundwire/cadence_master.c +++ b/drivers/soundwire/cadence_master.c @@ -1702,6 +1702,13 @@ int sdw_cdns_clock_stop(struct sdw_cdns *cdns, bool block_wake) return 0; } + /* + * wait for any in-flight peripheral event handling to complete before stopping the clock. + * No need to disable peripheral interrupts before canceling the work, as the peripheral + * interrupts are already masked before the work is scheduled. + */ + cancel_work_sync(&cdns->work); + /* * Before entering clock stop we mask the Slave * interrupts. This helps avoid having to deal with e.g. a -- 2.53.0