From nobody Sat May 30 12:36:05 2026 Received: from BN1PR04CU002.outbound.protection.outlook.com (mail-eastus2azon11010052.outbound.protection.outlook.com [52.101.56.52]) (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 159E636074F for ; Fri, 8 May 2026 06:50:44 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.56.52 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778223047; cv=fail; b=s1kiEZFFmje5YBuP8lCdyQvGZ/D3Cka3vusrq3aFlDA7aNTthiqgrwvjvccuToI4QVPbk+VSvoto8csaGkkgAEBu+vaJCcJxY/kGj5rF0AA0AfaZHLy44pKSLZzhDN3Yjka/09F2VB1FX8qF++h3kXyPB6ORRn8bW6H9e5MrlyU= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778223047; c=relaxed/simple; bh=b4i7TxKULCA3cF+oC0sqeFuremazNNgisHR9yNlyJs0=; h=From:To:Cc:Subject:Date:Message-ID:Content-Type:MIME-Version; b=Sck+v3Y6Udh+xDZ4yPYh+jcepYfV51X2/bBCZHt0RFz2jxe20I8n4OGCFmVOLaCywFjqrWlwiE6PalkW/dFW/chtF1tdBBQU3BiUtv3GQFUPN5GQJZ+94NbtG071qsjiH6v/j9M/vDN3xuZrVdRf4xlO7u7DYA2Xy/1SlxQcZnk= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=altera.com; spf=pass smtp.mailfrom=altera.com; dkim=pass (2048-bit key) header.d=altera.com header.i=@altera.com header.b=G236duRr; arc=fail smtp.client-ip=52.101.56.52 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=altera.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=altera.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=altera.com header.i=@altera.com header.b="G236duRr" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=QR8LJAoEiJ40uUWooBbmaqi34FrOyFi+Ow8cLyUi5aPKl3U9mn6MyNF2lp3nSyHHGrRSu7t8dcczYjEzZG6rdRmH/Ewoc0m8LJ2zHX2/6gR3Q0upCIF2YHTCqF3GWNYuh5vGDb96e4tByN8jJE4Uggvv1AfrNqO891fGUA1evFMfOD5u5svystEabyItfMlV8/gBNMCC8ke6mOVa6M6BhyEXM6RZyg2zpLsGVxOq4PfnmoS10Q1VS3XEFc2K2CLavrmAIWflcosoecSrLybqyBUCe//qGmu/2sOFtrF4GUJZ1kKG59s3eCHlaGKaINYO09D6LMr9sFhYKGBZXNljBQ== 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=bhRj02FaAlb/FBOrJPacEcuc2CRP6P9Yr/apA/6IyX4=; b=xkTZtW9d2RadjV/lfxEjxdz9TKXXbJz3GlLhJj0eA8NldFoX7PNSDqv5RgY7ZK/M8mH/MtaUOMEnZnlak/Fxb2facq1raN5fgjDFSiQIZFSbo/hyNh+hhvFD43ucT8bDAy+KDYmLxuGrkdWQxYCBqNKKsoLYdOV5FamX+qsFLql544eGlNDoCB+dy8Wkyp5S/BTkyJuwdrbJ9AczneWySnYS2v5UMBlNxeURKMuOjtZ5BEz1dyHZP1HvejEMhHeDEhu8mKE8KWg6sIjBrgobW+ywmuhK3u1D8mRcJ3LK1M1Ij//wrVS15OoUwG2khTkNk1/PEp5J1nyHu9Ucdo35ow== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=altera.com; dmarc=pass action=none header.from=altera.com; dkim=pass header.d=altera.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=altera.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=bhRj02FaAlb/FBOrJPacEcuc2CRP6P9Yr/apA/6IyX4=; b=G236duRrU0vPgsQj+EFTci/B5K1Guqhd+O0C39+3PP5OdaYBQPHVvGBZ7M8+zco1m2N8v8sTm214SLKIzr5X2FWExOYOMFkGXJD8sm3HeHCNJqqx8ahwbc9taZxn2FbYOuuYJY8D1uHkWGblOlmqcaojcRQkRDnOPxOit55JE1wZOouNrIvr7+z5fglu0Y3SnyM6so6cOqJtRMZMZ9OZFOqQssUzInWwz0Q5IjoTxjEhN90k9R2+kBiTfdswl0UTAEPBftaqzELX9mCWDi1uXsaUvm/zzKZzkUrkXeMCM892pq8nQQxVBagsweEjZoiMT+qq7fJeg/fTdoGduDuR9w== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=altera.com; Received: from SJ0PR03MB5950.namprd03.prod.outlook.com (2603:10b6:a03:2d3::20) by DM6PR03MB5100.namprd03.prod.outlook.com (2603:10b6:5:1e1::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9891.19; Fri, 8 May 2026 06:50:41 +0000 Received: from SJ0PR03MB5950.namprd03.prod.outlook.com ([fe80::53a0:bf93:6b6b:de01]) by SJ0PR03MB5950.namprd03.prod.outlook.com ([fe80::53a0:bf93:6b6b:de01%4]) with mapi id 15.20.9891.019; Fri, 8 May 2026 06:50:41 +0000 From: tze.yee.ng@altera.com To: Dinh Nguyen , linux-kernel@vger.kernel.org Cc: Adrian Ng Ho Yin , Nazim Amirul , Tze Yee Ng Subject: [PATCH v2] firmware: stratix10-rsu: avoid blocking reboot_image sysfs when RSU is busy Date: Thu, 7 May 2026 23:50:38 -0700 Message-ID: X-Mailer: git-send-email 2.43.7 Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: BYAPR11CA0098.namprd11.prod.outlook.com (2603:10b6:a03:f4::39) To SJ0PR03MB5950.namprd03.prod.outlook.com (2603:10b6:a03:2d3::20) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ0PR03MB5950:EE_|DM6PR03MB5100:EE_ X-MS-Office365-Filtering-Correlation-Id: c97d2660-b449-4630-def7-08deacce1ea3 X-MS-Exchange-AtpMessageProperties: SA X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|376014|1800799024|18002099003|55112099003|56012099003; X-Microsoft-Antispam-Message-Info: xaqvEWbNoobGrUeb7+y1xKM+bIYg+2OMYN0RH7fIaN6Fv5rQUF/1jGLAxdlkgKnvS7vQduYAu5Lmz7+EqkNijmh2TdFR2bkNjfWdXYzu6AnPUdSyC6wEbLwvHZ1gBjOemOBe7FT0Lf9xCKlB+YdMJ8W8ShumS/EJ6uZkQ+3ze1+vL2V1xz9MG6FQqibbnuVO0V/PNL6rc5j0+6POHXSNoXkEwSMDArRuj360UNYVGYQFF+IV6X4XGlRK2hKNk9kilWLVGpMNksQxkiL4gjC5KIxmqfkf7pZlHcQsbGX3Niobj8cOCQQvSQc0BrcD+VTjOQaUWBk1afZ8Sa2EKe+zaE7A/3SaiNqf057HT0zcgyApyPgpUVpaP9MEve11TSC/XWZDse9x9X/22hrosyBIyKQ7GlkX9RcB21vWpMdYShe6F3g0LIDzhgR3R2kBnlmQHl6JZHe8EmZIK7+7LH4ZFInBSC8TPool68o5HuXh3PTULE8bQyaR937daM7RULbj47/QrM0il55qNSoU+JSG4CAAcm9cKhARoHcX1hWo3UjRcoKg4E8nJPu+CXz4iMz4XOAkCA1oRntuQDxa+kD5vEV+PsjaKVPNk59vnUgn71zO1yXGkIKTVs3+hCSEzqgHSZS7+yut1m1v16IF4u7s7hvpm5+gjwy2l2/RRITIY5Wb2kLJz2UHNTwEuDAd6fgZ X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SJ0PR03MB5950.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(376014)(1800799024)(18002099003)(55112099003)(56012099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?uJ6k3t7ZN/sb6+ZP+8UgTfdwt0+0PEtGI51xfurzMu8wOGCB/l/I1g/RJjcl?= =?us-ascii?Q?PYjJpTjsD65uwu5Om/PnfP0oNW2CgFCN9WdxiUD2X6Izxq0KNDYvlr5Wuby6?= =?us-ascii?Q?NiuMrzWrwXO7JJxu2y7dwjEbBXVe8i/3QIv1/Okw8lRWZoYhlXI00Oi0O/o/?= =?us-ascii?Q?/0/542+wqXYKJu3jI0Oze8EORIqb55JgwOyCykff+OQGviwfV2IN4vCmAvzD?= =?us-ascii?Q?gpiYEbChmJ+lLO+HUhd6rurX8msTmoON73dQXhcENJs8xdISB99gVDYHbXOF?= =?us-ascii?Q?j8EbXHDBNy22/PdfiBD+iQC2ewdf91MY6ZfHkeV9fdJ8rpa7BnhSsQQ+jS3t?= =?us-ascii?Q?Ynn3ZU71P0l2o4sTpKKLGKyXONmfDpEvjua6Voi+TLWgxuK6fTPm/Ty7PbRI?= =?us-ascii?Q?zvAGP2+OeqXxYLRTpM2oTzQk6A9p2f6KstxYQmir8iwCKEQoRu9RMZ80aULT?= =?us-ascii?Q?Ub27qfMl0wAbv54STVk5527Ue3Uj7dTthraACqdfcw+pNdMQc5i18u/51ENw?= =?us-ascii?Q?xVoq0VpO2zRSHma1LRp9n6HWNZrk/g3BYwS3EAovi8k/Tqey2JPIiUNYKtIg?= =?us-ascii?Q?QnI7d9nUEoRXWm9KBhbTB5sZZ7t0++pLS0s2rsriDOut5AdO8+W/Mj4PxNRH?= =?us-ascii?Q?2jJTwvLhq4xLw8L0SKZEmQMX/QbETZn2RLIo3lE0w61toOvOHppdPodc0zMP?= =?us-ascii?Q?/zUHNuOjFsSOLNYDJpgiXXeCeKfdQd4ghEXveKoqemMhHsDfrlf4tqqVmK4U?= =?us-ascii?Q?jcC4CNZ8FakZjBMYCwAo/htuVZEtSoOHb0wasDn8X9MXNcUbpkok2l2+5BZS?= =?us-ascii?Q?oElR3gtsD8yNZexuAzIl5NAshSUoYfPn6jznLOL+k4jA/+2DfgyvVZ4TQc5/?= =?us-ascii?Q?dEcAgzIrhISlZV5vb9j3Gy65jq/6RKTugKbQM2eFacUHGYdIAuvZF7yOIr10?= =?us-ascii?Q?pA+MIiI7yzqpe2+5a9+rWT9iEk7uMBauxfeIt4E1Y3cz5SOgHNmV3IAFI9nu?= =?us-ascii?Q?JEDpLn5JCSGqsgNqeXnDX3wFpdQC5QmY4kaHa9anaODu6vIGDjYYH7QJFCcz?= =?us-ascii?Q?DjUHYTayeGzbjvE1HoDvnwveF8KnVroQbrAfJkmzs+9ro+hDA6ihBaD/ooWy?= =?us-ascii?Q?DlIFRzSWFxNjm5dyBS9TNaBKNLupzcVvAzC1Pj48b8Kwz+J9VHH18D+/RvJq?= =?us-ascii?Q?iX2Vs4X8QYqBpFoJxMy1t07WNzcg3sWSG4j7H1DxMUM/aSwpkGMWK06XEHCb?= =?us-ascii?Q?VB3q2zJu0C0m6QFsqIQiMvoMjZtUVkU+WI1dq9eloIqE5mfRK6DXn0syG2Gi?= =?us-ascii?Q?sY9ZX6OPDAKcRm1IL0DNcD3hNWOIruy6w0FkabE+pGAjJ/TAAKXysBB+oLUN?= =?us-ascii?Q?xQPoWIiUVdcn76Mt2gdIvlmUZtEIL7ZqJ4MTB4bfmdx8lPm0t1M95iiVlVq7?= =?us-ascii?Q?l5jueHfpuH2jKeKLGsYM1Bs6W2dTQeb/A/gHiJHzE4RC9VwuKOoBnEGlOZ/Y?= =?us-ascii?Q?cr7qPr8X/kY20UJ4LPmRC9ManrnGWwCDZAQs3DD7V3iWCyqXN6h6Nc7S4ks6?= =?us-ascii?Q?+X36EGQEZ/18HrtTGbDCb9vS1Q47EKzI964zr7JDUpfGVKrBi1JsTAv+Glo0?= =?us-ascii?Q?HQAOjBy3fRSmiwH/vDartXa+pzl9DrXrTJ3qxxKsHxjgTzDfvc5S/WAtFl0m?= =?us-ascii?Q?pKng7a99cxG+pqpN0GdvD87e82Oe321fgAqgcKv1n991DbGvbrOwewWgKk7W?= =?us-ascii?Q?9vZdQ3gp9A=3D=3D?= X-OriginatorOrg: altera.com X-MS-Exchange-CrossTenant-Network-Message-Id: c97d2660-b449-4630-def7-08deacce1ea3 X-MS-Exchange-CrossTenant-AuthSource: SJ0PR03MB5950.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 May 2026 06:50:41.3018 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: fbd72e03-d4a5-4110-adce-614d51f2077a X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: vvSoW03Qb8djmbpn34vXABKmvE8wv19VhgZC0E53FWKx0iX4xfwchZe0+KitlMGthbUOMxMh7cgzNE7LvnkpXw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR03MB5100 Content-Type: text/plain; charset="utf-8" From: Tze Yee Ng If an RSU transaction does not finish as expected, the driver can hold priv->lock for a long time (or until timeout). Other sysfs writes block on mutex_lock() and hung. Use mutex_trylock() in rsu_send_msg() and fail fast with -EAGAIN when the mutex is busy so reboot_image_store() does not sleep waiting for a stuck peer. This addresses blocking when unexpected behavior happens during an RSU transaction. Signed-off-by: Tze Yee Ng --- Changes in v2: - Reword subject and commit message to focus on reboot_image sysfs blocking when an RSU transaction does not complete as expected, instead of lock deadlock/recursion framing. - Keep the rsu_send_msg() fail-fast change: use mutex_trylock() and return -EAGAIN when priv->lock is busy. - Drop the reboot_image_store() special-case no-op success on -EAGAIN from = v1. --- drivers/firmware/stratix10-rsu.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/drivers/firmware/stratix10-rsu.c b/drivers/firmware/stratix10-= rsu.c index e1912108a0fe..15148318aa47 100644 --- a/drivers/firmware/stratix10-rsu.c +++ b/drivers/firmware/stratix10-rsu.c @@ -254,7 +254,13 @@ static void rsu_async_get_spt_table_callback(struct de= vice *dev, * is necessary to get RSU boot log or set the address of bitstream to * boot after reboot. * - * Returns 0 on success or -ETIMEDOUT on error. + * Return: + * * 0 on success + * * -EAGAIN if the driver mutex could not be acquired + * * a negative errno from stratix10_svc_send() on failure to send the req= uest + * * -ETIMEDOUT if waiting for the SMC callback times out + * * a negative errno from wait_for_completion_interruptible_timeout() if + * interrupted or otherwise signaled while waiting (for example -ERESTAR= TSYS) */ static int rsu_send_msg(struct stratix10_rsu_priv *priv, enum stratix10_svc_command_code command, @@ -264,7 +270,8 @@ static int rsu_send_msg(struct stratix10_rsu_priv *priv, struct stratix10_svc_client_msg msg; int ret; =20 - mutex_lock(&priv->lock); + if (!mutex_trylock(&priv->lock)) + return -EAGAIN; reinit_completion(&priv->completion); priv->client.receive_cb =3D callback; =20 --=20 2.43.7