From nobody Fri Sep 25 03:17:45 2026 Received: from SJ2PR03CU001.outbound.protection.outlook.com (mail-westusazon11012053.outbound.protection.outlook.com [52.101.43.53]) (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 9C9C443E07A; Thu, 17 Sep 2026 08:38:59 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.43.53 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789634344; cv=fail; b=dxMyWLcMR5PJYleY3fQ5GcREXOflxXaj2X6mZF5Mzg6qD4rLrkL5yb5B24MaZqXxYuPAKi/JL+TXYx2kGxqk77V4yPgLBpZ251qNSvEsi5d/18xVEOhfeUk1/RDd47y77ZXu26AfPEQsLBJZ5JbCWUcN6JCUJeZpDQ6k7igDIA4= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789634344; c=relaxed/simple; bh=ZKuWWTIxu/Ud6TZmMc46vnK29MCBiWRu26Yx6p8ZfiU=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=uhNGy9hmfCnDfpURnyg4USdrFisQl99ya0ijeQoVLitgJigTj3UBfhwfgQLBFZIQ8yiWrURMjG7hb5c6t7iA4AOif2zkSX2LvV3PAXN1x3FTqCWZvJLTS0NYp6HBVQIbgNQRZgwHDU0K4VIryqJVncoQccH251WICw5WuB1vol8= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com; spf=fail smtp.mailfrom=amd.com; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b=n7dobRZV; arc=fail smtp.client-ip=52.101.43.53 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=amd.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b="n7dobRZV" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=y35MsgjTWOEHMRe01QeQOfNrcNXLk0dJes5LPc0BhlCVlaigUq3mwCfgo775RJJtne2Xr8Cergh+1qWmLeX1vRoce1vuHTKPPYZaO6Iy2VjMsSwpCTegDPQXvFC935AEU7U+IOXEravVgU/EqHQxsVmdLbMChFgCUEvu7p9r9s9WjvUy4fBa9fFsyAPra3BWgo5YNUmWXluw6Q9xssJSGn3EHPPrOY3NpocR+wfgi2FrdNwBfkGF76/tpnxuaxV/4k7CFYeVXTfeJlJ01KnG8ZImZMaBvhV4EYPPJNJ6IH8ZqBs9xQQuW0+5ckRfLD9Qiy4pz2Fa8v0qGVC3sdtQjg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=vuaCfIoV0IQbSRxWRy4R0KsnVQNCZn6kMmI6GBuuzfI=; b=nHg+kdpMtaQ3Lbavjn7CV/TZzw1NWlj/FATrCai8HQRnUmkTlmS0s+ga6vgkiyXHG5xAGVWeUmvNyjrnQzgJv9xIRuu3482Tzl97RUiUJ9wymenebXXhOQLY73F0zdC2tkJLop8j1HmHJ3L6zejzzy5N15wi2Ae3eJ5samQ7P/QL8wpLC+PPx+w717OH0NDqqoEy8Lrn6mJF4dMTNtngCxBaH3lVvFBp1RyU29Y5YCsDcAlEGa7420q5h80s0iUik8ZPeTEpmXFhgNh6yep+0Q6/kSQ85UkHhghUCT0UMtqvFSqw3XTdH7KAJMdWEFdwrZ9VztRnf2vYbKJv05lipg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=kernel.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=vuaCfIoV0IQbSRxWRy4R0KsnVQNCZn6kMmI6GBuuzfI=; b=n7dobRZVUhF07ryzCSwfWkdUy9EBgcLRpPbqGB0joQ7JaTQDG6QGmLdvSlEJTAghnL5CSK6h/VzgXHZ8BkF2c5qhSx+abZci47gih1AP8MIAeBouehkGZhzdBBAPBoGlkDrIr+TUgiHliDD0QAKhJdpYiGW9RaxAFnnJV9I0Jpk= Received: from BN9PR03CA0571.namprd03.prod.outlook.com (2603:10b6:408:10d::6) by DM4PR12MB7549.namprd12.prod.outlook.com (2603:10b6:8:10f::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.428.12; Thu, 17 Sep 2026 08:38:49 +0000 Received: from BN1PEPF00004685.namprd03.prod.outlook.com (2603:10b6:408:10d:cafe::6b) by BN9PR03CA0571.outlook.office365.com (2603:10b6:408:10d::6) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.428.12 via Frontend Transport; Thu, 17 Sep 2026 08:38:49 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=satlexmb07.amd.com; pr=C Received: from satlexmb07.amd.com (165.204.84.17) by BN1PEPF00004685.mail.protection.outlook.com (10.167.243.86) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.451.8 via Frontend Transport; Thu, 17 Sep 2026 08:38:48 +0000 Received: from Satlexmb09.amd.com (10.181.42.218) by satlexmb07.amd.com (10.181.42.216) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.49; Thu, 17 Sep 2026 03:38:48 -0500 Received: from satlexmb07.amd.com (10.181.42.216) by satlexmb09.amd.com (10.181.42.218) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.49; Thu, 17 Sep 2026 03:38:48 -0500 Received: from amd-System-Product-Name.amd.com (10.180.168.240) by satlexmb07.amd.com (10.181.42.216) with Microsoft SMTP Server id 15.2.2562.49 via Frontend Transport; Thu, 17 Sep 2026 03:38:44 -0500 From: Vijendar Mukunda To: CC: , , , , , , , , , , , , "Vijendar Mukunda" Subject: [PATCH V2 1/9] soundwire: amd: fix SDW command timeout return value handling Date: Thu, 17 Sep 2026 14:04:12 +0530 Message-ID: <20260917083732.3803526-2-Vijendar.Mukunda@amd.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20260917083732.3803526-1-Vijendar.Mukunda@amd.com> References: <20260917083732.3803526-1-Vijendar.Mukunda@amd.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BN1PEPF00004685:EE_|DM4PR12MB7549:EE_ X-MS-Office365-Filtering-Correlation-Id: 82f37166-8f17-4ebe-bddf-08df14971831 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|36860700016|376014|23010399003|82310400026|1800799024|56012099006|11063799006|10067099003|18002099003|22082099003; X-Microsoft-Antispam-Message-Info: fnE9N/eadQEIp4vAesfCeIAPIdJS/oMAyzeH6yqJ95T44TFMN3hU+6BWDKdys8YLeyWn7MI1VXafwxulkzz3/F4B/mEW1gSSKygdiutB4WrZyGUFCK07GexxE4eqRi4zHN/VEoTwM8y5euS3lH1hjZ3jQdAYLMBgJ0N5eNVyO0q+1LG7V+oWs0XLv0mJLBF+yCvFM87ktbb4tNlipRZcubNzZJv5FrEWz0CYhiURUc9gchuEzKn9iU1tMKE13yHz5McTSPai63+9fCIuoz1uQW/Am5RRLbDvRx8ip9midVDm/Ae4MaHwEcWhfpK5vakhi3u0/7AEL898TWRjnuyrSn7UCkoe+4lhjZ4zDc/MLl1JfBEDCoUh9UHMy4U+Eq4MXhKL0Lw8pdMYFVF6BVUmvW42TVbflGKQHiRA2vN6G5K/44rS6daERUPVXoKMLoDZDoWtdU4TdqW+zUkHlcRmDZQ0Vwb4dsDgsiwrKIkVNww8vtLPqB6UbjQGS4rQC1/KOkeEsAY3YnFwPdSiM9k4iSHcs67kwYQTSYLCpCAcAPi82OuBnjfhCp9U52pSUQ/UTwB4zdDlM9ac7xOVpm34bbm9q1MjItguGes/VhnSV9NT4rrmVwFl+Kutpuegrynl5vVckiUaFpqKGKp6OA++aE5/Qn0eKyxgcM2Yv0VznD98pw4n4uBwd+PpiltuBuxcm1EA0rAZmnHtGsExxZL/hg== X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:satlexmb07.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(36860700016)(376014)(23010399003)(82310400026)(1800799024)(56012099006)(11063799006)(10067099003)(18002099003)(22082099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 8KiQC/tG8gLIgGFcabQbln77OoJOvOkNUpn9sTuHmDZpTV4y1i5sn1ZqpR0t7fldDQzYb/micZfCxqUSljnKQxuRum71r/xmMk2dTrccnVJ/LrW4mqnk8OgUJppgSe0IsgiFbQ1IsMsTpR3wnOePVqaDv4MXlOyLrZtG4i9yuNElj/4nLkUwD4dH/yFOVEqQm3zjKZbMV8+qSPM0XJxZn/oj8V1e3N6gNEBCL59sV8uKUNDY5fY2d4AAv8pNPhZzu4nT2NsY6wfvWJG7VjzPTLumdF3FGwoEPfM3lJCXU84S1YbaJ2nu+ji32rRh0Smv2QWwxD19CkIngaUN9clE3NOMCOJB2R59CkZbj9yZcjxEIo6bWqPiGwUfeWYMszdolxsYBN+vq767HfFUZ+oFSz12ktBOtaOwaSlyobWciPO7/eYgpDc9Vh9YvT3wHAki X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Sep 2026 08:38:48.8036 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 82f37166-8f17-4ebe-bddf-08df14971831 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[satlexmb07.amd.com] X-MS-Exchange-CrossTenant-AuthSource: BN1PEPF00004685.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM4PR12MB7549 Content-Type: text/plain; charset="utf-8" amd_sdw_send_cmd_get_resp() returned u64 but was returning -ETIMEDOUT (a negative int) on readl_poll_timeout() failures, which silently widens to a large u64 value. Change the return type to int and pass the raw u64 response through an out-parameter. Timeout is detected directly from readl_poll_timeout() return value. Update all callers: amd_program_scp_addr(), _amd_sdw_xfer_msg(), amd_sdw_read_and_process_ping_status(), and amd_sdw_read_ping_status() to check the return value and handle timeout explicitly. In amd_sdw_read_and_process_ping_status(), the mutex unlock is also moved to after amd_sdw_process_ping_status() so the lock is held across the full status processing step. Fixes: d8f48fbdfd9a ("soundwire: amd: Add support for AMD Manager driver") Signed-off-by: Vijendar Mukunda --- drivers/soundwire/amd_manager.c | 56 +++++++++++++++++++-------------- 1 file changed, 33 insertions(+), 23 deletions(-) diff --git a/drivers/soundwire/amd_manager.c b/drivers/soundwire/amd_manage= r.c index a3316efdf8ac..fa3f4e797edd 100644 --- a/drivers/soundwire/amd_manager.c +++ b/drivers/soundwire/amd_manager.c @@ -250,10 +250,9 @@ static void amd_sdw_ctl_word_prep(u32 *lower_word, u32= *upper_word, struct sdw_m *lower_word =3D lower_data; } =20 -static u64 amd_sdw_send_cmd_get_resp(struct amd_sdw_manager *amd_manager, = u32 lower_data, - u32 upper_data) +static int amd_sdw_send_cmd_get_resp(struct amd_sdw_manager *amd_manager, = u32 lower_data, + u32 upper_data, u64 *response) { - u64 resp; u32 lower_resp, upper_resp; u32 sts; int ret; @@ -291,9 +290,8 @@ static u64 amd_sdw_send_cmd_get_resp(struct amd_sdw_man= ager *amd_manager, u32 lo amd_manager->instance); return ret; } - resp =3D upper_resp; - resp =3D (resp << 32) | lower_resp; - return resp; + *response =3D ((u64)upper_resp << 32) | lower_resp; + return 0; } =20 static enum sdw_command_response @@ -309,19 +307,22 @@ amd_program_scp_addr(struct amd_sdw_manager *amd_mana= ger, struct sdw_msg *msg) scp_msg.buf =3D &msg->addr_page1; scp_msg.flags =3D SDW_MSG_FLAG_WRITE; amd_sdw_ctl_word_prep(&lower_data, &upper_data, &scp_msg, 0); - response_buf[0] =3D amd_sdw_send_cmd_get_resp(amd_manager, lower_data, up= per_data); + if (amd_sdw_send_cmd_get_resp(amd_manager, lower_data, upper_data, &respo= nse_buf[0])) { + dev_err_ratelimited(amd_manager->dev, + "SCP_addrpage command timeout for Slave %d\n", msg->dev_num); + return SDW_CMD_TIMEOUT; + } scp_msg.addr =3D SDW_SCP_ADDRPAGE2; scp_msg.buf =3D &msg->addr_page2; amd_sdw_ctl_word_prep(&lower_data, &upper_data, &scp_msg, 0); - response_buf[1] =3D amd_sdw_send_cmd_get_resp(amd_manager, lower_data, up= per_data); + if (amd_sdw_send_cmd_get_resp(amd_manager, lower_data, upper_data, &respo= nse_buf[1])) { + dev_err_ratelimited(amd_manager->dev, + "SCP_addrpage command timeout for Slave %d\n", msg->dev_num); + return SDW_CMD_TIMEOUT; + } =20 for (index =3D 0; index < 2; index++) { - if (response_buf[index] =3D=3D -ETIMEDOUT) { - dev_err_ratelimited(amd_manager->dev, - "SCP_addrpage command timeout for Slave %d\n", - msg->dev_num); - return SDW_CMD_TIMEOUT; - } else if (!(response_buf[index] & AMD_SDW_MCP_RESP_ACK)) { + if (!(response_buf[index] & AMD_SDW_MCP_RESP_ACK)) { if (response_buf[index] & AMD_SDW_MCP_RESP_NACK) { dev_err_ratelimited(amd_manager->dev, "SCP_addrpage NACKed for Slave %d\n", @@ -366,11 +367,7 @@ static enum sdw_command_response amd_sdw_fill_msg_resp= (struct amd_sdw_manager *a if (msg->flags =3D=3D SDW_MSG_FLAG_READ) msg->buf[offset] =3D FIELD_GET(AMD_SDW_MCP_RESP_RDATA, response); } else { - if (response =3D=3D -ETIMEDOUT) { - dev_err_ratelimited(amd_manager->dev, "command timeout for Slave %d\n", - msg->dev_num); - return SDW_CMD_TIMEOUT; - } else if (response & AMD_SDW_MCP_RESP_NACK) { + if (response & AMD_SDW_MCP_RESP_NACK) { dev_err_ratelimited(amd_manager->dev, "command response NACK received for Slave %d\n", msg->dev_num); @@ -390,7 +387,11 @@ static unsigned int _amd_sdw_xfer_msg(struct amd_sdw_m= anager *amd_manager, struc u32 upper_data =3D 0, lower_data =3D 0; =20 amd_sdw_ctl_word_prep(&lower_data, &upper_data, msg, cmd_offset); - response =3D amd_sdw_send_cmd_get_resp(amd_manager, lower_data, upper_dat= a); + if (amd_sdw_send_cmd_get_resp(amd_manager, lower_data, upper_data, &respo= nse)) { + dev_err_ratelimited(amd_manager->dev, "command timeout for Slave %d\n", + msg->dev_num); + return SDW_CMD_TIMEOUT; + } return amd_sdw_fill_msg_resp(amd_manager, msg, response, cmd_offset); } =20 @@ -446,9 +447,14 @@ static void amd_sdw_read_and_process_ping_status(struc= t amd_sdw_manager *amd_man u64 response; =20 mutex_lock(&amd_manager->bus.msg_lock); - response =3D amd_sdw_send_cmd_get_resp(amd_manager, 0, 0); - mutex_unlock(&amd_manager->bus.msg_lock); + if (amd_sdw_send_cmd_get_resp(amd_manager, 0, 0, &response)) { + mutex_unlock(&amd_manager->bus.msg_lock); + dev_err_ratelimited(amd_manager->dev, "SDW%x ping status timeout\n", + amd_manager->instance); + return; + } amd_sdw_process_ping_status(response, amd_manager); + mutex_unlock(&amd_manager->bus.msg_lock); } =20 static u32 amd_sdw_read_ping_status(struct sdw_bus *bus) @@ -457,7 +463,11 @@ static u32 amd_sdw_read_ping_status(struct sdw_bus *bu= s) u64 response; u32 slave_stat; =20 - response =3D amd_sdw_send_cmd_get_resp(amd_manager, 0, 0); + if (amd_sdw_send_cmd_get_resp(amd_manager, 0, 0, &response)) { + dev_err_ratelimited(amd_manager->dev, "SDW%x ping status timeout\n", + amd_manager->instance); + return 0; + } /* slave status from ping response */ slave_stat =3D FIELD_GET(AMD_SDW_MCP_SLAVE_STAT_0_3, response); slave_stat |=3D FIELD_GET(AMD_SDW_MCP_SLAVE_STAT_4_11, response) << 8; --=20 2.48.1 From nobody Fri Sep 25 03:17:45 2026 Received: from BN1PR04CU002.outbound.protection.outlook.com (mail-eastus2azon11010042.outbound.protection.outlook.com [52.101.56.42]) (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 7DEFA4908D2; Thu, 17 Sep 2026 08:39:02 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.56.42 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789634354; cv=fail; b=s8/ksXuy4QIcwK8s9DK3VRQfeCdMbwUtBDzCBbBcmfzhl/Rn6Mxq6B8anH/1iNiVtQe8sFEZYEI/02kyKGNwzKsjZAkNHVrySW0DPHp12sHbCxr+rp1FsfQTAfVaUXEY7KKsXQFJQ/5yju3TS9RBqG37eQzhAv/dsughop9HpNg= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789634354; c=relaxed/simple; bh=Vc7AC3/pKTeErOhnmNkmmWCswzDSFbLaoB0HQjACKVQ=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=olTxk9y4Cqz7d66yhBLH8dUkpcqJsXE31jBnEjjxShgOB59Xm2WJ23KA/lF3Uyl+WjZthoMIWZZpWeDxlVTEjJljyRdGqQOnTIO4lJXto8jlrMQS5zxjCgwBI6iFePRrm7Ek6w2Oz7XE4XLuhQL6elGzNr3vFubT7+6XOG/HMFs= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com; spf=fail smtp.mailfrom=amd.com; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b=x6ZqtxYk; arc=fail smtp.client-ip=52.101.56.42 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=amd.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b="x6ZqtxYk" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=cOthTMz9wtSD/tUPZi8avGWsovWA82lbYKn/wRZCvxBQseBb9URylXd4F24FA+J4IKGgu3GV8bFRdjy0k+j9FtzoZaFm5ipd/FlLECSCaKxNafbEfUWWSdqR4crgkSl+qqDP1J4sGqgdJ/ilT6igKGrPEAXfUXMyuCW+xNXrRTZfrITxNcK3rPTYTGzvpU4q/Fv5woWb7C3xRxfGEGZv9ACxZnRbl6YltDfv0cxo57hmcQY9sv0awtfG1Asva/KYgz6NbIZ7NKWBbk7XTSk3Mq/IRSb3d4mBiWhCxeVB9zvxXeo/0UEqpbCBlx+AVoj3mHyt/hg2ja/cnB3NDY3QLg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=7lZoLuzAa2+32cj+bNSjogB9DmBnhywviMNGKwNQyiQ=; b=UHfBxu33V6iVU3tG5r3/pImU+5bsGt8vgN5XZW9jJ7cY2Y0jHcBv6hxec0i9URZKqwchUOCfYlVbZCzxIm9S15iSZIykAAh66rgT+2gHHMsEGgtqDgbuGrt2KTJNrSLxaopvQjB+ZCP3UIZZPVQ2onxcSrKeooI2lN51l2s9H5uvcLohECDgudy+N1r1qfahgY5fCcT4STID6MC/kzWP423BJ5kZy91UD2BP028/9WlPtcJlMowaWklkDftXu7LvWGQhf4644HCA8m/UXQ6KDY74mrn82PUfgzVqwcqOcqAETyiasrA54iiBpcBaA/i3+sXHS6gnRFIH9/jgF2IE9Q== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=kernel.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=7lZoLuzAa2+32cj+bNSjogB9DmBnhywviMNGKwNQyiQ=; b=x6ZqtxYkzZcId2PY2wBiV3nourjIagtgb14MwWweLnkYAPfvOWZXD1Dmene3z965W6kNR7sixBK2/E96V0NT8IKEgrtT5XS9rUXdrYeh9dHHeswXBDfRLw7/pAl85dE9Eii+c8NOx+bB1bfRizQkr8unkl2u0qY2yQMLsRAcAYk= Received: from CP6P284CA0026.BRAP284.PROD.OUTLOOK.COM (2603:10d6:103:15d::18) by DS0PR12MB6415.namprd12.prod.outlook.com (2603:10b6:8:cc::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.428.12; Thu, 17 Sep 2026 08:38:55 +0000 Received: from BN1PEPF00004680.namprd03.prod.outlook.com (2603:10d6:103:15d:cafe::7d) by CP6P284CA0026.outlook.office365.com (2603:10d6:103:15d::18) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.428.12 via Frontend Transport; Thu, 17 Sep 2026 08:38:53 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=satlexmb07.amd.com; pr=C Received: from satlexmb07.amd.com (165.204.84.17) by BN1PEPF00004680.mail.protection.outlook.com (10.167.243.85) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.451.8 via Frontend Transport; Thu, 17 Sep 2026 08:38:52 +0000 Received: from satlexmb07.amd.com (10.181.42.216) by satlexmb07.amd.com (10.181.42.216) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.49; Thu, 17 Sep 2026 03:38:52 -0500 Received: from amd-System-Product-Name.amd.com (10.180.168.240) by satlexmb07.amd.com (10.181.42.216) with Microsoft SMTP Server id 15.2.2562.49 via Frontend Transport; Thu, 17 Sep 2026 03:38:48 -0500 From: Vijendar Mukunda To: CC: , , , , , , , , , , , , "Vijendar Mukunda" Subject: [PATCH V2 2/9] soundwire: amd: cache ping slave status to avoid spurious disconnect on timeout Date: Thu, 17 Sep 2026 14:04:13 +0530 Message-ID: <20260917083732.3803526-3-Vijendar.Mukunda@amd.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20260917083732.3803526-1-Vijendar.Mukunda@amd.com> References: <20260917083732.3803526-1-Vijendar.Mukunda@amd.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BN1PEPF00004680:EE_|DS0PR12MB6415:EE_ X-MS-Office365-Filtering-Correlation-Id: 5e55398d-c1bf-45b9-6af3-08df14971a88 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|1800799024|82310400026|36860700016|23010399003|18002099003|22082099003|10067099003|11063799006|56012099006; X-Microsoft-Antispam-Message-Info: QnZZx9mNiRNXt6Y6QsTVtCSZN++EahsNnPhRyU+XFSfGz6bhtxALAeGiA1aDhbbmwuJTlaSKO66/xt4RgVKlI2wRQ3lPZK7fwpdJjNXiAWZm3YZNdQm5SC2+xFooKry3deW24wDDE5w2ML9qsMRnF84VvHyBxabxMQDsOw1ISJxemZOBKl2wb3MMwEeLqKYV1DRA2Sp8VAkxQ/6MEDdBXsp8dlIN3WfA5K/XkCeHpRn/0+7XmQ92EfIWH0BQScbd51ukxD71unPZE1NmIyAtdMm87XY/ga63ToTuL37jrwSMHfZWsKkrdpfNKUrCDQyBmVfw7w9PPzhzwNDkofu6U0AQkTWy1HY7zV4DJVtK1/INMThSWjHjdilysjNkhqF0WhR0At+Z9IHE0G6IKp1Lv9RdTXvBhBqwpj/UM55U6LUmU6FaJPW05Yoq4Tw1lNwUSgGalL2ztCkYKv6jhTZRyyur3bPNa1sbmzlL5wbAzOfSlZsBJKZSCCM5qj0wsoOWVBOOHasETT/Kg0eIGZGHHbcAFRl4D8sSBVLyuTSxnTTB5a8312vYO0ngsSCN8zHRzr4N851g3YJ503tA+ub4o+BSjjNAXuzGFkjkXRlMtaZlTVU4rLD+6F6k4OG7ubp+7O/P4VfTLPdbIevnouI3IILTwgmJhhfX21qMqMF0iBOdMVPjm2FfN66trInEXR61fNO0E+FjUvOjdMXWSdHEag== X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:satlexmb07.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(376014)(1800799024)(82310400026)(36860700016)(23010399003)(18002099003)(22082099003)(10067099003)(11063799006)(56012099006);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 5viub3b7rCfz546OxvfTFe1o1UtJHiVMbpVPEuFI5XajzGbvS/7yjEfBHyKcQ978B2adME+oL4CaAU8HIizEMd4ZR92G6Dt1JspIsAbajG+AUGOehjm34Te1W14ckv0ow8Tc00txna6NDCIQur5WZ5WxgbWO5BP3MxL7/trzlwwLIRWPCfbv0h3LhiJhH9Pkoj/EFCrrkp/3SlSNolqZNddGd3L8S5MGdXFf5dgWElPQtle4VjkSquuls2rmkHD9R7zDospXXL94ef6/704OsSn+VUGIbt5NNA4OTMHXizypHJYmsl/NVY1F5W89TceZriGyc28V5vzi8l7u73tODrT+5AcN98tiMSGiDUKxvGIaHCSD32ukeKdkiRITaGvHII1X2JGNEm2CKhbNXdZm7IpzTrCFUX3ZxJidwPm52AbxtdRU1BRHgctPUvgwAyl2 X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Sep 2026 08:38:52.7241 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 5e55398d-c1bf-45b9-6af3-08df14971a88 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[satlexmb07.amd.com] X-MS-Exchange-CrossTenant-AuthSource: BN1PEPF00004680.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS0PR12MB6415 Content-Type: text/plain; charset="utf-8" Add ping_slave_stat to struct amd_sdw_manager to cache the slave_stat from the last successful ping response. On timeout, amd_sdw_read_ping_status() returns the cached value (or 0 if no successful response yet) to avoid the spurious "no peripherals attached" warning from sdw_show_ping_status(). ping_slave_stat is initialised to U32_MAX in probe and reset to U32_MAX under msg_lock on entry to the POWER_OFF_MODE resume path, before any hardware step that can fail and return early, so that a partially-failed resume cannot leave a stale pre-suspend value behind for a subsequent ping timeout to report. Add lockdep_assert_held() in amd_sdw_read_ping_status() to document that the caller must hold msg_lock. Signed-off-by: Vijendar Mukunda --- drivers/soundwire/amd_manager.c | 21 ++++++++++++++++++++- include/linux/soundwire/sdw_amd.h | 4 ++++ 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/drivers/soundwire/amd_manager.c b/drivers/soundwire/amd_manage= r.c index fa3f4e797edd..a57b59609bfe 100644 --- a/drivers/soundwire/amd_manager.c +++ b/drivers/soundwire/amd_manager.c @@ -453,6 +453,9 @@ static void amd_sdw_read_and_process_ping_status(struct= amd_sdw_manager *amd_man amd_manager->instance); return; } + amd_manager->ping_slave_stat =3D + FIELD_GET(AMD_SDW_MCP_SLAVE_STAT_0_3, response) | + (FIELD_GET(AMD_SDW_MCP_SLAVE_STAT_4_11, response) << 8); amd_sdw_process_ping_status(response, amd_manager); mutex_unlock(&amd_manager->bus.msg_lock); } @@ -463,15 +466,19 @@ static u32 amd_sdw_read_ping_status(struct sdw_bus *b= us) u64 response; u32 slave_stat; =20 + /* Called by sdw_show_ping_status() which holds msg_lock. */ + lockdep_assert_held(&bus->msg_lock); + if (amd_sdw_send_cmd_get_resp(amd_manager, 0, 0, &response)) { dev_err_ratelimited(amd_manager->dev, "SDW%x ping status timeout\n", amd_manager->instance); - return 0; + return amd_manager->ping_slave_stat =3D=3D U32_MAX ? 0 : amd_manager->pi= ng_slave_stat; } /* slave status from ping response */ slave_stat =3D FIELD_GET(AMD_SDW_MCP_SLAVE_STAT_0_3, response); slave_stat |=3D FIELD_GET(AMD_SDW_MCP_SLAVE_STAT_4_11, response) << 8; dev_dbg(amd_manager->dev, "slave_stat:0x%x\n", slave_stat); + amd_manager->ping_slave_stat =3D slave_stat; return slave_stat; } =20 @@ -1087,6 +1094,7 @@ static int amd_sdw_manager_probe(struct platform_devi= ce *pdev) dev_err(dev, "mmio not found\n"); return -ENOMEM; } + amd_manager->ping_slave_stat =3D U32_MAX; amd_manager->instance =3D pdata->instance; amd_manager->mmio =3D amd_manager->acp_mmio + (amd_manager->instance * SDW_MANAGER_REG_OFFSET); @@ -1414,6 +1422,17 @@ static int __maybe_unused amd_resume_runtime(struct = device *dev) } } else if (amd_manager->power_mode_mask & AMD_SDW_POWER_OFF_MODE) { writel(0x00, amd_manager->acp_mmio + ACP_SW_WAKE_EN(amd_manager->instanc= e)); + /* + * POWER_OFF_MODE tears the bus down completely; invalidate the + * cached ping status on entry, before any step that can fail and + * return early, so that a partially-failed resume leaves the first + * post-resume ping timeout returning 0 rather than stale + * pre-suspend data. CLK_STOP_MODE leaves peripherals attached, so + * the cache remains valid there. + */ + mutex_lock(&amd_manager->bus.msg_lock); + amd_manager->ping_slave_stat =3D U32_MAX; + mutex_unlock(&amd_manager->bus.msg_lock); if (amd_manager->acp_rev >=3D ACP70_PCI_REV_ID) { ret =3D amd_sdw_host_wake_enable(amd_manager, false); if (ret) diff --git a/include/linux/soundwire/sdw_amd.h b/include/linux/soundwire/sd= w_amd.h index 470360a2723c..d0e97007e3ff 100644 --- a/include/linux/soundwire/sdw_amd.h +++ b/include/linux/soundwire/sdw_amd.h @@ -76,6 +76,9 @@ struct sdw_amd_dai_runtime { * @acp_rev: acp pci device revision id * @clk_stopped: flag set to true when clock is stopped * @power_mode_mask: flag interprets amd SoundWire manager power mode + * @ping_slave_stat: cached slave status from the last ping + * transaction that returned a response; + * initialised to U32_MAX ("no valid reading yet") * @dai_runtime_array: dai runtime array */ struct amd_sdw_manager { @@ -105,6 +108,7 @@ struct amd_sdw_manager { u32 wake_en_mask; u32 power_mode_mask; u32 acp_rev; + u32 ping_slave_stat; bool clk_stopped; =20 struct sdw_amd_dai_runtime **dai_runtime_array; --=20 2.48.1 From nobody Fri Sep 25 03:17:45 2026 Received: from CO1PR03CU002.outbound.protection.outlook.com (mail-westus2azon11010006.outbound.protection.outlook.com [52.101.46.6]) (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 8A22E490C1E; Thu, 17 Sep 2026 08:39:14 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.46.6 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789634366; cv=fail; b=b9pxoEG5h5aMO7i5MjvIimlcdvAPJZ4VM5AAWLdutrN+53ZS7athfJlGIPXZ5fu00lDV0mzYFs4SXbX7I6aUyEGCgmI5wrjXPDBTt+GC/gSZOevFHQO4l2GrIDleUfhU0vBgcKfcGK/cCjVyFz7lOm2AqQ26nJ47lq319htRB1E= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789634366; c=relaxed/simple; bh=FiYxvLQfZOzn0S+erQOmR9MUw8KrCg6OCPCvGDzWFN4=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=ToO3lmK6RC/99e3wLHS9gJpPM9XHINBIUMjFahB5s6KqWq3bxBqOuXuSd+zQAhsbSxCN6gbXPU6CzvZnmZ32KYIyP/TKO/BsyyZYqW6XNj0up8ZMnYeo3onITGL+kf6RfJ6+8trrXNr/J3niRErc0QWjs/A35p+/GqH4f2yEstU= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com; spf=fail smtp.mailfrom=amd.com; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b=T7p+GvDo; arc=fail smtp.client-ip=52.101.46.6 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=amd.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b="T7p+GvDo" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=iYZddRV6+c+ZAMCRFicTDM7sSTlYr/k5J45PUjhwoaZ9qJfOYTlYSoJcexCOKTT3HWI87AZT1ab6Q0CN2X4TElMQWbgVROBHhbr58abm2nXSykHhT0aG2uEVMphD3Sehk7Y6E7hNFhJen5BH20UV57O/FZFTGexEgJIM0vpCsVOwikG8nHOJUCENtldqzgfpOg6KLmZf7JluapienzDBecXtvTdgsD8Nnmc7TKDnmzrxOQTTqXMhIhzA97RfUK1mwrXd9tnJ24G6f6ca+YvjTEfG95QPwGF8PHOSyQLZdwLCLGZd6teKJ2Jiyo3ZTFJIE/QCvJDOPwUm2PGwlVRfxA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=Kxi7wE8XfHSshdHEh9HFbWphzQEHHBqurR6ZiwHBKiY=; b=F8OVRrWKX23j6Q+IWtgETSAttJ0fVwuJ6a4LIKnl4os7+qEzCeXFv3pFkOTkpg/Ls24BBYu2/K/oBpC3T5QODf1SHdFDGjcJEbmeAUAKRoxZB0FdpOEE4YsvjaiRs0J9NbytaY3QdhRfNGl8//XXDCK00IXBjYql9PsTl1Y9aViHd6PNUGXkr76beFSnoINm/JdTdakVPk1n9xWtzdyYTg9VYQ4+AwRxngmv3FQo1RLoKp6W9Vg0lfVo8vM8xtgk+gCBtYDLFOD75tOKXrjnk/FCpCoY7nEbxJKxUTvHAblHGT6+x7uI+H9T8xwrq7exklT78SM9/s5tP/fKfZeB2g== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=kernel.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Kxi7wE8XfHSshdHEh9HFbWphzQEHHBqurR6ZiwHBKiY=; b=T7p+GvDo2xRSMfcJXF3Uld1+w7YXHD5LO+o5AnCJ4mioYM6tYPS7GTHsQaKRnGOgXNJZIA6wy7303t61Vh5RK0ikhM3NjkX/r/NxO5rm91PMBMb88xFa5jSS2taDpz5R4O/pXcx6BLjviXXoqV0rCIoO6KPwRwXEIau0sBP4V5g= Received: from CP6P284CA0029.BRAP284.PROD.OUTLOOK.COM (2603:10d6:103:15d::12) by CH1PPF2C6B99E0C.namprd12.prod.outlook.com (2603:10b6:61f:fc00::609) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.428.11; Thu, 17 Sep 2026 08:39:01 +0000 Received: from BN1PEPF00004680.namprd03.prod.outlook.com (2603:10d6:103:15d:cafe::98) by CP6P284CA0029.outlook.office365.com (2603:10d6:103:15d::12) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.428.12 via Frontend Transport; Thu, 17 Sep 2026 08:39:00 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=satlexmb07.amd.com; pr=C Received: from satlexmb07.amd.com (165.204.84.17) by BN1PEPF00004680.mail.protection.outlook.com (10.167.243.85) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.451.8 via Frontend Transport; Thu, 17 Sep 2026 08:39:00 +0000 Received: from satlexmb07.amd.com (10.181.42.216) by satlexmb07.amd.com (10.181.42.216) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.49; Thu, 17 Sep 2026 03:38:56 -0500 Received: from amd-System-Product-Name.amd.com (10.180.168.240) by satlexmb07.amd.com (10.181.42.216) with Microsoft SMTP Server id 15.2.2562.49 via Frontend Transport; Thu, 17 Sep 2026 03:38:52 -0500 From: Vijendar Mukunda To: CC: , , , , , , , , , , , , "Vijendar Mukunda" Subject: [PATCH V2 3/9] soundwire: amd: fix work drain ordering in remove path Date: Thu, 17 Sep 2026 14:04:14 +0530 Message-ID: <20260917083732.3803526-4-Vijendar.Mukunda@amd.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20260917083732.3803526-1-Vijendar.Mukunda@amd.com> References: <20260917083732.3803526-1-Vijendar.Mukunda@amd.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BN1PEPF00004680:EE_|CH1PPF2C6B99E0C:EE_ X-MS-Office365-Filtering-Correlation-Id: 74c5fc01-6364-4bc6-2781-08df14971f25 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|23010399003|36860700016|1800799024|82310400026|376014|10067099003|22082099003|18002099003|11063799006|56012099006; X-Microsoft-Antispam-Message-Info: rZ7j2Sv/FjiDF94noiOUdZ7ROq/cc4ByGiqd2EgiZ9pLaL/ul5QsSXtMYEJ/CICtpNUrfWSpKTOdPMepjIzsKLqbp1RaHBV/7mtAmm5rOWWFj6RmH5xCQJP2TteWSnHMEEcibGejUfvJCjxqiFaa4hOSkgJF6sh377iuJb8LlQfeSugjDye1KBFgJuXlFaDb9XQ6J+43e2zMoqMpgFxig6zX/2UfqWtdBHFMhB/kfvuvCXxYJ+Y+Wu76AYuu3LYckRRA7o13j/V5JInT2WLCsoj3nhfq0MafzJDpe6qS/FD4nxzw4uHLACwsl81wYF3Uc20TUprtI3CR94HThq4ViaiHulDqq4DD4ESwIo0+qa6YPkGOaZE/IFp6SrBK237VRjsSDp79ooVwUEmPmr+ZT4Z7zeDHCMN5tb+xPyBFn11zH24k3licnn4zgeYlX+m0LhCkL3gd342ckwftIguy9Jh/UO17b5oeORFZ63yk7xatno7jDIgySyqhSYPDj3nVFQCC9aUD6wsZpipWhihFDwrrksLl/NGRkx5L4j10MsIqmLGBD89/YbzRUEc45roQhyM0+GxoZf6HHPQFASXvtihMlHWu4XHoRLGaOeH+tvZWF3cBYm2egedeDVxDZk79fztTzrt7pvEd/08yrcUXRBF0SapDda/hO3xt1cS/2HJXwTDOBpxwwpExTZGCDzdaO1/pEKykeccfoaiMI+7eLA== X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:satlexmb07.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(23010399003)(36860700016)(1800799024)(82310400026)(376014)(10067099003)(22082099003)(18002099003)(11063799006)(56012099006);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: YdbzD/pfx25ph7aGnsWCw0jCoVLxPMGfIP22bOi+1agDOtvGqrAkuKTfF0w9BtivNZHh1C+uc+/13+YaKzvbuPGDfUJmbCv8zxlTE/Ikm2PfGHM1g574gRyOioAnLq0U0L2JfyoK6zrIVfbuzDYnSpd5SUgD4jw76owt8KzwOnEoI+58/1tgJhEpE9TrEruAK8ZdxWk77zEZjHIaCvx7fZmbXS9XkrHa9BEtT6Q9xmq0DGzjUEZEizIigZfYbjTuoXivkv1hACgeXvj7iiPO5YiSyCZ8JPtkRhEoJcHqX7o3lYKf+8KGTGiRNZJKz6Chi4q3qmQBUYlLeczckcSKN9eaDr4aImrnquforMQoGURs7c/bRlzEydurjjlFzka+pdHBPrpCOOROci/jWGgLv32kW+lRnxlkV4vUPMizFio+4u3J7fpsI3E3hgkW8jE7 X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Sep 2026 08:39:00.4632 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 74c5fc01-6364-4bc6-2781-08df14971f25 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[satlexmb07.amd.com] X-MS-Exchange-CrossTenant-AuthSource: BN1PEPF00004680.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH1PPF2C6B99E0C Content-Type: text/plain; charset="utf-8" amd_sdw_manager_remove() cancelled amd_sdw_work but not amd_sdw_irq_thread. Since amd_sdw_irq_thread() calls schedule_work(&amd_sdw_work), an in-flight irq_thread item can re-queue amd_sdw_work after its cancel returns, defeating the cancellation. Fix by calling amd_disable_sdw_interrupts() first to quiesce the hardware IRQ source, then cancel_work_sync() for amd_sdw_irq_thread, then cancel_work_sync() for amd_sdw_work. The existing cancel_work_sync(amd_sdw_work) is also moved to after amd_disable_sdw_interrupts() so that any work item queued between the old cancel position and the interrupt disable cannot escape draining. synchronize_irq() is deliberately not used before the cancel_work_sync() calls. Once SoundWire interrupts are masked, no new IRQ deliveries can occur. An IRQ handler already in flight may still queue amd_sdw_irq_thread, so cancel_work_sync() is used to drain both amd_sdw_irq_thread and any amd_sdw_work items it may have scheduled. This fully quiesces the driver workqueues, making synchronize_irq() unnecessary. Fixes: f93b697ed98e ("soundwire: amd: cancel pending slave status handling = workqueue during remove sequence") Signed-off-by: Vijendar Mukunda --- drivers/soundwire/amd_manager.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/drivers/soundwire/amd_manager.c b/drivers/soundwire/amd_manage= r.c index a57b59609bfe..dfbe9a181983 100644 --- a/drivers/soundwire/amd_manager.c +++ b/drivers/soundwire/amd_manager.c @@ -1173,8 +1173,9 @@ static void amd_sdw_manager_remove(struct platform_de= vice *pdev) int ret; =20 pm_runtime_disable(&pdev->dev); - cancel_work_sync(&amd_manager->amd_sdw_work); amd_disable_sdw_interrupts(amd_manager); + cancel_work_sync(&amd_manager->amd_sdw_irq_thread); + cancel_work_sync(&amd_manager->amd_sdw_work); sdw_bus_master_delete(&amd_manager->bus); ret =3D amd_disable_sdw_manager(amd_manager); if (ret) --=20 2.48.1 From nobody Fri Sep 25 03:17:45 2026 Received: from SJ2PR03CU001.outbound.protection.outlook.com (mail-westusazon11012061.outbound.protection.outlook.com [52.101.43.61]) (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 8B62D49158E; Thu, 17 Sep 2026 08:39:12 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.43.61 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789634358; cv=fail; b=PFDn1vbIoNsXuTMdIM/aNynhfFVhB/PqS4RKtmxhYV/ZnRqf1EmRDcjVsikE/kJacZZmYOuXEMJslrjAjolgyr1BbUo/L1+fpsTg/RAuPSnYq9yGVcr9yKP9N8habhebZqs8cDh1jhKkxwxt6FKrjJwMoK7diAkCPRpm2+5B4hM= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789634358; c=relaxed/simple; bh=QbeBVgrWaqvBBmDDztDGnqGdas1WWcpHvTmCiMUdw4U=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=WDMfdJlVMONBlfYcj9sw1qfqTCg2Hq2NHRXXRn6gzNcl/fkL9e5IsqWpM3/kzqTj345xRcGtt1SL4bn3LAbMWSnfLbPID4DFQLk5ZlxSwrwOG60loJrDblPyBZcJ07DD2i0Cwrgu4j74r1XPl+p+84ymnptviy22L2zsCcP4I98= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com; spf=fail smtp.mailfrom=amd.com; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b=fzk84Byh; arc=fail smtp.client-ip=52.101.43.61 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=amd.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b="fzk84Byh" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=QWhQwVJbj1ilXBged2q36AlJbq/e3E7uQ99uMo5YWpCJcxNCNhf/4axaxMghUph9eL0u/G+npbI5rogEeAbb+QfEAhfBGd2QrpVV+B7lIObHIxpDCb0hOJiUFvpIG7RdyE3Yv5yjjQe6FWBsVQ33AphJKQO2UiRUj+OXqlZM3dmYkadpv+0wZHdJN57iAWzgYyvrq7VLUp+W1Vco4Cu58DbAnoFrI9bC6l7x3tLTM8dwtNmmTIPIuleT7IaMmuv8mCdzCSKFzBBsrjKtXu7HXLRygo7tqRO13R4EdgConIRJw5nPdYUA6zn9B1J96FPbSujs5Dbub8KpMU3gCC2qTw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=SokXp4As+pEwZQZSxe6/tvtqBxAhLJ1E+tsat3U6m1E=; b=k/cJylxIGxdnkg5QRX7vr+kKB+2i8OLmQj80GdDMNX4ZnHyfGpg6QoHSgV7JO0zKDzT8UjaNuXOdMLkkpMghEVbMilwPLKfBaWtVbnmslf/KoTQoNpJbIzfat18N3qWNE+aWGkzFJ5gg7aMFeD37uhOSwKaSn7VZncIx8EVyEDAfqPDhnE/Cl8sIVl2syZ4rDQGfrXGV1YpZZVyVSY7RPwUt7DPY8lqBkJo0XsK1CC+K1J9oZ6pK/WRy1BGGZ5TdFS8JDRxLeLidNB9xCPi6uxFNu/8U7YMdIY779v6MMSSeQZzlyAwbsxb/q8eSMk9l8wbto1cB3uWT4HMRWav1pw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=kernel.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=SokXp4As+pEwZQZSxe6/tvtqBxAhLJ1E+tsat3U6m1E=; b=fzk84Byh0LSRvyPQXOz11AeFTAfJiMQUMgGMXTYZHfz+9kq9Wmwhi7tPBZCfOcOe/YWQ37wtwH2g/uFqaAbLuTmwZpk46ons3T+2rxVntfftqyb4x01wZpkb2CVgY44CMRrLkC/2YTu7pQfZHzp08ur9IStWfvqb1qbwe5sbTIo= Received: from SJ2P221CA0001.NAMP221.PROD.OUTLOOK.COM (2603:10b6:a03:5db::15) by PH8PR12MB7253.namprd12.prod.outlook.com (2603:10b6:510:226::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.406.9; Thu, 17 Sep 2026 08:39:01 +0000 Received: from MWH0EPF000C618E.namprd02.prod.outlook.com (2603:10b6:a03:5db:cafe::85) by SJ2P221CA0001.outlook.office365.com (2603:10b6:a03:5db::15) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.428.12 via Frontend Transport; Thu, 17 Sep 2026 08:39:01 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=satlexmb08.amd.com; pr=C Received: from satlexmb08.amd.com (165.204.84.17) by MWH0EPF000C618E.mail.protection.outlook.com (10.167.249.100) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.451.8 via Frontend Transport; Thu, 17 Sep 2026 08:39:01 +0000 Received: from Satlexmb09.amd.com (10.181.42.218) by satlexmb08.amd.com (10.181.42.217) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.49; Thu, 17 Sep 2026 03:39:00 -0500 Received: from satlexmb07.amd.com (10.181.42.216) by satlexmb09.amd.com (10.181.42.218) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.49; Thu, 17 Sep 2026 03:39:00 -0500 Received: from amd-System-Product-Name.amd.com (10.180.168.240) by satlexmb07.amd.com (10.181.42.216) with Microsoft SMTP Server id 15.2.2562.49 via Frontend Transport; Thu, 17 Sep 2026 03:38:56 -0500 From: Vijendar Mukunda To: CC: , , , , , , , , , , , , "Vijendar Mukunda" Subject: [PATCH V2 4/9] soundwire: amd: pm_runtime guard in remove path Date: Thu, 17 Sep 2026 14:04:15 +0530 Message-ID: <20260917083732.3803526-5-Vijendar.Mukunda@amd.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20260917083732.3803526-1-Vijendar.Mukunda@amd.com> References: <20260917083732.3803526-1-Vijendar.Mukunda@amd.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: MWH0EPF000C618E:EE_|PH8PR12MB7253:EE_ X-MS-Office365-Filtering-Correlation-Id: 6dd7f2f7-a322-4bdb-4783-08df14971fbe X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|82310400026|1800799024|376014|23010399003|36860700016|6133799003|11063799006|10067099003|56012099006|18002099003|22082099003; X-Microsoft-Antispam-Message-Info: PGLZ2xFP9OXpyP7pL0EpPN+hlVpDsuUUoBJCN0otUeptzefCBhU29dtXfT4nZcQsYV+q+BAfpo9kdkSM6K+BfuPTzfw/h701dNsl5lXQHtFOfGwLiiujZU3ZhmB9otEC5I24IR7FGPhkSGZcK+RuNZVLWN3OwipSkr7rwf+N5OjwFF/2v44OWTzEZso6GwWxZm+rXVzNO8L37RoPZ0ZKSYiKIkvcz+dpie3tO07rp8BBpONKHK48uKIHsEIVwoAXHI3X2aBXM+FqGZLqLbMCrP+sDe97NYpH3Qe/Emfh2O9/FzFFcPApWmz839PT3VC2wKLbp0bN8CORHIXNib/TTbG5Ga+GGyPXBkI0wb3ANCZgOnHeHdGkWz43ISryIS9Qj1YI4kKvRF0wdeDsjDx6HCInInntK1lCUv8eARvQbFymlQWbHJfJjD2b8deUMkHicqA+pzXI+ecP0Wo1HFo1rYt8/CeVO7QLBd6cdGvIbSd6rolaLw8jXLZgIRplVez8yz+SLCzoJyCdBwDq5ozvEUn6XyzIjZms16M5nsYocPfg05lX6w+sOLIKPKi9ae/iKZo7XA35uqjK8vcqV+78VUEFSQxQJBIaeowU5faEx43QF0ysJ/EHkkb2mKfbUtnkgg0xnMNbrQZ5fECfMMOlsZifduliA1oBhl6OqSPjYM0Q22xVwrXmfek/7LL5JCMt3WOO6qrnE3XTz512haPucA== X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:satlexmb08.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(82310400026)(1800799024)(376014)(23010399003)(36860700016)(6133799003)(11063799006)(10067099003)(56012099006)(18002099003)(22082099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 89OgLbz3e0N3BvF3UhJHjsSqKqwdqPAFdgqUsDxe1RWrF7vT0CfWHfnkRibiifWAb14UJ8ePiqeLjCYLKQb4Q7Id2v8P+4AEpEhXrakMeMfxLiGW6hy8qayLm0+rmdfsYxvyDfwIT3fV8yEFSPJRxIxJ4tQbVjQzNKZd6BMXH+GT/8ArM7hJUjAzBzcjzufg0Nxqd6uR3Fzihy1F8xkSAwPZJ1yW3rxg2MEn9zYnP/+2XT3OTobMocoyox1O7F9lqAV/lElVWkboQ+X2cB9x+6Ory9xF+Rl7ZErsMnml6JTfRY8dvVldeGkw/GK6jo2Wk5t9mdP0D+q60TWPXmWA6H02VKqsZ+BQwdExLqoplQeh/LR/xBPQoU0q+VpcmMUBSe5sg+Cwb9i30IaVUUtgFKvnt0sW/DkdKwss920JB3CbIBH+mQBGzjtMGSM+p/LD X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Sep 2026 08:39:01.4285 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 6dd7f2f7-a322-4bdb-4783-08df14971fbe X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[satlexmb08.amd.com] X-MS-Exchange-CrossTenant-AuthSource: MWH0EPF000C618E.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH8PR12MB7253 Content-Type: text/plain; charset="utf-8" Guard pm_runtime_disable() so it is only called when runtime PM was actually enabled. amd_sdw_manager_start() calls pm_runtime_enable() only at the very end, after several fallible hardware init steps. If sdw_amd_startup() fails mid-loop (one manager started, the next fails before pm_runtime_enable()), sdw_amd_exit() triggers platform_device_unregister() for all managers. Calling pm_runtime_disable() on the partially-started manager finds disable_depth already at its initial value of 1, silently increments it to 2 and returns without a warning, so a later pm_runtime_enable() would only bring it back to 1 and leave runtime PM disabled. Use pm_runtime_enabled() to skip the call when it was never paired with an enable. Fixes: f93b697ed98e ("soundwire: amd: cancel pending slave status handling = workqueue during remove sequence") Signed-off-by: Vijendar Mukunda --- drivers/soundwire/amd_manager.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/drivers/soundwire/amd_manager.c b/drivers/soundwire/amd_manage= r.c index dfbe9a181983..bbe1e73ed255 100644 --- a/drivers/soundwire/amd_manager.c +++ b/drivers/soundwire/amd_manager.c @@ -1172,7 +1172,8 @@ static void amd_sdw_manager_remove(struct platform_de= vice *pdev) struct amd_sdw_manager *amd_manager =3D dev_get_drvdata(&pdev->dev); int ret; =20 - pm_runtime_disable(&pdev->dev); + if (pm_runtime_enabled(&pdev->dev)) + pm_runtime_disable(&pdev->dev); amd_disable_sdw_interrupts(amd_manager); cancel_work_sync(&amd_manager->amd_sdw_irq_thread); cancel_work_sync(&amd_manager->amd_sdw_work); --=20 2.48.1 From nobody Fri Sep 25 03:17:45 2026 Received: from BL0PR03CU003.outbound.protection.outlook.com (mail-eastusazon11012042.outbound.protection.outlook.com [52.101.53.42]) (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 8695E466AF4; Thu, 17 Sep 2026 08:39:16 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.53.42 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789634371; cv=fail; b=VBtTHhGvpXEJuo4a714UBgqY8LeFzfyXdNcwYGAFattdpx9BAU6Vg3WIOPksX/BxPJ47T6Xg/rNWZuYbkFGjG4eRaPYQ2cVvhDs7jUIr/cEd6J1zxDyktiSGUlC6ER/PWBFJHrEldPIzDyXF4dtDxV08qOvdLbTb8WhxxZkpUOI= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789634371; c=relaxed/simple; bh=j6ZWkAhaWpl5Wvfvw5PdFy42tR2wYIrAkGaqLbpAZlg=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=H3UkZVxac4QCSaYa84zt03nnD84o3vk2BPbinG76lJ2WYIJA7JU7VsgYt8lbBon1p0rnM6OvKIbbXtHfQ54Bx9ONh2AvxaNkBeGL0rGi5AJF3/E+9e0UnuLRMZLZY5QwgvqrYK2bJhxHjIt+LLfoOrfaGWqQm0U0HAHiMfjUliY= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com; spf=fail smtp.mailfrom=amd.com; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b=fHZq2qw+; arc=fail smtp.client-ip=52.101.53.42 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=amd.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b="fHZq2qw+" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=FUendDKDsFy/2ACw62eSdlubWm5fpATr2+FyZz3TwoiWa46Mjn0uLxxuhdj77+S8X2AKHurAKPeWyui8duWLWN2/fu/DUKDq0AyXPHG38adxL4TIaethbrbC9aKWTrfZty/DXUt416889c9SKv7/oOEJX9jx/RIiDr/Mit/GarvuFBySzy3Y4RoCluR9zXB3GQCkrJPO4+dpbsIAW5jHfb67cE1Xv0SpZ4cQxWO6VzqcmdzuRO6704YiEEtPXNSQ2cWPwyFTwvx4Laa2WvhiD/bbKiW5OKYbzp4JCyPy/6uWA/1ZJSj+wZ/b9Gfn1qiQzkg529qYxSnvOXKT80pKCA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=HXcEEB/rWlVlM/YCXOy7QLZ2sjE2sbD1MRfMg9Ll+uk=; b=yhQSY/LbLEJIFiXzndj5QFgf5ankHhtR3DcYWgh3lpTKhir5jxSHBIx9iBr9Pp+ykJ6aLdKweFfEQTTO1NjzPtdM0fnGl+QsmeURCTsfgNdCD3bbGtQRULWvClFG0tS1suHlSOzOa5hi8lcVFtsrunoSKOpnRmVCH6yrwQUQZMTkbXADX4bCtPjO6OiC2C0IXKzjTRE9jrHgHywSBa2MKYRJNAxE/J/6wVe3/r6Epx2TqQ7sATWypC6EHL0ziLrOq/OIq2ZgtdbodV+NBqkrFvCEjPhhfi+rjoSQ1J4nxifsvRVm6I1r+23kfhD2zSH5hRQANFH22WJKsNcbJIs/7Q== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=kernel.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=HXcEEB/rWlVlM/YCXOy7QLZ2sjE2sbD1MRfMg9Ll+uk=; b=fHZq2qw+DUnl++z7kDWBRywNm4fImex3akzZZqv6eo3B73UOH3+PQP4XvuNibZvWsrKdGZpSjHZy3nfYdDT3De1udj5Z3J1YrUeDtvlNjKgea9FlcU4ScrLFCpK/GWYEPqbEfux0swQbuC52wLNmU4R9OqkBzNu8bdmiUgYQkOs= Received: from BN1PR13CA0005.namprd13.prod.outlook.com (2603:10b6:408:e2::10) by BY5PR12MB4308.namprd12.prod.outlook.com (2603:10b6:a03:20a::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.428.12; Thu, 17 Sep 2026 08:39:09 +0000 Received: from BN1PEPF00004686.namprd03.prod.outlook.com (2603:10b6:408:e2:cafe::82) by BN1PR13CA0005.outlook.office365.com (2603:10b6:408:e2::10) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.451.7 via Frontend Transport; Thu, 17 Sep 2026 08:39:08 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=satlexmb07.amd.com; pr=C Received: from satlexmb07.amd.com (165.204.84.17) by BN1PEPF00004686.mail.protection.outlook.com (10.167.243.91) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.428.7 via Frontend Transport; Thu, 17 Sep 2026 08:39:08 +0000 Received: from satlexmb07.amd.com (10.181.42.216) by satlexmb07.amd.com (10.181.42.216) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.49; Thu, 17 Sep 2026 03:39:04 -0500 Received: from amd-System-Product-Name.amd.com (10.180.168.240) by satlexmb07.amd.com (10.181.42.216) with Microsoft SMTP Server id 15.2.2562.49 via Frontend Transport; Thu, 17 Sep 2026 03:39:00 -0500 From: Vijendar Mukunda To: CC: , , , , , , , , , , , , "Vijendar Mukunda" Subject: [PATCH V2 5/9] soundwire: amd: fix ctx leak when sdw_amd_startup() fails Date: Thu, 17 Sep 2026 14:04:16 +0530 Message-ID: <20260917083732.3803526-6-Vijendar.Mukunda@amd.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20260917083732.3803526-1-Vijendar.Mukunda@amd.com> References: <20260917083732.3803526-1-Vijendar.Mukunda@amd.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BN1PEPF00004686:EE_|BY5PR12MB4308:EE_ X-MS-Office365-Filtering-Correlation-Id: c9e890b5-28d2-4953-efe8-08df14972416 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|1800799024|82310400026|36860700016|23010399003|18002099003|22082099003|10067099003|11063799006|56012099006; X-Microsoft-Antispam-Message-Info: mmHajSfs+DS2ukWd0x2aeZWA9bg0CNLPT2O0dAXhmkOPw5s9jV0O1itbH/8ye/acQyZDrmBJ0AROF09ZXvjqD1IzbgvJIaAfsDQFD/AW86cM0AoJG+xV0WRLQ+kQGPAnEC5o0mNRmu9/nNFL3WXSgWU1HqcdzGE3960Sizqs/p9oRwG2Xcehq5x7lyDmRLSr8PD4wI49NK62jBGoWhH6JqnjzFeWuJIVoisHh9oeyKNZRgVk/s1z2BrYUwX8bfhTAEgZv06zr5moV9qShnAdxnUgiy6oul/JgMJUYkWjbO4R6jrGX1cleJjCmpXfWtyxN71OhpZCh3JhxMrD0WThKIVyGxEmNGN0PiNs+BYYUtF4mzKSNk5YJidsWi8NiASyyfL5y44/Dw0ICtHyRXrqdvF5Mi7bDz551vcBz4NSivmqKPKsb4po8xaSnlDjQHYdz7xucu/X3G4icwg/IdVb+c16vq8xVihQjKB8K83oTnEXYBdKR3f0Iesh+rZE0MPN6ThuH/P6P0gnd7BbcvnYnI+MJQ23cvZXlrfdU0OTRy8oWsFXJPSteA9iBVwSSxvfD+BA8o0mSrUcEHcEgtkEI02A5wQkv9RfnpH8+OcAhTq9bsxaDAIcxPdy+69zxoEXFy7dvIHl+uv0bJpS74eNvy6bvUfzInkaS8oAX3i+cMTBR5CeSl01hL4ohX9EnaJLEwB1OBv4t31dX4bOiP346A== X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:satlexmb07.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(376014)(1800799024)(82310400026)(36860700016)(23010399003)(18002099003)(22082099003)(10067099003)(11063799006)(56012099006);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: WplYtl47ht7gJfJ5hRzU1slG68i67GxE7cf68RtnOVABpKRhqdrEgJu1vGer75ZibpmPxolgJyrtIuDl+CCLSzBY/3BOCDzJSMKpJfn1vq70M7xTkveP3VppuTFiehNQOhhUINdxdsX6UEpNOnPpIfrIWPsy/WaKFPTTw7PFKwzX/pQIYGfV/gmkQU7yXjj7UcYA2KcCt1ysqyslZqQRNdhRfySISvi7Rs5xoVTKfdrxoDwRsJKjrAR5shaZ7D4eevGU7ddQBp+mOhZud0s4DRSaNXkzTueB+o7KPsZHlevouW4QCoxxQ1DCYBMP1AjlHyhUR83puZ/4lV95M6WfK3DjeJJVbNQhvtZN9fbf2QmhGsZSNHyyn/PlVtyFDM0y/BxAXXosMjwQmpLoBR4u+uTBgSCMgXXeLf+83NnyHONgxpFIfkJf407JiODPqEJ2 X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Sep 2026 08:39:08.7570 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: c9e890b5-28d2-4953-efe8-08df14972416 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[satlexmb07.amd.com] X-MS-Exchange-CrossTenant-AuthSource: BN1PEPF00004686.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY5PR12MB4308 Content-Type: text/plain; charset="utf-8" sdw_amd_probe() allocates a context and registers platform devices via sdw_amd_probe_controller(), then calls sdw_amd_startup() to start each manager. If sdw_amd_startup() fails, the error was returned directly, leaving *sdw_ctx non-NULL with the allocated context and its registered platform devices leaked. Call sdw_amd_exit() on the failure path to unregister the platform devices and free ctx, then clear *sdw_ctx so callers observe a consistent NULL on error. Fixes: ed5e8741b8db ("soundwire: amd: refactor amd soundwire manager device= node creation") Signed-off-by: Vijendar Mukunda --- drivers/soundwire/amd_init.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/drivers/soundwire/amd_init.c b/drivers/soundwire/amd_init.c index 8e419ddfa516..88004d59322e 100644 --- a/drivers/soundwire/amd_init.c +++ b/drivers/soundwire/amd_init.c @@ -166,11 +166,18 @@ static int sdw_amd_startup(struct sdw_amd_ctx *ctx) =20 int sdw_amd_probe(struct sdw_amd_res *res, struct sdw_amd_ctx **sdw_ctx) { + int ret; + *sdw_ctx =3D sdw_amd_probe_controller(res); if (!*sdw_ctx) return -ENODEV; =20 - return sdw_amd_startup(*sdw_ctx); + ret =3D sdw_amd_startup(*sdw_ctx); + if (ret) { + sdw_amd_exit(*sdw_ctx); + *sdw_ctx =3D NULL; + } + return ret; } EXPORT_SYMBOL_NS(sdw_amd_probe, "SOUNDWIRE_AMD_INIT"); =20 --=20 2.48.1 From nobody Fri Sep 25 03:17:45 2026 Received: from SA9PR02CU001.outbound.protection.outlook.com (mail-southcentralusazon11013008.outbound.protection.outlook.com [40.93.196.8]) (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 0A12D45C6E5; Thu, 17 Sep 2026 08:39:19 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.93.196.8 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789634365; cv=fail; b=q/k4n75+4YbTFZFpuVILrpmDQmeEleVf8sJ8XkBfDtcAYcPzt5WR6aLzYgGMbD3iJVIjTicIau2ZyfmrbnzLTAgMtHIfg9sFkvp/0HaPCMb0YLM8Afk5+egWKaQ9OKRT3QL/O0LssvwSL7f+p4wMJNkP8KlYEnWPeIFMWZMhpXU= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789634365; c=relaxed/simple; bh=ZtbntJycbmSbN6o0sZVzksLKG5qXW2LBBgQv3q0WiPQ=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=TCDkuf6pvA20o5ErEPb2qWuIrjOmbdiHqn2Q9v5gg4/Dt/QgQKkOvqeGJsxRRO0QnT2t1PpejPQyCZ4kinIoc4VgFDjzE4hZD4cJMLkBLpkAx+z0e0OeAEoJq/m9RwyLqn33dOPjqC7O5+qdNWU2fkmQFaNfSFiC1/TDew7VNiA= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com; spf=fail smtp.mailfrom=amd.com; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b=4V28R9KJ; arc=fail smtp.client-ip=40.93.196.8 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=amd.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b="4V28R9KJ" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=WEOC7QoC99FZZ8NQ7Pqfo1ybr/lV2PFLzS44OkfBcZ8TB8Y5hU/E8Pz1H5NasWcrQ9boeCFjx6ImByu0WHL8w3TdjQyss1yllOVQKkmqz2Vh3fGaPYUzN2aP+y0jLEWKbVmbHHqolZGvpM9WDPO4N/0B4ey1hydJkWbIBDB8FvGgMnw/DrQWKVBBIeOHfMc62tTx4WG4DX3dyN3IqjEJ0w2iVoCAL/CNOqcOmX10qWsl6QqeaynX7XDDc/ggVsSc1W75ot1JdmJlzNmV4QOjd+580sgZUmXeZuaZHgfwraqMItqhlWDZiweMxZHvEmGov4G5H6S7VOIbdW3h1ZqBMw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=fS3oxGWZfkHEQHkHrwT/tlXhEfWx6AObVf3HmcYXOhs=; b=fVcK/51NrXqe0BViI3tt9ntGChMrjKmxsLBqi0XfOdBh6G5Dpbo06EiaRJ8hOwZFPupIdzmQobQV6kx9fpy88PWNCdErct516dbrvVNlAZ0eX7i4hYPH8V4X94dBCF4j+QDGVorVnITNawzmMRaXrjiJHcCSoxCyNPHcmdZrS7Qu4SgcU+BadZO31bPD91wfFf0RtEdX8NxSeSSamTZ1wkZsi/tNZL07WzxSQriBtK1edL/Qw7e1/mZa44KUPcUMRF7DPq7xRfPbKKwfDRJ/CX9CSU9tEY6YVPEkm7HKaaPA7PkTrFntS+p875tQjTPMVO1fQ2HTnOgvJfEcAjz80g== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=kernel.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=fS3oxGWZfkHEQHkHrwT/tlXhEfWx6AObVf3HmcYXOhs=; b=4V28R9KJKBNuY2XP90vGuxMJfgZbASWkqtP1w99kO6ZOlLxXJloQHiC1IQVzYsx1wET3tq/MXvAcLOnzPUo0NcGZpak+6Zyq8z2jKPuWIfXxCi/32Q2mHPGKQLnkdFJU/ApQttCm4zXUHEa6+wkvqg5bEE6mK46aHjEGExD4l2Y= Received: from SA9P223CA0027.NAMP223.PROD.OUTLOOK.COM (2603:10b6:806:26::32) by SA1PR12MB6969.namprd12.prod.outlook.com (2603:10b6:806:24c::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.428.12; Thu, 17 Sep 2026 08:39:10 +0000 Received: from MWH0EPF000C618F.namprd02.prod.outlook.com (2603:10b6:806:26:cafe::9) by SA9P223CA0027.outlook.office365.com (2603:10b6:806:26::32) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.428.9 via Frontend Transport; Thu, 17 Sep 2026 08:39:10 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=satlexmb08.amd.com; pr=C Received: from satlexmb08.amd.com (165.204.84.17) by MWH0EPF000C618F.mail.protection.outlook.com (10.167.249.103) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.451.8 via Frontend Transport; Thu, 17 Sep 2026 08:39:10 +0000 Received: from satlexmb07.amd.com (10.181.42.216) by satlexmb08.amd.com (10.181.42.217) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.49; Thu, 17 Sep 2026 03:39:08 -0500 Received: from amd-System-Product-Name.amd.com (10.180.168.240) by satlexmb07.amd.com (10.181.42.216) with Microsoft SMTP Server id 15.2.2562.49 via Frontend Transport; Thu, 17 Sep 2026 03:39:04 -0500 From: Vijendar Mukunda To: CC: , , , , , , , , , , , , "Vijendar Mukunda" Subject: [PATCH V2 6/9] soundwire: amd: propagate amd_init_sdw_manager() error on resume Date: Thu, 17 Sep 2026 14:04:17 +0530 Message-ID: <20260917083732.3803526-7-Vijendar.Mukunda@amd.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20260917083732.3803526-1-Vijendar.Mukunda@amd.com> References: <20260917083732.3803526-1-Vijendar.Mukunda@amd.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: MWH0EPF000C618F:EE_|SA1PR12MB6969:EE_ X-MS-Office365-Filtering-Correlation-Id: 890496a7-705b-4ef9-10bc-08df149724f0 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|82310400026|1800799024|376014|23010399003|36860700016|18002099003|22082099003|11063799006|56012099006|10067099003; X-Microsoft-Antispam-Message-Info: RGjQ89YorKGmNUxWX+ob01Hs9BS8XCuiO4dO50tIK/VVBZOn17tRONySrIvzqtDEswe7yWbbpzUCwJzxOC3ipfieUowy6pTG94BsPpH7NJ2Q76AbO9+ZEm3xYC9VaDy8J26Yu2zKVPABMUpxKu20v4/RONRMQS/lR77wTyPKaFatAG/v2VxxZcvYezRDlJraSiPRDRLWp6Kk7woBzorqQVDkQCT9OQqtfGNI3hBFA4stjqVPuTzq2Eqs9AysvQh/Ln1ZSoZkii0NjL4kCdtyZU8WTaN84wd3Pcs35P4O7uOKAC8npCROAipv22GFZgUSmMifYGU/oynfkxtkV8fBhsTq8Pm8IHvmhg3BmHKib/ouwZcr26ZgH0bYdF8sLCq+HeHk5fGVjPe60otWmYLRqRO/KrAxgP1FIBJV8RB/Z+LN46z4KYR729DB8KHuNO1Ai3kfrNBDVjECZXOLdDRsOsLSD1wh+LceZgM5ccoEv9bWFjhyMUef8oHk/onJzrOqxP6J8feIyQ77HVsIMXkbDRnIc9Oy/OLJUJXjqQQKxwGrPN8n0kLMCIDqVsPDWIoolVbqr1c9kK9pgmZhac1AA3hOBU6c5PIWTYFudd2/h1DVFEaREh70Fgr/s2uJtCsTv0Re3SkbdtHztxydDWofDy5jOpjDyyqBNuQF5bHy4V2ybvf6OLUkdn5TqN4+HFR1SG2JYE1bX76EDFOiunCbWg== X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:satlexmb08.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(82310400026)(1800799024)(376014)(23010399003)(36860700016)(18002099003)(22082099003)(11063799006)(56012099006)(10067099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: OCSQ0wvAHnFUDXxpbKrFMxOpi/zwMdyjpdtP89H7RcMvhlSbX1tZIHcHWRy7ZW0Yiudt8gl7MzUYYjjX8irgTOm7osdfvQbzPXYGEUpfo3UTCxQHCCLPLBuo99GwnCKqSBBUhfGTCeypk6kArixvNfixQcfvt93J1YhIbM4ThVa25A8/sgKDrRuOFD5aLRn48bG+oNoqJU29RNSr/DJvsJtatA6bnyYTzJww4xuZVvzI6n1cglNCZGvXtECOia4Ag43+pniu/DgshqlpRcZvYi2tmHkbsUBldM/85C02/U2oZ2OjZcqxNPou+oHkEzNULVGtCXNFWl0r5nvlS4xU5BpVSUCA51kboDssU5jC+0uKhwxhh10Z0/wcsfdgJqOcM9XUZ1QRpKmNjhVf5AvavW+iex0nNLglHetH/Q52QCGVyL+FTiOU2nKw/B5aZGh9 X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Sep 2026 08:39:10.0857 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 890496a7-705b-4ef9-10bc-08df149724f0 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[satlexmb08.amd.com] X-MS-Exchange-CrossTenant-AuthSource: MWH0EPF000C618F.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA1PR12MB6969 Content-Type: text/plain; charset="utf-8" In amd_resume_runtime() POWER_OFF_MODE, amd_init_sdw_manager() was called without capturing its return value. The function performs hardware bus resets using readl_poll_timeout() and can return -ETIMEDOUT if the hardware does not respond. When that happens, execution fell through to amd_enable_sdw_interrupts() and amd_enable_sdw_manager() on hardware that may still be in a broken reset state. Fix by capturing the return value and returning early on failure. Fixes: 81ff58ff71ad ("soundwire: amd: add runtime pm ops for AMD SoundWire = manager driver") Signed-off-by: Vijendar Mukunda --- drivers/soundwire/amd_manager.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/drivers/soundwire/amd_manager.c b/drivers/soundwire/amd_manage= r.c index bbe1e73ed255..2d2f628230ee 100644 --- a/drivers/soundwire/amd_manager.c +++ b/drivers/soundwire/amd_manager.c @@ -1456,7 +1456,9 @@ static int __maybe_unused amd_resume_runtime(struct d= evice *dev) ret =3D amd_sdw_clk_init_ctrl(amd_manager); if (ret) return ret; - amd_init_sdw_manager(amd_manager); + ret =3D amd_init_sdw_manager(amd_manager); + if (ret) + return ret; amd_enable_sdw_interrupts(amd_manager); ret =3D amd_enable_sdw_manager(amd_manager); if (ret) --=20 2.48.1 From nobody Fri Sep 25 03:17:45 2026 Received: from SN4PR0501CU005.outbound.protection.outlook.com (mail-southcentralusazon11011064.outbound.protection.outlook.com [40.93.194.64]) (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 9DC0148D884; Thu, 17 Sep 2026 08:39:19 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.93.194.64 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789634373; cv=fail; b=A4/xX2iqZx9+EnfbvbTI1msnIlEXaILijFY3pnkndKof/PbcwDemrIrWQcd41YHYxeeJIyzbIIQP+KvQfa3iHFV19YzrdKLA+/is0bV/pcT6XC5Drsizmb8tYavuOXN63UQ3LOY6y9jsPQ5ZhD2uqSr2C1xzldvo2wkhTbbL/Jk= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789634373; c=relaxed/simple; bh=NWmfg8PkXWApSrD/HNGOAmbgIvhW5yLjpA1/mMVGrMs=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=X+8vEJlfZ7nSl1ogDhSN1HJif7cGMSofwXhAsvBvxxfPk4gNPc8segmEzZElsV2jiYMlOKVfD29+2UkZdIaXkeuREP5bVTR/gTtPRhAdQ9QozGZv5ukOzC/6O5Xm7R/Po1MdcVaTK6eU97mOemPLM3CsG/9I9VK6wsLqj7vob/s= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com; spf=fail smtp.mailfrom=amd.com; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b=4WFMzmtY; arc=fail smtp.client-ip=40.93.194.64 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=amd.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b="4WFMzmtY" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=vGoMRRah/U6O/uVOWggRNiQ/K4sLyg1IC25dJqnKHkHr42CAN5f5/ig6szwDPt/nazdlQTtVz7tW54FkNK2F9N3LNi/oYr9vVCQ8CMOQZse0LRloQL7VJ0qq7pfhVTXhTVgXyekInjgojFK9737J8xrUxIdL96IVbUl+MnNH1ci9d12442h/+GMXmawCEwquf3kzkLN1VQBF4SxPMPplRt4wAGaEqG/cJmH8UAwXrptJFliZ6EKtSoxpBtl4KtgjKCip6rDzoNKgC8EepojlFaEYhQToJOYB9MRIIatufPpVXZ6vzzRVX+IcHnqkEq649JTfW72NdqLbEo3aqORXFA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=+/BB4mj2h1naswNQfVcvWfadcd+r4Z63Ld2vw1mUC84=; b=f5qSeRJhdy9GIWOVmDzp6VIjabuklP2+VOE1V75yEXSOQUzth1WxFlhkCiLcXBX7LTJa7Yc6dNVv6BMb2aKE0Hb0XpmObBEXz2MMQyGhc+hUexjWHfo7Po/BlRV6gGNFg0QyVIPSnr/Bo4XjGaz5MG7YUP+FSq0bxP7z8FajN8B3TPBx10FBWDPTSr4G0jiMPFUlRhEPT4yKOqmiRcIKvUbAqbEB+vBwdebI6ORU/3S4FzdcbIhhRoGsWcZLQ52mz7SLMKpxQNL3VHRLxkjckm0hBNlx4i3a/Ofx/BChOqrMxyqiyTX2EQEoa34A0hSAR95yghYVU7aYQtN9fQxdJQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=kernel.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=+/BB4mj2h1naswNQfVcvWfadcd+r4Z63Ld2vw1mUC84=; b=4WFMzmtY3KxB74DPv8jP3rPYqptPQnZHZQVu1OuLbTLL3Vby5k9PXvM1eg2cWGxZabZ0O8GBhYr65GLH9JpqRpzdnCrvHbAoiDfbIfOw9xg6dWBPhH/a0oqhJAgMJkNS3SSILW70aHIK3tZkVS2unfGzGCUKkcm/8+hhLSLqneI= Received: from BY3PR04CA0014.namprd04.prod.outlook.com (2603:10b6:a03:217::19) by IA1PR12MB7495.namprd12.prod.outlook.com (2603:10b6:208:419::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.406.12; Thu, 17 Sep 2026 08:39:14 +0000 Received: from MWH0EPF000C6194.namprd02.prod.outlook.com (2603:10b6:a03:217:cafe::1c) by BY3PR04CA0014.outlook.office365.com (2603:10b6:a03:217::19) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.428.9 via Frontend Transport; Thu, 17 Sep 2026 08:39:13 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=satlexmb08.amd.com; pr=C Received: from satlexmb08.amd.com (165.204.84.17) by MWH0EPF000C6194.mail.protection.outlook.com (10.167.249.104) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.428.7 via Frontend Transport; Thu, 17 Sep 2026 08:39:13 +0000 Received: from satlexmb07.amd.com (10.181.42.216) by satlexmb08.amd.com (10.181.42.217) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.49; Thu, 17 Sep 2026 03:39:12 -0500 Received: from amd-System-Product-Name.amd.com (10.180.168.240) by satlexmb07.amd.com (10.181.42.216) with Microsoft SMTP Server id 15.2.2562.49 via Frontend Transport; Thu, 17 Sep 2026 03:39:08 -0500 From: Vijendar Mukunda To: CC: , , , , , , , , , , , , "Vijendar Mukunda" Subject: [PATCH V2 7/9] soundwire: amd: drop amd_deinit_sdw_manager() in POWER_OFF suspend Date: Thu, 17 Sep 2026 14:04:18 +0530 Message-ID: <20260917083732.3803526-8-Vijendar.Mukunda@amd.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20260917083732.3803526-1-Vijendar.Mukunda@amd.com> References: <20260917083732.3803526-1-Vijendar.Mukunda@amd.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: MWH0EPF000C6194:EE_|IA1PR12MB7495:EE_ X-MS-Office365-Filtering-Correlation-Id: 48a0b74c-85fd-4bb4-981f-08df149726f2 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|36860700016|1800799024|82310400026|376014|23010399003|10067099003|56012099006|6133799003|11063799006|18002099003|22082099003; X-Microsoft-Antispam-Message-Info: hpsoaNvDCMpTWYUyehwlciukYTczbWkEBMMaPSO+CdOcsp/eDNhhTssBzftroBxON9IlGmn9dOFStXJuhkVZ8PyXfAV720cYMDa64PSmjQe6kLtmsUSQHMEOOK9EXJUNMETrrZLhJ7uB2rr4+6Gf9rz+LZDzbqfAZKy+k0ak+pnOMImyfgtmzDrXEUaWj3jkNaLgKcMHTZ4Xj65+3T//4Z2nCzw+pOSn7Q3NN2vhHMWiz3hJWxTVIVOZEvwwtY9G1A2+wRs8Q8+ltDJmtja2XALnW6GEJiZaUDm8V4Mwh8tlH6n6hgT2asmVfw4SiiREE2EP7cFQoZTZfY3xHLYXOnuD5jvriV4m0froL96HchaRq6m0SZWdnZWdyJgLMKMHgkQZ3242JKZr+BeKCnJ4MPorQ7hwkygxHeext0DNSYmTzdttG+x9scSTwHCfpmBOnE1ypmHD+ohCqT7gnDpaHG1089J+H3aBJKvGrgQvpwWoDjTQj6wQ2bHP/7Ub9ILOHGctPzOJvZ7g3xs6cST2A0bl66k9DXt1zXOsMDV4Tt/KRU5vHbGY0UZFEN87TGnUxxwx5r5Pa30aQV9FdBUrEq+LicCtAz6TNP76Jd8Mz4a486AZh98Xfy6yVHP+BA+qfzjaEocaGSFYRdk6WaoMIPrkeB8XVSGSmKJybuSsonK+3fs1vKiuuCVApJ4ElO7OXegoDWgUhDxPXDbjUlLJGw== X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:satlexmb08.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(36860700016)(1800799024)(82310400026)(376014)(23010399003)(10067099003)(56012099006)(6133799003)(11063799006)(18002099003)(22082099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: GoI3056FFFxYXQW2qo6ob56Uswx+KPJWSd5c85u2bLwoxm7NJQVweuU8sXIj9NGiNgCxUf7X/zrBPP3s2l19jfW+7gEp1Maw/CdUpNKKvNimZejkGwRt4/UaJ1mTBwv186y638yORONFGQTKuaYN0FvHO3MHD7oCpeWwzc++btreXvhCbDiNhYSGCN+ggUetkR113zxVZ9Wn6bbhJkEU9SIVBm6sw1xQ+MmXUMK/s1MTvzVJWuZrXEHi8Jktw0q9RqyEoPLT6hu+O1iZ1OkVSKXHMMRyRw4YzKkP1VM6SF5WB0CW4DbwgZK0RUbGZTsKLOuFn8zLamOtsWEuYJyHZu+AKr4356wFYrhmF3CQ7h7jLfLpWbEVq76NPD+3cRwG0UpyMcRmnY2r4+3auCsbKqVAWsTmMqCnjQgbhZej8PxxOM9ushFsGVTtADrm17HM X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Sep 2026 08:39:13.5192 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 48a0b74c-85fd-4bb4-981f-08df149726f2 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[satlexmb08.amd.com] X-MS-Exchange-CrossTenant-AuthSource: MWH0EPF000C6194.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA1PR12MB7495 Content-Type: text/plain; charset="utf-8" amd_deinit_sdw_manager() was a small helper that bundled amd_disable_sdw_interrupts() and amd_disable_sdw_manager() together. Expand the two POWER_OFF_MODE call sites in amd_suspend() and amd_suspend_runtime() to call those two functions directly, then remove the helper. No functional change. Signed-off-by: Vijendar Mukunda --- drivers/soundwire/amd_manager.c | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/drivers/soundwire/amd_manager.c b/drivers/soundwire/amd_manage= r.c index 2d2f628230ee..6af224ca54a3 100644 --- a/drivers/soundwire/amd_manager.c +++ b/drivers/soundwire/amd_manager.c @@ -146,12 +146,6 @@ static void amd_disable_sdw_interrupts(struct amd_sdw_= manager *amd_manager) writel(0x00, amd_manager->mmio + ACP_SW_ERROR_INTR_MASK); } =20 -static int amd_deinit_sdw_manager(struct amd_sdw_manager *amd_manager) -{ - amd_disable_sdw_interrupts(amd_manager); - return amd_disable_sdw_manager(amd_manager); -} - static void amd_sdw_set_frameshape(struct amd_sdw_manager *amd_manager) { u32 frame_size; @@ -1336,7 +1330,8 @@ static int __maybe_unused amd_suspend(struct device *= dev) ret =3D amd_sdw_clock_stop(amd_manager); if (ret) return ret; - ret =3D amd_deinit_sdw_manager(amd_manager); + amd_disable_sdw_interrupts(amd_manager); + ret =3D amd_disable_sdw_manager(amd_manager); if (ret) return ret; } @@ -1380,7 +1375,8 @@ static int __maybe_unused amd_suspend_runtime(struct = device *dev) ret =3D amd_sdw_clock_stop(amd_manager); if (ret) return ret; - ret =3D amd_deinit_sdw_manager(amd_manager); + amd_disable_sdw_interrupts(amd_manager); + ret =3D amd_disable_sdw_manager(amd_manager); if (ret) return ret; } --=20 2.48.1 From nobody Fri Sep 25 03:17:45 2026 Received: from BYAPR05CU005.outbound.protection.outlook.com (mail-westusazon11010071.outbound.protection.outlook.com [52.101.85.71]) (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 8D8A82D1907; Thu, 17 Sep 2026 08:39:25 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.85.71 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789634369; cv=fail; b=I7RQPFd0ezVNTEtHI/WRnsbbJelZ8T4FvpFaCqFWppfjBMgFIWNJKLyE1HQpLOhgQ/yZ/JeuMKBSfT7B5mBn8ctJR0dDRwLRNBvinmNp3xb1riTtIxdbltQFk2lFI8ajogV3DGsEOXP3Lo+w3eay8unq5QSudF8OYEvAsdfwJmA= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789634369; c=relaxed/simple; bh=8L7gT1lEdGSoOfEDSJdo/baG9xD5jLVvo74uyvVUDxo=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=PE97zY32PKO9wGzqZz3+VGBTQ42medn5GVKTIJ+UEfKO1n3dVqhhC85W52pmS1rISw5fsFBLzN35E4HWAjN0xPEIabjGvOOQupGBPf5xf4WJ+wLiyd0xeWCw9gpxjlFWZT5NnfXMq1mZBEKq3SsBfOBVQi01n9o4uLHj4l8zq4A= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com; spf=fail smtp.mailfrom=amd.com; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b=cRH+BqTi; arc=fail smtp.client-ip=52.101.85.71 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=amd.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b="cRH+BqTi" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=VlJXkfVeg5078ztUlrirZc8A/XIpGtFfrJNmHzwwIuB0Fm9j4d7bWY5Xwmu1OGupleCNrzjZ+R2WrNpGXYeaqNEueTKOfWfzRYIxI+n5rW4dXECc1sfYEQpstRExJpS/T9a5Pzy5iL4A4jtUUZEGcSiBeVrEiIjkNdXzoo+cXPCCZ3d/LBe6vfSNaGgSUXpyGK1n33HtenVyoPqAR2oUqyabb6xy0J8ylAaOOXRL68BsMbnLlu9sUVxvAusVQYk7xmwlcr7nsXe473kpuBq96tlwbGCumJfaxL/2cn30OfVVlAY/0cYOIy14wb2nBhlKHsQzXxqFrMQAqV2Pxu8wOQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=dSmyffqLCbyReJQ+rBc5VPUykzYlhk+8fz+hvqCOZ40=; b=CLNcjZSNPyIOWc90MARzpcMBGLk56NYF8xaBgTSmKEvOpUc3l3KDe73zSDTFBioMu3cbMGKSNJJVS9Pd+Df5CzMlgFH46ZAwpAYim56JBBTWsY4sgfbmvmPCmviVf1p7+JIeRJ6J+SmrDdiI7QaUmE0zGQqdBVqCuWD89INkVxLI+cg+L2rfdezm2t0zZk0kJchHAjT4hjQQk23dXlAE+xiwhWNnYxTUhy11/zMTeVEu43zJG9uk5qUZZcvbsm4Vv5esm06F7X26ugmWfqIF/LPWY35yXuy2azCqN/TBJbSxMH4Dgc7qJkftrvZPcYxRAxFbjmOltdCpmHFuCo2bjg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=kernel.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=dSmyffqLCbyReJQ+rBc5VPUykzYlhk+8fz+hvqCOZ40=; b=cRH+BqTie3YIs0tL9sF7oMe4CO2CPJkSubdMmqCGP+l7QHvHp2IRFnN2+slnrR+KNtJIzf5kYpu7XoptsLYFJEwhZiGTvnKxTW9vTZ3r5/Ob1UczojTuoexGWoRAZoZVsiqXKI9sIyydVOnWTbcgI2p6YzHEWdlhrbYadq/3v2E= Received: from BY3PR04CA0002.namprd04.prod.outlook.com (2603:10b6:a03:217::7) by DM6PR12MB4436.namprd12.prod.outlook.com (2603:10b6:5:2a3::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.428.9; Thu, 17 Sep 2026 08:39:17 +0000 Received: from MWH0EPF000C6194.namprd02.prod.outlook.com (2603:10b6:a03:217:cafe::9f) by BY3PR04CA0002.outlook.office365.com (2603:10b6:a03:217::7) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.428.11 via Frontend Transport; Thu, 17 Sep 2026 08:39:17 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=satlexmb08.amd.com; pr=C Received: from satlexmb08.amd.com (165.204.84.17) by MWH0EPF000C6194.mail.protection.outlook.com (10.167.249.104) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.428.7 via Frontend Transport; Thu, 17 Sep 2026 08:39:17 +0000 Received: from satlexmb07.amd.com (10.181.42.216) by satlexmb08.amd.com (10.181.42.217) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.49; Thu, 17 Sep 2026 03:39:16 -0500 Received: from amd-System-Product-Name.amd.com (10.180.168.240) by satlexmb07.amd.com (10.181.42.216) with Microsoft SMTP Server id 15.2.2562.49 via Frontend Transport; Thu, 17 Sep 2026 03:39:12 -0500 From: Vijendar Mukunda To: CC: , , , , , , , , , , , , "Vijendar Mukunda" Subject: [PATCH V2 8/9] soundwire: amd: replace >= ACP70 with explicit switch/case in PM paths Date: Thu, 17 Sep 2026 14:04:19 +0530 Message-ID: <20260917083732.3803526-9-Vijendar.Mukunda@amd.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20260917083732.3803526-1-Vijendar.Mukunda@amd.com> References: <20260917083732.3803526-1-Vijendar.Mukunda@amd.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: MWH0EPF000C6194:EE_|DM6PR12MB4436:EE_ X-MS-Office365-Filtering-Correlation-Id: a61a0e69-b735-447a-6742-08df14972932 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|82310400026|1800799024|376014|23010399003|36860700016|6133799003|22082099003|18002099003|10067099003|11063799006|5023799004|56012099006; X-Microsoft-Antispam-Message-Info: 7nbqlVq3u43ZDUexcFUEnoufazEBxping1yaoXFOOzO294skpmu6Ri2SRMuor5Kh3CW6xMo8+wYjqbktHnPf1szbx08VNEsa5VbepzE+ReoWYh1+rIK3Zt3zY2mjgZeOD180Ppl5WBEDT+pSiZPSpo7Wd1TLtShYp5NHyJ8wC63hfCtnElGAIRrApngY2Xy0WM8AcljrlIG/0y3qA/bDVkgkcLYtZMjvWlcfeX3Oau5cYtgF7B2n6WT1u1dLpRsrPYKnRhTeCPcHAfzvDE3CANCGl9anC5FGX3OP1e+xTb51d3lk0uVnpplAZ3tGd5EjMR+AdnvLWxdZAcoW79IvF7wTBRVZJaz3xySrj9ftP/BDRHLVv1z/N/K1DahaCOkevkiYiJuxBcBYzm3CmNGoVrbN4uxqcwiq3HoN/jqJaYA1lhE1/dGzOqU+hPd22Z0FJs1j0t0q8QGjVRZ+gHMsoV7e6e6DicPmW85UGGMcz4fDCOR5Yi82/BDZAfJPe9AdHXlFxUhpFL5lpGm4gDCDSDjbhnJ46KjtfBAZYAZToA8n6bHiBs5F+1qLsOxvwfch21wTWhSvGaRQxxEFtk8NN9wLHurbvT7GhDV6mBhWlsnYEVI12Vo/TfwQjsmaIiJ7Z2XirS4OnV0L6Jg6G3m/ZL0K6d8UKUHq+y0LfJQi/Hn0uaAxxiN/RiLXCt50SqYKe4DtIFiTR/NFAcJkp8/kTw== X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:satlexmb08.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(82310400026)(1800799024)(376014)(23010399003)(36860700016)(6133799003)(22082099003)(18002099003)(10067099003)(11063799006)(5023799004)(56012099006);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 6w2MeL5E710kZHznKRDr4yXAfbrt+h2saTujRWSZKMT9NGHM9/95cxoN1bYVGgVcSoa+kxipSD/jQs784+emzea0Zj/tZJv5yQ0aevrx4gQZtZTSWptjbwffdZ/51LD0PlYiiTOWFrGFoLVWw0VKdrUSjpsheHyK9HCTz19VJQKFfFYa+phAr5Mu7gh0dvh69RGfrHVmBMRmxfyRdeUiYJZVv6s4qwPEfXZ1wNSis6wLZgB8ouwEGe4+SYC8xdwtP6kRAo400NR6A5IppPKGfLmnABb593mxwN1gQg8+Z+JYUTbDd2PWynOULnCpz+7JjxNnMEX6092GOZngUZX2U+wLqp8c1D3BmQL14UWIWrieF2pfKYP/6mj1jpENtMRQC2JIeTnyYiRrrgB2jXHRsG1dFDKmtsaRvsqmYjT6QjwVdDzYYY959aKuGyHIQFRO X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Sep 2026 08:39:17.2944 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: a61a0e69-b735-447a-6742-08df14972932 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[satlexmb08.amd.com] X-MS-Exchange-CrossTenant-AuthSource: MWH0EPF000C6194.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR12MB4436 Content-Type: text/plain; charset="utf-8" Replace open-ended acp_rev >=3D ACP70_PCI_REV_ID comparisons in amd_suspend(), amd_suspend_runtime(), and amd_resume_runtime() with explicit per-revision handling enumerating ACP63, ACP70, ACP71, and ACP72, so that every supported revision is handled explicitly. The host wake enable step is guarded by acp_rev at six PM call sites. Factor that repeated block into amd_sdw_host_wake_enable_by_rev() to avoid duplicating the switch/case at every site. The remaining device state transitions keep an inline switch/case as one of them carries additional PME handling. An unrecognised revision cannot reach these PM callbacks because amd_sdw_manager_probe() already validates acp_rev with the same switch and fails registration for anything unknown. The switch default therefore emits dev_err() and returns -EINVAL to make the unexpected case visible while keeping the error path consistent across all PM operations. Signed-off-by: Vijendar Mukunda --- drivers/soundwire/amd_manager.c | 97 ++++++++++++++++++++++----------- 1 file changed, 64 insertions(+), 33 deletions(-) diff --git a/drivers/soundwire/amd_manager.c b/drivers/soundwire/amd_manage= r.c index 6af224ca54a3..0cb5f4694e9a 100644 --- a/drivers/soundwire/amd_manager.c +++ b/drivers/soundwire/amd_manager.c @@ -1292,6 +1292,22 @@ static int __maybe_unused amd_pm_prepare(struct devi= ce *dev) return 0; } =20 +static int amd_sdw_host_wake_enable_by_rev(struct amd_sdw_manager *amd_man= ager, bool enable) +{ + switch (amd_manager->acp_rev) { + case ACP63_PCI_REV_ID: + break; + case ACP70_PCI_REV_ID: + case ACP71_PCI_REV_ID: + case ACP72_PCI_REV_ID: + return amd_sdw_host_wake_enable(amd_manager, enable); + default: + dev_err(amd_manager->dev, "unexpected acp_rev 0x%x\n", amd_manager->acp_= rev); + return -EINVAL; + } + return 0; +} + static int __maybe_unused amd_suspend(struct device *dev) { struct amd_sdw_manager *amd_manager =3D dev_get_drvdata(dev); @@ -1307,22 +1323,18 @@ static int __maybe_unused amd_suspend(struct device= *dev) if (amd_manager->power_mode_mask & AMD_SDW_CLK_STOP_MODE) { cancel_work_sync(&amd_manager->amd_sdw_work); amd_sdw_wake_enable(amd_manager, false); - if (amd_manager->acp_rev >=3D ACP70_PCI_REV_ID) { - ret =3D amd_sdw_host_wake_enable(amd_manager, false); - if (ret) - return ret; - } + ret =3D amd_sdw_host_wake_enable_by_rev(amd_manager, false); + if (ret) + return ret; ret =3D amd_sdw_clock_stop(amd_manager); if (ret) return ret; } else if (amd_manager->power_mode_mask & AMD_SDW_POWER_OFF_MODE) { cancel_work_sync(&amd_manager->amd_sdw_work); amd_sdw_wake_enable(amd_manager, false); - if (amd_manager->acp_rev >=3D ACP70_PCI_REV_ID) { - ret =3D amd_sdw_host_wake_enable(amd_manager, false); - if (ret) - return ret; - } + ret =3D amd_sdw_host_wake_enable_by_rev(amd_manager, false); + if (ret) + return ret; /* * As per hardware programming sequence on AMD platforms, * clock stop should be invoked first before powering-off @@ -1335,10 +1347,19 @@ static int __maybe_unused amd_suspend(struct device= *dev) if (ret) return ret; } - if (amd_manager->acp_rev >=3D ACP70_PCI_REV_ID) { + switch (amd_manager->acp_rev) { + case ACP63_PCI_REV_ID: + break; + case ACP70_PCI_REV_ID: + case ACP71_PCI_REV_ID: + case ACP72_PCI_REV_ID: ret =3D amd_sdw_set_device_state(amd_manager, AMD_SDW_DEVICE_STATE_D3); if (ret) return ret; + break; + default: + dev_err(amd_manager->dev, "unexpected acp_rev 0x%x\n", amd_manager->acp_= rev); + return -EINVAL; } return 0; } @@ -1357,21 +1378,17 @@ static int __maybe_unused amd_suspend_runtime(struc= t device *dev) } if (amd_manager->power_mode_mask & AMD_SDW_CLK_STOP_MODE) { amd_sdw_wake_enable(amd_manager, true); - if (amd_manager->acp_rev >=3D ACP70_PCI_REV_ID) { - ret =3D amd_sdw_host_wake_enable(amd_manager, true); - if (ret) - return ret; - } + ret =3D amd_sdw_host_wake_enable_by_rev(amd_manager, true); + if (ret) + return ret; ret =3D amd_sdw_clock_stop(amd_manager); if (ret) return ret; } else if (amd_manager->power_mode_mask & AMD_SDW_POWER_OFF_MODE) { amd_sdw_wake_enable(amd_manager, true); - if (amd_manager->acp_rev >=3D ACP70_PCI_REV_ID) { - ret =3D amd_sdw_host_wake_enable(amd_manager, true); - if (ret) - return ret; - } + ret =3D amd_sdw_host_wake_enable_by_rev(amd_manager, true); + if (ret) + return ret; ret =3D amd_sdw_clock_stop(amd_manager); if (ret) return ret; @@ -1380,7 +1397,12 @@ static int __maybe_unused amd_suspend_runtime(struct= device *dev) if (ret) return ret; } - if (amd_manager->acp_rev >=3D ACP70_PCI_REV_ID) { + switch (amd_manager->acp_rev) { + case ACP63_PCI_REV_ID: + break; + case ACP70_PCI_REV_ID: + case ACP71_PCI_REV_ID: + case ACP72_PCI_REV_ID: ret =3D amd_sdw_set_device_state(amd_manager, AMD_SDW_DEVICE_STATE_D3); if (ret) return ret; @@ -1392,6 +1414,10 @@ static int __maybe_unused amd_suspend_runtime(struct= device *dev) dev_dbg(amd_manager->dev, "ACP_PME_EN:0x%x\n", val); } } + break; + default: + dev_err(amd_manager->dev, "unexpected acp_rev 0x%x\n", amd_manager->acp_= rev); + return -EINVAL; } return 0; } @@ -1413,11 +1439,9 @@ static int __maybe_unused amd_resume_runtime(struct = device *dev) ret =3D amd_sdw_clock_stop_exit(amd_manager); if (ret) return ret; - if (amd_manager->acp_rev >=3D ACP70_PCI_REV_ID) { - ret =3D amd_sdw_host_wake_enable(amd_manager, false); - if (ret) - return ret; - } + ret =3D amd_sdw_host_wake_enable_by_rev(amd_manager, false); + if (ret) + return ret; } else if (amd_manager->power_mode_mask & AMD_SDW_POWER_OFF_MODE) { writel(0x00, amd_manager->acp_mmio + ACP_SW_WAKE_EN(amd_manager->instanc= e)); /* @@ -1431,11 +1455,9 @@ static int __maybe_unused amd_resume_runtime(struct = device *dev) mutex_lock(&amd_manager->bus.msg_lock); amd_manager->ping_slave_stat =3D U32_MAX; mutex_unlock(&amd_manager->bus.msg_lock); - if (amd_manager->acp_rev >=3D ACP70_PCI_REV_ID) { - ret =3D amd_sdw_host_wake_enable(amd_manager, false); - if (ret) - return ret; - } + ret =3D amd_sdw_host_wake_enable_by_rev(amd_manager, false); + if (ret) + return ret; val =3D readl(amd_manager->mmio + ACP_SW_CLK_RESUME_CTRL); if (val) { val |=3D AMD_SDW_CLK_RESUME_REQ; @@ -1461,10 +1483,19 @@ static int __maybe_unused amd_resume_runtime(struct= device *dev) return ret; amd_sdw_set_frameshape(amd_manager); } - if (amd_manager->acp_rev >=3D ACP70_PCI_REV_ID) { + switch (amd_manager->acp_rev) { + case ACP63_PCI_REV_ID: + break; + case ACP70_PCI_REV_ID: + case ACP71_PCI_REV_ID: + case ACP72_PCI_REV_ID: ret =3D amd_sdw_set_device_state(amd_manager, AMD_SDW_DEVICE_STATE_D0); if (ret) return ret; + break; + default: + dev_err(amd_manager->dev, "unexpected acp_rev 0x%x\n", amd_manager->acp_= rev); + return -EINVAL; } return 0; } --=20 2.48.1 From nobody Fri Sep 25 03:17:45 2026 Received: from BL0PR03CU003.outbound.protection.outlook.com (mail-eastusazon11012031.outbound.protection.outlook.com [52.101.53.31]) (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 14EB449A3CA; Thu, 17 Sep 2026 08:39:30 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.53.31 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789634385; cv=fail; b=tw5F0qEJveyNOKZ9MSrWdBJncoJ5IDNzt/jochO+DCAJos+Cag58gCAT7P8tjjef/rkHfmpu24Rxn3IVMzhqnWqqn12MLJxEITc5PAeZxMKtsgsYK8ztMCzs0v0XBlg8UmwEtH042SjGnI9WDWkHplQceGBOsgte33Lfg6zvlW8= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789634385; c=relaxed/simple; bh=DqashJMrQX49tCkDDmSpfSNfdAdwDr3UHYDIG6k0Dbw=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=DU33hEFFRG1BdsjHZ8TuJJpAMUtgpm0yQ7MGLFnjripuEDqLruO0SfStHrOyFSeXlUuKENFp6+wOCi1IhFg4WkpLvbmIF5CZ+PGedU92WN0PN7kS9BVPv/p7JZveHjHX1Qj1WnMigWPFMhYaLi6CMgddiKYN+58tZqr10UiLATk= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com; spf=fail smtp.mailfrom=amd.com; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b=NW2k/Y5h; arc=fail smtp.client-ip=52.101.53.31 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=amd.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b="NW2k/Y5h" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=QmtNsi+TJjKpTZf23YRgenJCO2gexWWYQO5YEHRlT4tLlTsfBMdRWxChrWzOXymUQeVGtjv6XSuIGb1UmRc11dxISby7Z4KJIKgzKGPT2HMkmgFYWpAKUA/Lwko6BF+91il1XTmTTIBkKdyp3p71TNP4eC1ljH5saMl+dA13NFt2NZXUkcGsOaeJfOfEYOFMzVjzJeNA+EFrjwlh2A1iltGtA1WPir95meupmlBMJIPyN45n73lvIa3TJ/U0+LmoIaxJC6X0+k0js8+31k9kEtqzITWmZ+VeTy29HKn6AMAJ4lEoY1pe0jVCz0PEsWuZh8YrTJOkjgb/cLv0KqXXLw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=uKeHN3IJ2uXIWj3bKKfuPjV7ploK0JTlIbpwvQf9FME=; b=iTUHOF22FzvuclAAGd8cbiq4kU0+DC6UZGoofnNQk+URo7ExUxygoN7YGpsXR4Gxn274wxy89vQKKUviPq+sZ/9YUkTbhP8BygvbqcJezcqK90N6bhtV+7fN74u8TW/a57ZKPgKMbWCFa/7cbtBL0euj85GVX7S7Ja+KgLchRNvl7hfjw87aCCPGxDZeZp2pjpWngicXAVL99OOUC5TAVTnZMV8kUon7jdwfTlsDhkddnMfUH4EmRMGwevWOrvw7RVpsQQVbTPJORI4Sndj/aYeJeavaVyGMnOSFdwQEBoHrWIHy3XefYM9doH2PjBBwM1TDuEsFWf+NqnbuEdqFmQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=kernel.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=uKeHN3IJ2uXIWj3bKKfuPjV7ploK0JTlIbpwvQf9FME=; b=NW2k/Y5h+lSFZ/bR2vTrY5+Noig1Zv8DyUHDOvKDfdo9H5VfJoVK8sSyJNjcEoEGqdRpDtevKXd+idNioUOg/T+M6cwRR/BfMGSavHW7wsOwYFBRrxLh1MPqREPZGtQG32TR9xV4mpZxKfKRQReZYiC2Aer4outREfTHfhlZK9Y= Received: from CY5PR22CA0040.namprd22.prod.outlook.com (2603:10b6:930:1d::16) by IA0PR12MB7652.namprd12.prod.outlook.com (2603:10b6:208:434::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.428.11; Thu, 17 Sep 2026 08:39:21 +0000 Received: from BN1PEPF00004682.namprd03.prod.outlook.com (2603:10b6:930:1d:cafe::a3) by CY5PR22CA0040.outlook.office365.com (2603:10b6:930:1d::16) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.428.11 via Frontend Transport; Thu, 17 Sep 2026 08:39:21 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=satlexmb07.amd.com; pr=C Received: from satlexmb07.amd.com (165.204.84.17) by BN1PEPF00004682.mail.protection.outlook.com (10.167.243.88) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.428.7 via Frontend Transport; Thu, 17 Sep 2026 08:39:20 +0000 Received: from satlexmb07.amd.com (10.181.42.216) by satlexmb07.amd.com (10.181.42.216) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.49; Thu, 17 Sep 2026 03:39:20 -0500 Received: from amd-System-Product-Name.amd.com (10.180.168.240) by satlexmb07.amd.com (10.181.42.216) with Microsoft SMTP Server id 15.2.2562.49 via Frontend Transport; Thu, 17 Sep 2026 03:39:16 -0500 From: Vijendar Mukunda To: CC: , , , , , , , , , , , , "Vijendar Mukunda" Subject: [PATCH V2 9/9] soundwire: amd: fix interrupt gate and work drain ordering in PM ops Date: Thu, 17 Sep 2026 14:04:20 +0530 Message-ID: <20260917083732.3803526-10-Vijendar.Mukunda@amd.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20260917083732.3803526-1-Vijendar.Mukunda@amd.com> References: <20260917083732.3803526-1-Vijendar.Mukunda@amd.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BN1PEPF00004682:EE_|IA0PR12MB7652:EE_ X-MS-Office365-Filtering-Correlation-Id: 15d64c83-9014-4c74-258d-08df14972b53 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|82310400026|23010399003|36860700016|1800799024|10067099003|11063799006|56012099006|22082099003|18002099003; X-Microsoft-Antispam-Message-Info: 6npDY0dxzf69dcyq4PrTGoKiZiMY25J5v7cHqi57EUbyNCBpJKqRIBdu1/+WD+vrxGqvdjEUEGfeZToCNXNBY0N9bfxiYbHx1t8GzLkkhpvyGxwmY9MghWKbHu4MDj9ThcV140pLydokH9SiaPi4CqjIfcH6oZ297oSB23kdiwNMOCm3Sn28x9zrYZrc8hUCEB7k916zIowopqDIV1QhHcpMSSyIx0ouBNcRU4Q/1XLTde7FapOaz+mz3jCopIOVUPN6ITwg5EH7fmavmpMwowYJnRjRGfiDSTYz2vmhe9gGNldCvzKXNYAgPG/+mIMQflYXtVrUssLyMeMWdtC2uBHhhum8G4EWso1W+WkfVl+H6vnGEQYypXjDp+gcCnUAndNm4edTWiRWFVVOUWxr6Ozz7dMHtuBSsqwkUpoTXExznE996F/XTDSCdREnu7eD8dMN0gqQ5vAdCOo22MoojUD8BBfbdJicWYuzp9HuCFNrYCu3VJ/WauWQBNhHnv+35EpxA/d5HTCRlxLCp3o5dpfl/mLd21hKi9NdkXEmmo3wqgahcDyDPdY0dvJcH29Knoy5DsJqlJ1BolLQ/e/GHreNTzmPDODtxQhi5wWnG3P+Uj8MYkjLAt8WKi4fVLCmrXTs/XiGd5xblnSNNqLBs8YyAIYPO33UAYIIbZi19lyZhzC9xlFcmj++QotrauwpgxKuK0gmmeOSi8NyzSL0kw== X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:satlexmb07.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(376014)(82310400026)(23010399003)(36860700016)(1800799024)(10067099003)(11063799006)(56012099006)(22082099003)(18002099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: obKQu6kPaOXnyzj+wy3A2M0nKCK1HPXAroyf3BPyOYHW26QbrFvPI7vUs7c6Z+5sd3kWY+EBNEZlYNFXI3hP5nTwRCwQcbQUpEJKZ0SkunAsCNOzDZDP6sOM2aPsLT/Kc4sD3ZWkohupQ3XNeBbLDwxmjdbrrPc0yFV5aCEaQ1ZhjYf7dFpUBEna4TOQPXjU/F2JIudl1Z7ADejuePFxwxeIu9y9ByEihqA3jbD7riUs235mmfZL/8pJky8OiCJgBAbV+dU37TEGD7d4UeKawPqhD1FEga3ppoGRykVy4czGJ9OA8y4Gsz6hG176Gnwv09Tsclim7l/xIg3XlmgwzRx431LW/5fDas8MunA8CKj7igOkWoZU2aLbZdSZTvMm2H+wgX73DtiUIeylmsEoC3vfMEwYxV2WaWWzbQXwSPIjhVXVsUQleiK6KrSB9nNf X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Sep 2026 08:39:20.8987 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 15d64c83-9014-4c74-258d-08df14972b53 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[satlexmb07.amd.com] X-MS-Exchange-CrossTenant-AuthSource: BN1PEPF00004682.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA0PR12MB7652 Content-Type: text/plain; charset="utf-8" The CLK_STOP_MODE branches in amd_suspend_runtime() and amd_suspend() did not close the ACP_EXTERNAL_INTR_CNTL delivery gate before draining amd_sdw_irq_thread and amd_sdw_work. The ACP PCI parent driver interrupt handler dispatches SoundWire interrupts to the AMD SoundWire stack by scheduling amd_sdw_irq_thread. Because the gate was open, an ISR already running when the drains completed could re-queue work after cancel_work_sync() returned, racing amd_sdw_clock_stop(). Fix both suspend paths by calling amd_disable_sdw_interrupts() first to close the ACP-level gate before work drains. In amd_suspend() CLK_STOP_MODE: - Add amd_disable_sdw_interrupts() and cancel_work_sync(irq_thread) before the existing cancel_work_sync(work). - Call amd_enable_sdw_interrupts() after clock stop to reopen the gate. ACP remains powered in CLK_STOP_MODE (only the SoundWire bus clock is gated), so the interrupt path must be live to allow wake events to reach the CPU during system sleep. In amd_suspend() POWER_OFF_MODE: - Add amd_disable_sdw_interrupts() and cancel_work_sync(irq_thread) before the existing cancel_work_sync(work). - Remove the redundant post-clock-stop amd_disable_sdw_interrupts() call; the gate is already closed at the top of the branch. In amd_suspend_runtime() CLK_STOP_MODE: - Add amd_disable_sdw_interrupts() and cancel_work_sync(irq_thread) before the existing cancel_work_sync(work). - Call amd_enable_sdw_interrupts() to reopen the gate. ACP remains powered in CLK_STOP_MODE (only the SoundWire bus clock is gated), so the interrupt path must be live to allow wake events to reach the CPU. In amd_suspend_runtime() POWER_OFF_MODE: - Add amd_disable_sdw_interrupts() and cancel_work_sync(irq_thread) before the existing cancel_work_sync(work). - Remove the redundant post-clock-stop amd_disable_sdw_interrupts() call; the gate is already closed at the top of the branch. Fixes: 86a4371b7697 ("soundwire: amd: fix for handling slave alerts after l= ink is down") Signed-off-by: Vijendar Mukunda --- drivers/soundwire/amd_manager.c | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/drivers/soundwire/amd_manager.c b/drivers/soundwire/amd_manage= r.c index 0cb5f4694e9a..1a252a81269a 100644 --- a/drivers/soundwire/amd_manager.c +++ b/drivers/soundwire/amd_manager.c @@ -1321,6 +1321,8 @@ static int __maybe_unused amd_suspend(struct device *= dev) } =20 if (amd_manager->power_mode_mask & AMD_SDW_CLK_STOP_MODE) { + amd_disable_sdw_interrupts(amd_manager); + cancel_work_sync(&amd_manager->amd_sdw_irq_thread); cancel_work_sync(&amd_manager->amd_sdw_work); amd_sdw_wake_enable(amd_manager, false); ret =3D amd_sdw_host_wake_enable_by_rev(amd_manager, false); @@ -1329,7 +1331,10 @@ static int __maybe_unused amd_suspend(struct device = *dev) ret =3D amd_sdw_clock_stop(amd_manager); if (ret) return ret; + amd_enable_sdw_interrupts(amd_manager); } else if (amd_manager->power_mode_mask & AMD_SDW_POWER_OFF_MODE) { + amd_disable_sdw_interrupts(amd_manager); + cancel_work_sync(&amd_manager->amd_sdw_irq_thread); cancel_work_sync(&amd_manager->amd_sdw_work); amd_sdw_wake_enable(amd_manager, false); ret =3D amd_sdw_host_wake_enable_by_rev(amd_manager, false); @@ -1342,7 +1347,6 @@ static int __maybe_unused amd_suspend(struct device *= dev) ret =3D amd_sdw_clock_stop(amd_manager); if (ret) return ret; - amd_disable_sdw_interrupts(amd_manager); ret =3D amd_disable_sdw_manager(amd_manager); if (ret) return ret; @@ -1377,6 +1381,9 @@ static int __maybe_unused amd_suspend_runtime(struct = device *dev) return 0; } if (amd_manager->power_mode_mask & AMD_SDW_CLK_STOP_MODE) { + amd_disable_sdw_interrupts(amd_manager); + cancel_work_sync(&amd_manager->amd_sdw_irq_thread); + cancel_work_sync(&amd_manager->amd_sdw_work); amd_sdw_wake_enable(amd_manager, true); ret =3D amd_sdw_host_wake_enable_by_rev(amd_manager, true); if (ret) @@ -1384,7 +1391,11 @@ static int __maybe_unused amd_suspend_runtime(struct= device *dev) ret =3D amd_sdw_clock_stop(amd_manager); if (ret) return ret; + amd_enable_sdw_interrupts(amd_manager); } else if (amd_manager->power_mode_mask & AMD_SDW_POWER_OFF_MODE) { + amd_disable_sdw_interrupts(amd_manager); + cancel_work_sync(&amd_manager->amd_sdw_irq_thread); + cancel_work_sync(&amd_manager->amd_sdw_work); amd_sdw_wake_enable(amd_manager, true); ret =3D amd_sdw_host_wake_enable_by_rev(amd_manager, true); if (ret) @@ -1392,7 +1403,6 @@ static int __maybe_unused amd_suspend_runtime(struct = device *dev) ret =3D amd_sdw_clock_stop(amd_manager); if (ret) return ret; - amd_disable_sdw_interrupts(amd_manager); ret =3D amd_disable_sdw_manager(amd_manager); if (ret) return ret; --=20 2.48.1