From nobody Fri Sep 25 16:03:01 2026 Received: from CY7PR03CU001.outbound.protection.outlook.com (mail-westcentralusazon11010027.outbound.protection.outlook.com [40.93.198.27]) (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 E865358FD02; Thu, 10 Sep 2026 19:03:54 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.93.198.27 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789067037; cv=fail; b=eZAlGr6SZu7MaDpWQhsJM5VF/WvwON485dp3N4RmKuTM4U8S2Oi+5W0rtLAvApSmVZAY58qxVSlEyaQD+yMCSbpxzvwW7CAzL7/ikaULvjTBO8smLouMS3QKYRphHl8+JzcTkDS1/qDDlSTKjd5eceKKa/fR0vQ5U06/7+98D9E= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789067037; c=relaxed/simple; bh=ZKuWWTIxu/Ud6TZmMc46vnK29MCBiWRu26Yx6p8ZfiU=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=rEqvZDLcupyCE6qRXXT8TwmAXf7M25Pll+mltMFHJfl7P1tAu0QE6YBMKShhUoKTfsL4ghdvBPs8vyu3Zz0Eg1bHSE9V+lHRDiS4/3/wjd/hZAAOfcjR5l7a7hf8Kl0pwMMbjqWB0o38VQJY2wximYcl1+ZFTaPxmoiuUCd79s0= 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=O40hRvP0; arc=fail smtp.client-ip=40.93.198.27 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="O40hRvP0" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=i1WdQfdSEgLxJ/L1KRSMYFb5A/REnVCK7dzxqJ46Vg/8MBOgiTNN3dNSzGc8hvFrrIJzu29CtUTBXFt8tfiI3tZnIx2q4EuTMvT9thUBVIEprQipS6Kl53lTuDVomvqDspVcFQrEWloXcpuwKHF+BKBLOutyg0DwT6KdOYSYytTZ07vcs/zcOLYu9Q6TZb+ePwZtWEhe//rSu58L2xsf4ZRi4d5tqUa3ZqTq7En3957bjhNsAGzyxHa6tXC7jgk8X4bVphX3viU2/bg1PG4+bjFbJvzbYR+yveMEAeKjPk5QejAUNwVcuu4PMx1rhg25dmFikGVNEWsXh4hDaxNeYg== 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=RdRMa6+g+l/rqbS+W98cDFcT8hRaMvDSy+12JeiiEp3EmxzyaePL5Qxi3XJSAIwHe9GJ3pBwB1agcL0dZaLgruwolzdXLDgIevEhsgCFrzKhanY/vbhGTGskXIljgk6cY+tjJNJAHfnbAzjYaYd8ujkcWk/FvxmOgK52TwTarnqyaPrrzmGh8HQ6YA7lJxIcp0dsrzewfzzoHqB32cne/MqmeHu6qoW3vWLHDjrC1LWEHz8oqsLkqotJfPEbphdsAs7Ak3bJJkYKipbz4mOVOhjAUxmkqot9BERltxBXeCDoHbWMusqPu7i3HHxvhThlXwURa85En+5ZYzRTxQLxEg== 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=O40hRvP0+QKmDULAKHCHcszdJ4ZJPi0X3EqJ5A2xJTi+U5BoHJtnB9TpZR3c7jOiDpvDAthtm8S/Njr1pORL3B02STjxYuy69XSjNrFeC8T8Q+Gi7sRoVGv287WiU7eOAWvPgbMl16wtdjMuANi88Qazq6xiKWrsC7K04K1HZU8= Received: from MW4PR04CA0070.namprd04.prod.outlook.com (2603:10b6:303:6b::15) by DS0PR12MB7778.namprd12.prod.outlook.com (2603:10b6:8:151::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.406.9; Thu, 10 Sep 2026 19:03:50 +0000 Received: from CO1PEPF00012E82.namprd03.prod.outlook.com (2603:10b6:303:6b:cafe::1a) by MW4PR04CA0070.outlook.office365.com (2603:10b6:303:6b::15) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.406.8 via Frontend Transport; Thu, 10 Sep 2026 19:03:50 +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 CO1PEPF00012E82.mail.protection.outlook.com (10.167.249.57) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.406.5 via Frontend Transport; Thu, 10 Sep 2026 19:03:50 +0000 Received: from satlexmb10.amd.com (10.181.42.219) 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.46; Thu, 10 Sep 2026 14:03:50 -0500 Received: from satlexmb07.amd.com (10.181.42.216) by satlexmb10.amd.com (10.181.42.219) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.46; Thu, 10 Sep 2026 14:03:49 -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.46 via Frontend Transport; Thu, 10 Sep 2026 14:03:46 -0500 From: Vijendar Mukunda To: CC: , , , , , , , , , , "Vijendar Mukunda" Subject: [PATCH 1/8] soundwire: amd: fix SDW command timeout return value handling Date: Fri, 11 Sep 2026 00:30:49 +0530 Message-ID: <20260910190240.1604447-2-Vijendar.Mukunda@amd.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20260910190240.1604447-1-Vijendar.Mukunda@amd.com> References: <20260910190240.1604447-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: CO1PEPF00012E82:EE_|DS0PR12MB7778:EE_ X-MS-Office365-Filtering-Correlation-Id: 87e6db44-3943-4e56-73c4-08df0f6e403d X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|376014|23010399003|36860700016|82310400026|10067099003|18002099003|22082099003|56012099006|11063799006; X-Microsoft-Antispam-Message-Info: piZu2SUpi8gZz6l4Qrrd+Da9RkMo7RJvxhLqBZRtw4i0eM7vnS7k0pJOwZzCd3V8nyCH7FnxYG4ZG5TLJ2rMENwuPqlHZvAIQW+76tiPDTqNmkJXR3fm1JqxXULHBM8uRqq/3IN7kdOVi1F6hBL177LCs7TXNxrtJSpzTk9dAxrTgDXtujGGbvv56L0Dtd9nc5rkvhsZKCs4zh6kkgAU7BevCJKhGnHw+bff66+edDKhxENC0rMXQN2qRlbK4mKnWYeWIwlYYKQeboWMwD0yqGCSuxX6s5folPZROmkhA7GXegZ0eqdPwUY1gNHLya49/rpWEbLQDTr6FxQji1ruJqAxeZX2ICJjwsQZKvAFSN1sAzOxVB8l62AB+t9+M5Ap5wLa7K6IAgkqpNQEKgtsB8lVxIq/wkJDM0JaOK30cbwDwqpua/+fOyyqvld95JKIS7c4RbOR1sqx+4znur+6HdfDVxTVl0rlM0qJaI+E7xRCkF0h+8/+dntnR/UovkJpMQYrnWCu/qWR7ifWmHpVMpO9/40EwCg4JxVxZ9TJ4IwLTXWDFmPFLqXK80seEEOmF05uxF7O96ccsnCTA9pr9ZIKJclzmh9TzSjBAyjZSMYWhEAyo867nz44NA344tcVdCSMAM77BCRLlurTTmT0l5O4flZ3oBHgHT58uehgb8iu4OXH+HvHrxW+f3WYmAGIb1gcY9gBzUIi49iMIzfGNw== 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)(1800799024)(376014)(23010399003)(36860700016)(82310400026)(10067099003)(18002099003)(22082099003)(56012099006)(11063799006);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: INsQXdl/AY3ZJuE4sKJ6tcpHtRieT52UDUr20Wn8IlzEonN0Us5IiMA6ggfty5gaMKJudmABzU8fzt4syu1LvtJz3xAeM7XNH/OGzZrml5p27lZTQjmq54Kuej1mj5YjHihVveuMSX3KyTfKgm68VH1YYO3IkNru1vjUZ6c9hBLqlynliAlcW+Q4sGt9jhPsqHPrf1T9GgqwAyL/xN6TLLeVHXGSdbsqGO18knG81/EI5HVbyFIsMa/Etx1k4uSeewz5EAzkl/qthqIarf9clEA1FHgj8X4mH/6x1ZPm0LLK/ApnLNPFLBHDYVC8Wug0cK2brLieXLI+aNcJ3owzi+dN8YPJya0AgF5MWqxL6WK8LgQi3UmmWjmwBmzUZHj1ll4N+0Aw4uQ2Be1XF9F5Go5Zzm8AMpRafBUXxJn46i0VMBqtYbMm/qykpxJ51dRb X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Sep 2026 19:03:50.7144 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 87e6db44-3943-4e56-73c4-08df0f6e403d 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: CO1PEPF00012E82.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS0PR12MB7778 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 Reviewed-by: Mario Limonciello (AMD) --- 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 16:03:01 2026 Received: from CY3PR05CU001.outbound.protection.outlook.com (mail-westcentralusazon11013054.outbound.protection.outlook.com [40.93.201.54]) (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 C11B03806DD; Thu, 10 Sep 2026 19:04:01 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.93.201.54 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789067043; cv=fail; b=kyo64iyBC9EP/dk6US1FpLKupEt7vttwPN17iEAUwuA38Wr6z+shwHh/w7+KJLuykQH9WqsTuWaxmAeRJe5MqHC1C1djt1Cplt2hztB7bLBw/v2KScRjFW5UUCrB+Y9zGq+xTST4+/XVDdeZjDiffF/vSynqrz+LVGtTTMQPPMA= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789067043; c=relaxed/simple; bh=WWbegIBKTw2uDgzj2R/ZRydw2hn5bEiIB2wcGkdv3iI=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=XKUOtSICEhXyln27keTPoMvhGAroslBV+qJdPqknF9s3FIdErxZLuuxRBUYmjNgb1UBaCvYY/zNkZedSKzy3ggI7bQeR8E3Mf1HK0JwvtneFUu1GDnYJhEIQAJensavzDelxv6v/acxQcmMTi8ik0ZP5LwnolRrGrH7fnKC3aCo= 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=vlgT5YZr; arc=fail smtp.client-ip=40.93.201.54 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="vlgT5YZr" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=Qo7rnmpbhgc+lngqxVA+vJBwDStuseE1FF3ByMHev7kMn/GmsyFMDnZrmt2US4iF89eFMduEjU+WkvtNxgR5AoLxsS6olNBohexVWbHeoZDPlm2VCsQqdAGVnHJkC/zes5LEIwIGV6q6YAKiIbjdY2rqDtwFXYTwuWheY7ovYjuxP7iHqNst+vkY1bxeh+WdkCsT1iCXqYAB0cT/4dLEA0xiJZBCHSA6T5bSNs8sR/B8SU6uz7dl7D71Rax9X50IjSYRp6EaQuO4U3Ts05CRiPyZyCix3VyicFHd9OjeWAPvdVqR2W4ZXooxRehQw+uS267Y1Zwi4gQU3Bed9bMM/Q== 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=tiOpBFRBvRm0K66/4TkxMig41VXxidgWYGNEFVnCjHQ=; b=yGrheqro+ELWa0PxjH6ldHZ7CABstyHVsIOwvH1p3ziehcp+xF2UA7/bsFLtCCI8hUjPZTDsA6K1KiHyBooa2mjg6XFEEf4UgL6TygqankzmEHHwq9dihM08BORZN2GSFXaoPes9eFcl79iv4h5mv3/7ngcqT/1SLit2iCxkXiMOf/WGaUyBsJJCJAxQHNl0Y8SRdh88P/9lOQu80IIr8vf2Zedbu0Zb/d9+ucicOuPistIKE1t5lJ1vT/lmDfc7+LaPKXOV7eGrEYZglZK/HNPIpS3spn9I8TeT/fFmVU6clqDMRej3k3dmcNywF0ZG3eG5HEjG9DH3w9XscE80JQ== 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=tiOpBFRBvRm0K66/4TkxMig41VXxidgWYGNEFVnCjHQ=; b=vlgT5YZrEIPlaaCWWVLJqA/IJLjClCp6oy5Znqtf90BZpMD8gjhmsBZ9ekO1ZsKA6cRC3snETJQ9Alpg4bHMrDbXnkPxDK5urOF2KTHVg/saafJAWCa7B36JpEnjECmuB1pSWJPlTCkHkwVWNiWpQAapAmliz/bxwd5KNqHzdT8= Received: from BY3PR05CA0017.namprd05.prod.outlook.com (2603:10b6:a03:254::22) by PH7PR12MB7985.namprd12.prod.outlook.com (2603:10b6:510:27b::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.406.9; Thu, 10 Sep 2026 19:03:59 +0000 Received: from SJ1PEPF000023D2.namprd02.prod.outlook.com (2603:10b6:a03:254:cafe::87) by BY3PR05CA0017.outlook.office365.com (2603:10b6:a03:254::22) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.428.4 via Frontend Transport; Thu, 10 Sep 2026 19:03:59 +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 SJ1PEPF000023D2.mail.protection.outlook.com (10.167.244.9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.406.5 via Frontend Transport; Thu, 10 Sep 2026 19:03:59 +0000 Received: from satlexmb10.amd.com (10.181.42.219) 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.46; Thu, 10 Sep 2026 14:03:54 -0500 Received: from satlexmb07.amd.com (10.181.42.216) by satlexmb10.amd.com (10.181.42.219) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.46; Thu, 10 Sep 2026 14:03:53 -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.46 via Frontend Transport; Thu, 10 Sep 2026 14:03:50 -0500 From: Vijendar Mukunda To: CC: , , , , , , , , , , "Vijendar Mukunda" Subject: [PATCH 2/8] soundwire: amd: cache ping slave status to avoid spurious disconnect on timeout Date: Fri, 11 Sep 2026 00:30:50 +0530 Message-ID: <20260910190240.1604447-3-Vijendar.Mukunda@amd.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20260910190240.1604447-1-Vijendar.Mukunda@amd.com> References: <20260910190240.1604447-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: SJ1PEPF000023D2:EE_|PH7PR12MB7985:EE_ X-MS-Office365-Filtering-Correlation-Id: 191463cc-2358-4f80-3ed4-08df0f6e452f X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|36860700016|82310400026|23010399003|1800799024|376014|11063799006|10067099003|56012099006|22082099003|18002099003; X-Microsoft-Antispam-Message-Info: iQgyEnihaqxseMIlgegPwH2K9bRM4NGUl+T4KXzHPOw94gyUhNtwd/m7TAmKCDyf3h5MuoeQzWThULdZgKPoealfAboowb3rmZRLh2wKRGXl8TJF4y70X+kSRN6/KpeoGLJGL+z9c96B1BOB4INO23feK+IG/Ek6zcZVdfr9n/AKXf19anI5fp4cJ1pJAeZMazUXPaU9ZAevtVJFWA/FibmIVIGeT5/AQMg3SxWBeB/2e+OT3aUZtHMEEL2tk2BzURTSy6dJ39rh6g0teEfCiVFBhBJWyhBWxkRbHXrzxyqBWvyJRXn8OtMY66OAyKmfRKmvHXjYuJNvySTqyvy3pI9Z6i4mSij5pjiPIiVzzlhCi4O8PoCY7Bxch5vDbpBE3VCWNQ/tnKRtFpJ/7iQv2oqhmvVrMh0fR1NgLtxWHf3zXY0zVpuYv9drvlhoLJccfgsJN45n8hr8j2VDXwi9OkX9P+OPyReNvMPaayL0Dg54BmVRY0I3BD/6MNz6KHmBtt3v0lNTqPnpZfgLwnLYTT+0po3y2JvzeFxRih9cFxpNqXpJjQWbpJAu5Yx/irhOeZLHlSAcS2miyiET3RlVFzDckJ+lb4x7HiQjZ43w4Yql98ICI44wbYe/7AgsjRQOgNFGAOGUZS+83+gMyhsFmzJr0LV72eyGE9aovVTBYHvL+TrH+0eYEbalOj/gi7fUrkUX5BK6CCiOUudTgZiZzQ== 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)(82310400026)(23010399003)(1800799024)(376014)(11063799006)(10067099003)(56012099006)(22082099003)(18002099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: zIRhonMZjMLl9i/rUnUnOvJ7ei5J1AbCyXDQL6NKIBF84lux0GJEJBzV0mL0+1AzIokrL9IPH4TnUQPuyjWgHiH+bzrGLs6c2P/BICcLQlu/Tg6FElPeyeOTCkjARAgxweM+mrdCqaEDPqlx3aSWrHCq3+xQzpnm0tXMJI3p/7+C4cp3dUqvNCxC+vmUN5BxU5gB+V+VrWOBFosPFkwtv3Jz078bpz610HVC16cGvzoQBfNfhDQg0bA5Lx5ozzycCeAO+UxSFdDD2gpbH6dsb5ToBHJ5fySCz2oENSJLT99nbv5ZNGVHaoksmtrFvojnmFxFXTQFbbzBZS0TzS245B3oO4w9r42dtfbQbbmVx1NPMbY6J4j4LuWTMjBKf98JHD8Wo9pYp2heB8mGTn8KYpRUs2Z/Cn7/ZGUjS+5rqmdtxJ+Wzqi+BBgbuWSyX/00 X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Sep 2026 19:03:59.0437 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 191463cc-2358-4f80-3ed4-08df0f6e452f 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: SJ1PEPF000023D2.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR12MB7985 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 Reviewed-by: Mario Limonciello (AMD) --- drivers/soundwire/amd_manager.c | 21 ++++++++++++++++++++- include/linux/soundwire/sdw_amd.h | 3 +++ 2 files changed, 23 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..12537904e34a 100644 --- a/include/linux/soundwire/sdw_amd.h +++ b/include/linux/soundwire/sdw_amd.h @@ -76,6 +76,8 @@ 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 successful ping res= ponse; + * initialised to U32_MAX ("no valid reading yet") * @dai_runtime_array: dai runtime array */ struct amd_sdw_manager { @@ -105,6 +107,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 16:03:01 2026 Received: from SA9PR02CU001.outbound.protection.outlook.com (mail-southcentralusazon11013016.outbound.protection.outlook.com [40.93.196.16]) (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 A115058F094; Thu, 10 Sep 2026 19:04:04 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.93.196.16 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789067046; cv=fail; b=ZNbUOMADHx3Qt1wTImErdkU4DI9p3bkgV/B7G+2gpkyIoJe+0Sgbi7L2vPcMQyCEvi/r4fhHOc5aJLca1T4XLEbAUZ0Dt7pz7WFv9w9huge1ErIfwxJc93ysh7n14Kk82h2hX1howQjmhZRIp2eVrjJLbXSypX7MJpmFOFO2oTk= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789067046; c=relaxed/simple; bh=dzNn+QCEdo0Ugp5pBE81Kq+9ejbGy2U+QXb8LgGezYU=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=Cg22hI1Bw2pxCCOpa8ZTcP2aK8PghUdxHD24cjtPHT+cpT/oz4WzxPWBrW2e+JeilTlQrKSg8jN+3+iByla89t8WQZD3m3+WvMdLs8TQ8sfbj4U901D9Nc2f3F0BxLxHXPtAKFb5xkxYrSwNTMIfQw2ZQJEyVyNOYUQnHtDmdnw= 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=F7m87wHz; arc=fail smtp.client-ip=40.93.196.16 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="F7m87wHz" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=hvQQiLkPQ/mvFqwC6qQlYjlrzYgRJ1odr3mPKFB93prOxyf7gW0pn21U7LODOmsoqI4VxvFqDLkXJpRbjsaBKGvGPsHU8lKmCQCySuXLDgAXffNmlhJbP7m8P6drkEzE5UU4WNzddOHxlT4Zof3EsVVMQtBDhCiy0TLn+0eGfbz5nvN4+sqrdHVbWPeasvJgZpu2N0q8zg5D+BEkGGFTYnDWpBBcwAx/0O6m3gOdVRi6QM3p0HP9makIddSQ+xJXQMoR41p6lN4T9Ug3Ap1iAzvYuvYpMl4fNer3nuw7MJ/g6gOUUxxNPuuLLoLhOInabNhzqqO8RVsq3hiJeaBfGA== 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=ymt29p6r4iv3b2WdpB/Ci1eF+DndcNpnIOOUSemMp78=; b=UAiFg1+Rvz519OfACuE/2R3oN17GpZWFWvuGq5mjQ4smN52t3ZzWib7z5FCLHt287hjfF5rng5c9KjZqpwYQF95+VJJs1P3tHPqdNWxL2OKlFo9F1KNDw0YNthjM7UdSWZzD602y9dOgrsZBu0YmC6nIhWC9qvyeMEZmp5zolUFDbHR1AELQIIzQ93kZqclIUUToyL9S+2rzuAX34ecbtysKZgt7Ato8P2ZwiZG2aB6xiZEWJsVWcVGg4vBs3Z5ep2iUuDu8+3S6kCMY9OnCmMu+Sa2oRBuwLUxWG504Ks0uTmJC/UnyA7QtTdjELituVJyAgxSbe7IXKG/ca4qmOg== 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=ymt29p6r4iv3b2WdpB/Ci1eF+DndcNpnIOOUSemMp78=; b=F7m87wHzEp01lFP0HW6eR4fBeY8Kziynr/iAXjY5Lv8b8djjbM5449c2hjqAwgWHQOIwryDh/frujP7tAubRrLdrloH9Mlk5dGatz+TzVZvaVmOMzB/oTB8g+RFnZjlzoO4CpimkRCDqYO2iZ9gd3FMm6HOqa+UuLtTkLxS88TI= Received: from BY3PR05CA0026.namprd05.prod.outlook.com (2603:10b6:a03:254::31) by MN6PR12MB8590.namprd12.prod.outlook.com (2603:10b6:208:47c::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.406.9; Thu, 10 Sep 2026 19:03:58 +0000 Received: from SJ1PEPF000023D2.namprd02.prod.outlook.com (2603:10b6:a03:254:cafe::a5) by BY3PR05CA0026.outlook.office365.com (2603:10b6:a03:254::31) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.428.4 via Frontend Transport; Thu, 10 Sep 2026 19:03:58 +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 SJ1PEPF000023D2.mail.protection.outlook.com (10.167.244.9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.406.5 via Frontend Transport; Thu, 10 Sep 2026 19:03:57 +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.46; Thu, 10 Sep 2026 14:03:57 -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.46 via Frontend Transport; Thu, 10 Sep 2026 14:03:54 -0500 From: Vijendar Mukunda To: CC: , , , , , , , , , , "Vijendar Mukunda" Subject: [PATCH 3/8] soundwire: amd: fix work drain ordering and pm_runtime guard in remove path Date: Fri, 11 Sep 2026 00:30:51 +0530 Message-ID: <20260910190240.1604447-4-Vijendar.Mukunda@amd.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20260910190240.1604447-1-Vijendar.Mukunda@amd.com> References: <20260910190240.1604447-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: SJ1PEPF000023D2:EE_|MN6PR12MB8590:EE_ X-MS-Office365-Filtering-Correlation-Id: 8677c798-04d6-4174-3359-08df0f6e445f X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|82310400026|1800799024|36860700016|23010399003|6133799003|10067099003|56012099006|22082099003|11063799006|18002099003; X-Microsoft-Antispam-Message-Info: ogQvNJCA3blcqb+eg1MY8ze/7ifXxDOndsjZAb7QKtAyd8uKB0XpjcJYqmQ3KLMBDcE8psN6qiRTIAv2tHuNZr8fSWb5odXZz0Yyma7fDorjDkwIYypeVyXCKHoN8PNxRJGAD+Ue8e67jY6+n+jOoCa51WYl6DnbZOrGmml5oo0z9exkJTp0JOYMK1M0Kms3CUezqnCNmZGzXG5fQRPbS4NCljMb/48ZK4z/NqlfRZ3gYHlsN7MUUNPBTUT5an55QsRLrNtTfs+3Uedtx5V4xSdFLMhq9wsyC9LKE7/OexV+fSIBp5+/2MsV7Ym1zdFIc2J6XOzL7/d33yjLlibgnEAN0Kd+Y2B+nnNz9Z6v0sz5FO79+0p6ctltqQJKGbE3VJSTCn9L6YKZA1NlLkX+YHiwUkgTOtGeQ7H3J07yaT3PP0LZzb5/LnJIoIfAkXKGk7lul+IVlqe5tnSA6wUceu2LF+OdqUgr7xuQY85S8dhqpxAv7P5gywtju1X/o+OrfXHWqFYucUXTqTdiugm8Wrxm2FVgU9NuNwZIc4lx0URK0ncN9tbCR4fj605Glnl/ax66eYMleNoDrhpWwMTbQx1HJ69vzez/Rx5K0WpYFJhL1YqtLAjrC4Wu4fSvqGES2DQ7CsPphas/Du7ED7kpsXQNegRGWBzPuCpPJgejVAG568Ntmfkgkj8HAcnRsVOqj2uV30ZOUlOOJHEulf5P2Q== 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)(1800799024)(36860700016)(23010399003)(6133799003)(10067099003)(56012099006)(22082099003)(11063799006)(18002099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 7bW6DrKlWk2cfK8JBNYfvixnxe+tRH57mri4qn61uP2u9OBzvWROzceWLhLi0y8xdXrEc/P9yEjZ175ES2KBBW0qx7UVN6DLCEquXI05hksg/Q6WLAAoHA+zMuBU7tG/tuCjZvtv3SB71ArkXhis5wEJCZL+OzDNckqI48NpE8A1L+EuzNPRNwK/QlioFauqCALzLMy8vwgK9aFikSPg/PxdjgadtC6IhblH12/pqF3XGhAQlwN8FTOyJfPx/fsfACEDssihnf+9xVrVuC/9OR9fRkaVbfWqVghb4/eTEa3HUDZCcTsQmWB6vMIBc/q0TUMvk/xeW0U4qp+0g77RxL5DmZngNiOCz3sBCgOUUz6bXpfZLPvQH1E2aLk2QS8iYisvO8OxrZcTVLt7vZtejZ6CzqmEVzIgzv3I62sDTUly7I2tOeyReawDk4W+Jfaj X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Sep 2026 19:03:57.6788 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 8677c798-04d6-4174-3359-08df0f6e445f 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: SJ1PEPF000023D2.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN6PR12MB8590 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. Also 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 Reviewed-by: Mario Limonciello (AMD) --- drivers/soundwire/amd_manager.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/drivers/soundwire/amd_manager.c b/drivers/soundwire/amd_manage= r.c index a57b59609bfe..bbe1e73ed255 100644 --- a/drivers/soundwire/amd_manager.c +++ b/drivers/soundwire/amd_manager.c @@ -1172,9 +1172,11 @@ static void amd_sdw_manager_remove(struct platform_d= evice *pdev) struct amd_sdw_manager *amd_manager =3D dev_get_drvdata(&pdev->dev); int ret; =20 - pm_runtime_disable(&pdev->dev); - cancel_work_sync(&amd_manager->amd_sdw_work); + 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); 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 16:03:01 2026 Received: from CH4PR04CU002.outbound.protection.outlook.com (mail-northcentralusazon11013000.outbound.protection.outlook.com [40.107.201.0]) (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 EA0B3568FA7; Thu, 10 Sep 2026 19:05:31 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.201.0 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789067133; cv=fail; b=TMtbth2jYntKtqt7waTmRfXJFZnSp8bzaVTYCoo4Msv+vfWZQyT4jmdTLJgsW0vrPbXtylrXSSnFwY0z9E4CncrD891ShH+93nImFZshd7FgMjAfiW7J5v5inWBTzzi3FbfvyYruALbVLSayIG26Vewogn3l2wGK8WgkYjol3vA= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789067133; c=relaxed/simple; bh=j6ZWkAhaWpl5Wvfvw5PdFy42tR2wYIrAkGaqLbpAZlg=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=W7FClOsh2Degvgn7+JmaNkABKC64CRF15zF9RZr+uCI2xOH+cPBR3U9jdNQ+/ioayjF0xWiTd/vj4LCLuk8Z3BXD1a4mUGLimWct/7FcSRx2wHb0rPTJyxFhyOiIzdbfIbcXZ1yKH3nmLh4GZ6n3wp4Io0J2nWOBWBI2DDI2zoM= 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=dYd1Xm+s; arc=fail smtp.client-ip=40.107.201.0 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="dYd1Xm+s" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=bEBjM8duFpSRX3x/HtI5GqLbKvF9v+wzufJyAA7QIfcOj1wU5FVY/kMidaHY/IemiaAuUv7QCTNVKRkingFq9sm6kdpNLL882+5NxtKG74KrDin0g+GyqS1uzol7u5055kZQHzt1q755Zdjb4J3GdIxy04qZIMMUg6xDqK5P+6+7F3d483KuUPwCIl8ySmyD5+LU6yHz24maUfNRf3SUdHxq/wEOslSJhvmug8IIeFTA8fguJb0PXOWOEAqEm/M0ffRCKfOj2zqtVWxtc3KybfRcPIyjHSfv/N3pBjJaz9vIkhDpol2RNK5feMScP+v0CXgVc6M44GseZv7P90uPeg== 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=L9lcad2MWrca5Lf5kjroaSDBTsxyOJSa0sesz1fuQeq1cXG6kKmBY9Y6YXJ4HFJGf4ovkZaeTm2x4+FmqyUz4ID9PMtfRgNT8A0vsRp0yBM4mNwliC1TJQ6cXSarY049zd2KMPVLDFHy/aBEEBuKVXv4U/dA4n8UaJbGDn342RDiUimCOE2H1fuzzEnu07Q2rU8GEka5/VcqYn+aVPYhHky23DM2L+M9/0De6U66u8cX0ybvahM6EIbX0HjJZZaRrsKqeavkcU9hHhFhk23l8PLLMrGPQLOoHcZmgsPXEgfDg21S9Oa0cnKwTQa77KAvNaArWQE9Y3Cl7yvsnKsIKw== 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=dYd1Xm+sr/ZLO+MLgtoyZN9fKcQIi9D4tBtkrsLVVpcCNnwlg2qzO6I7Out9BxfjXD5BQIVbrdJMhFThHuRg+8+5m/Wvs/DxgSbLweTUvGsQOvymU4PnkhnFjWDA3OrGpc1XSD+JUMox3lo9vuhBF1b74Lndh7GR4I878hXyPTo= Received: from SJ0PR13CA0073.namprd13.prod.outlook.com (2603:10b6:a03:2c4::18) by BL1PR12MB5707.namprd12.prod.outlook.com (2603:10b6:208:386::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.406.9; Thu, 10 Sep 2026 19:04:02 +0000 Received: from SJ1PEPF000023D1.namprd02.prod.outlook.com (2603:10b6:a03:2c4:cafe::91) by SJ0PR13CA0073.outlook.office365.com (2603:10b6:a03:2c4::18) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.428.5 via Frontend Transport; Thu, 10 Sep 2026 19:04: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=satlexmb07.amd.com; pr=C Received: from satlexmb07.amd.com (165.204.84.17) by SJ1PEPF000023D1.mail.protection.outlook.com (10.167.244.7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.406.5 via Frontend Transport; Thu, 10 Sep 2026 19:04:01 +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.46; Thu, 10 Sep 2026 14:04:01 -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.46; Thu, 10 Sep 2026 14:04: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.46 via Frontend Transport; Thu, 10 Sep 2026 14:03:57 -0500 From: Vijendar Mukunda To: CC: , , , , , , , , , , "Vijendar Mukunda" Subject: [PATCH 4/8] soundwire: amd: fix ctx leak when sdw_amd_startup() fails Date: Fri, 11 Sep 2026 00:30:52 +0530 Message-ID: <20260910190240.1604447-5-Vijendar.Mukunda@amd.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20260910190240.1604447-1-Vijendar.Mukunda@amd.com> References: <20260910190240.1604447-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: SJ1PEPF000023D1:EE_|BL1PR12MB5707:EE_ X-MS-Office365-Filtering-Correlation-Id: 1cb5a959-9413-4df3-1080-08df0f6e46ba X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|82310400026|1800799024|23010399003|376014|36860700016|10067099003|11063799006|56012099006|22082099003|18002099003; X-Microsoft-Antispam-Message-Info: T5H2Kg324QtNxE2abAa3TGSR1loczZ4jobloIehwazBe3Fn3mZ76JQNhLO9wDtMS30G/f07leinFmDP0BoqebPE6Q2RbgKS8kyzIrpi1WdJwrAwTnIZ8/kphsk4GSwkeHG8xDiIWUFlFskdKbPhMsIwAX9UrNQcgJRG+TZSBZazTzLd4Y+q4Lq8euc6FEhDvduxQpWpkRcZfcSyMqScvswEluTR2A+mfjXoq8qbGSjVze2zJEOkQdhmttp4QtUwTwFOPQG+WfF6xjEr1ts1ox5hHwpr6el7XBKzNDfdOKxKxaVKGd4S0vh+R2HhV8VbB1iIy9DQPM+RMxyged+dZYIrXtetMwRXVUka3qA4hGwoxViptQe/ttJUmkndDA83CbGzT+IOD4XkwZev80e9blUyPXxVEywS35y1TQdWj44aZ4x8O6OUbDJ0Z4eQPKUYn/1mX0UVFeFKY0MFIO4NvAOmrs0T6EKJqNdywNRfD2wK7rapgdukuzlqWeI0PTqLpxvm2ZVlB600DI62ymWZUSaBe3Dv5HFJgAGyS/iGqbnBElMMAbuyZnsePVn2EpI5bkubis9LHBMfmZFvmmgrCTPSkFn25ydHklNNbQFUsQrZh2CnLc7zE1FT+Gls1Rf9Xss7qpiFTEHcB/hltaq4yEMP3/cqhCTHE+UCWajxcxFgdnI3BUm5xzato1DkFI8obqGkPvuiFsd4L5Ik50CeZOw== 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)(82310400026)(1800799024)(23010399003)(376014)(36860700016)(10067099003)(11063799006)(56012099006)(22082099003)(18002099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: isYvkZCOZpCKBzEce8/dwfySXvy7tuMbflTfh4p/PFgQfiNEMUAuCOuOnTcItCJI/8Om6Q4QmQBmf5DkGUQqNHJNVp2t7nlAD3RaTF0EFBRwlSaoLydSIuvZNaqFs6baEnQUqMDwpwZqfwq9VcAeMwO+rlnnlnBRMlfUJRv3WWssL3KVqmXwnGay+5fd5JVYyy87bQVAlHTAuPAh1DHxT+sfL7Yd0Bl7mXiC5Yn2/3K85wFT3w3uairh9ZdXidKfK9D3JiorYi7eQjHJJEAztQDP3Ukhx6kXozdUN/NI0TRCMovluubc2ObqySUSuwGNqb30xqGehQap9hvYkT0nyEPCDl+TKfQv7IZ8zPm5MZbjhrj+FZ3yojFqcKXr2zFbghCqHA1zP/piROX+8geDj+ZETcHxRHtPtWFPESHktO/uvHvpllOaYznFPNZwEZJW X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Sep 2026 19:04:01.6675 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 1cb5a959-9413-4df3-1080-08df0f6e46ba 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: SJ1PEPF000023D1.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BL1PR12MB5707 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 Reviewed-by: Mario Limonciello (AMD) --- 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 16:03:01 2026 Received: from PH7PR06CU001.outbound.protection.outlook.com (mail-westus3azon11010007.outbound.protection.outlook.com [52.101.201.7]) (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 B990B58F066; Thu, 10 Sep 2026 19:04:15 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.201.7 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789067057; cv=fail; b=BrGwGFpxI3+FgKipLeaiSGbO0diq3ie+iE9Pd26dxlHlegFBUnVMurJ7cGCu/OBd64/86/dLhKlmDvg61vfJ0WoCMKkYryrH+Y7pCb3xG4/HombTszEAeJMZDUmxOLCjwEjyupL/MZS++xDoqdw1sQcYxlJ8JsnJob0WaAg0/jU= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789067057; c=relaxed/simple; bh=ZtbntJycbmSbN6o0sZVzksLKG5qXW2LBBgQv3q0WiPQ=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=VPcmk0nwveXCXGWBkzBNPrGrMc/4PxgmT+7dgndKa6J2UCypLyEuCGe59ic3GVHSPkYg82OUK2HISTykwD5NU+bF4WaA0FWGa74MsSGhXIlccnCyD/NbQSV4meKOBTRfXW+yqUbGkRLq+4HYfXft3ziJdwiHPRiz+hTzFKuZELo= 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=bzCloybx; arc=fail smtp.client-ip=52.101.201.7 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="bzCloybx" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=LJC4zOtoYoGkGRc+2OZ/IKdSA2nN6SsxrISUJF7dxcfhllMkILpw+nJ1TdRCsUdsDhLwC52z1trrPN/soKLj6Ho7HG406YpSR7HaRTb8/u+vXU+E0GFJOpAroXfaJHLPDZvlsBelO6ztsfL29832ypaTmCVQntZupyrw3Ub7ND3WuZ2na3oOfGO5kvc1cEKOC5QYiwkAUAPsRJj0ZY2lU0WHOA1z61jqwxNjapG7CY+xLNSyJfCGpSVnWpraQxBOMDiGEuSA7UxWGB9t0jWHFX9LLNec+21dZgdBkF1pD3kdUQ9iTLa3YCuG7sbGpzv4mm2NXOoL+e8tzYeD9vOPWA== 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=e1xeRJ8XjQNm5IqC+YkSgPJZTZXwJx1vjJB6eOz0nQWgAoUehZbV53+z0yUM6OCxz4jGG2FmPjerA50Oaaqn7HNq+29McFqLSlZ8vJjonZGwgNwgB/aiGwaHvuNXvU2yzqvZMrAVGWWzGQ+97131SY7/mGWfav7R3UTVgdAscFbqwOs0AeeUbCNt53xgeezs8M1zRYu0J1puHrBKUbDpiH3qvwAY3p06Dpi5PHHXgXwOHXllGjrXqS6tl02ILcOO18AQm9cIQctgogSb+5p+Wz1j/5WV/fXawHgoJHJ4TRfaj/5w2F5YIVfOQxqZPg3lfwkN/PTf63os1UATZBjKqg== 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=bzCloybxDOJjZEkwcT4pu5eDL0/nDEtl+heB5qtok7/6hwQBTUs58oH9g+ZuyX5Qff/Gmlb50mwoP/wHf1ZZv4e5HBxas68tkyypQ6F5XbqoMF8P0mZc0rsflX1tvYOWBf9nDAVnYSjukmwLBi/IajgRHDG/gmoWIYvEixTxocg= Received: from PH8PR22CA0020.namprd22.prod.outlook.com (2603:10b6:510:2d1::27) by DS0PR12MB999106.namprd12.prod.outlook.com (2603:10b6:8:301::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.406.9; Thu, 10 Sep 2026 19:04:12 +0000 Received: from SJ1PEPF000023CE.namprd02.prod.outlook.com (2603:10b6:510:2d1:cafe::5a) by PH8PR22CA0020.outlook.office365.com (2603:10b6:510:2d1::27) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.406.9 via Frontend Transport; Thu, 10 Sep 2026 19:04: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=satlexmb07.amd.com; pr=C Received: from satlexmb07.amd.com (165.204.84.17) by SJ1PEPF000023CE.mail.protection.outlook.com (10.167.244.10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.406.5 via Frontend Transport; Thu, 10 Sep 2026 19:04:10 +0000 Received: from satlexmb10.amd.com (10.181.42.219) 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.46; Thu, 10 Sep 2026 14:04:05 -0500 Received: from satlexmb07.amd.com (10.181.42.216) by satlexmb10.amd.com (10.181.42.219) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.46; Thu, 10 Sep 2026 14:04: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.46 via Frontend Transport; Thu, 10 Sep 2026 14:04:01 -0500 From: Vijendar Mukunda To: CC: , , , , , , , , , , "Vijendar Mukunda" Subject: [PATCH 5/8] soundwire: amd: propagate amd_init_sdw_manager() error on resume Date: Fri, 11 Sep 2026 00:30:53 +0530 Message-ID: <20260910190240.1604447-6-Vijendar.Mukunda@amd.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20260910190240.1604447-1-Vijendar.Mukunda@amd.com> References: <20260910190240.1604447-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: SJ1PEPF000023CE:EE_|DS0PR12MB999106:EE_ X-MS-Office365-Filtering-Correlation-Id: 460784e0-48b3-40cd-97b1-08df0f6e4bfd X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|23010399003|1800799024|82310400026|36860700016|376014|10067099003|56012099006|11063799006|18002099003|22082099003; X-Microsoft-Antispam-Message-Info: kpvNFlLaq+4t0OGte2bzAkgBtku0fJh8IUj4nqiM1l45rpDDoSVtNquwmdLuuS2NRjCpAq/WWovtyFdkUbctd8v3yVcOOvJbAQWSuKJs7XlRyn6t5mdgDCBsmGKkOtX7Wd6Lpuxztuky3N5NJD1y53lajUsqxAvLNsDL/8FqtlxkQb372bn/mtwN9TAYWVUiGvoqeCMuQzdYEd+IyQgn7LhQWfdoYusHmcody5iEv0LcZQt+sgfFIUYJj4pu7Vru5RUiI1cfTeaSPgViLWBGEobSvdybCiXVzT9gJGp4o8K4z9icxfimI+/uQJ4BBrPIFqVpndQkQG3DmK/CkFS/9dDO52IY+OniuHUft5m2VG+Dot/WgsMS2BZTvPsjeBY/pZ4xNypYBJ7SMd54zDNoQQTaQpJ1MfLHcWMrZF4ZQPV0G6yifdjHlof2Alz0nIyJGdlGJnySAIN58TOd50qmJiC5JQs0icDKP8cFg5+dfxEnCdrKUNxDG7JMQWJwxz6v7UjZS+oXCzlQdkRRiUsjyC0s1BvHJNlGWfZXwGem8GazXzgAyvz8k6BPFViLsIahxdau25Znp5No3zLbAUVv4F+7DGZ5hb6st4RRX8wy9R0QNemr8GGA81KDSNisQPTPYLfyppFysermlEeGxHDVQ3VuqqS1saE10vuzYtSGMgNDQ3Rh+vf0Iw+rH5wQvMuPJMFt6NWvSfBaOKPmUG82nQ== 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)(1800799024)(82310400026)(36860700016)(376014)(10067099003)(56012099006)(11063799006)(18002099003)(22082099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 9gaR+oIuUIzKgNxbxyZVtODwzwRUDv2j6vQ6Vnppq13hSaIm+3HIjjLERXo1Z7YdzBkWRp9JkIGQCm0SmBUs/wtbDMWfC/LHPHNWT+eYSkvbU6Bs2q3/zm9hIuIQdzW85TREhvwKf1kuJsgNGzc2sC+liv1lG0dYflYr5JwnTw8z1RWa8jolnHz+0G2c+TQMUObf80p4PJlaLUG7UvRtjhtjXfYc0tFduCRhtFrTY0yez7OY+ZZTxGXa5zyfHnRuWGUF6YiitJBzJjAg0Mas5lQsDQgF91V8CS6OdcRol/CV6j0p43dro/Q687Ngc+IaKusoGwC140cTWPJ1GvdxROFLNHrSfWJCy/yrrjznwSjGY3BEeseA10sTt5A52W9m9kWDUzNXdKnkT5hGG9wOFyYOMTm7qoekr52uQ7PxXXzvmQP5fVaNbPFqgbe0d24K X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Sep 2026 19:04:10.4606 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 460784e0-48b3-40cd-97b1-08df0f6e4bfd 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: SJ1PEPF000023CE.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS0PR12MB999106 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 Reviewed-by: Mario Limonciello (AMD) --- 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 16:03:01 2026 Received: from CH5PR02CU005.outbound.protection.outlook.com (mail-northcentralusazon11012008.outbound.protection.outlook.com [40.107.200.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 DB1F158F09F; Thu, 10 Sep 2026 19:04:18 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.200.8 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789067060; cv=fail; b=n2PjZduLY8uv5sKiwLwDKlldC+YiCvY5mLpBWoq8xxatQJMUFsPjpL3GV3sqPdAJrT9tXsv5pjJ0NUrIQdlbtP6YfvTnnhITm9pCFeylFBYNDivAJaYMSNruDbXEX65GJa7eLp1nd3gOnpsX41ldokUUGolhnmnjM5kzhkPnv8s= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789067060; c=relaxed/simple; bh=NWmfg8PkXWApSrD/HNGOAmbgIvhW5yLjpA1/mMVGrMs=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=I3WVTCuUgCzidQ23PaR0wW9hJ4XpikZO09rarG5V3bWb8+bdc1I4ZjPVQzhBeB8DkUap8AXDTwwAnZcZWPQmFbjR9SSRrBwSPcJKL/0hLGcjMAVl/j3dc7gOVqq8MVdK3KTAmm6uAR/Z0xxU+gd/FmBzaAAIojERdK+oSq4hyNg= 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=MsdhQ3mz; arc=fail smtp.client-ip=40.107.200.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="MsdhQ3mz" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=XjTTdzbJzQPzqmDStP0u+AYcRUcuKpJtEwvOQmdnVDU9kaHHYY1aYTqzMbu0T2PouVsNM/eS45jagP2zX3YiXUdAodM1f8owJLpHu4GMHJL0xZ9Eq8Z3kGk9kMvhTsC2J7Mb2TE/Vx87Tgxm03X6V0TWDYmmnt6XMImF5zcA6nluEsYWUzClwMsgYfBUquEQ9eK16WDOjZzCgkT+7cEWkEZjbQP52fYDZLnobn9TraGybp9D3SCm8tsi7I7TS1T0T2jEB13386BLRCi2MXl9JQqI/GQP6Bw1nnLFpXawR33L1mHW7gEkrbpymXZ+eiVUGWP39LGIQePrrYzNZpQAWQ== 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=mnN2nU2KdXTDEW2LD6w2/phgp5/QCO2nKjfnAE8kjn2t8yduN8ZWo02nn82oLW4izKx9qwWfGtpA2nZsB5BfoBmZEwZN3ZRoM7+nhQToeskhzduk62EUXMZwdQCYMT83qy2aj6TbDcQ7L24mND91SX61IicAnJnvFSGaEW8EYHPkefGfs6QlXMaL3QhYCDSuaMFBB21yHydM84pcIgnIb2AE+lqWr8xn9wN+RBEGjJk6d0lcmz5fjLoR1hNHSRTrL3kV1uCvGUnOE42FcgbKn+V/G6JFvE29JtYY7MGBxsoC9sqRkPTao3Q+ARSUSAEzFqu24LgfI9kNFQVBDh+U7g== 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=MsdhQ3mz5lLnMIw3T1gBvKWHM5l9Q7ukPfRMzANxTIc6KAGC+EI1oFelG1M9DShYRfTkYuqFb/aG3tM3WHYJs0j9onAEjcrlNSBl0CTBcTq4O3u/QU/0jsO+lgxT2ZuxA079h2YnS0LzCgiuCJuck7lIhkn4EB/syAg3tYwnKq8= Received: from PH8PR22CA0010.namprd22.prod.outlook.com (2603:10b6:510:2d1::14) by SA0PR12MB7479.namprd12.prod.outlook.com (2603:10b6:806:24b::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.406.9; Thu, 10 Sep 2026 19:04:14 +0000 Received: from SJ1PEPF000023CE.namprd02.prod.outlook.com (2603:10b6:510:2d1:cafe::1) by PH8PR22CA0010.outlook.office365.com (2603:10b6:510:2d1::14) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.406.9 via Frontend Transport; Thu, 10 Sep 2026 19:04:14 +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 SJ1PEPF000023CE.mail.protection.outlook.com (10.167.244.10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.406.5 via Frontend Transport; Thu, 10 Sep 2026 19:04:14 +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.46; Thu, 10 Sep 2026 14:04: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.46 via Frontend Transport; Thu, 10 Sep 2026 14:04:05 -0500 From: Vijendar Mukunda To: CC: , , , , , , , , , , "Vijendar Mukunda" Subject: [PATCH 6/8] soundwire: amd: drop amd_deinit_sdw_manager() in POWER_OFF suspend Date: Fri, 11 Sep 2026 00:30:54 +0530 Message-ID: <20260910190240.1604447-7-Vijendar.Mukunda@amd.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20260910190240.1604447-1-Vijendar.Mukunda@amd.com> References: <20260910190240.1604447-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: SJ1PEPF000023CE:EE_|SA0PR12MB7479:EE_ X-MS-Office365-Filtering-Correlation-Id: 43c89353-561e-4f5b-9df8-08df0f6e4e49 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|82310400026|36860700016|1800799024|23010399003|376014|10067099003|6133799003|56012099006|22082099003|18002099003|11063799006; X-Microsoft-Antispam-Message-Info: JGWw1SE3OVx6Jx+5mK/Zua+/7rb6uot6xCCdsm3MNmPtSEdbRagLbYN/EjjrJiNQ3RM5RokxH/mCX37Rb6pE3GZIhhI+YlHAKh6kzkAq44zqDUUjKKwMUKsSzCFDcgjULcjCgQYBSgAaNjcv/oWM8otTkcg2j/aKgqk+5lK6lcID3JI18VUXADTZJgj688ZiOH2X2chgnEIqFJpiFDcO3bQtpVNzgnLPYCREIEg5iqLTzcfjTlreknzDhdyW74PnakzLvOvA2sDl5LBXZiTgq17sJbYu7TjjqhmHN+wSdogQzEPdfTKvCTVWI8vFIDijrEeIAf9AIIJFQf1b1N3tgVw0d55Xdf/7ru7zc5dnX7NEeI/K8LVL9NQeXYCRxjYo1pn/jrHdWPvCpYF3y54GyDjyPXInW9aMlJw8BbLVEbNnIcIczc13dhTgTFEZm6DbKVZsmlYVNbPhP4Fdj+RBco9lm3W3KfeWDCJF7wzlWtaMO3rMLnTe0BrP8d4zmZZHL41EwIMD1N/DGX5zMpSU3YXnZ7dFvrx4egv42ZrB1+lquHPH2Q5Zt1Ge2DzLsmwRBfnaHl7pIrVS3nHo9TPNEcLSoc27OmvgpOu7351DvJW7reAR4GXqAadMP7mI5mKKL+71ijfPZtmUvIZyMPlDDYp6gcrq64s3u+ha6iE53Ff2B8rhiAsVm0se/ua5XJRXZ9nZvNuUpZ2iUuREsCbudQ== 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)(82310400026)(36860700016)(1800799024)(23010399003)(376014)(10067099003)(6133799003)(56012099006)(22082099003)(18002099003)(11063799006);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: ssQNNgJNwLFw1Etzb0edAfDl9/L4ccITVEe3ZB6qI+PnkvJ0Nmvv3q6EWVojB3UylcxerEGtzoyh7+lBB4oqaf+panB5bxzUFOzeW3INUr7QDM5nsH2uaKReWHHbaa8okdlF1oL+9kR8fULeNiM8haRMLuS3JLPH0TS2SSvK8AdIRwmZoDS72GXTMz2k8XWHfb8hqwPRWh8FELKT0yT11v1bOZzqcZ1mcPn8H/NyckhJTFpnLTmYdtNqAs8Hcn06+UHmYhWQEeel5RRbnAudleiH4G/6ROH5XwIi/kei82cymromTEpybUxSLyDLtf/XioslXToIw50WjCECQhvEtYkbPXsDiIYqJHLLElIppqqbVKS062Q9hBUWyJJRDuGViBcvsJ992xFEWsSAV9ir9GSRwu13Rwi8llfq1bHjecrtoFzxGG5bKTIVOkIf/PXZ X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Sep 2026 19:04:14.3170 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 43c89353-561e-4f5b-9df8-08df0f6e4e49 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: SJ1PEPF000023CE.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA0PR12MB7479 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 Reviewed-by: Mario Limonciello (AMD) --- 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 16:03:01 2026 Received: from MW6PR02CU001.outbound.protection.outlook.com (mail-westus2azon11012058.outbound.protection.outlook.com [52.101.48.58]) (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 9469A5947FB; Thu, 10 Sep 2026 19:04:24 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.48.58 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789067066; cv=fail; b=lPJdd7PeeCEs7gK5EcnI6IR+y0zxIZ2AVi6lea8iGQoDrh9B8pb1mIZXSRVpPOuwxmtYd2jcviX6tnNAAR+avzKFBigtuEfnSz6581CF8dwZSKXJ/EXyfdpxTFT/7mkAlYQInseEyF4WfpvBHeELraUqL+fnq4UmU+V62GbY8Tw= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789067066; c=relaxed/simple; bh=8L7gT1lEdGSoOfEDSJdo/baG9xD5jLVvo74uyvVUDxo=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=FvBcgdRXO8EFIFL0hrZOHxr7V5cuv7k8t0LZjrd+KWUO8VCYMel//anoGHHZTflelxKz7La0y2tAb4/g4u7YXjb8jmYQLGYDKPXNjgSVrqUXXMpPQm8rOaQa0N0QKZHXX/n5Yaapg/f1fOyzeFgGLK65jaiMFOFe8QnNIZS7KHY= 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=GOCQ6oJ+; arc=fail smtp.client-ip=52.101.48.58 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="GOCQ6oJ+" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=BBugp5vkPljZes/+FHoZ8MorbAOAHBoAIDSIzypcgrFRCpoTX7/iZoVCtjAU3BwjnBpa7XgZruesYjBofOyj0zdO5EwhaI6Gud68QKe3tviQYhKDvT7moc0ndYGgTTZfqZrulm/vZBEEZFtx626eZs1R2TobfOOtvw3q5DtBT3udm5Y5TJlppFBxY4M3Rg2XYedUwJdzUwzVP9ZOldddknrxcDnjEhZgkv2hS5KtzSNHbOYD3DLv/HXwCLDo6b15d25OGPjlN6ErMjExHNLCbeSbmBwuhoDA3hJZVFWag0xlh9KZrZqmfWSL+B/TzOfwOEmiiRRO7gyo+90Dn2/+wQ== 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=sD4XU6Pe7wMKYFP16Xr7EizdkoFwLZ3nEVOQUuQZe0NnqaMIvkBuSn3KDYrv02P4hcvgdkiZBDgej/oDHm0UVV9fv73tw/HzeTK7gD6KiuQXcFgD/uhH2eaQSsXuSbbNO0Ij7u0pVUKcrvnv6AyVrsEjQ56EeRW+X4rxmceZLwDhFxtCSjV4a6Bs4HBgWQ+iSConfoz6dtHJDUfzjMUBUdR1AeGsuJf4i5nMAHHVLSnYo9zTxVa2gJrsU71BJux+HQ10RKD4ynUf7G13Oyi1EaSzptzK8RJj5w3MUDcwacNei6IdTJE9frA/qPyzk4Cw8cEMEgYYsjgROwevNdmutA== 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=GOCQ6oJ++QJANl5HoOH4qjR9edcFKnlZ8wCVzcZZih7dWRwcr4JMIVIbRwa/bh3Dea7Xl0bTexbjw+886B5x1JAHKflf0Kakmgeygnbq5lIAtnWhg0HSL98uqsudkgYYvcLA/nCmTenj5a78PkA0LlXlUGKuyanfSJA/K/cG0pc= Received: from PH8PR22CA0015.namprd22.prod.outlook.com (2603:10b6:510:2d1::23) by PH8PR12MB7280.namprd12.prod.outlook.com (2603:10b6:510:220::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.406.9; Thu, 10 Sep 2026 19:04:17 +0000 Received: from SJ1PEPF000023CE.namprd02.prod.outlook.com (2603:10b6:510:2d1:cafe::a4) by PH8PR22CA0015.outlook.office365.com (2603:10b6:510:2d1::23) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.406.9 via Frontend Transport; Thu, 10 Sep 2026 19:04:16 +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 SJ1PEPF000023CE.mail.protection.outlook.com (10.167.244.10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.406.5 via Frontend Transport; Thu, 10 Sep 2026 19:04:16 +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.46; Thu, 10 Sep 2026 14:04: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.46 via Frontend Transport; Thu, 10 Sep 2026 14:04:09 -0500 From: Vijendar Mukunda To: CC: , , , , , , , , , , "Vijendar Mukunda" Subject: [PATCH 7/8] soundwire: amd: replace >= ACP70 with explicit switch/case in PM paths Date: Fri, 11 Sep 2026 00:30:55 +0530 Message-ID: <20260910190240.1604447-8-Vijendar.Mukunda@amd.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20260910190240.1604447-1-Vijendar.Mukunda@amd.com> References: <20260910190240.1604447-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: SJ1PEPF000023CE:EE_|PH8PR12MB7280:EE_ X-MS-Office365-Filtering-Correlation-Id: a2cc0973-ff21-4621-4798-08df0f6e4faa X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|1800799024|82310400026|23010399003|36860700016|6133799003|10067099003|5023799004|11063799006|56012099006|22082099003|18002099003; X-Microsoft-Antispam-Message-Info: pRHyT97sQsxFHPHvJ3tUa6SRvmKabnaYK5oNVNzFmTGLImPwpIgZna+Tafi6sJIx9FSwgf1JkNW2qwdS0PpmG9++2v+UtnIYuVKtCbvUL9SQQV31N6oFwXLeTAi/ZAK56ituN9MaLrZryO2QAUPvP6aIUdQg0uJyA7dp7psPCaWMOhywLb+sqGt5FsRoM5RPuTTrO0o6fcTqK1cVeOUHs+qculT2gFqymeaa0ppDoPlIlDo5hElVxUZFuDWtHfGCzmuD8LxZCnkQf+G7QQKSKFDT54W7+g7hJgrVdbK5NR1doYorB3emiMeZHp4M2D4Q+9kSdwMe5rUO2HkU44ZixNiFdqq4rtShqIqtN7FpwCwP5VrcQeAdH4Hj77ulsAlOs9bqeEC7Ubvnwjp6kSi2Qr+GkWYZD0n79rToj2w/O1KDsdA+YMG3Ne/rFY8UmRUCUB8rGkUcDiBh4ZUeSaMVHv84Rsryvez8VfJJKaGsvnM6vNfOsV9WZHvcnRktuFW0ElI2p73X9CiXFRzVDqTNZ6lbuaD0ZKbRdZujk3LYwc+dt4pj/IT4E2cUXiO3+/0W7RxstcOO1aEB7fOU3zfnzFImeXDF1czOd+5BIeKid3w2RrOUX5cREwnC9Ol1gqfeEayRsJuMS9C7qfmRuNtzb39LorZXskLaBEMCF+Xyz5ETDPYeSgdbOejBiPvgOi83fCEfyXWoZNZ5qLZAgzn9SQ== 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)(23010399003)(36860700016)(6133799003)(10067099003)(5023799004)(11063799006)(56012099006)(22082099003)(18002099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: ToYnN2LeXtCM7CBBk1LHKLIT9L8ObX1H4oSau5vQ9bd18FXGpQzqkv0Eqw5PY2bULvKMJ2kO/bAmcecURIn5xhppuKufo6As9BpjV/ZvUXBR84CukP+Ebylo4cc/+qxaCKu8QAFp+BrYCWPvLBPBeiDGh9we+XwOour44Y5c/m8FYJqb6bJlvHLV4dTILHElzNjge5bsva+USBQFMDNKfAdCRZF5N8P0ie0XnrSiBtmisfam6pwY244JQJNW2nnti5yffugyS3Mt7xmzH9hH53fh0g1UcmRluXont9br8RguttoP1PiUJLXvcOszCp7p7DsHc/wgF5fz4SddmzPycDYEdchfPoMWaUZMTb50pe4nLfdS5pnGNJ+QMxFtgRmihlq2X+wQs4afBY/a0M6LVDOsdE2vOUf+ghFp13jdbyZ0BKmHVY61ok/mIGslzhnl X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Sep 2026 19:04:16.6281 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: a2cc0973-ff21-4621-4798-08df0f6e4faa 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: SJ1PEPF000023CE.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH8PR12MB7280 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 Reviewed-by: Mario Limonciello (AMD) --- 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 16:03:01 2026 Received: from SN4PR2101CU001.outbound.protection.outlook.com (mail-southcentralusazon11012002.outbound.protection.outlook.com [40.93.195.2]) (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 0C5C6595729; Thu, 10 Sep 2026 19:04:32 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.93.195.2 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789067075; cv=fail; b=oz2OPgjEJN0DN8IAavKqFFGl9c/GN+2gyGqJlkO9rFb8a8W8ZpEqAPeBGMkML/yG7IGwmE2szKwYo7QgG0rucNbPI8ItpWVEoJxY9MA1anQ0Y0Y0EWrtc4SV4ZbsKtmY7oOiiczK+9OAnoAM8SAg+XmrDyXdXjqMGlFlJlp6J3M= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789067075; c=relaxed/simple; bh=DqashJMrQX49tCkDDmSpfSNfdAdwDr3UHYDIG6k0Dbw=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=rQaxJaX8LBFjGL0/vJk3I/mcJKIX2gBS3UIqmrZPhXIzbu4q0WmDdSJu1BxshHTXmDQWkqnAgz72xoXsVirsUI2JTVibPHSR66vSWcn9hXYNdcJrSD3pWECGpNIJmtl7K6XuCh+zaIagUAvaJdoDKDK2BFj24LQIC9i+s2+29ks= 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=WqDvw3Ba; arc=fail smtp.client-ip=40.93.195.2 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="WqDvw3Ba" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=TKVgUXDLLdwzOIb6aNaGPx4R2z4vr8DcZJ4734oiOzyRo0XWPy7pcoj1z3NnTAF6Pyqrbc7XR9OqlTIiANmQEDB/PUQ4/Ud8PR7Bqx/ttm+tVfLETs6KwkWHtnpfBsL9Fbu1SUHiXrp0lrYjN/BPHK5K9QfsYsQ8nmqXq873mthODwrU0LHUB0/14xOfsFv1VLtJHo06VsYdT8BIB7p3uV0lCMeujSxx9gj/9N3m/d9pS9341WlhcBrKPjhZgjee/xhtNOh9HNPVe27eizIy2mOxIZAu3/pEP6k+/qkZIFoTsmL732sUyyr5puWP4AjFkZXW1o839sA8O8geZ/Nwug== 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=UCavsuU2Q13wb4iiCCCAeXJv9IuSi3XiiutAjg2Ex5x1u05NtQ+C4H3+xwGJKAUHggpUCnXpb2R1dg8Rtd59LhB35Se1/5+Ul7vwnv90CsFBduKs44LutP4+KInOJVyr1JFxd1Dx7wYK1W6qCVsMT09hqNYe+vA6/5eDh//XHh5yQ3gCudrRSQmHjakB20hzBUAtXcjtETlBufXB/PBUJssAyVRkm0g4cQDJy0Sm8VoYo/fqqKrKA8sGW1VZC8NxJaBATjDSHFyU80DIJ5CmwQuFGKSB56isHiifUNRhXhiCtRIwbdLY0oqGfyhqLCTHfCtxqWG5XDo7Ax0on2xb7w== 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=WqDvw3BaMlepCJrYL2SfIl161C6nhRtIv6L5doZTxYFe2yiGf2tN2+/1esoa9YE9Zk7yP1flvaRxgFLZyujeK+ApYuzPzd2VpgzscMj9mUzjsr2pj/Kw+4J3EGBBPCIq6cEtKpR+MuQzcVo1MXi5uQ3oPu5fnZJ7/7Iz3Dq24+E= Received: from MW4PR04CA0356.namprd04.prod.outlook.com (2603:10b6:303:8a::31) by BL3PR12MB6594.namprd12.prod.outlook.com (2603:10b6:208:38d::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.406.9; Thu, 10 Sep 2026 19:04:23 +0000 Received: from CO1PEPF00012E81.namprd03.prod.outlook.com (2603:10b6:303:8a:cafe::1a) by MW4PR04CA0356.outlook.office365.com (2603:10b6:303:8a::31) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.406.8 via Frontend Transport; Thu, 10 Sep 2026 19:04:23 +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 CO1PEPF00012E81.mail.protection.outlook.com (10.167.249.56) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.406.5 via Frontend Transport; Thu, 10 Sep 2026 19:04:23 +0000 Received: from satlexmb10.amd.com (10.181.42.219) 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.46; Thu, 10 Sep 2026 14:04:16 -0500 Received: from satlexmb07.amd.com (10.181.42.216) by satlexmb10.amd.com (10.181.42.219) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.46; Thu, 10 Sep 2026 14:04: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.46 via Frontend Transport; Thu, 10 Sep 2026 14:04:12 -0500 From: Vijendar Mukunda To: CC: , , , , , , , , , , "Vijendar Mukunda" Subject: [PATCH 8/8] soundwire: amd: fix interrupt gate and work drain ordering in PM ops Date: Fri, 11 Sep 2026 00:30:56 +0530 Message-ID: <20260910190240.1604447-9-Vijendar.Mukunda@amd.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20260910190240.1604447-1-Vijendar.Mukunda@amd.com> References: <20260910190240.1604447-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: CO1PEPF00012E81:EE_|BL3PR12MB6594:EE_ X-MS-Office365-Filtering-Correlation-Id: 66e5f49b-4440-445c-fc32-08df0f6e5387 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|23010399003|82310400026|1800799024|36860700016|376014|22082099003|18002099003|10067099003|56012099006|11063799006; X-Microsoft-Antispam-Message-Info: NZ3+g6BoJqnAwj3aXrBlnVgw9E0UARGB2SkBbwANzv/9VJ0DdDLEMQLKV0SqkkxKaR3zXml4wJBzeVHyyFr2/7pOI3tFQheIPp4z4GddGAKz2dGNysSwuBfdcC1zy6Joz/ect42/CARZIrVBk0zmvAGMgN5tKCFwbDOonQ6v2PenziRm8HQQSigU0aoeNzvJcyLc66uAnrx/4AIXbFweTVD3ksdSopS1b/RU5Y7JFLtyGQdBXIpu3wyiZOVuuZmOlzQWzAWcPEq1/V2YN6GmePd1HuifhaG447lv6uRPAcAw/esxR1Zy7Hl/t8ygbHWpvXues9V13dJr12Zht+ydV8902rWEBIRoESKIhO1PUrKrRa1AWnleY2HMALTxF5hRKz3NLmWRZW6heQ+w3NF4hr4AOfrwUfQZ/qi3JIBRwsMjvdprjYLWdeeBgy9qL/nM76+b2+sd+7Kek+PnYSMNMtduECHtN0veRoZwEOVNFK8bfQ5WZ/CMh28xhdQaSFzTyZuVyNLt1lvbxwlKoR0rUa4e12aZu9Zk7+UgbWXgctzU824fA3ksKzx5ouvxU7krqzyI93g2bhcvSsXgxRiwdsYIXeDoTaYk0nxIMOEGVn+Wez818G1grBaThI4mvcOkhuIuKw4D0aouH4qk0SJ73pqx6GNHK5WwJYcecLC27/5GWpyTgrj/YXaOIpq61sF3Z6t+dg+3c75Whq9jBkTI0A== 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)(23010399003)(82310400026)(1800799024)(36860700016)(376014)(22082099003)(18002099003)(10067099003)(56012099006)(11063799006);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: cFP5M0OksH9Jrn+y/0Xn854kQQ29y2b0Rqq/sV+TUiQk6PZCODUzt3NkJWmcOhiUQyQ3gcOwl94cjqRZjR0g0Y//VvmjWwFv7C+Ngqfql1+aD7leUr/n+lVP1TcLz0fi+62KgBTttH/IRkAFckjhJZ/E3DR+EhScBwBsR3XveA+kjOoYoN0Dxy1CmQhS/9svkC6wz3pHnlww1AUz5OCC4qIAFkCEjlLqr9Hw37ID928Uk/sDfvK/KGBm3onGnCdfe+8eYxU1aCkGPcYZ2X19gTsGGXKwBgSItZWA9ssJg6T6f+GjKdny1zm6hCy4VJCjRxRdBVWymQKq1sos8ospctS9C9hWg8AnIq0rn59MRDr13vYmxxfEC+YPT3FT0fc4hTORpk8DrtgLbhWHNBpwtBntbuQUvlGQUqSQbVMc9qeZJQB7BdiH/ScHZD4eKMxU X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Sep 2026 19:04:23.0838 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 66e5f49b-4440-445c-fc32-08df0f6e5387 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: CO1PEPF00012E81.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BL3PR12MB6594 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 Reviewed-by: Mario Limonciello (AMD) --- 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