From patchwork Fri Feb 7 11:46:02 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Cristian Ciocaltea X-Patchwork-Id: 13964864 Received: from bali.collaboradmins.com (bali.collaboradmins.com [148.251.105.195]) (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 C02671A7264; Fri, 7 Feb 2025 11:46:47 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=148.251.105.195 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738928809; cv=none; b=IlYUaTA6e7eEWMauiDCPsw46hOLJbCmYszKkgYIvweRTlXF5hv/P9sLpnNFJUq7zjXu1IvNECVtYPyS5ZHsuS2vhzrfXznRE37/W24GZXJlKGQiXtPjoh38sE78cjgLlY9eE6h1N1v72+YA5IaL/Lpt8ECK1WSiapuiff0Zlee4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738928809; c=relaxed/simple; bh=YQnd1JYPID2jesZLmcSp+CRXJ4HV47bmtKKxCbVX2LQ=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=flJ5L9gukkw900HD0X2XD3zPQJRBqGrVjA0NreDYMHtzaO77btVDMHira/AsQM/yO/zQUPa1NBOH2Avv/u+e0DQ8GNUAwDCbBRLJZbHj251fSDecUT+UYL5S+RWF3z1eSmAXWw5KMcxfXae/LwG7jd506QHgeRor3djjb45eZPE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com; spf=pass smtp.mailfrom=collabora.com; dkim=pass (2048-bit key) header.d=collabora.com header.i=@collabora.com header.b=PTbFi5fx; arc=none smtp.client-ip=148.251.105.195 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=collabora.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=collabora.com header.i=@collabora.com header.b="PTbFi5fx" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; s=mail; t=1738928806; bh=YQnd1JYPID2jesZLmcSp+CRXJ4HV47bmtKKxCbVX2LQ=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=PTbFi5fxGz6wGQhQG6vPP11fyXDEmX0uhWSgZry8I4bOcc39CidnHsVWgg4MnnuHB nlBWE1LNoApgmKzyECCjty+gBmTO8eq6sNjfGjSgbmbqbWf9lVrkb85tffiCext1// SMHFM5g5svIyy/0InuCaRby6WG9rHcan8W+t7vCuplNvbtWUJNu0hwYgsh1jUS0d0L vWjCR3OKIGC1ZVZzJkygM+6VvhQgf3hfAM/tKqNNvHmxVYPjnDHWyqsmfEvinlxY8G MTS9qcQaZRoctKaMWCnugOvMKW7wpsKPYiGBoO0FByBWcDaDk12cFnBUQJqQCoVVuv zxEBSnpxIuPEw== Received: from localhost (unknown [188.27.58.83]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (prime256v1) server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) (Authenticated sender: cristicc) by bali.collaboradmins.com (Postfix) with UTF8SMTPSA id C866D17E0F9F; Fri, 7 Feb 2025 12:46:45 +0100 (CET) From: Cristian Ciocaltea Date: Fri, 07 Feb 2025 13:46:02 +0200 Subject: [PATCH 1/4] ASoC: SOF: amd: Add post_fw_run_delay ACP quirk Precedence: bulk X-Mailing-List: linux-sound@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20250207-sof-vangogh-fixes-v1-1-67824c1e4c9a@collabora.com> References: <20250207-sof-vangogh-fixes-v1-0-67824c1e4c9a@collabora.com> In-Reply-To: <20250207-sof-vangogh-fixes-v1-0-67824c1e4c9a@collabora.com> To: Liam Girdwood , Peter Ujfalusi , Bard Liao , Ranjani Sridharan , Daniel Baluta , Kai Vehmanen , Pierre-Louis Bossart , Mark Brown , Jaroslav Kysela , Takashi Iwai , Vijendar Mukunda , Venkata Prasad Potturu Cc: kernel@collabora.com, sound-open-firmware@alsa-project.org, linux-sound@vger.kernel.org, linux-kernel@vger.kernel.org X-Mailer: b4 0.14.2 Stress testing resume from suspend on Valve Steam Deck OLED (Galileo) revealed that the DSP firmware could enter an unrecoverable faulty state, where the kernel ring buffer is flooded with IPC related error messages: [ +0.017002] snd_sof_amd_vangogh 0000:04:00.5: acp_sof_ipc_send_msg: Failed to acquire HW lock [ +0.000054] snd_sof_amd_vangogh 0000:04:00.5: ipc3_tx_msg_unlocked: ipc message send for 0x30100000 failed: -22 [ +0.000005] snd_sof_amd_vangogh 0000:04:00.5: Failed to setup widget PIPELINE.6.ACPHS1.IN [ +0.000004] snd_sof_amd_vangogh 0000:04:00.5: Failed to restore pipeline after resume -22 [ +0.000003] snd_sof_amd_vangogh 0000:04:00.5: PM: dpm_run_callback(): pci_pm_resume returns -22 [ +0.000009] snd_sof_amd_vangogh 0000:04:00.5: PM: failed to resume async: error -22 [...] [ +0.002582] PM: suspend exit [ +0.065085] snd_sof_amd_vangogh 0000:04:00.5: ipc tx error for 0x30130000 (msg/reply size: 12/0): -22 [ +0.000499] snd_sof_amd_vangogh 0000:04:00.5: error: failed widget list set up for pcm 1 dir 0 [ +0.000011] snd_sof_amd_vangogh 0000:04:00.5: error: set pcm hw_params after resume [ +0.000006] snd_sof_amd_vangogh 0000:04:00.5: ASoC: error at snd_soc_pcm_component_prepare on 0000:04:00.5: -22 [...] A system reboot would be necessary to restore the speakers functionality. However, by delaying a bit any host to DSP transmission right after the firmware boot completed, the issue could not be reproduced anymore and sound continued to work flawlessly even after performing thousands of suspend/resume cycles. Introduce the post_fw_run_delay ACP quirk to allow providing the aforementioned delay via the snd_sof_dsp_ops->post_fw_run() callback for the affected devices. Signed-off-by: Cristian Ciocaltea --- sound/soc/sof/amd/acp.c | 1 + sound/soc/sof/amd/acp.h | 1 + sound/soc/sof/amd/vangogh.c | 18 ++++++++++++++++++ 3 files changed, 20 insertions(+) diff --git a/sound/soc/sof/amd/acp.c b/sound/soc/sof/amd/acp.c index 33648ff8b83365e76d7d90e52c2cb8f884a2fe72..9e13c96528be3371e063072513c118cfc8b93fe8 100644 --- a/sound/soc/sof/amd/acp.c +++ b/sound/soc/sof/amd/acp.c @@ -27,6 +27,7 @@ MODULE_PARM_DESC(enable_fw_debug, "Enable Firmware debug"); static struct acp_quirk_entry quirk_valve_galileo = { .signed_fw_image = true, .skip_iram_dram_size_mod = true, + .post_fw_run_delay = true, }; const struct dmi_system_id acp_sof_quirk_table[] = { diff --git a/sound/soc/sof/amd/acp.h b/sound/soc/sof/amd/acp.h index 800594440f73914e7b8ccaf86369ac686e1da630..2a19d82d6200223cdfccd49fbcf1b52968ae1230 100644 --- a/sound/soc/sof/amd/acp.h +++ b/sound/soc/sof/amd/acp.h @@ -220,6 +220,7 @@ struct sof_amd_acp_desc { struct acp_quirk_entry { bool signed_fw_image; bool skip_iram_dram_size_mod; + bool post_fw_run_delay; }; /* Common device data struct for ACP devices */ diff --git a/sound/soc/sof/amd/vangogh.c b/sound/soc/sof/amd/vangogh.c index 8e2672106ac60a22824836a944503a05616f8661..d5f1dddd43e72dd62b3d031130193e6125edf9df 100644 --- a/sound/soc/sof/amd/vangogh.c +++ b/sound/soc/sof/amd/vangogh.c @@ -11,6 +11,7 @@ * Hardware interface for Audio DSP on Vangogh platform */ +#include #include #include @@ -136,6 +137,20 @@ static struct snd_soc_dai_driver vangogh_sof_dai[] = { }, }; +static int sof_vangogh_post_fw_run_delay(struct snd_sof_dev *sdev) +{ + /* + * Resuming from suspend in some cases my cause the DSP firmware + * to enter an unrecoverable faulty state. Delaying a bit any host + * to DSP transmission right after firmware boot completion seems + * to resolve the issue. + */ + if (!sdev->first_boot) + usleep_range(100, 150); + + return 0; +} + /* Vangogh ops */ struct snd_sof_dsp_ops sof_vangogh_ops; EXPORT_SYMBOL_NS(sof_vangogh_ops, "SND_SOC_SOF_AMD_COMMON"); @@ -157,6 +172,9 @@ int sof_vangogh_ops_init(struct snd_sof_dev *sdev) if (quirks->signed_fw_image) sof_vangogh_ops.load_firmware = acp_sof_load_signed_firmware; + + if (quirks->post_fw_run_delay) + sof_vangogh_ops.post_fw_run = sof_vangogh_post_fw_run_delay; } return 0; From patchwork Fri Feb 7 11:46:03 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Cristian Ciocaltea X-Patchwork-Id: 13964865 Received: from bali.collaboradmins.com (bali.collaboradmins.com [148.251.105.195]) (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 8BFCA1DE3D2; Fri, 7 Feb 2025 11:46:48 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=148.251.105.195 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738928810; cv=none; b=dE1cydM1la1sUmQ5CAVceMHCdwC5Z8r00nfK5HOa99D1RbZdSVlDgBcpJrNk81xMwtuVa5AtSvpX1fRQNQpBoVSsWf3pCADyauq9Pk2LoypLx93Cx/ccOYPbxVGQEdOKuwb3ITa4EtdhArUAmds15tOLUw1tvV+uSx0rF0drS0k= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738928810; c=relaxed/simple; bh=2V8T91nGZ/E3zY8ODMv8Kr6y/rg7PBI4fQV67w6f8C4=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Nbkq89GhGbntCHJxTRGPCcZKskmU1WchoPEwyQ0o9IXVZKZBQJcAiDBwRlSpz6xjXfZ3LwMovJ/kgkb54dznlh1wXHml4+OCbcz00oaumPDlDETagltTj8fppYi+OzEjkhRO6IvxmEoeNvMB62wSWxpWoObBNeyAEAeubPcGq8c= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com; spf=pass smtp.mailfrom=collabora.com; dkim=pass (2048-bit key) header.d=collabora.com header.i=@collabora.com header.b=oeinKjDh; arc=none smtp.client-ip=148.251.105.195 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=collabora.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=collabora.com header.i=@collabora.com header.b="oeinKjDh" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; s=mail; t=1738928806; bh=2V8T91nGZ/E3zY8ODMv8Kr6y/rg7PBI4fQV67w6f8C4=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=oeinKjDhy8YT6ttHogHw7/pRWtNI8VrexxDQJDMO70GV1qMx+uWwjD3EKdosmwzn7 Fjr36/z+ij9KKs1dtUvZwtZbHRAR4oiMDN8txTuqq61anLpkASacJNyzxhGo8R/fKy 9p2+tmgb3yG6FXCAn5u+n6GLAWeycai9Eq9/QIgGq1wVUB/9l6X9/f1f7P5euZncAa DyqYYX+2VmNXRGVvm449bjlyX11+3N1bX0UlPojojG2oK5h8zz+ra11sZd1o0fsDoD neZmFdsDx2eiSz2x5jA2J+F4apJzjamIbNNzR+1B9uWQF/XDQi7rbfmGnIv4mvYL6X jOuRHtH2VnkJA== Received: from localhost (unknown [188.27.58.83]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (prime256v1) server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) (Authenticated sender: cristicc) by bali.collaboradmins.com (Postfix) with UTF8SMTPSA id 9CE2117E1507; Fri, 7 Feb 2025 12:46:46 +0100 (CET) From: Cristian Ciocaltea Date: Fri, 07 Feb 2025 13:46:03 +0200 Subject: [PATCH 2/4] ASoC: SOF: amd: Drop unused includes from Vangogh driver Precedence: bulk X-Mailing-List: linux-sound@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20250207-sof-vangogh-fixes-v1-2-67824c1e4c9a@collabora.com> References: <20250207-sof-vangogh-fixes-v1-0-67824c1e4c9a@collabora.com> In-Reply-To: <20250207-sof-vangogh-fixes-v1-0-67824c1e4c9a@collabora.com> To: Liam Girdwood , Peter Ujfalusi , Bard Liao , Ranjani Sridharan , Daniel Baluta , Kai Vehmanen , Pierre-Louis Bossart , Mark Brown , Jaroslav Kysela , Takashi Iwai , Vijendar Mukunda , Venkata Prasad Potturu Cc: kernel@collabora.com, sound-open-firmware@alsa-project.org, linux-sound@vger.kernel.org, linux-kernel@vger.kernel.org X-Mailer: b4 0.14.2 Remove all the includes for headers which are not (directly) used from the Vangogh SOF driver sources. Signed-off-by: Cristian Ciocaltea Reviewed-by: Venkata Prasad Potturu --- sound/soc/sof/amd/pci-vangogh.c | 2 -- sound/soc/sof/amd/vangogh.c | 4 ---- 2 files changed, 6 deletions(-) diff --git a/sound/soc/sof/amd/pci-vangogh.c b/sound/soc/sof/amd/pci-vangogh.c index 53f64d6bc91bae9e2ec506384a83b209a296860f..28f2d4050a6769335b5908c16946eff85aa7161d 100644 --- a/sound/soc/sof/amd/pci-vangogh.c +++ b/sound/soc/sof/amd/pci-vangogh.c @@ -13,11 +13,9 @@ #include #include -#include #include #include -#include "../ops.h" #include "../sof-pci-dev.h" #include "../../amd/mach-config.h" #include "acp.h" diff --git a/sound/soc/sof/amd/vangogh.c b/sound/soc/sof/amd/vangogh.c index d5f1dddd43e72dd62b3d031130193e6125edf9df..6ed5f9aaa414e696b0ae9b3bb83bd92a5dcd8d4b 100644 --- a/sound/soc/sof/amd/vangogh.c +++ b/sound/soc/sof/amd/vangogh.c @@ -12,13 +12,9 @@ */ #include -#include #include -#include "../ops.h" -#include "../sof-audio.h" #include "acp.h" -#include "acp-dsp-offset.h" #define I2S_HS_INSTANCE 0 #define I2S_BT_INSTANCE 1 From patchwork Fri Feb 7 11:46:04 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Cristian Ciocaltea X-Patchwork-Id: 13964866 Received: from bali.collaboradmins.com (bali.collaboradmins.com [148.251.105.195]) (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 792FF1DED6C; Fri, 7 Feb 2025 11:46:49 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=148.251.105.195 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738928811; cv=none; b=IYWRJtiisy2sLXyT3DSi8ws9CQZVq8CdDoezoSzZINfidct8FI/aE3izCYEShzR84/G0/yrzAZgsePRc6lHBbVeHi0HYzLEcI9T8mO9n/pLcrlgDNmgrjPEdl1zz/LEzMJ2zgTaPa2BCy/1cvjffuDb+GuND0Z0WrZF4mpav8uI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738928811; c=relaxed/simple; bh=wxf0zPe/RDiIn2bemv2QkrA74j0RiuLFsdJiJoj2U5w=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=XD2aoH3FtOFKmv6lMDJDtow4CdfNsnfi8EtPqP9pn9SgHyf3/RgjI4mTf3ZLSMbjjHqpATW/qiWjwEfQN5YSbozXRzGL6uz9Uwv5ZyfTbd3k3Gls4eGSKCrW0UIaHWYdPXcy5vVbkYjIH6MgYw87AnJnkzw8Qzev0Fpm21Yoj1E= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com; spf=pass smtp.mailfrom=collabora.com; dkim=pass (2048-bit key) header.d=collabora.com header.i=@collabora.com header.b=kRYKWRHA; arc=none smtp.client-ip=148.251.105.195 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=collabora.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=collabora.com header.i=@collabora.com header.b="kRYKWRHA" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; s=mail; t=1738928807; bh=wxf0zPe/RDiIn2bemv2QkrA74j0RiuLFsdJiJoj2U5w=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=kRYKWRHA/Jfccn43BUUpUvLnpRwDiJGgsjJdDY0msS9ZQAhRKiBqyDqrhwhdmtol6 J9Y5yDxu+ETIQs4K3OMsjyMIFX5Ayop4wI/PrCh8Sb/0aryLQU+dpPcvcq4rjY+9CO wFSk7H6Pt7cQ5ikBOVoAZ9A2CxhA9clMhSgFKJwey7UmIqrneClV4/BJ5uqm9hnxzM +bk0md0jUdJyushHx0yKWdCmubOursyC9GsN581CQrNFrN7OlkpwjsXVkREhL3Fh3k R4LffJR5xyEybV4S+m6LB53IIMZjygBejPYhzkxexAOGFHczDp7YhPfZCvDyMbCWRT ucJOagXpFW1gA== Received: from localhost (unknown [188.27.58.83]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (prime256v1) server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) (Authenticated sender: cristicc) by bali.collaboradmins.com (Postfix) with UTF8SMTPSA id 83C2317E1511; Fri, 7 Feb 2025 12:46:47 +0100 (CET) From: Cristian Ciocaltea Date: Fri, 07 Feb 2025 13:46:04 +0200 Subject: [PATCH 3/4] ASoC: SOF: amd: Handle IPC replies before FW_BOOT_COMPLETE Precedence: bulk X-Mailing-List: linux-sound@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20250207-sof-vangogh-fixes-v1-3-67824c1e4c9a@collabora.com> References: <20250207-sof-vangogh-fixes-v1-0-67824c1e4c9a@collabora.com> In-Reply-To: <20250207-sof-vangogh-fixes-v1-0-67824c1e4c9a@collabora.com> To: Liam Girdwood , Peter Ujfalusi , Bard Liao , Ranjani Sridharan , Daniel Baluta , Kai Vehmanen , Pierre-Louis Bossart , Mark Brown , Jaroslav Kysela , Takashi Iwai , Vijendar Mukunda , Venkata Prasad Potturu Cc: kernel@collabora.com, sound-open-firmware@alsa-project.org, linux-sound@vger.kernel.org, linux-kernel@vger.kernel.org X-Mailer: b4 0.14.2 In some cases, e.g. during resuming from suspend, there is a possibility that some IPC reply messages get received by the host while the DSP firmware has not yet reached the complete boot state. Detect when this happens and do not attempt to process the unexpected replies from DSP. Instead, provide proper debugging support. Signed-off-by: Cristian Ciocaltea --- sound/soc/sof/amd/acp-ipc.c | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/sound/soc/sof/amd/acp-ipc.c b/sound/soc/sof/amd/acp-ipc.c index 5f371d9263f3bad507236ace95b7ef323c369187..12caefd08788595be8de03a863b88b5bbc15847d 100644 --- a/sound/soc/sof/amd/acp-ipc.c +++ b/sound/soc/sof/amd/acp-ipc.c @@ -167,6 +167,7 @@ irqreturn_t acp_sof_ipc_irq_thread(int irq, void *context) if (sdev->first_boot && sdev->fw_state != SOF_FW_BOOT_COMPLETE) { acp_mailbox_read(sdev, sdev->dsp_box.offset, &status, sizeof(status)); + if ((status & SOF_IPC_PANIC_MAGIC_MASK) == SOF_IPC_PANIC_MAGIC) { snd_sof_dsp_panic(sdev, sdev->dsp_box.offset + sizeof(status), true); @@ -188,13 +189,21 @@ irqreturn_t acp_sof_ipc_irq_thread(int irq, void *context) dsp_ack = snd_sof_dsp_read(sdev, ACP_DSP_BAR, ACP_SCRATCH_REG_0 + dsp_ack_write); if (dsp_ack) { - spin_lock_irq(&sdev->ipc_lock); - /* handle immediate reply from DSP core */ - acp_dsp_ipc_get_reply(sdev); - snd_sof_ipc_reply(sdev, 0); - /* set the done bit */ - acp_dsp_ipc_dsp_done(sdev); - spin_unlock_irq(&sdev->ipc_lock); + if (likely(sdev->fw_state == SOF_FW_BOOT_COMPLETE)) { + spin_lock_irq(&sdev->ipc_lock); + + /* handle immediate reply from DSP core */ + acp_dsp_ipc_get_reply(sdev); + snd_sof_ipc_reply(sdev, 0); + /* set the done bit */ + acp_dsp_ipc_dsp_done(sdev); + + spin_unlock_irq(&sdev->ipc_lock); + } else { + dev_dbg_ratelimited(sdev->dev, "IPC reply before FW_BOOT_COMPLETE: %#x\n", + dsp_ack); + } + ipc_irq = true; } From patchwork Fri Feb 7 11:46:05 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Cristian Ciocaltea X-Patchwork-Id: 13964867 Received: from bali.collaboradmins.com (bali.collaboradmins.com [148.251.105.195]) (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 60BCC1DF24F; Fri, 7 Feb 2025 11:46:50 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=148.251.105.195 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738928812; cv=none; b=TSpE1ENnzL1rlF/apq9I8cpFdA61BweqiiF884W8561iFQUnYzMn3bUIChjKN3gJXQDsvqan1vVfPF8bjm2HBDt/w2FfCXhqkhI3RWshjvmKpOCfEVYexLZOV8sxJTcdGrCkavdCInzaqxxVUvScKXfHl2aDOe9SndzxiHDWrjw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738928812; c=relaxed/simple; bh=H0rXNCWcCYKTxtO4blj1uR9+hKzfT9N/DPWTmQgYXGs=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=F6BqAMOliV3ls7q31N1BWddzlAoVA6jaUCZnQW5HEI6xpfIWfzdAK0RAoX4J91PFhLa3PN3CjKm2J7x1unrMRZ9N9MVI7yRN2UT6zQVCIegRkgRbywpV2c1smT5QxIswYCqfHpYYrawLBI4O0SvgNfK2vBi5XUPmTelIfBnLwFk= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com; spf=pass smtp.mailfrom=collabora.com; dkim=pass (2048-bit key) header.d=collabora.com header.i=@collabora.com header.b=R4lzb8ld; arc=none smtp.client-ip=148.251.105.195 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=collabora.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=collabora.com header.i=@collabora.com header.b="R4lzb8ld" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; s=mail; t=1738928808; bh=H0rXNCWcCYKTxtO4blj1uR9+hKzfT9N/DPWTmQgYXGs=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=R4lzb8ldLKl8ogOXO9PmOgL/inF1T3Nz4+S5Cy6O2EYbaQ1pf7Fc3fMa/c2xEG9CZ z6Oicq0u+P7mWA26ANDZoTS4NFzH8pz2wvamTqYqsjy7vVgRHX+wNijN9R8tCAFU8A F1tvNThLz27MlPdGA0Q4q8du/jCJuseSDQcpIJR2l7NCWPFXu7DRRWxKBZgmFM0Zwt RudFGFR5BCaKLP1Y/NkW2Nj/bVB9Ih5K61kzdGvayPThagyg1cpWLK60PcvhkcVmfN PIy7UsjpkTs/C0EQHS5ZCPHHZe+9etGZLgpfNGmHdDB+YRcu5mxNEBlQwwfjdhEOqE uFh5ilkPlbc8A== Received: from localhost (unknown [188.27.58.83]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (prime256v1) server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) (Authenticated sender: cristicc) by bali.collaboradmins.com (Postfix) with UTF8SMTPSA id 6ADAD17E153B; Fri, 7 Feb 2025 12:46:48 +0100 (CET) From: Cristian Ciocaltea Date: Fri, 07 Feb 2025 13:46:05 +0200 Subject: [PATCH 4/4] ASoC: SOF: amd: Add branch prediction hint in ACP IRQ handler Precedence: bulk X-Mailing-List: linux-sound@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20250207-sof-vangogh-fixes-v1-4-67824c1e4c9a@collabora.com> References: <20250207-sof-vangogh-fixes-v1-0-67824c1e4c9a@collabora.com> In-Reply-To: <20250207-sof-vangogh-fixes-v1-0-67824c1e4c9a@collabora.com> To: Liam Girdwood , Peter Ujfalusi , Bard Liao , Ranjani Sridharan , Daniel Baluta , Kai Vehmanen , Pierre-Louis Bossart , Mark Brown , Jaroslav Kysela , Takashi Iwai , Vijendar Mukunda , Venkata Prasad Potturu Cc: kernel@collabora.com, sound-open-firmware@alsa-project.org, linux-sound@vger.kernel.org, linux-kernel@vger.kernel.org X-Mailer: b4 0.14.2 The conditional involving sdev->first_boot in acp_sof_ipc_irq_thread() will succeed only once, i.e. during the very first run of the DSP firmware. Use the unlikely() annotation to help improve branch prediction accuracy. Signed-off-by: Cristian Ciocaltea Reviewed-by: Venkata Prasad Potturu --- sound/soc/sof/amd/acp-ipc.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sound/soc/sof/amd/acp-ipc.c b/sound/soc/sof/amd/acp-ipc.c index 12caefd08788595be8de03a863b88b5bbc15847d..22d4b807e1bb75e6f4e6dbf161d79b1a43808004 100644 --- a/sound/soc/sof/amd/acp-ipc.c +++ b/sound/soc/sof/amd/acp-ipc.c @@ -165,7 +165,7 @@ irqreturn_t acp_sof_ipc_irq_thread(int irq, void *context) int dsp_msg, dsp_ack; unsigned int status; - if (sdev->first_boot && sdev->fw_state != SOF_FW_BOOT_COMPLETE) { + if (unlikely(sdev->first_boot && sdev->fw_state != SOF_FW_BOOT_COMPLETE)) { acp_mailbox_read(sdev, sdev->dsp_box.offset, &status, sizeof(status)); if ((status & SOF_IPC_PANIC_MAGIC_MASK) == SOF_IPC_PANIC_MAGIC) {