From patchwork Mon Nov 14 11:37:28 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Cezary Rojewski X-Patchwork-Id: 13042161 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 48691C433FE for ; Mon, 14 Nov 2022 11:22:29 +0000 (UTC) Received: from alsa1.perex.cz (alsa1.perex.cz [207.180.221.201]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by alsa0.perex.cz (Postfix) with ESMTPS id 4E3FC161F; Mon, 14 Nov 2022 12:21:37 +0100 (CET) DKIM-Filter: OpenDKIM Filter v2.11.0 alsa0.perex.cz 4E3FC161F DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=alsa-project.org; s=default; t=1668424947; bh=STHsnurNCeZ4coLDpSrI00qVwfgQXzk+lwQOM8qU86g=; h=From:To:Subject:Date:In-Reply-To:References:Cc:List-Id: List-Unsubscribe:List-Archive:List-Post:List-Help:List-Subscribe: From; b=HjX3JVbmaYCP+Psq201TFpIBvtpBrYK1W/NAYm26Q9+ih9PftePh5elqjRDyhKsQH HSz6kZ2kPmAPru6DwN0Z2PCG+d6WwfFw1GDE9e5SZ8E0f47uUhNbbLmJxR32MyWulv ynszSf/qH0bjZ5NxGh7y8QWLfY8AcjHhGi2b5tqI= Received: from alsa1.perex.cz (localhost.localdomain [127.0.0.1]) by alsa1.perex.cz (Postfix) with ESMTP id 3FE80F80549; Mon, 14 Nov 2022 12:20:53 +0100 (CET) Received: by alsa1.perex.cz (Postfix, from userid 50401) id 578E3F80448; Mon, 14 Nov 2022 12:20:51 +0100 (CET) Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by alsa1.perex.cz (Postfix) with ESMTPS id 1201FF80245 for ; Mon, 14 Nov 2022 12:20:43 +0100 (CET) DKIM-Filter: OpenDKIM Filter v2.11.0 alsa1.perex.cz 1201FF80245 Authentication-Results: alsa1.perex.cz; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="X5RtVu/4" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1668424845; x=1699960845; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=STHsnurNCeZ4coLDpSrI00qVwfgQXzk+lwQOM8qU86g=; b=X5RtVu/4nCyR9rdjV/RguFIDLIM+YslycJeYfuRwsPr3W/I4BX3186+q sGon7LoIxlfZiObTRKqkgGRorrcJYyIVFZ1AW/Vo3nnK1BQX2sYVu/IX5 2R3FLNa8dvlIp1Kb2NnZHdR96caQ6UlFKU16BCQoslK7HQXkDHv4PSdNR 9DxLxzGFgxRexpLsS/uttMFD44/ysT+tVKT7DR2C7R8cnfc2XYAtfa5Kg aIEat7WqQ352U3v/VIKDWsBePPkKMzo20ALES25/seeNZE/FKwl3yyzfG ZdH5nwt0JY0BUjTZYldiVEA+rMnO/tFimhU95vq/EseqWeQ1lNCBFie0O w==; X-IronPort-AV: E=McAfee;i="6500,9779,10530"; a="313748203" X-IronPort-AV: E=Sophos;i="5.96,161,1665471600"; d="scan'208";a="313748203" Received: from fmsmga002.fm.intel.com ([10.253.24.26]) by orsmga103.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 14 Nov 2022 03:20:40 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6500,9779,10530"; a="744102996" X-IronPort-AV: E=Sophos;i="5.96,161,1665471600"; d="scan'208";a="744102996" Received: from crojewsk-ctrl.igk.intel.com ([10.102.9.28]) by fmsmga002.fm.intel.com with ESMTP; 14 Nov 2022 03:20:38 -0800 From: Cezary Rojewski To: alsa-devel@alsa-project.org, broonie@kernel.org Subject: [PATCH v2 1/2] ASoC: Intel: avs: Lock substream before snd_pcm_stop() Date: Mon, 14 Nov 2022 12:37:28 +0100 Message-Id: <20221114113729.1022905-2-cezary.rojewski@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20221114113729.1022905-1-cezary.rojewski@intel.com> References: <20221114113729.1022905-1-cezary.rojewski@intel.com> MIME-Version: 1.0 Cc: Cezary Rojewski , pierre-louis.bossart@linux.intel.com, tiwai@suse.com, hdegoede@redhat.com, amadeuszx.slawinski@linux.intel.com X-BeenThere: alsa-devel@alsa-project.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: "Alsa-devel mailing list for ALSA developers - http://www.alsa-project.org" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: alsa-devel-bounces@alsa-project.org Sender: "Alsa-devel" snd_pcm_stop() shall be called with stream lock held to prevent any races between nonatomic streaming operations. Fixes: 2f1f570cd730 ("ASoC: Intel: avs: Coredump and recovery flow") Signed-off-by: Cezary Rojewski --- sound/soc/intel/avs/ipc.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/sound/soc/intel/avs/ipc.c b/sound/soc/intel/avs/ipc.c index 152f8d0bdf8e..07655298b6c7 100644 --- a/sound/soc/intel/avs/ipc.c +++ b/sound/soc/intel/avs/ipc.c @@ -123,7 +123,9 @@ static void avs_dsp_recovery(struct avs_dev *adev) if (!substream || !substream->runtime) continue; + snd_pcm_stream_lock(substream); snd_pcm_stop(substream, SNDRV_PCM_STATE_DISCONNECTED); + snd_pcm_stream_unlock(substream); } } } From patchwork Mon Nov 14 11:37:29 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Cezary Rojewski X-Patchwork-Id: 13042160 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 6FEC0C4332F for ; Mon, 14 Nov 2022 11:22:02 +0000 (UTC) Received: from alsa1.perex.cz (alsa1.perex.cz [207.180.221.201]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by alsa0.perex.cz (Postfix) with ESMTPS id 760931678; Mon, 14 Nov 2022 12:21:10 +0100 (CET) DKIM-Filter: OpenDKIM Filter v2.11.0 alsa0.perex.cz 760931678 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=alsa-project.org; s=default; t=1668424920; bh=Yr/0qBmCgbdb7d38WF85pkRxdBnyu9qE35POEXUdPMk=; h=From:To:Subject:Date:In-Reply-To:References:Cc:List-Id: List-Unsubscribe:List-Archive:List-Post:List-Help:List-Subscribe: From; b=FZJtbOPaXXeReUJX13zJFlrXNQUFX7EXXsUa9kn3OICR0zHPFtyoUQ9CXthhc4DLj kF+00Gj1YfzLJj91sMXECwrNLOjnExBZRhNKJKmqHhAznSS4JGt3DXCLzncxQZJI5c vJgiH0jyiPuKSk6+DCYlGSdGaCOQ2clQ9m2oM24o= Received: from alsa1.perex.cz (localhost.localdomain [127.0.0.1]) by alsa1.perex.cz (Postfix) with ESMTP id B8F0EF80431; Mon, 14 Nov 2022 12:20:52 +0100 (CET) Received: by alsa1.perex.cz (Postfix, from userid 50401) id 4E5DFF804E7; Mon, 14 Nov 2022 12:20:51 +0100 (CET) Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by alsa1.perex.cz (Postfix) with ESMTPS id 2AAE9F800B8 for ; Mon, 14 Nov 2022 12:20:43 +0100 (CET) DKIM-Filter: OpenDKIM Filter v2.11.0 alsa1.perex.cz 2AAE9F800B8 Authentication-Results: alsa1.perex.cz; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="hWjY+WaE" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1668424845; x=1699960845; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=Yr/0qBmCgbdb7d38WF85pkRxdBnyu9qE35POEXUdPMk=; b=hWjY+WaEilWlh5So3Enyrnvr2PGsWMpY+S/xzWJKkf8xFSvLlvNJlRNN hfDInu7wDAeCYgDdk3bwaZkJcTqHY0udu8U41DwMrzirOXnhwXwt8WVHo PHxoOi04yQ7v9Gss/KAYQso8WLl6F4O7A+efvAkTN2M7gqOsbyXKCY8mC cb7BoWra4tJKFhUH0JSH3cO0GDi8I65/djsJE5mxnnS21FdsF9HMsKvfd Kj2S5wweupxk2JBe7hhTGhhNElI5gLo8eghxX8X+HVpRuJqLSjSzBcRw2 dYWERbiip44mYUBOaojgpTiaOU77X+rVwElqiGFTP9XzlIOwFtS7UbZUt g==; X-IronPort-AV: E=McAfee;i="6500,9779,10530"; a="313748209" X-IronPort-AV: E=Sophos;i="5.96,161,1665471600"; d="scan'208";a="313748209" Received: from fmsmga002.fm.intel.com ([10.253.24.26]) by orsmga103.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 14 Nov 2022 03:20:42 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6500,9779,10530"; a="744103006" X-IronPort-AV: E=Sophos;i="5.96,161,1665471600"; d="scan'208";a="744103006" Received: from crojewsk-ctrl.igk.intel.com ([10.102.9.28]) by fmsmga002.fm.intel.com with ESMTP; 14 Nov 2022 03:20:40 -0800 From: Cezary Rojewski To: alsa-devel@alsa-project.org, broonie@kernel.org Subject: [PATCH v2 2/2] ASoC: Intel: avs: Disconnect substream if suspend or resume fails Date: Mon, 14 Nov 2022 12:37:29 +0100 Message-Id: <20221114113729.1022905-3-cezary.rojewski@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20221114113729.1022905-1-cezary.rojewski@intel.com> References: <20221114113729.1022905-1-cezary.rojewski@intel.com> MIME-Version: 1.0 Cc: Cezary Rojewski , pierre-louis.bossart@linux.intel.com, tiwai@suse.com, hdegoede@redhat.com, amadeuszx.slawinski@linux.intel.com X-BeenThere: alsa-devel@alsa-project.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: "Alsa-devel mailing list for ALSA developers - http://www.alsa-project.org" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: alsa-devel-bounces@alsa-project.org Sender: "Alsa-devel" To improve performance and overall system stability, suspend/resume operations for ASoC cards always return success status and defer the actual work. Because of that, if a substream fails to resume, userspace may still attempt to invoke commands on it as from their perspective the operation completed successfully. Set substream's state to DISCONNECTED to ensure no further commands are attempted. Signed-off-by: Cezary Rojewski --- Changes in v2: - __snd_pcm_set_state() replaced direct assignments of PCM state sound/soc/intel/avs/pcm.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/sound/soc/intel/avs/pcm.c b/sound/soc/intel/avs/pcm.c index ca624fbb5c0d..70442b5212c2 100644 --- a/sound/soc/intel/avs/pcm.c +++ b/sound/soc/intel/avs/pcm.c @@ -934,8 +934,11 @@ static int avs_component_pm_op(struct snd_soc_component *component, bool be, rtd = snd_pcm_substream_chip(data->substream); if (rtd->dai_link->no_pcm == be && !rtd->dai_link->ignore_suspend) { ret = op(dai, data); - if (ret < 0) + if (ret < 0) { + __snd_pcm_set_state(data->substream->runtime, + SNDRV_PCM_STATE_DISCONNECTED); return ret; + } } } @@ -944,8 +947,11 @@ static int avs_component_pm_op(struct snd_soc_component *component, bool be, rtd = snd_pcm_substream_chip(data->substream); if (rtd->dai_link->no_pcm == be && !rtd->dai_link->ignore_suspend) { ret = op(dai, data); - if (ret < 0) + if (ret < 0) { + __snd_pcm_set_state(data->substream->runtime, + SNDRV_PCM_STATE_DISCONNECTED); return ret; + } } } }