From nobody Sat Jul 25 04:30:38 2026 Received: from PH8PR06CU001.outbound.protection.outlook.com (mail-westus3azon11012010.outbound.protection.outlook.com [40.107.209.10]) (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 8508E230BDB for ; Sat, 18 Jul 2026 08:34:21 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.209.10 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784363663; cv=fail; b=n8s9J8Iv49wac0OpFiiNIl7EUZ0s+2JQFSTlfJ8+W/dMVBgGaAp6tercqEc3yNzLqIpLXjgp2GZf+3NICfk3zw/mu3CaJHoYpwloD261Tz+GH0Tm0ciWo8AXc0SWWk+k5PbUNZh8VFyKcq35r4xhDXfFiYPJUUTIqWxRE2O1bAQ= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784363663; c=relaxed/simple; bh=EtlVzSI368pgicPtmjRrPYUixQE4IItIDMJzCf7/x/Q=; h=From:To:CC:Subject:Date:Message-ID:MIME-Version:Content-Type; b=oFphu9wyZH+R8s7kBuB4tHVtoi69hUBFjB183sxtn0/4eqWE5y+4dVPz1uRHLiwiX1oPzn3Tohpt7Y2bqLtYI8DkAN0zasFbAt/O+eIDzo+cJtbtb71h5qR9j8D5D4nDjwC0gjqLgUCp7oxad8Tz/jBYv2c4SFfYU45Br2AYPVw= 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=Xp+UdVTA; arc=fail smtp.client-ip=40.107.209.10 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="Xp+UdVTA" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=V0HFC40xp5eMYbCAybSUMfL3js+vV7AcuIUJq15AbRX89I1zutZ5vbU8OrDmsfQXplZ1jJM4z9zhzf4swTc+saO1s0puE7ftWgZno99kPszAFUsYZMug9SzWEej/aTnqk8xzSvRXAeosaBnV/MxD9+WLRanmol+s1B3FAP5JuigEshNek3w3V+c4b3+B34RA7F1f8ofvP0nPMAQgt1QtNV8auO83QywjUbP4e/BrHXzglrZt0qJ2533UYoRkK0HHP3xR1TxZ/R5yKGQR3wLtqn1IstBPBW8IsOpVX73mklBDqgsWF73qo3IBSg4mOOaN6o8hf1mQQJr9b+srPpg3jg== 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=3PhWs2P6pJr/77H1sxasyiqgZi0EP35tNo95JsQM9ak=; b=CqExH+5HeRvT7CIiMiKGzoU7lSTxbppK48IBCDjqn5RdHfBZqqbAx5wV65nsxOh6MCSIotr4D6MgHugwHnGyyj4IsCG8hMCQaQFDkxfzXEQK60gmHeb7Zq1coqo458NXhnGTjkHUT8Oq8TQqugiKbaEwe98oe5gzZEN6BEZ0gLht0LSmugWCMbSINi98RmzH/kqpiLTsVPgl1XjxS8I5BAUOYJIoIM2XyL2ETZR5qSz/0lm7w0a/D+cO5FaRnGjHoBb1HpR5MDLAZoRDeU2PgcDcgEzN6e8twFVvM9maXite794cnzVQvse+uzYweC9cr9fqAu6TU9qhOUKbhHIFdA== 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=3PhWs2P6pJr/77H1sxasyiqgZi0EP35tNo95JsQM9ak=; b=Xp+UdVTArMFUNLDvxDJRd1YcZ9SsmjZsF8vm7eizJdI1v07sC/U6vnxt1b1EzMWz3Sh7bQJ/ulWB8zHY0ILieIegVNCy+VA1+ZtMmV7443pVhnI5VrGdbhn6PH6nmZp7vWcFDUg98PkfgyMDWY9/97zv+ssYKaWRTi99r0RHKCE= Received: from BN9PR03CA0761.namprd03.prod.outlook.com (2603:10b6:408:13a::16) by MW4PR12MB6850.namprd12.prod.outlook.com (2603:10b6:303:1ed::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.223.12; Sat, 18 Jul 2026 08:34:17 +0000 Received: from BN2PEPF000044A6.namprd04.prod.outlook.com (2603:10b6:408:13a:cafe::90) by BN9PR03CA0761.outlook.office365.com (2603:10b6:408:13a::16) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.223.14 via Frontend Transport; Sat, 18 Jul 2026 08:34:17 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=satlexmb08.amd.com; pr=C Received: from satlexmb08.amd.com (165.204.84.17) by BN2PEPF000044A6.mail.protection.outlook.com (10.167.243.100) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.245.5 via Frontend Transport; Sat, 18 Jul 2026 08:34:17 +0000 Received: from satlexmb08.amd.com (10.181.42.217) 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.41; Sat, 18 Jul 2026 03:34:16 -0500 Received: from xsjlizhih51.xilinx.com (10.180.168.240) by satlexmb08.amd.com (10.181.42.217) with Microsoft SMTP Server id 15.2.2562.41 via Frontend Transport; Sat, 18 Jul 2026 03:34:16 -0500 From: Lizhi Hou To: , , , , CC: Wendy Liang , , , , Lizhi Hou Subject: [PATCH V1] accel/amdxdna: Fix command timeout race Date: Sat, 18 Jul 2026 01:34:09 -0700 Message-ID: <20260718083409.1825940-1-lizhi.hou@amd.com> X-Mailer: git-send-email 2.34.1 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: BN2PEPF000044A6:EE_|MW4PR12MB6850:EE_ X-MS-Office365-Filtering-Correlation-Id: eb88578a-1e54-4ab7-bc24-08dee4a75b00 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|36860700016|1800799024|23010399003|82310400026|11063799006|56012099006|3023799007|10067099003|18002099003; X-Microsoft-Antispam-Message-Info: jwSFPN3Rn2ouy3psEb8VRN1x1Z+LTETKoijP/XKuoQsVZPtfcwQImitwyMl10DRXwAFqMM31nOzagQpCWTqwkvBxrSCpoe0EdJ65Ec/NPHyVzhJbPCJ8NctqEmvRfpZjJaYxOh/IgysdvFrz5Eyh5nPVM4e+q2Fxjpfod8kt+xI+QO3HCZL+806njV0a77YbV51xEplvRf4X6YlAeX/8sHHEzSMU+yzl4apbbSR7OXtFEQNPs7RB2czK2i0UePQcAU853rGbO3DREvvoR+f1h9J32nF8wFttm3SD9Ii4lyHCm6X5SnncK5LinCgbl+z1aUAVLDfSFd59BKC5zAPMS9XKCPhqY5EG98+nEpz5W1/xnkk6QbAknMsj3zPLvPbg2uz/Qsnhxl1ceLNeXuX3Y4sTgr2CU2HyyjCKdkS0elxlZQqSR+cWfUEuhjLPe7PMHoFkUgQN0vDrV0lEJcm6oNdeaeuVshxV0SOdT72CJaMhsRRoUrgH0m8+OBmgAvpzX6VPER5pu+01y1At99hT0aZbgG0ZefH5D+uwU1fXEsTPrqhXpZsBbeyf3ewLOHdIQejCJfT06jfvbf+sErVJVv89NnVm/hRPvEDw1ba57tN6eS4pasQzj+h3md3kDcrJ9NY/ZZu6UFry6CAReoiWJgy2fXy3SkhEx3e8+RrpoHEETYWiWNCXLM+1eW52NEM7IIgXEVcPuF6ZkaAX/1f08w== 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)(376014)(36860700016)(1800799024)(23010399003)(82310400026)(11063799006)(56012099006)(3023799007)(10067099003)(18002099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: G7tB3TEZ275i9Ll1pvIZx3gxcTpn/AIUWSmyvV6bo38GwTomcAiUXzwA4Mi6fIxhWzAd+APABZtsO+htwGemwTlaoP5a7h2JVfceHO2cOH1uFzw6yEp3FbUo//ejowMRYIogONe2FY6mqMEluvjs5uGY8Dj3edGauMpn3ui6l1QeAYRkdcatwhK61CeA7sVIUOJcy1RR1fHwg81aZjX4/BRTdHtjzcnRWujTqPmZcl9bGZP3fMfWYlc4crgiRj/weiiP7jz+qZ+JIxgZQFfAIgVZUXjcEQl1XufLqsb5X2Ig5K2lX2TKW/rNAuW5IPYXsAdpKPsI9e3nBe+TUi9MFWVbJBj/P43RiQiWTSweLZ7fkM8jmn6nbE9QmdVsc7jxr9fRxsoQWQENtuoKzI6Lw3gINtghHRnt7odIFsDJCI7FTnCEdRdPCv5X/qrdCS3v X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 Jul 2026 08:34:17.0244 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: eb88578a-1e54-4ab7-bc24-08dee4a75b00 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: BN2PEPF000044A6.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW4PR12MB6850 Content-Type: text/plain; charset="utf-8" From: Wendy Liang When two commands enter aie2_sched_job_timedout() concurrently, both check the timeout detection state. The first scheduler thread observes tdr_status as SIGNALED and updates it to WAIT. The second thread then observes the updated state instead of the original SIGNALED state, which may cause the command timeout to be handled incorrectly. Replace tdr_status with last_signal_ts, which records the timestamp of the last driver signal. Timeout detection now only reads last_signal_ts and never modifies it, allowing multiple serialized detect() calls under dev_lock to evaluate the same signal timestamp independently. If there is not any new job scheduled or completed within tdr_timeout_ms, the command will timeout. Fixes: 9022f010977f ("accel/amdxdna: Check for device hang on job timeout") Signed-off-by: Wendy Liang Signed-off-by: Lizhi Hou Reviewed-by: Max Zhen --- drivers/accel/amdxdna/aie2_ctx.c | 22 +++++++++++++++------- drivers/accel/amdxdna/aie2_pci.c | 1 + drivers/accel/amdxdna/aie2_pci.h | 7 +------ 3 files changed, 17 insertions(+), 13 deletions(-) diff --git a/drivers/accel/amdxdna/aie2_ctx.c b/drivers/accel/amdxdna/aie2_= ctx.c index 101f324ee178..94dfee7263bd 100644 --- a/drivers/accel/amdxdna/aie2_ctx.c +++ b/drivers/accel/amdxdna/aie2_ctx.c @@ -43,20 +43,22 @@ struct aie2_ctx_health { =20 static inline void aie2_tdr_signal(struct amdxdna_dev *xdna) { - WRITE_ONCE(xdna->dev_handle->tdr_status, AIE2_TDR_SIGNALED); + WRITE_ONCE(xdna->dev_handle->last_signal_ts, jiffies); } =20 static bool aie2_tdr_detect(struct amdxdna_dev *xdna) { struct amdxdna_dev_hdl *ndev =3D xdna->dev_handle; + unsigned long last =3D READ_ONCE(ndev->last_signal_ts); =20 - if (READ_ONCE(ndev->tdr_status) =3D=3D AIE2_TDR_WAIT) { - XDNA_ERR(xdna, "TDR timeout detected"); - return true; - } + if (!tdr_timeout_ms) + return false; + + if (!time_after(jiffies, last + msecs_to_jiffies(tdr_timeout_ms))) + return false; =20 - WRITE_ONCE(ndev->tdr_status, AIE2_TDR_WAIT); - return false; + XDNA_ERR(xdna, "TDR timeout detected"); + return true; } =20 static void aie2_cmd_release(struct kref *ref) @@ -434,6 +436,12 @@ aie2_sched_job_run(struct drm_sched_job *sched_job) mmput(job->mm); fence =3D ERR_PTR(ret); } else { + /* + * Command is successfully posted to hardware, update the + * tdr timestamp. The total pending commands are limited. + * So there will not be a case that driver keeps posting + * commands without getting any hardware respond. + */ aie2_tdr_signal(hwctx->client->xdna); } trace_xdna_job(sched_job, hwctx->name, "sent to device", diff --git a/drivers/accel/amdxdna/aie2_pci.c b/drivers/accel/amdxdna/aie2_= pci.c index 22f66c7f534d..daec1f6b4907 100644 --- a/drivers/accel/amdxdna/aie2_pci.c +++ b/drivers/accel/amdxdna/aie2_pci.c @@ -420,6 +420,7 @@ static int aie2_hw_start(struct amdxdna_dev *xdna) goto stop_fw; } =20 + WRITE_ONCE(ndev->last_signal_ts, jiffies); ndev->dev_status =3D AIE2_DEV_START; =20 return 0; diff --git a/drivers/accel/amdxdna/aie2_pci.h b/drivers/accel/amdxdna/aie2_= pci.h index 77648cc548b6..ea1dac106400 100644 --- a/drivers/accel/amdxdna/aie2_pci.h +++ b/drivers/accel/amdxdna/aie2_pci.h @@ -143,11 +143,6 @@ struct aie2_exec_msg_ops { u32 (*get_chain_msg_op)(u32 cmd_op); }; =20 -enum aie2_tdr_status { - AIE2_TDR_WAIT, - AIE2_TDR_SIGNALED, -}; - struct amdxdna_dev_hdl { struct aie_device aie; const struct amdxdna_dev_priv *priv; @@ -179,7 +174,7 @@ struct amdxdna_dev_hdl { u32 hwctx_num; =20 struct amdxdna_async_error last_async_err; - enum aie2_tdr_status tdr_status; + unsigned long last_signal_ts; }; =20 struct aie2_hw_ops { --=20 2.34.1