From nobody Thu Apr 9 12:08:15 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (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 000B6274B39; Mon, 9 Mar 2026 06:58:40 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773039521; cv=none; b=RtkkIlM+d/Ugu9YBd7p0BDoamgopub3/r7qrqfEI334nRUxF21APrSlwTvAGW1qZh04z8aZZV3Pro0a4xLrAyoauE5hE81aRnGYx6E0vg4uezasNdBS+4gjUmAjZPVILiX+g+uh31p6ztdemAQG6TTjXOg1xJxKgXein0TISUA4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773039521; c=relaxed/simple; bh=9ifWUGUuqbMEA3nM68bJhc8gfZIk88yslqLcdB+vYiY=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Wu87tv8CJXIsAMfY2gipg1V0Z8ahBTKVHQhs/rWB7bEPu2vrg7noTwGpu+ZNeJHPnZtKGetiUbQ9qXgauh1iMbeauvwYSFbk27G3iH/j3dajWf+5UUkfTBstzNDoZhr2JaaWQ1ivpplvV4N9zEaKQPIJdKOTbI3MM1UEu83qKNA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=DAKpMcmc; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="DAKpMcmc" Received: by smtp.kernel.org (Postfix) with ESMTPS id A4D58C2BC87; Mon, 9 Mar 2026 06:58:40 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1773039520; bh=9ifWUGUuqbMEA3nM68bJhc8gfZIk88yslqLcdB+vYiY=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=DAKpMcmcA9TLNb/vBZq7oZbl6TzD+0cNcN98DcLgXlRSQE+tFTsmJKIBtvSvfIxPL oj85iW4GApmE31pu+CaQWQ4llUU3dXOYxNWmTKObkiDpeos6Ho2MB3IQjp5j2Z+tu/ VSxxaQcyBKOX8xeH2cwPtFmIwuY7NZK/IjIvqsNevSitSk4RndDU3QXK2xz/OHVGme poeHg8Jz/Fo4YYCVzauCdNf+aP4pM08PQCi6DyTfJef5EEc9IJSkaCSmZXvzFcGflO NAGOQlzlvxhzt/Za5K8qgVDh6ejnuTzdqWRN8NBo0oqlRWEd/GBiiLcAROSss/1+9H h7V8jHPiKIIrQ== Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 90E05EF36EB; Mon, 9 Mar 2026 06:58:40 +0000 (UTC) From: Manivannan Sadhasivam via B4 Relay Date: Mon, 09 Mar 2026 12:28:31 +0530 Subject: [PATCH v6 1/5] soc: qcom: ice: Fix race between qcom_ice_probe() and of_qcom_ice_get() Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260309-qcom-ice-fix-v6-1-4dd3347df530@oss.qualcomm.com> References: <20260309-qcom-ice-fix-v6-0-4dd3347df530@oss.qualcomm.com> In-Reply-To: <20260309-qcom-ice-fix-v6-0-4dd3347df530@oss.qualcomm.com> To: Bjorn Andersson , Konrad Dybcio , Adrian Hunter , Ulf Hansson , Manivannan Sadhasivam , "James E.J. Bottomley" , "Martin K. Petersen" , Abel Vesa , Abel Vesa Cc: linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, linux-mmc@vger.kernel.org, linux-scsi@vger.kernel.org, Sumit Garg , mani@kernel.org, Neeraj Soni , Manivannan Sadhasivam , stable@vger.kernel.org X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=4921; i=manivannan.sadhasivam@oss.qualcomm.com; h=from:subject:message-id; bh=UmeyW+kNpWioyVDzVXqFfX4+r2Km4VFRq/bAVfTsmFo=; b=owEBbQGS/pANAwAKAVWfEeb+kc71AcsmYgBprm+c6h0RSxkKmqMZ35CXym+leOD1teE3J69SW +sRVzluyX2JATMEAAEKAB0WIQRnpUMqgUjL2KRYJ5dVnxHm/pHO9QUCaa5vnAAKCRBVnxHm/pHO 9YT+B/9ogjaHpyGpq0790JuBkYXU8G0pMbq/Ve1BH/aOc+RCwAK+5A4jrNYwxyIXNi8janl+9GE qXxLRg82md4IyNrK4roY3v2yWmr2TQ2rLlxMREiMrukyMNoIErdPdrm5d7q/U1vvp8oHfKyzkFR 5JIuCoVJw46Ycm9JAyINBONfPSMmK83tuwyxFaOBcG4G/naA2C2zCQusAVBvOpS1twySdC1VfdB 3nbnOw/9x6IOOHoc7ZzBiphhSfIbsj5zdV13WnVg/y1GjdHDGeMR3bpdMZIkUIktNF01Lm2qXTi etr8sw+N7iw91eo83oxjlMCd+8XZlu0dWRtxPbFfDxUfSf81 X-Developer-Key: i=manivannan.sadhasivam@oss.qualcomm.com; a=openpgp; fpr=C668AEC3C3188E4C611465E7488550E901166008 X-Endpoint-Received: by B4 Relay for manivannan.sadhasivam@oss.qualcomm.com/default with auth_id=461 X-Original-From: Manivannan Sadhasivam Reply-To: manivannan.sadhasivam@oss.qualcomm.com From: Manivannan Sadhasivam The current platform driver design causes probe ordering races with consumers (UFS, eMMC) due to ICE's dependency on SCM firmware calls. If ICE probe fails (missing ICE SCM or DT registers), devm_of_qcom_ice_get() loops with -EPROBE_DEFER, leaving consumers non-functional even when ICE should be gracefully disabled. devm_of_qcom_ice_get() doesn't know if the ICE driver probe has failed due to above reasons or it is waiting for the SCM driver. Moreover, there is no devlink dependency between ICE and consumer drivers as 'qcom,ice' is not considered as a DT 'supplier'. So the consumer drivers have no idea of when the ICE driver is going to probe. To address these issues, store the error pointer in a global xarray with ice node phandle as a key during probe in addition to the valid ice pointer and synchronize both qcom_ice_probe() and of_qcom_ice_get() using a mutex. If the xarray entry is NULL, then it implies that the driver is not probed yet, so return -EPROBE_DEFER. If it has any error pointer, return that error pointer directly. Otherwise, add the devlink as usual and return the valid pointer to the consumer. Xarray is used instead of platform drvdata, since driver core frees the drvdata during probe failure. So it cannot be used to pass the error pointer to the consumers. Note that this change only fixes the standalone ICE DT node bindings and not the ones with 'ice' range embedded in the consumer nodes, where there is no issue. Cc: # 6.4 Fixes: 2afbf43a4aec ("soc: qcom: Make the Qualcomm UFS/SDCC ICE a dedicated= driver") Reported-by: Sumit Garg Signed-off-by: Manivannan Sadhasivam Acked-by: Sumit Garg Tested-by: Sumit Garg # OP-TEE as TZ --- drivers/soc/qcom/ice.c | 38 +++++++++++++++++++++++++++++++------- 1 file changed, 31 insertions(+), 7 deletions(-) diff --git a/drivers/soc/qcom/ice.c b/drivers/soc/qcom/ice.c index b203bc685cad..91991864b4a3 100644 --- a/drivers/soc/qcom/ice.c +++ b/drivers/soc/qcom/ice.c @@ -16,6 +16,7 @@ #include #include #include +#include =20 #include =20 @@ -113,6 +114,9 @@ struct qcom_ice { u8 hwkm_version; }; =20 +static DEFINE_XARRAY(ice_handles); +static DEFINE_MUTEX(ice_mutex); + static bool qcom_ice_check_supported(struct qcom_ice *ice) { u32 regval =3D qcom_ice_readl(ice, QCOM_ICE_REG_VERSION); @@ -631,6 +635,8 @@ static struct qcom_ice *of_qcom_ice_get(struct device *= dev) return qcom_ice_create(&pdev->dev, base); } =20 + guard(mutex)(&ice_mutex); + /* * If the consumer node does not provider an 'ice' reg range * (legacy DT binding), then it must at least provide a phandle @@ -647,12 +653,13 @@ static struct qcom_ice *of_qcom_ice_get(struct device= *dev) return ERR_PTR(-EPROBE_DEFER); } =20 - ice =3D platform_get_drvdata(pdev); - if (!ice) { - dev_err(dev, "Cannot get ice instance from %s\n", - dev_name(&pdev->dev)); + ice =3D xa_load(&ice_handles, pdev->dev.of_node->phandle); + if (IS_ERR_OR_NULL(ice)) { platform_device_put(pdev); - return ERR_PTR(-EPROBE_DEFER); + if (!ice) + return ERR_PTR(-EPROBE_DEFER); + else + return ice; } =20 link =3D device_link_add(dev, &pdev->dev, DL_FLAG_AUTOREMOVE_SUPPLIER); @@ -716,24 +723,40 @@ EXPORT_SYMBOL_GPL(devm_of_qcom_ice_get); =20 static int qcom_ice_probe(struct platform_device *pdev) { + unsigned long phandle =3D pdev->dev.of_node->phandle; struct qcom_ice *engine; void __iomem *base; =20 + guard(mutex)(&ice_mutex); + base =3D devm_platform_ioremap_resource(pdev, 0); if (IS_ERR(base)) { dev_warn(&pdev->dev, "ICE registers not found\n"); + /* Store the error pointer for devm_of_qcom_ice_get() */ + xa_store(&ice_handles, phandle, (__force void *)base, GFP_KERNEL); return PTR_ERR(base); } =20 engine =3D qcom_ice_create(&pdev->dev, base); - if (IS_ERR(engine)) + if (IS_ERR(engine)) { + /* Store the error pointer for devm_of_qcom_ice_get() */ + xa_store(&ice_handles, phandle, engine, GFP_KERNEL); return PTR_ERR(engine); + } =20 - platform_set_drvdata(pdev, engine); + xa_store(&ice_handles, phandle, engine, GFP_KERNEL); =20 return 0; } =20 +static void qcom_ice_remove(struct platform_device *pdev) +{ + unsigned long phandle =3D pdev->dev.of_node->phandle; + + guard(mutex)(&ice_mutex); + xa_store(&ice_handles, phandle, NULL, GFP_KERNEL); +} + static const struct of_device_id qcom_ice_of_match_table[] =3D { { .compatible =3D "qcom,inline-crypto-engine" }, { }, @@ -742,6 +765,7 @@ MODULE_DEVICE_TABLE(of, qcom_ice_of_match_table); =20 static struct platform_driver qcom_ice_driver =3D { .probe =3D qcom_ice_probe, + .remove =3D qcom_ice_remove, .driver =3D { .name =3D "qcom-ice", .of_match_table =3D qcom_ice_of_match_table, --=20 2.51.0 From nobody Thu Apr 9 12:08:15 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (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 F4217175A9D; Mon, 9 Mar 2026 06:58:40 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773039521; cv=none; b=QWmB1Mg6QvcEKah3tZ7EUu4qySeg2EV+EtuLJKan3BXRcfPFlz690/uxPH7XX47Luh5NggpN79hZDkcREXqEW4aWR2tSTR76CH0TRHIaRuHFt35SPBn5IP1ZbTkoHNMFmynvgXnC+h/UsWvyMO0f2fxNMhg2s/aBDwuNnwJukp4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773039521; c=relaxed/simple; bh=M0JnE2zVWyq3BaqHe/T8AEXaCJiLsWkL/MZcIaPrNNQ=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=r2H3ekeh4sY5w3d5JZ7taoW1z0Yhfzb6xDQXIsFserknly2eCIBdXIjKBDGhlLtNWfoNKlPh0al7/DF1atkNP7oebhtcytE8Eh9HIlGNZ/6S1FozcbaVOkVgIW45CJRM4BfUNX0lsLoSpzGYSx6lMwEaOaAfpYMAkwDDEP31zGg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=e+1dwaVS; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="e+1dwaVS" Received: by smtp.kernel.org (Postfix) with ESMTPS id B51E7C19423; Mon, 9 Mar 2026 06:58:40 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1773039520; bh=M0JnE2zVWyq3BaqHe/T8AEXaCJiLsWkL/MZcIaPrNNQ=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=e+1dwaVSxLg6RhadzxL+dSIl5Q7fHKJMdtuMlNZsNQbBRuWSEzOzee2deluXBQhsd ECYDJdsrW3h4RzMl7AllaDcU5XUBy083ZiRdTw0hSKGkAftX78YWE9ovV/YoaZSPkA Faej7UIRN8MELvzEEU49ry7SsIg1uvogYxTh4UifR13ccY7LTp+rZgxMs5UwhrCrCB lgFVGxc2YrxFNc/u1cU0/G/Hffzcg3/hQB91/sGpF9VWUmd60m2C/OZFxnb8IerFPa utMx44kwMn7GH+a8qPjWDsriuivPoL5mY1Htjc1NQTI0wvdVs6Ny+3y0ThVvyu5HsP u7zavvvmMYyrA== Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 9F2D3EF36E8; Mon, 9 Mar 2026 06:58:40 +0000 (UTC) From: Manivannan Sadhasivam via B4 Relay Date: Mon, 09 Mar 2026 12:28:32 +0530 Subject: [PATCH v6 2/5] soc: qcom: ice: Return -ENODEV if the ICE platform device is not found Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260309-qcom-ice-fix-v6-2-4dd3347df530@oss.qualcomm.com> References: <20260309-qcom-ice-fix-v6-0-4dd3347df530@oss.qualcomm.com> In-Reply-To: <20260309-qcom-ice-fix-v6-0-4dd3347df530@oss.qualcomm.com> To: Bjorn Andersson , Konrad Dybcio , Adrian Hunter , Ulf Hansson , Manivannan Sadhasivam , "James E.J. Bottomley" , "Martin K. Petersen" , Abel Vesa , Abel Vesa Cc: linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, linux-mmc@vger.kernel.org, linux-scsi@vger.kernel.org, Sumit Garg , mani@kernel.org, Neeraj Soni , Manivannan Sadhasivam X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=1019; i=manivannan.sadhasivam@oss.qualcomm.com; h=from:subject:message-id; bh=Z6kPE7wcV6uVt9Ccu9/dsfl6jqa0/scCxiM0VLuRRl0=; b=owEBbQGS/pANAwAKAVWfEeb+kc71AcsmYgBprm+cnHWz0z5dHAGXNzAyDdwrnxQf37rMPX6Hh mT/TRFzX2uJATMEAAEKAB0WIQRnpUMqgUjL2KRYJ5dVnxHm/pHO9QUCaa5vnAAKCRBVnxHm/pHO 9XoxB/4ywdRYmhB2NdRmHi1PHoVIbrgpsUzmeFPsz8ndKJxyyKBe9+E7zRkGtWraPw6pWwAM0Ip neniFBKEF+tucxCHP4/EqCD/It0z3E3rMAOeFZLOnjtU/cfpNCODJ5ZUgNOcKiCIdoonRXpzkOz 5hi51H1LROdzqD7ZBtFt6fkT+IeKd8qkRkJmIM9iUoZC5Kozkb4YJ/+BHZ/6r6gSxebz3Su9wc6 pyv32Jf85qZEG6mWjy27/OwJYTRDhsm1oJdaQi9AWk3ohgQo+ymrPt0AFrezP3kmYKTOzFWVX/i LlrD6Su1flZnbteOzWv8Ua3JnZwDMnuMeGxBYmQZQa7tzDe0 X-Developer-Key: i=manivannan.sadhasivam@oss.qualcomm.com; a=openpgp; fpr=C668AEC3C3188E4C611465E7488550E901166008 X-Endpoint-Received: by B4 Relay for manivannan.sadhasivam@oss.qualcomm.com/default with auth_id=461 X-Original-From: Manivannan Sadhasivam Reply-To: manivannan.sadhasivam@oss.qualcomm.com From: Manivannan Sadhasivam By the time the consumer driver calls devm_of_qcom_ice_get(), all the platform devices for ICE nodes would've been created by of_platform_default_populate(). So for the absence of any platform device, -ENODEV should not returned, not -EPROBE_DEFER. Fixes: 2afbf43a4aec ("soc: qcom: Make the Qualcomm UFS/SDCC ICE a dedicated= driver") Signed-off-by: Manivannan Sadhasivam Acked-by: Sumit Garg Tested-by: Sumit Garg # OP-TEE as TZ --- drivers/soc/qcom/ice.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/soc/qcom/ice.c b/drivers/soc/qcom/ice.c index 91991864b4a3..85deb9ea4a68 100644 --- a/drivers/soc/qcom/ice.c +++ b/drivers/soc/qcom/ice.c @@ -650,7 +650,7 @@ static struct qcom_ice *of_qcom_ice_get(struct device *= dev) pdev =3D of_find_device_by_node(node); if (!pdev) { dev_err(dev, "Cannot find device node %s\n", node->name); - return ERR_PTR(-EPROBE_DEFER); + return ERR_PTR(-ENODEV); } =20 ice =3D xa_load(&ice_handles, pdev->dev.of_node->phandle); --=20 2.51.0 From nobody Thu Apr 9 12:08:15 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (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 2679C362151; Mon, 9 Mar 2026 06:58:41 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773039521; cv=none; b=mGpVSDgtSKspp21Hbr2Iv+rtpTzQp42z2f95yX4irWmnnQ68hcIgu0UOlCgGnJQDsymiqYKAqLTg2M7WIvjvxnDiiXd6rVQemeJs2rnpMPBzbIdgLApvAY0s8GR27KP0ggRNtaDbvdCtpy0DtmDgTcpJhI++So4Ug8sQt244OOo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773039521; c=relaxed/simple; bh=indBVz7rXdq5AYW7l8RPQheS0qiIuzbT8aTXnf838VQ=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=M1ZGh90KQWj4LyM27m+ubAoZOV1DAlYN8E1jeUnC6Z5M+y9CqoDWQb8dOTJBRuIC8R1SDryIX921tCHRel1qk3rhWHVQmdhfGevheSChpZJZjZrvGHP1fxRK+oqWmp5X9lrTwe86pbAj650bcFYBl8DjK2WQI2Ehntw5uKt0ljA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=fv/hqH29; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="fv/hqH29" Received: by smtp.kernel.org (Postfix) with ESMTPS id BE22EC2BCB2; Mon, 9 Mar 2026 06:58:40 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1773039520; bh=indBVz7rXdq5AYW7l8RPQheS0qiIuzbT8aTXnf838VQ=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=fv/hqH29yZidwTmL30oPtsUzJRxbF9LKnR7sM9CXnGDKlqM92R0xog/7ToBvhK7Yp 5/dMr+7bgX6/lGevXGHCXN8Tn/cL022+YqaI6xAvGYpXMr5d7F56S2LNrath+A3Ly7 scmAH/tTM8DsezYMKhMfOgmvxtbfD/fl5skbL8DnjJ3BoRohuQ0mX8wq502IZFfwmB jSta5cubi5CcGZOFngSDp1at9cMe37gsEFNBW5yGhc6xdSE/l/ROSTUEe5mMt0IFfs 3xhYIZNk79Nz9ybfpF47Gh481pNbD9dbJT31Z0c5ASDz2tKVyhcJKOKnksWiIhgTP/ wa6ipv2LhGFrg== Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id AD910EF36ED; Mon, 9 Mar 2026 06:58:40 +0000 (UTC) From: Manivannan Sadhasivam via B4 Relay Date: Mon, 09 Mar 2026 12:28:33 +0530 Subject: [PATCH v6 3/5] soc: qcom: ice: Return proper error codes from devm_of_qcom_ice_get() instead of NULL Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260309-qcom-ice-fix-v6-3-4dd3347df530@oss.qualcomm.com> References: <20260309-qcom-ice-fix-v6-0-4dd3347df530@oss.qualcomm.com> In-Reply-To: <20260309-qcom-ice-fix-v6-0-4dd3347df530@oss.qualcomm.com> To: Bjorn Andersson , Konrad Dybcio , Adrian Hunter , Ulf Hansson , Manivannan Sadhasivam , "James E.J. Bottomley" , "Martin K. Petersen" , Abel Vesa , Abel Vesa Cc: linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, linux-mmc@vger.kernel.org, linux-scsi@vger.kernel.org, Sumit Garg , mani@kernel.org, Neeraj Soni , Manivannan Sadhasivam , Konrad Dybcio X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=2044; i=manivannan.sadhasivam@oss.qualcomm.com; h=from:subject:message-id; bh=MkbXnSJ6JoYE6nxF2aUf9kPMuwVhAXccbG673yyfIUw=; b=owEBbQGS/pANAwAKAVWfEeb+kc71AcsmYgBprm+cLbpGo2txLtdWf6oI6lYLYGjxY+PPqLg0r Ai7YR/zMeOJATMEAAEKAB0WIQRnpUMqgUjL2KRYJ5dVnxHm/pHO9QUCaa5vnAAKCRBVnxHm/pHO 9dICB/sFNSjQrvXxWKDNz1qSHELt0CYUKbjdaRM7/qCyUXVj2p53kHe5XxycOJNyH+aM55b4yaI 5KMwm1+SLjnxvoPyZiT/d3Vd9wQhgac5wMJutMYDJMrD+hntDkkEHwJs/GcpQo7L1v4ZSqVMYln JYQEdirniVFbl6ZoFDHxwY1f2M2VGBualELgqqiujE+YAxV721OT45QBlbwNVrLh+u9Tqypnors QDI8mQETlvp8hwLZ5QHPbeS8K56TFg9XzWinhUlEwpFkyB6knG2OkVvDEBzV4BLWABN84eay6/H 2oY79gOHBqnK/VxKDJ+72nH81bmQyj+VPfEKVNzPs+eJ97mo X-Developer-Key: i=manivannan.sadhasivam@oss.qualcomm.com; a=openpgp; fpr=C668AEC3C3188E4C611465E7488550E901166008 X-Endpoint-Received: by B4 Relay for manivannan.sadhasivam@oss.qualcomm.com/default with auth_id=461 X-Original-From: Manivannan Sadhasivam Reply-To: manivannan.sadhasivam@oss.qualcomm.com From: Manivannan Sadhasivam devm_of_qcom_ice_get() currently returns NULL if ICE SCM is not available or "qcom,ice" property is not found in DT. But this confuses the clients since NULL doesn't convey the reason for failure. So return proper error codes instead of NULL. Reported-by: Sumit Garg Reviewed-by: Konrad Dybcio Signed-off-by: Manivannan Sadhasivam Acked-by: Sumit Garg Tested-by: Sumit Garg # OP-TEE as TZ --- drivers/soc/qcom/ice.c | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/drivers/soc/qcom/ice.c b/drivers/soc/qcom/ice.c index 85deb9ea4a68..2b592aa42941 100644 --- a/drivers/soc/qcom/ice.c +++ b/drivers/soc/qcom/ice.c @@ -563,7 +563,7 @@ static struct qcom_ice *qcom_ice_create(struct device *= dev, =20 if (!qcom_scm_ice_available()) { dev_warn(dev, "ICE SCM interface not found\n"); - return NULL; + return ERR_PTR(-EOPNOTSUPP); } =20 engine =3D devm_kzalloc(dev, sizeof(*engine), GFP_KERNEL); @@ -645,7 +645,7 @@ static struct qcom_ice *of_qcom_ice_get(struct device *= dev) struct device_node *node __free(device_node) =3D of_parse_phandle(dev->of= _node, "qcom,ice", 0); if (!node) - return NULL; + return ERR_PTR(-ENODEV); =20 pdev =3D of_find_device_by_node(node); if (!pdev) { @@ -698,8 +698,7 @@ static void devm_of_qcom_ice_put(struct device *dev, vo= id *res) * phandle via 'qcom,ice' property to an ICE DT, the ICE instance will alr= eady * be created and so this function will return that instead. * - * Return: ICE pointer on success, NULL if there is no ICE data provided b= y the - * consumer or ERR_PTR() on error. + * Return: ICE pointer on success, ERR_PTR() on error. */ struct qcom_ice *devm_of_qcom_ice_get(struct device *dev) { @@ -710,7 +709,7 @@ struct qcom_ice *devm_of_qcom_ice_get(struct device *de= v) return ERR_PTR(-ENOMEM); =20 ice =3D of_qcom_ice_get(dev); - if (!IS_ERR_OR_NULL(ice)) { + if (!IS_ERR(ice)) { *dr =3D ice; devres_add(dev, dr); } else { --=20 2.51.0 From nobody Thu Apr 9 12:08:15 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (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 098D22EA754; Mon, 9 Mar 2026 06:58:41 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773039521; cv=none; b=L0Lg0FCPn0snrq8il5nH/LpbeNePnUe0zDiePoGudUiQ9zQBmc6UNPvqK2b+GUM2itgRLrE3WWpRFM17dHo/HHeAt6tc/XHwbWJ6uSmq0eF3iv9VOlPM4j3pwl421cXXFgfeifpV1R+FF7i3PrxGYkSrowdO9hJOrt9ctxuAOMw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773039521; c=relaxed/simple; bh=fIjVtLv2PApm9p7zByR7Rq2/I5Linm9JuIiBx8Q7GZw=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=braVnpRtp0cd0IMmxAj+aFpOrx1ZjV76HG3j7y9xW9uhx1BZaICT0JqJb6IeIrHJ5VvRRzmtzJubdJQRqaQ/rpnpqd3DyoKCABY3tr8uKOr8fQ82j0T8Fx7OhUncJRDSi28nM+5YYmjitXE/sYhng91BJzj8i3aPXtYXF8jzQus= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=fxq+GFGV; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="fxq+GFGV" Received: by smtp.kernel.org (Postfix) with ESMTPS id C81BEC2BCB7; Mon, 9 Mar 2026 06:58:40 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1773039520; bh=fIjVtLv2PApm9p7zByR7Rq2/I5Linm9JuIiBx8Q7GZw=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=fxq+GFGVMf5HzkaoM6WBQPw9A6Weqxek13CcQz9iIB8rNEzEzup1CUcQJwv1QQQXH cMJnoD0xEMNUsM4Kh9+S8wlZBmn1+nZBmEFv3Ng8C/n/jw/if+mB1d+6MtM2HQ2/3J a2xGCFSFcgtqYtxMcvndVpdozLyyh1A/jkn6tSudCC93gkVb0zNSfDljUa1tdHNbdT Zpy2vgL6kLP6NzI95ZFKBld2iT5r8x14e2y7BFGMhvLyBLOnqM7Qm2fa05lPZpS845 Wnw0T2wr1xnjKI5S20S/5jF7X2uH5kIRWYOYBtEpyLHhac+B/tyadH7MLVYAhRXNuC e8MFKlfwG913w== Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id BCC9DEF36EC; Mon, 9 Mar 2026 06:58:40 +0000 (UTC) From: Manivannan Sadhasivam via B4 Relay Date: Mon, 09 Mar 2026 12:28:34 +0530 Subject: [PATCH v6 4/5] mmc: sdhci-msm: Remove NULL check from devm_of_qcom_ice_get() Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260309-qcom-ice-fix-v6-4-4dd3347df530@oss.qualcomm.com> References: <20260309-qcom-ice-fix-v6-0-4dd3347df530@oss.qualcomm.com> In-Reply-To: <20260309-qcom-ice-fix-v6-0-4dd3347df530@oss.qualcomm.com> To: Bjorn Andersson , Konrad Dybcio , Adrian Hunter , Ulf Hansson , Manivannan Sadhasivam , "James E.J. Bottomley" , "Martin K. Petersen" , Abel Vesa , Abel Vesa Cc: linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, linux-mmc@vger.kernel.org, linux-scsi@vger.kernel.org, Sumit Garg , mani@kernel.org, Neeraj Soni , Manivannan Sadhasivam , Konrad Dybcio X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=1276; i=manivannan.sadhasivam@oss.qualcomm.com; h=from:subject:message-id; bh=+5SkLtRpHTnkAQ9yZWBecUdG7TMHCu1aRwm2dHYl1LQ=; b=owEBbQGS/pANAwAKAVWfEeb+kc71AcsmYgBprm+cxSFJKAT3tpQEkmozGp9einIfyo8LyYDAp EL94vuno0qJATMEAAEKAB0WIQRnpUMqgUjL2KRYJ5dVnxHm/pHO9QUCaa5vnAAKCRBVnxHm/pHO 9dVmB/9xzkZqg3JdQqo0aNv68bGvjpIh88CokEd8juqUVKVwgy6z1x7gfWjhDfg0M/oPchQctac +juVr87XtrLLM3rrJAAvhxncqQQXMj3VtLSCZ3v9Uc9FUVNPB+uEK4xcVDJotL9JyYBPBN606sK vMJFOBZv69AiLs867NHlbgV3ivxQngHKWaGkygZ7DRjVmuBVNCzItYksNrLC6/DeAu6BzQFU8uM ck++vUu+Nsy5l61b6s+1nvNON9/Gg4Xtl1tlvrH3NoyC7WzInYlpex7Xn7R1wChev9y9T/++XAz ACPF+Ue0g+fMTpZ/mYcPmTGXJ6mTbHo8ukgyiKk9AedREbny X-Developer-Key: i=manivannan.sadhasivam@oss.qualcomm.com; a=openpgp; fpr=C668AEC3C3188E4C611465E7488550E901166008 X-Endpoint-Received: by B4 Relay for manivannan.sadhasivam@oss.qualcomm.com/default with auth_id=461 X-Original-From: Manivannan Sadhasivam Reply-To: manivannan.sadhasivam@oss.qualcomm.com From: Manivannan Sadhasivam Now since the devm_of_qcom_ice_get() API never returns NULL, remove the NULL check and also simplify the error handling. Reviewed-by: Konrad Dybcio Acked-by: Ulf Hansson Acked-by: Adrian Hunter Signed-off-by: Manivannan Sadhasivam Acked-by: Sumit Garg Tested-by: Sumit Garg # OP-TEE as TZ --- drivers/mmc/host/sdhci-msm.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/drivers/mmc/host/sdhci-msm.c b/drivers/mmc/host/sdhci-msm.c index 3b85233131b3..8d862079cf17 100644 --- a/drivers/mmc/host/sdhci-msm.c +++ b/drivers/mmc/host/sdhci-msm.c @@ -1906,14 +1906,14 @@ static int sdhci_msm_ice_init(struct sdhci_msm_host= *msm_host, return 0; =20 ice =3D devm_of_qcom_ice_get(dev); - if (ice =3D=3D ERR_PTR(-EOPNOTSUPP)) { + if (IS_ERR(ice)) { + if (ice !=3D ERR_PTR(-EOPNOTSUPP)) + return PTR_ERR(ice); + dev_warn(dev, "Disabling inline encryption support\n"); - ice =3D NULL; + return 0; } =20 - if (IS_ERR_OR_NULL(ice)) - return PTR_ERR_OR_ZERO(ice); - if (qcom_ice_get_supported_key_type(ice) !=3D BLK_CRYPTO_KEY_TYPE_RAW) { dev_warn(dev, "Wrapped keys not supported. Disabling inline encryption s= upport.\n"); return 0; --=20 2.51.0 From nobody Thu Apr 9 12:08:15 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (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 266BA36214C; Mon, 9 Mar 2026 06:58:41 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773039521; cv=none; b=ra7j1FI2IaJLE8D9SEoyjT+DIPoGUn7ID25caBBNvCwKyLGkROeJyvFDqbU8rzbmxOK/ZgW1MH6TvxCdN53iUBgGAUH4+ay9Xz/SEnvtZQ26U2SKf9bch2MgyliKQ72gHqkOxC3sD0KqlCz6rrKqY0QCkdrGVhANZt6ycCYfDD0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773039521; c=relaxed/simple; bh=1eHoa0JSRx58JXoaHKKDpiP/1IcF5/5fTgcvM3Fey2g=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=eyNHIKVXKtirprKknDzPxU7ZgwWtVT3FdPKAwzHgwT6KaZNZie6QjfNixJtiJAOAujEE4oIfIeQ5CgK8J2m7U2HoBvUoSJSKVjORLDImvuc04+KfiJ4VfwXR9WKx2K4VnQ9JXKo2g2kp17tWAVZB9mh+sLTf1201GrPrVAkj87U= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=rxLByVD9; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="rxLByVD9" Received: by smtp.kernel.org (Postfix) with ESMTPS id D50EFC2BCC4; Mon, 9 Mar 2026 06:58:40 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1773039520; bh=1eHoa0JSRx58JXoaHKKDpiP/1IcF5/5fTgcvM3Fey2g=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=rxLByVD9wJAgTWyCvqe0Z4fciIC/XPB8Pv1vPkIgzxBf6l3fyRVKmwOtZ146i5xLP RUODvcfqvlwQyx/wBi3ouXf//pkIxVRk/jAo3YOYTd05WrPMR26uQ1xjKt3kgPQt3S xtVX4+mw1y08EO5rLR8g3BxKfvwmxS9++rizm5z+T7QbLsc8GnseUJumm6OOhP7oYf Cmd3gcsdSZfGpceXMkLqUJoJN23BbqRUKRSbM5WeWGbaWlCe6YkzQX7xDV+1R0PMFq VtMffs6rQqi80YtAV8pMKrv2IXc0K0LYA6YUDKxfbiluqURPjexA7mvFd2pooLOka3 VMYczjDAhgvlA== Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id CC3FDEF36EF; Mon, 9 Mar 2026 06:58:40 +0000 (UTC) From: Manivannan Sadhasivam via B4 Relay Date: Mon, 09 Mar 2026 12:28:35 +0530 Subject: [PATCH v6 5/5] scsi: ufs: ufs-qcom: Remove NULL check from devm_of_qcom_ice_get() Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260309-qcom-ice-fix-v6-5-4dd3347df530@oss.qualcomm.com> References: <20260309-qcom-ice-fix-v6-0-4dd3347df530@oss.qualcomm.com> In-Reply-To: <20260309-qcom-ice-fix-v6-0-4dd3347df530@oss.qualcomm.com> To: Bjorn Andersson , Konrad Dybcio , Adrian Hunter , Ulf Hansson , Manivannan Sadhasivam , "James E.J. Bottomley" , "Martin K. Petersen" , Abel Vesa , Abel Vesa Cc: linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, linux-mmc@vger.kernel.org, linux-scsi@vger.kernel.org, Sumit Garg , mani@kernel.org, Neeraj Soni , Manivannan Sadhasivam , Konrad Dybcio X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=1114; i=manivannan.sadhasivam@oss.qualcomm.com; h=from:subject:message-id; bh=TzqKhDLr9WN8kubHG4egYv7EvzBCe1kNbA4zOiRN8WE=; b=owEBbQGS/pANAwAKAVWfEeb+kc71AcsmYgBprm+cyzgON8I+0A8+YCwC0lnAx+fVb6xBs8GCZ /ipeA1Ope2JATMEAAEKAB0WIQRnpUMqgUjL2KRYJ5dVnxHm/pHO9QUCaa5vnAAKCRBVnxHm/pHO 9cjBB/0VpU+HI2L2yhwqP42hjHlO21QGAw6dvYMNGT+s6tcQHvOGxaChFT7fUZacU3wh3qXMlnL Vea57yF7ffCZLtmqvrlYPooGq1QoEGjDDhnogQyTsUPu65QEnvhHnTBzglNRIdTYYYsNcGeajiz 7HazNIUcQI7HUDt+jKZ4T6dQuSO0c8AOxzLlHyh/q+PqPK4wihTRdJvE04yK79RBpT3uIYtmqxb tvDaeB23VGek+iK37sSqeCBnvQxAO8GDhQxCj/IDhXlqoW1lvH5zAfXZtR9w4K8c5U2Jj62WVez uh68KrTn7q5ywmn0lDKq0AFzmZgVcRlf09aPSamG3uWoqpws X-Developer-Key: i=manivannan.sadhasivam@oss.qualcomm.com; a=openpgp; fpr=C668AEC3C3188E4C611465E7488550E901166008 X-Endpoint-Received: by B4 Relay for manivannan.sadhasivam@oss.qualcomm.com/default with auth_id=461 X-Original-From: Manivannan Sadhasivam Reply-To: manivannan.sadhasivam@oss.qualcomm.com From: Manivannan Sadhasivam Now since the devm_of_qcom_ice_get() API never returns NULL, remove the NULL check and also simplify the error handling. Reviewed-by: Konrad Dybcio Acked-by: Martin K. Petersen # UFS Signed-off-by: Manivannan Sadhasivam Acked-by: Sumit Garg Tested-by: Sumit Garg # OP-TEE as TZ --- drivers/ufs/host/ufs-qcom.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/drivers/ufs/host/ufs-qcom.c b/drivers/ufs/host/ufs-qcom.c index 375fd24ba458..72c24ed65fe1 100644 --- a/drivers/ufs/host/ufs-qcom.c +++ b/drivers/ufs/host/ufs-qcom.c @@ -177,14 +177,14 @@ static int ufs_qcom_ice_init(struct ufs_qcom_host *ho= st) int i; =20 ice =3D devm_of_qcom_ice_get(dev); - if (ice =3D=3D ERR_PTR(-EOPNOTSUPP)) { + if (IS_ERR(ice)) { + if (ice !=3D ERR_PTR(-EOPNOTSUPP)) + return PTR_ERR(ice); + dev_warn(dev, "Disabling inline encryption support\n"); - ice =3D NULL; + return 0; } =20 - if (IS_ERR_OR_NULL(ice)) - return PTR_ERR_OR_ZERO(ice); - host->ice =3D ice; =20 /* Initialize the blk_crypto_profile */ --=20 2.51.0