From nobody Fri Jul 24 22:54:57 2026 Received: from mx0a-0031df01.pphosted.com (mx0a-0031df01.pphosted.com [205.220.168.131]) (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 981F433F59D for ; Wed, 22 Jul 2026 13:45:21 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.168.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784727923; cv=none; b=aLoSbPg2M3mykOJVmVKujMHohRS0q/Wo0zr6k477Jt0af7fvd+ps1A4cpIUWfRLPv6n2CtgNvMdHArU6w/x2G00onoY/m/sPZGC3uVr4uzLqs4vxbLpx/0IFUBARiXSnsZ5/QtfTeGQecVNF09r+AOA3D2Us7yu4qLmH7OciaZs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784727923; c=relaxed/simple; bh=k6RUnVNYNWs6mwTgw+eJNWAUZH7oNXFOTmAPE5bsAGI=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=kccBbiMbLhN/GCYsUmULa6StDexxhJMQNN+vIOCz0xCKqTDqO8qnHQ9i3QEJLMsr2enu0Rujyg8TuuYrh8CQWveraMig6WrU6BSb8Gk33lKOVyZx6j4Ln/tv+sStcUz4SwtsG6xuhHeI70kxCtHk1UO0HGLPrdsWxengG9/nDGU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=jEFVTckZ; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=gO7SxMyU; arc=none smtp.client-ip=205.220.168.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="jEFVTckZ"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="gO7SxMyU" Received: from pps.filterd (m0279866.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 66MDWZgh646501 for ; Wed, 22 Jul 2026 13:45:21 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= hEC1L4E8qLd13ENLIAvmHH+W0DF9KXCKqgeEjB0jFPM=; b=jEFVTckZ9EEQg8V/ a087+S+2n2EAwk7Q3uyGXrTxWnUqDS0FI3YHIOnbL8TYHOE98IijsZ6MGIHu6jjR FjfpznB5tOH2GaDP1K/o80l2Bq1vCswaatVjkHz+pfVQ7tUhwY81P5EqnHFCB9M7 7t+QgZ2sO1EtMuBpTLspuywszkekHTsq45fRpOl0TRWIUjN4aQRibhUXLBzEpn2q hbBcvyZYKuZJ8PrWbct5wi7gFcyFXHasICrU/TyTTMsZ8+NrhbU7KEc0+4bphNmo Qu8n4DhuGvfjj+2xLOhBLDAxWZ1wbwjYaixMLVkrgAo2lawdD/cAnBTOfsNuVn4Y ii5oow== Received: from mail-qt1-f198.google.com (mail-qt1-f198.google.com [209.85.160.198]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4fju229398-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Wed, 22 Jul 2026 13:45:20 +0000 (GMT) Received: by mail-qt1-f198.google.com with SMTP id d75a77b69052e-51ebdfceddcso158489071cf.3 for ; Wed, 22 Jul 2026 06:45:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1784727920; x=1785332720; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=hEC1L4E8qLd13ENLIAvmHH+W0DF9KXCKqgeEjB0jFPM=; b=gO7SxMyUhezPcb1xMRAnTDtt1ld6pGuq5CQZ4c97gL1nXGRxrEQlDJkLH2F2Gaecep ORUHc/jnuvFBmLsQf1hEjMv8k4XkOQ5drc+wm2tGm6arD6IbmIdXZ9A1reoXu04cIkuq QxCs7hdRWPxVLeEIKOJ/qGFR/VmYGkqVhwrdTstDMbZrCjv3u1JSl+ZzoIrGtW+04ieI mdtBxet/PY/FZ+fwE5FWhP3tanhUcsLIdQpKOVkAiw4+H2wbojM54C9NDswPb8dVNQ2O 8ce6+tGnGdJ1LWSygEWAWlOF8TKVNx+b2kauMW2x5CNhymQHcaHn70YVdzCcEFeQh/mB OtbA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1784727920; x=1785332720; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=hEC1L4E8qLd13ENLIAvmHH+W0DF9KXCKqgeEjB0jFPM=; b=Jd6Ov/fa53YaQ+/lKuIs5EqYJVJjRxoAHFPwZ6osG1JrlTIXyre3S6760fZTF2Ri06 QPFeTm0aR378T3T64iQE7tMbx12jO+6pA3OiBy+AtlDQvdHL4kfGL+2wFw6Wuwob1D0b Z4YqXZUBkfz50G2G4A4MkSO+zhyHPQqVDu5ifVJ/eNNKXwUWRt+o1cwjoDKXLijMmI1O E49G9EM5TqLWkxv+YMKdHOqoD83pHMSt8jfv1aAoEXzM37eoEkDonJHwQ2Pr9Ihr2QPa FCNDlIJ/V8XkBf3lcZvc8HwEj+BK/bfljcpt0lqfZwmuhfRfb8+ZhLbbOaa4eCf44VOX k7vw== X-Forwarded-Encrypted: i=1; AHgh+Rpgh4xoj9bBOQTMdhT9DrbUNBjId3vPqDjsYMIur+11VhHaQmwfjVCmDKzMzPoGZHRg2bKWG0Vve+DAx9g=@vger.kernel.org X-Gm-Message-State: AOJu0YzH1s21EQYUM1f+NlA1bnsAGY2i8aZi/kkAhTvXCyUCPp/wvWlU zomFWnn12oqQ6jS9Kkbj5LGi0Gpvc1ifHiz0tYs6FzxX6tk9SxzsrvHxN94VRu1a2F9FwLr4BqQ XdUK3Nn3r7AuY+ZJkwv4EnkSMa77rMRN59gCUkVKgs+TXkAANNebX13FrbH/CRcC20Y8= X-Gm-Gg: AR+sD13FIXGQdmNB8lSP9BTwnOU3xhHGHCKeSEy0t3QQBRqcXv7JyeYXxp0lH917N2x fOHRQjDZqMG19waK52oJosjpzAU/IO0HymEINMiTWlCilpTEUxqnjBLhSzyW1X28XCL907HEu3V 7RmqLQ7WKCjs5fRDw+Aw0c+4UyD8w15wIZ6vmudPKFr67rd5ZeSm7OghVbB7uTudxNyq8LKwHxV ojvkcaIDXsE9B9YSWOM9/gor5YhRp1OvBCEGvy1AkmgE+yqhryauFjaLfp2meSOObx1A0IvhlAO xyLyzGXJhkNLAQUBnPusbnFe6BSH1tJiqgIkieyXzjcvx/0l7J8+jQ+yfBRZIN84IZVcPsROefg mImOt2af/fCLjDprHmr0tjzfPojfeUzUW616HS0Gt3cnE0w7HYf7RyNLUyQ4Y7HDMNY+47qGrSf M7YUU26fArYYai7QsPg6SiKfAO8mwhOc7jUhtrzUimTjCPE8pJJA== X-Received: by 2002:a05:622a:598f:b0:51c:b900:5136 with SMTP id d75a77b69052e-521385d898fmr216651161cf.0.1784727919659; Wed, 22 Jul 2026 06:45:19 -0700 (PDT) X-Received: by 2002:a05:622a:598f:b0:51c:b900:5136 with SMTP id d75a77b69052e-521385d898fmr216650591cf.0.1784727919076; Wed, 22 Jul 2026 06:45:19 -0700 (PDT) Received: from QCOM-eG0v1AUPpu.na.qualcomm.com ([2a01:e0a:830:450:48e:a2cc:6c4:c92a]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-c1c32ac8c3esm111874366b.23.2026.07.22.06.45.17 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 22 Jul 2026 06:45:18 -0700 (PDT) From: Loic Poulain Date: Wed, 22 Jul 2026 15:45:14 +0200 Subject: [PATCH v6 1/7] phy: qcom: qmp-combo: Prevent unnecessary PM runtime suspend at boot 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: <20260722-qcom-usb-phy-fix-null-v6-1-534f7e61b9a6@oss.qualcomm.com> References: <20260722-qcom-usb-phy-fix-null-v6-0-534f7e61b9a6@oss.qualcomm.com> In-Reply-To: <20260722-qcom-usb-phy-fix-null-v6-0-534f7e61b9a6@oss.qualcomm.com> To: Vinod Koul , Neil Armstrong , Dmitry Baryshkov , Wesley Cheng Cc: linux-arm-msm@vger.kernel.org, linux-phy@lists.infradead.org, linux-kernel@vger.kernel.org, Dmitry Baryshkov , Abel Vesa , Konrad Dybcio , Loic Poulain X-Mailer: b4 0.14.2 X-Authority-Analysis: v=2.4 cv=X4Bi7mTe c=1 sm=1 tr=0 ts=6a60c970 cx=c_pps a=mPf7EqFMSY9/WdsSgAYMbA==:117 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=RAioF0-LDSMA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=YMgV9FUhrdKAYTUUvYB2:22 a=EUspDBNiAAAA:8 a=yoX6jHX73kXkGH752t0A:9 a=QEXdDO2ut3YA:10 a=dawVfQjAaf238kedN5IG:22 X-Proofpoint-GUID: 13LBqOb1U0pBycq8dU-OylSazuRRejce X-Proofpoint-Spam-Info: AW1haW4tMjYwNzIyMDEzNCBTYWx0ZWRfXwV1J6UvJ+I8c +IcDGgKvPn6YMLzoPDp5/yAjvQ8XHWTMbnHIpLYOj8lc/WFvyy87Q84bleAldRE0ZkL7tXRohFt 0c4YBp5dUU1JMwcesxknTMrhpllfhFY= X-Proofpoint-ORIG-GUID: 13LBqOb1U0pBycq8dU-OylSazuRRejce X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzIyMDEzNCBTYWx0ZWRfXzZrUaamx8eRl jicTuB0m9Re006K0EBZQDvSL65MycZ6znZ4F0Zv6P8T78WaOarbtCr88HC0BgMi4SotkfCQTGZ8 Ea4zS10ewJtm9oswMa67ViHqSkscTSUGwdLpAm2040bqdbuVLnpmg/jhIsVGmY4CP6jwliGrD7A xIPy6SE3rIXGJNEzGjcpjGG3fPquz6ZL66b1fw7TRoajkzHVPFYE+Dqjd+RDmgOajkFOH7E5Gsm GMQ9hXR504qijlKbMZ3EaF98XtPT8aw4bzf4GTV/PkYAXvF6HIoTRbHUv0qIoKpXbB5an09xuYO nRFld5ukgRlOvt2qKFS9x5FdeDFqSnpSIbkMkjo/BLrxHkSHbx0UsRtd3MiaDqYhwzuhGMV+V8P lJ5fhCYzy2bRuvZx212X/F9slsy5mGaHCZ8LyvYifjSKAhvRDZigmQk3pgeKFbfhQmCfKxi6brr 88IXFh+F5at6GG41ogg== X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-07-22_04,2026-07-22_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 bulkscore=0 lowpriorityscore=0 suspectscore=0 phishscore=0 malwarescore=0 clxscore=1015 priorityscore=1501 spamscore=0 adultscore=0 impostorscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607220134 Runtime PM has to be enabled before creating the PHYs, since phy_create() only enables runtime PM on the PHY devices if it is already enabled on this parent device. This opens a small window where the device can be runtime suspended after pm_runtime_enable() and before the later pm_runtime_forbid(), causing an unnecessary suspend/resume cycle while the PHYs are not yet registered. Take a runtime PM usage reference with pm_runtime_get_noresume() before enabling runtime PM and release it once the PHYs have been created to prevent the device from being runtime suspended during that window. This also makes the probe path safe independently of pm_runtime_forbid(), which is a good preparation for potentially dropping the forbid() call in the future and letting runtime PM be enabled by default. Reviewed-by: Dmitry Baryshkov Reviewed-by: Abel Vesa Reviewed-by: Konrad Dybcio Signed-off-by: Loic Poulain --- drivers/phy/qualcomm/phy-qcom-qmp-combo.c | 26 ++++++++++++++++++++------ 1 file changed, 20 insertions(+), 6 deletions(-) diff --git a/drivers/phy/qualcomm/phy-qcom-qmp-combo.c b/drivers/phy/qualco= mm/phy-qcom-qmp-combo.c index cdcfad2e86b1d37650c4d7b0433319837ee9c9d4..2cbe1d90662eebd5baf426dd962= 0cb5cc5d9256f 100644 --- a/drivers/phy/qualcomm/phy-qcom-qmp-combo.c +++ b/drivers/phy/qualcomm/phy-qcom-qmp-combo.c @@ -4934,10 +4934,16 @@ static int qmp_combo_probe(struct platform_device *= pdev) if (ret) goto err_node_put; =20 + /* + * Enable runtime PM before creating the PHYs, phy_create() only enables + * it on the PHY devices if already enabled on the parent. Hold a usage + * reference so callbacks cannot run until the PHY is ready. + */ + pm_runtime_get_noresume(dev); pm_runtime_set_active(dev); ret =3D devm_pm_runtime_enable(dev); if (ret) - goto err_node_put; + goto err_pm_put; /* * Prevent runtime pm from being ON by default. Users can enable * it using power/control in sysfs. @@ -4946,14 +4952,13 @@ static int qmp_combo_probe(struct platform_device *= pdev) =20 ret =3D qmp_combo_register_clocks(qmp, usb_np, dp_np); if (ret) - goto err_node_put; - + goto err_pm_put; =20 qmp->usb_phy =3D devm_phy_create(dev, usb_np, &qmp_combo_usb_phy_ops); if (IS_ERR(qmp->usb_phy)) { ret =3D PTR_ERR(qmp->usb_phy); dev_err(dev, "failed to create USB PHY: %d\n", ret); - goto err_node_put; + goto err_pm_put; } =20 phy_set_drvdata(qmp->usb_phy, qmp); @@ -4962,7 +4967,7 @@ static int qmp_combo_probe(struct platform_device *pd= ev) if (IS_ERR(qmp->dp_phy)) { ret =3D PTR_ERR(qmp->dp_phy); dev_err(dev, "failed to create DP PHY: %d\n", ret); - goto err_node_put; + goto err_pm_put; } =20 phy_set_drvdata(qmp->dp_phy, qmp); @@ -4972,11 +4977,20 @@ static int qmp_combo_probe(struct platform_device *= pdev) else phy_provider =3D devm_of_phy_provider_register(dev, of_phy_simple_xlate); =20 + if (IS_ERR(phy_provider)) { + ret =3D PTR_ERR(phy_provider); + goto err_pm_put; + } + of_node_put(usb_np); of_node_put(dp_np); =20 - return PTR_ERR_OR_ZERO(phy_provider); + pm_runtime_put(dev); + + return 0; =20 +err_pm_put: + pm_runtime_put_noidle(dev); err_node_put: of_node_put(usb_np); of_node_put(dp_np); --=20 2.34.1 From nobody Fri Jul 24 22:54:58 2026 Received: from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com [205.220.180.131]) (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 8392E288C96 for ; Wed, 22 Jul 2026 13:45:23 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.180.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784727929; cv=none; b=H4mvd4P58b74kxOiWP7Na6DRydJsUFfo5SE/5zeEOlGG1ASfn4luhAKS9VkHZNUQYt4Mp9z///5Pd/WE+TqbE9nKjA/tmHw6WQL1XFz5RquseBnpgAPFPDDdbo0L9vCo1KOnVGxaTw02c5BcN79ysKpQFA7oWkV8yDk4QIDp2jI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784727929; c=relaxed/simple; bh=tNsF/WcyC0IAprWHFH3RJbzyT2uMIAOssLEeQ33n1NI=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=A0if9Vc4B9bQgHGDtY0lR2Hvhuqe3qq4lWDK48YaY28dOlXANG3nZeaE3xDWlHszh+EallF11euGJHGHQPBNpQbmM+MgyIzRKHqd7PvCDAFY7Io2A/LMwzFb1JKiS4QNLoott0p90dt5ZmBUFqqX+k3lg0o1jpiLur/YppZoAyc= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=Sk5OT7QM; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=SOf+krWt; arc=none smtp.client-ip=205.220.180.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="Sk5OT7QM"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="SOf+krWt" Received: from pps.filterd (m0279871.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 66MDWZK31027222 for ; Wed, 22 Jul 2026 13:45:22 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= 06nNTeJjyFOIPuxgya+vwS/gLIKghgHtI72YfoBDYUE=; b=Sk5OT7QMYDWzSdZ4 mJ3GcNIyqytBXolCSM4JrlaihhM6oEtL3y5EVnLjJhL7oXzNtr51VGBGTAA5NvQQ 7oYgma7kKMzdO18yQmz/K11IAeAgm4ZFaVBFdObo8iGKiimUqF4bkON2o84kS9tx p8RvqzisFqBxV/oBjbHQfxPjdqjHALCZY0U/qJ6sTYdaalGczoAVgVYD39Mga5Fu aR/t2CF0vNQp2QNtrcNmgQOMSOtwCKLQSlQirggplmz+CAq7Kly+utz1rQncsuec oqsQvwJypLUxrah7fNZtI1aSbYpOtq3iC+GHKLdg1Yf/lFXgjy35j5orX+tCCn4/ i7WxzQ== Received: from mail-qt1-f198.google.com (mail-qt1-f198.google.com [209.85.160.198]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4fjt79994f-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Wed, 22 Jul 2026 13:45:22 +0000 (GMT) Received: by mail-qt1-f198.google.com with SMTP id d75a77b69052e-51c01ff996dso103570341cf.2 for ; Wed, 22 Jul 2026 06:45:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1784727921; x=1785332721; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=06nNTeJjyFOIPuxgya+vwS/gLIKghgHtI72YfoBDYUE=; b=SOf+krWthldxUJXmYWGsQg4SdK8iVZah4BJKZGQCYNEaIAITl8GynOoOnYx8/NOVYt h2ethhZKZxumrksL20dMXKCSe1MXkGfQvBuGYR0YjQeZDBsSb5g98C9woQCgJjlCxAdz SGsWWDyM2HU3lbA95vi8z2Ll7y3lWzwd6jtD6bTk/+7a3yJaTblptnfprAi/Lc3e4kvv k+bnAmUzufgMSZE35qX6fSr++CeTNQcTPkqttXWJDVpd5FEBoESGuNhS7P1R0nX34X78 UN1g+TMuNUGdxYTgz+G8TMod3evZakQAsVtlM/Nj0HxPnHg1HM4L7FBdSJwxbXiIkLjn YOqQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1784727921; x=1785332721; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=06nNTeJjyFOIPuxgya+vwS/gLIKghgHtI72YfoBDYUE=; b=DR59Kr9N9AqFuHyFRS7qxQpdhYZxfpC8spJrxWY2wmfQlvuMMOey6+uj0Q/bMxy8SU l8JMfUuSYTjv2RmOMZnnzrEweVL2Nq98cYGmDbqHAcoDxX2a1VO2mrI3idLLYSuZSUQr NLWlDgUPeCLs38Ir5f5oSWAjXIHzDd0gCi5r8q2Jnu6PqdpWxo1BLqF5lA8+P0K7UT+H 1ZLTQwEtYAa/4d63odlxFkRe++uVLYYa00jQHVRlOkTtza9LSWFAoYJ7xJoJd/UCNsK8 bOK6iLSwnLs6Q6w0py7f8Ggoc3vXfZBOk2RLd3IPxZcJVnlTsbLGdfWEE2HdX0ga8+Na RqSA== X-Forwarded-Encrypted: i=1; AHgh+RrpMhI8EnUbR46EuQ7Haayu0ytvNT4RCuUNi6TUY/BfwG85pBCN90Fg67swQpkcb3v+PhVWQ+9m9MKyYeI=@vger.kernel.org X-Gm-Message-State: AOJu0YyxjEA5sjzU1T5Zpwe50Tpkacp/0pn0AQdyIc7jRE9rpi376y3u gk7ENeKqm3mp8l6WPSDKn8F+ymKRIm0b2AQb9vPtU/1zihdj5WFS7wLNNQXbxufMEt72pbZwoEy yBn39511GPGZIctMpOqKOV6+CM2wr+MIhsOXPT8K7TntN6088NVnll4Ms9079sFRCoL4= X-Gm-Gg: AR+sD13fSjNfSu+VF6pGXeUE6ojgU4N7QeWy+2HVFBNrHn1dS8HedrOkLF2fpJvnaya MGiXckfIFQKaO0EDQ+CHnkAvkRXaKXNHiRHVkVu/kCw3V7Hvpn9+i4Fz0AXa2O3WJjQ7TodTGvo HLQVZKK0iHiTiXVEvrWQfzwsegl7dgUjuSYHLk7fgaPRBtV13Fut8qKq1B/FFClMZKoPdIRl/L5 Vyvkt2JGLItoSU4InfhaL1OehxXPe9f5GJ3tQ4susAhppZYbLNiGyVii0+D3FYin6ArOC7EMhdH QdA1/iwGMm2k+byLX7DRT2c/2edMh1hD1UmqBbzp/8nGnQoxhQDZU0yjfh4YRVzJhoxUv9nnO5Z NWknIkqtdeZGHdmJY0iEJmPqyl0kIZqL/tMRgRdv6ivCtSgFlZ2jmTY80/JySo+JngJGCFPlRbP 2ophx74K9doVKRUh+38b+TlAurXEjFxijRtWKQh+EtLK7JCGICOg== X-Received: by 2002:a05:622a:1a9a:b0:51c:1e2f:1281 with SMTP id d75a77b69052e-5213e48b00emr222520141cf.42.1784727921276; Wed, 22 Jul 2026 06:45:21 -0700 (PDT) X-Received: by 2002:a05:622a:1a9a:b0:51c:1e2f:1281 with SMTP id d75a77b69052e-5213e48b00emr222519521cf.42.1784727920559; Wed, 22 Jul 2026 06:45:20 -0700 (PDT) Received: from QCOM-eG0v1AUPpu.na.qualcomm.com ([2a01:e0a:830:450:48e:a2cc:6c4:c92a]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-c1c32ac8c3esm111874366b.23.2026.07.22.06.45.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 22 Jul 2026 06:45:19 -0700 (PDT) From: Loic Poulain Date: Wed, 22 Jul 2026 15:45:15 +0200 Subject: [PATCH v6 2/7] phy: qcom: qmp-usbc: Prevent unnecessary PM runtime suspend at boot 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: <20260722-qcom-usb-phy-fix-null-v6-2-534f7e61b9a6@oss.qualcomm.com> References: <20260722-qcom-usb-phy-fix-null-v6-0-534f7e61b9a6@oss.qualcomm.com> In-Reply-To: <20260722-qcom-usb-phy-fix-null-v6-0-534f7e61b9a6@oss.qualcomm.com> To: Vinod Koul , Neil Armstrong , Dmitry Baryshkov , Wesley Cheng Cc: linux-arm-msm@vger.kernel.org, linux-phy@lists.infradead.org, linux-kernel@vger.kernel.org, Konrad Dybcio , Abel Vesa , Dmitry Baryshkov , Loic Poulain X-Mailer: b4 0.14.2 X-Authority-Analysis: v=2.4 cv=Sr6gLvO0 c=1 sm=1 tr=0 ts=6a60c972 cx=c_pps a=mPf7EqFMSY9/WdsSgAYMbA==:117 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=RAioF0-LDSMA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=3WHJM1ZQz_JShphwDgj5:22 a=EUspDBNiAAAA:8 a=yoX6jHX73kXkGH752t0A:9 a=QEXdDO2ut3YA:10 a=dawVfQjAaf238kedN5IG:22 X-Proofpoint-ORIG-GUID: csGUke6j6XawN-JQ2YBbMw0elG4vr4T5 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzIyMDEzNCBTYWx0ZWRfX2mm7pHFFTcGl k2LtPONImGCorWMvd00kLqGJiMWY++7S8Z64ZXEUHgWUmLF7eH1JTiRadt08YHRBZwpTDO0FdZx uQI2OJwanXAcl9l2SBm3OaezE0srQKawfT+POxDny842HA09TvaH04NVHZVON7hHnRDjBh6GpbN MNcHcvipUt+5aiVGfms9d5vg18rCxGBIodvFNPY3Kj3IWlEHXfJHgCL/t/o8/ReTk1Y6mqjxVaf 5iu1X9BjJaeDf0Hkcx9CeaQOVLX7O8R3YzhSo/bjadtQ3f/hVL8I0iH46nfR6vmQsH5jsBiBiut ciOp5GBBoPz/jzQhHu0Cyb+068Er4bW/mkQKzA5v7nIuwnF6n3ISQCqAagF62c/g3XYiXsC5YIE Aua4TSRhsBHHeIRTRXDkiZYlWFgv9Gms+jRcLY/+jg2L2/uatXxou24gFRJ9cwhVS8CXkZlSOFF eTsyVq4oL4Ohiz6RrYA== X-Proofpoint-GUID: csGUke6j6XawN-JQ2YBbMw0elG4vr4T5 X-Proofpoint-Spam-Info: AW1haW4tMjYwNzIyMDEzNCBTYWx0ZWRfX9GTYIC97BRGE qlgSBYym7J7bWiNbUKS5LgrzAAycV3VGMlcEB78HvZb2MURrR4eCxOSM28V326gklDJMQhJhY7X IBXVnU/NK7f9lbEGyDvIh7NkZfjF3as= X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-07-22_04,2026-07-22_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 malwarescore=0 suspectscore=0 spamscore=0 lowpriorityscore=0 bulkscore=0 adultscore=0 clxscore=1015 impostorscore=0 phishscore=0 priorityscore=1501 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607220134 Runtime PM has to be enabled before creating the PHYs, since phy_create() only enables runtime PM on the PHY devices if it is already enabled on this parent device. This opens a small window where the device can be runtime suspended after pm_runtime_enable() and before the later pm_runtime_forbid(), causing an unnecessary suspend/resume cycle while the PHYs are not yet registered. Take a runtime PM usage reference with pm_runtime_get_noresume() before enabling runtime PM and release it once the PHYs have been created to prevent the device from being runtime suspended during that window. This also makes the probe path safe independently of pm_runtime_forbid(), which is a good preparation for potentially dropping the forbid() call in the future and letting runtime PM be enabled by default. Reviewed-by: Konrad Dybcio Reviewed-by: Abel Vesa Reviewed-by: Dmitry Baryshkov Signed-off-by: Loic Poulain --- drivers/phy/qualcomm/phy-qcom-qmp-usbc.c | 26 ++++++++++++++++++++------ 1 file changed, 20 insertions(+), 6 deletions(-) diff --git a/drivers/phy/qualcomm/phy-qcom-qmp-usbc.c b/drivers/phy/qualcom= m/phy-qcom-qmp-usbc.c index ab3055bb5b0c198832ae06dfcd04fd34395e271d..780a6b4f71eb41adf8f7011db86= 76c56f704b933 100644 --- a/drivers/phy/qualcomm/phy-qcom-qmp-usbc.c +++ b/drivers/phy/qualcomm/phy-qcom-qmp-usbc.c @@ -1959,10 +1959,16 @@ static int qmp_usbc_probe(struct platform_device *p= dev) if (ret) goto err_node_put; =20 + /* + * Enable runtime PM before creating the PHYs, phy_create() only enables + * it on the PHY devices if already enabled on the parent. Hold a usage + * reference so callbacks cannot run until the PHY is ready. + */ + pm_runtime_get_noresume(dev); pm_runtime_set_active(dev); ret =3D devm_pm_runtime_enable(dev); if (ret) - goto err_node_put; + goto err_pm_put; /* * Prevent runtime pm from being ON by default. Users can enable * it using power/control in sysfs. @@ -1971,13 +1977,13 @@ static int qmp_usbc_probe(struct platform_device *p= dev) =20 ret =3D qmp_usbc_register_clocks(qmp, np); if (ret) - goto err_node_put; + goto err_pm_put; =20 qmp->usb_phy =3D devm_phy_create(dev, np, &qmp_usbc_usb_phy_ops); if (IS_ERR(qmp->usb_phy)) { ret =3D PTR_ERR(qmp->usb_phy); dev_err(dev, "failed to create PHY: %d\n", ret); - goto err_node_put; + goto err_pm_put; } =20 phy_set_drvdata(qmp->usb_phy, qmp); @@ -1987,17 +1993,25 @@ static int qmp_usbc_probe(struct platform_device *p= dev) if (IS_ERR(qmp->dp_phy)) { ret =3D PTR_ERR(qmp->dp_phy); dev_err(dev, "failed to create PHY: %d\n", ret); - goto err_node_put; + goto err_pm_put; } phy_set_drvdata(qmp->dp_phy, qmp); } =20 + phy_provider =3D devm_of_phy_provider_register(dev, qmp_usbc_phy_xlate); + if (IS_ERR(phy_provider)) { + ret =3D PTR_ERR(phy_provider); + goto err_pm_put; + } + of_node_put(np); =20 - phy_provider =3D devm_of_phy_provider_register(dev, qmp_usbc_phy_xlate); + pm_runtime_put(dev); =20 - return PTR_ERR_OR_ZERO(phy_provider); + return 0; =20 +err_pm_put: + pm_runtime_put_noidle(dev); err_node_put: of_node_put(np); return ret; --=20 2.34.1 From nobody Fri Jul 24 22:54:58 2026 Received: from mx0a-0031df01.pphosted.com (mx0a-0031df01.pphosted.com [205.220.168.131]) (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 96B183546D7 for ; Wed, 22 Jul 2026 13:45:26 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.168.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784727928; cv=none; b=NwVjMtWMiYjViAzHJJCb4xkv1ZsESxgNWTKIthVaz0Qa/D3WQdz44G84XgonG4aOkr5a2K1occnUY54ZbyunqViSoFpZVQ9PKVRX7UVSN/Sbt7rYYce89W9YgfX5jJvaeIo/U94gyqRkzAl+awBwL9a8ZRy3d26YOheL4iHucy0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784727928; c=relaxed/simple; bh=1uCSE9pS0uK8c8rmwdqjcZn44CXrmRxmSQbFF1quomQ=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=E8bwr/RAJLpvZgUSFKnYyhIq95yMlHO6TEn32pTY9fl929MFnkVYkg9DUTIfyyT6VPuSmgQFFvIpvNdhl7xeVeZmwX8i5JpaW8NzHy+7s3Mdpk3plR/11k0uue+sX10vl7raS2YTT0iWK8tmIj4MrRkLUIYX7xwpcGJcBZwkbwU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=OQ51VTgX; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=Jr7gIXcN; arc=none smtp.client-ip=205.220.168.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="OQ51VTgX"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="Jr7gIXcN" Received: from pps.filterd (m0279863.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 66MDWQRU1016995 for ; Wed, 22 Jul 2026 13:45:25 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= w1VnrF5mL82CPISYHMNOBYhwf3W9zInAag1/ZxJRFrs=; b=OQ51VTgXuSQPXKau wWydlVa06skJeeKKMInKfpUGjlYAjCIDIP66RiJLVqPjk7FhzB+O0QRois1bveTd eqXwHYml3jrn8BjIGs7nNiUPXD6s+aSSJqB4JTCYzzgopc0VfiHPWpRKs2E8UaI/ UcQ7vmqjNHerdj7JvqOCjGbD5WRFQrOBDJMWANPjN/yhNAdZR1z7Dewl2yj1A5r7 IGuGaY/CNaxAGw9JDTx3qUcwcRsVkWFexKIOFUFcJ78WhfqCK6o4jGLRqxu1hrna jZ/bY1SPst2a03qJfQazrlFJWV2tNf4rthFi4cMPTX01Sy3uNWCStnBZachXXxtD d+5/qQ== Received: from mail-qt1-f197.google.com (mail-qt1-f197.google.com [209.85.160.197]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4fjs929k6m-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Wed, 22 Jul 2026 13:45:25 +0000 (GMT) Received: by mail-qt1-f197.google.com with SMTP id d75a77b69052e-51c1eb52e1fso138801641cf.0 for ; Wed, 22 Jul 2026 06:45:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1784727925; x=1785332725; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=w1VnrF5mL82CPISYHMNOBYhwf3W9zInAag1/ZxJRFrs=; b=Jr7gIXcNlqu/IVrqieM9jgDZW8vJrS+Pd9aCvHwyBfx4Ye6aeFT6oNJ/xNbHRdW05G aRhGmK9O/28UyHmMldd9x6klYvOYZPIXf7lEk3Aez/+TToExY4SFkXgwOH87RyXR+HB9 l7LToAq8k7byHpctg4sPFHNXb2t7MzvA6ng+oyM/oBSRL6mxovveCANFtvN3XgSfFhEk 9gcQuvj2eO0AbLa0kxEt4KvXpboWjWwLjmz11x362vPSwMYrl/D5lJKd6DKVPC0UHjll jKDw6RUehlQb9wz1j4jvmvgJ33N+xv+UtdzEWMK5wgNlVeeB/DrfkJKulhrR1MGnkyLs Q+jg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1784727925; x=1785332725; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=w1VnrF5mL82CPISYHMNOBYhwf3W9zInAag1/ZxJRFrs=; b=BLl5THylRrm9teOXAn5Qb8bCSuQlDfiF1dw/xcLrmiXDwMd5Goiq3uTTdgiQ6XBUxS 7ZtaTXSHmi9BLYamnNCoIXEXWgD7RBW5cN6xjHh5mL06buffCXRhYtKPtv2b3ZUB6APC d7g6o+ZtnCOdPBSA0nClYsgfFG2UV7wqzsKuP9FlZAh4AaPVxTSD7QOJYTN0KaH1yMhy MR+Hzx7Bemk4WzWC2ysVQ2bzgBhIPFxy6iZqsVmNYKARGQBa4VZMXWZwvVT3Wc6rXISZ wW595d0I23sS64DOJa8/SrAl9YQj+Qk7LcsdCOM2tIcmk5dWjCfdIIxlzMfuo6fgaGIA 7XAw== X-Forwarded-Encrypted: i=1; AHgh+Rp7j2JIkTMFCET64tC4lAkLCNhkCV3MYuqi8BgUuwA+z5ON6m4jqK4JtzLqsiKgwnp15xSHpQMNVtlQi/g=@vger.kernel.org X-Gm-Message-State: AOJu0Yx1Xd0lzhMIFpGLaiR2YKXNiDgvNjVQqMFNO4m6OFULrV5orcoV P87n53FihrBpRuhoi3yEgN/uCiZIkkQZX/iPVfNiDii9YNBonyzUOXA/vWkrqCi7QaqHByGquzc rj3G2b0fYJZOHk1+Mp+uybEmVhq5IQ2/1VZ2VxMSQXGkHVk+DbLKIDBzZQUGfK6rO/rA= X-Gm-Gg: AR+sD11aBpSehFET1S9X2SQQZmdDxyVAr2A4ts8claQEXu6CWICIt525pIT/NWOF5eG KReNyCPBgNEexv7VwxSqf6ZIeGKEbvick+oYF8qYi4ZcRWal3DNWtTbZD8UGs9l1OK3wLX4X/0K 2AL2p8bmoZHfAQ+pW0CFBq3ZlvfEb+slGEDoJtM0tOE/EQFrS950btPPGmilgitrOC54cj78wTd liHkLI5qVpgSCP8pB2Bde0663FfWTSL95LVTyhTtSSQ7bXE6wuPoJW2i++lrw/LRz6INIAl5/EZ +yvUvc9DW0O2yzWSxrsMy3nWe4CzgXL0xdBvqAjo5r67feIe6Q4nfxrnv5b+CF/TQQDSLWvf6Eo UZcRKRZXsYGLTGpw7W7bZ1tBRFaDYsMuti7K1NIKitP5GYugP/NLeDtLK8Ges5GkF6f5xSnVXNg tBSAXk73MzIqeyqfgyN6MRgoKtLZSGdpx3BPDNhlxBCKewD1dcaA== X-Received: by 2002:a05:622a:8405:20b0:521:8ef0:b4e0 with SMTP id d75a77b69052e-5218ef0b690mr129439971cf.17.1784727924539; Wed, 22 Jul 2026 06:45:24 -0700 (PDT) X-Received: by 2002:a05:622a:8405:20b0:521:8ef0:b4e0 with SMTP id d75a77b69052e-5218ef0b690mr129438601cf.17.1784727922476; Wed, 22 Jul 2026 06:45:22 -0700 (PDT) Received: from QCOM-eG0v1AUPpu.na.qualcomm.com ([2a01:e0a:830:450:48e:a2cc:6c4:c92a]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-c1c32ac8c3esm111874366b.23.2026.07.22.06.45.20 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 22 Jul 2026 06:45:21 -0700 (PDT) From: Loic Poulain Date: Wed, 22 Jul 2026 15:45:16 +0200 Subject: [PATCH v6 3/7] phy: qcom: qmp-usb-legacy: Fix possible NULL-deref on early runtime suspend 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: <20260722-qcom-usb-phy-fix-null-v6-3-534f7e61b9a6@oss.qualcomm.com> References: <20260722-qcom-usb-phy-fix-null-v6-0-534f7e61b9a6@oss.qualcomm.com> In-Reply-To: <20260722-qcom-usb-phy-fix-null-v6-0-534f7e61b9a6@oss.qualcomm.com> To: Vinod Koul , Neil Armstrong , Dmitry Baryshkov , Wesley Cheng Cc: linux-arm-msm@vger.kernel.org, linux-phy@lists.infradead.org, linux-kernel@vger.kernel.org, Abel Vesa , Dmitry Baryshkov , Loic Poulain X-Mailer: b4 0.14.2 X-Proofpoint-Spam-Info: AW1haW4tMjYwNzIyMDEzNCBTYWx0ZWRfX3Er7ob1VgAY3 RFZ38cpjJ7jvHvfS7nsCL9UKAtkFLcDbQ2WHd7Igu0MooaFrII1D2Quf5hBsQOcrx9iu4nvwETv P1Mm/SDEn/ZssMhYvdTirC4g1ZjfUzk= X-Proofpoint-ORIG-GUID: dEID2LQFkEO4V7flapxppJInSC4SE5B6 X-Proofpoint-GUID: dEID2LQFkEO4V7flapxppJInSC4SE5B6 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzIyMDEzNCBTYWx0ZWRfX/qb69WEXZ36J ZfpYtbW9M3vQFgNJVhOkS5hw9N6i7pT/KdUDKl0M5nAa+FMv1D3AScVdQAKphTtMQGZhoQev6lX zArVgt8MSAwddEPxIwmUGKCvFo1nhB7eVEtahjLSjbuh2LcDKnRBwzTMUNjkpdd7TXHzfVSSvuY qByamGVY0HpSf1NX9k4X83cHChz2eDS1kC06wNa7SM5E1xG5sfA0NPYsTEHuMaGKyjF+cOhY27G r4oxBjYBnkTLFJvHwX4h5qwQdJlug4Kt2sZu17UAFoHL4LwXWhxKRqm0Ue9D6U2/E5TICxa2tuQ gPC4fYa2leLKUlBGZ4nWYLoEb3lijMzY051qaAf2hDauBX0yx2AQvFkqblhJyVqGXSEOisJWVf/ tT+bLXq/sy2SiwRP+Y4XNYvOt/0oQVTtvZKUx0CkhA4E1r8gTlLc09W7/XEUsaqsjZGL5u3mnJU VyJ/bQG5D7A/n81efeg== X-Authority-Analysis: v=2.4 cv=QahWeMbv c=1 sm=1 tr=0 ts=6a60c975 cx=c_pps a=EVbN6Ke/fEF3bsl7X48z0g==:117 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=RAioF0-LDSMA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=yOCtJkima9RkubShWh1s:22 a=EUspDBNiAAAA:8 a=QCvEx_dtP_Vb2dzgXhUA:9 a=QEXdDO2ut3YA:10 a=a_PwQJl-kcHnX1M80qC6:22 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-07-22_04,2026-07-22_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 suspectscore=0 priorityscore=1501 malwarescore=0 bulkscore=0 lowpriorityscore=0 phishscore=0 spamscore=0 clxscore=1015 adultscore=0 impostorscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607220134 There is a small window where the runtime suspend callback may run after pm_runtime_enable() and before pm_runtime_forbid(). In this case, a crash occurs because runtime suspend/resume dereferences qmp->phy pointer, which is not yet initialized: `if (!qmp->phy->init_count) {` This can also happen if user re-enables runtime-pm via the sysfs attribute before qmp phy is initialized. Similarly to other qcom phy drivers, introduce a qmp->phy_initialized variable that can be used to avoid relying on the possibly uninitialized phy pointer. Fixes: e464a3180a43 ("phy: qcom-qmp-usb: split off the legacy USB+dp_com su= pport") Reviewed-by: Abel Vesa Reviewed-by: Dmitry Baryshkov Signed-off-by: Loic Poulain --- drivers/phy/qualcomm/phy-qcom-qmp-usb-legacy.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/drivers/phy/qualcomm/phy-qcom-qmp-usb-legacy.c b/drivers/phy/q= ualcomm/phy-qcom-qmp-usb-legacy.c index 8bf951b0490cfd811635df8940de1b789e21b46c..fc490589c8e4888770807a60170= 905a1c7610421 100644 --- a/drivers/phy/qualcomm/phy-qcom-qmp-usb-legacy.c +++ b/drivers/phy/qualcomm/phy-qcom-qmp-usb-legacy.c @@ -542,6 +542,8 @@ struct qmp_usb { =20 enum phy_mode mode; =20 + bool phy_initialized; + struct phy *phy; =20 struct clk_fixed_rate pipe_clk_fixed; @@ -895,6 +897,7 @@ static int qmp_usb_legacy_power_off(struct phy *phy) =20 static int qmp_usb_legacy_enable(struct phy *phy) { + struct qmp_usb *qmp =3D phy_get_drvdata(phy); int ret; =20 ret =3D qmp_usb_legacy_init(phy); @@ -904,14 +907,19 @@ static int qmp_usb_legacy_enable(struct phy *phy) ret =3D qmp_usb_legacy_power_on(phy); if (ret) qmp_usb_legacy_exit(phy); + else + qmp->phy_initialized =3D true; =20 return ret; } =20 static int qmp_usb_legacy_disable(struct phy *phy) { + struct qmp_usb *qmp =3D phy_get_drvdata(phy); int ret; =20 + qmp->phy_initialized =3D false; + ret =3D qmp_usb_legacy_power_off(phy); if (ret) return ret; @@ -988,7 +996,7 @@ static int __maybe_unused qmp_usb_legacy_runtime_suspen= d(struct device *dev) =20 dev_vdbg(dev, "Suspending QMP phy, mode:%d\n", qmp->mode); =20 - if (!qmp->phy->init_count) { + if (!qmp->phy_initialized) { dev_vdbg(dev, "PHY not initialized, bailing out\n"); return 0; } @@ -1009,7 +1017,7 @@ static int __maybe_unused qmp_usb_legacy_runtime_resu= me(struct device *dev) =20 dev_vdbg(dev, "Resuming QMP phy, mode:%d\n", qmp->mode); =20 - if (!qmp->phy->init_count) { + if (!qmp->phy_initialized) { dev_vdbg(dev, "PHY not initialized, bailing out\n"); return 0; } --=20 2.34.1 From nobody Fri Jul 24 22:54:58 2026 Received: from mx0a-0031df01.pphosted.com (mx0a-0031df01.pphosted.com [205.220.168.131]) (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 14EBE352F86 for ; Wed, 22 Jul 2026 13:45:27 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.168.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784727929; cv=none; b=jf06XMQ3CP3fpghJXDWTxuNE/FqZHEZvpNRKfkM0fFxLowMUgb3rTrSrAK+vL5TAFxnRGGuj8On5XTUzgFWkQzj6Z01mgO6c2a572pK/ajJICaeoeWNsAXXGWpg2X5Pj+258ON4fA6TZtP6QTf1gAPOmMW6CT1lRAjqNo8pVTjs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784727929; c=relaxed/simple; bh=RnXrSiqUbjwwVh0fjK8iSpP2LVrDFGf1j0mxbQZTxGw=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=bW9JIMOIwgfeY6VtqRcVmqpUlnpfMjMLiWqi5rppHkaH7L4mPrkR+8sv6WK+XeDE6uSl+CelQQ/JhV6ztZUMpNTaGc2/TaTUBKhSfr3g/BbDf5vA/A57+vK9d6ptKq8QjM9pJMRANA1QBl8bZB+BZV4JlJQeelbXyS8o3Xp3UvY= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=mm5A8wbz; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=N8yjIS2M; arc=none smtp.client-ip=205.220.168.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="mm5A8wbz"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="N8yjIS2M" Received: from pps.filterd (m0279862.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 66MDWreG755498 for ; Wed, 22 Jul 2026 13:45:27 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= 70IOUuaW7cw8k4RLr+fSBXr1xu6M0q9hq91f5W2ss5A=; b=mm5A8wbz15Zm5rWs SWLaEV7kow3N7GdqvMxexsiAwATiBtS/i/F4tWtXg2hf/g4D3Lt9LxpAOrObd72K 5P4nGhTEXOPw8zKDC+4RMdnpOYRjk+NXVQKgEm+sNkmOMChcRvXc8ETA4FWglTj6 o4HMrRZ5ImDvrk+NmxebDvJS9YdkDTrRMc60ylFwoqz0za8h3TArzUqcSWzxAunb k0/6BYQul5xAST4T70e5kgVXCNwzmhCe6xBsP5Bj4doBgt/ZgAyZ5ogVyjz4uaWk IRsIajHtOOSq7HvdW7NDWlfOQ1CKZOJz0n+h5uP3Kx3zS5gnzle2DUa1sTaJX2c7 UNFj+Q== Received: from mail-qt1-f198.google.com (mail-qt1-f198.google.com [209.85.160.198]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4fjnu4td82-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Wed, 22 Jul 2026 13:45:27 +0000 (GMT) Received: by mail-qt1-f198.google.com with SMTP id d75a77b69052e-51c20762d21so125682981cf.0 for ; Wed, 22 Jul 2026 06:45:27 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1784727926; x=1785332726; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=70IOUuaW7cw8k4RLr+fSBXr1xu6M0q9hq91f5W2ss5A=; b=N8yjIS2MIqMDZ/9IkNoA3TdFY7W3LxJDwplx0hSqaT2yju1oJ9zgjrLthp4OyfxiuI nbjix987fwaDscIJN13vKxftvXwzBKJHkRXnYm8RrGw18HOCamV328Ykp0PDFYYs64EO ZO71MbMmEhZe7Or8kuWjXSOt1tE6ymyHp41eWdZN8bux8o8Kg/xUggltFvpiuNNDVp9f zJKj1vJc+WNRS5GEypQWXE6vgJuvLuq7bkP3miIxf65k+Y8/2FWE+gbQewVcY5wzlIyz ToDKAqTKoKkZXhvIOV2STjbSjBx8IzBwHePsvh62qHlg9ugP75TBGqE43g0XOXHUDjZb TTIA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1784727926; x=1785332726; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=70IOUuaW7cw8k4RLr+fSBXr1xu6M0q9hq91f5W2ss5A=; b=WcfhRRFx+t2O1OwX5X6LUMjg3z+CQF6xvj5l7ku4wjyQZ1IOte3tv77BjyG1TT67yG TEeZpICASSt/A0OCDvW/X3lXATogqm3YPY1f3YUQwzBBgUdHF/JWldk3ZsiG1w/3v5+a e5LyHp57iYjCjxyCuX0SjAPzzdLV9zTNWOL7Kjtyu/lFNqElgbCsl7LIcqE93fCOCOQG 4+2nKNFXFapXjzsBDR4qqX9ABsRTKYYB3c4qzfWMVpTxkZvUO+lHspFQZrCg2YbEyEVL hMNL89yXQ0N5P7oyiikR9m6G1CgNfx47Gh8Oz4YA/1x6EYNTYciQ/C6mVPlcaAbOmkRB rrwQ== X-Forwarded-Encrypted: i=1; AHgh+RpS2lwBIlqmDEh42ePp2xSUuMBedPjPM2LPW4DiEcYpJTq7b4l4rMJJtgUZZdaxEJ6PBzaPaenVNCsJq0o=@vger.kernel.org X-Gm-Message-State: AOJu0YxQwSHvg1Z/9I7e0ec+TV2zf2RFubH0V1A1rdI8sFtsCWdxRTl+ lEVfCxmTJho7EQaoFdbaztrMCSUCbnytRopCnTjM00rZxcQhwTsvTeQ8NhY9Pdy7x7CK1oonSH4 fa3KhYR6bXum/aIQNeZoeiKJz1VNMyxGaOb52BpC9F0n7UcgvjPjaWftnu8vD9p3I4ds= X-Gm-Gg: AR+sD12SnV/OUXMZa7XRsUEHDSZ52KVyGjZQ4KDf6pGKFcNI+kArsy8euv8LWjIusrQ EgEuMRAy3XhqAGRV4Hn2sO/9CD1QDjJYO3EBnPosyENvXIC8KO1peWgp6JDPaJSLdDIYI8GWeDU /4xDI3wkOafOFobuypZkFcNGpns+34Y2MsrrVRvT6RvrLLkhE0Nec8gQ/zw5xIH8PX5u2Hp8HHG OaJ3zYsY/YrRuKn7hxXBQuf77NcR2FgO7R4UI0I/t3YPsYXXbZ4iHNSnP2DwXHhxGefao/SMTsU ObQyp23/UANOpq8o5MdEzedOAZLeEqXBelVAIfsHEywS29wrKOTil3edrmZRcJIqaTP287NRAUg 1nNQYPSrqWMEjGlWQYy3xHLBegzP/u6KZJ7x24PIREsDezclxVkWURQjBS9/HKge/pegHExR3HX 63lharc4UFInAOnDpCqCBgBa9i4iaFOBdiwq3VpfjmzxIq/JegQw== X-Received: by 2002:a05:622a:4d43:b0:517:9206:10fd with SMTP id d75a77b69052e-5213c10a855mr222837491cf.16.1784727926108; Wed, 22 Jul 2026 06:45:26 -0700 (PDT) X-Received: by 2002:a05:622a:4d43:b0:517:9206:10fd with SMTP id d75a77b69052e-5213c10a855mr222837031cf.16.1784727925598; Wed, 22 Jul 2026 06:45:25 -0700 (PDT) Received: from QCOM-eG0v1AUPpu.na.qualcomm.com ([2a01:e0a:830:450:48e:a2cc:6c4:c92a]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-c1c32ac8c3esm111874366b.23.2026.07.22.06.45.24 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 22 Jul 2026 06:45:24 -0700 (PDT) From: Loic Poulain Date: Wed, 22 Jul 2026 15:45:17 +0200 Subject: [PATCH v6 4/7] phy: qcom: qmp-usb-legacy: Prevent unnecessary PM runtime suspend at boot 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: <20260722-qcom-usb-phy-fix-null-v6-4-534f7e61b9a6@oss.qualcomm.com> References: <20260722-qcom-usb-phy-fix-null-v6-0-534f7e61b9a6@oss.qualcomm.com> In-Reply-To: <20260722-qcom-usb-phy-fix-null-v6-0-534f7e61b9a6@oss.qualcomm.com> To: Vinod Koul , Neil Armstrong , Dmitry Baryshkov , Wesley Cheng Cc: linux-arm-msm@vger.kernel.org, linux-phy@lists.infradead.org, linux-kernel@vger.kernel.org, Abel Vesa , Dmitry Baryshkov , Loic Poulain X-Mailer: b4 0.14.2 X-Proofpoint-GUID: ng-L4YMK6Sdy-MbQLuSdY9D0aZjhxkh- X-Authority-Analysis: v=2.4 cv=KLhqylFo c=1 sm=1 tr=0 ts=6a60c977 cx=c_pps a=mPf7EqFMSY9/WdsSgAYMbA==:117 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=RAioF0-LDSMA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=_K5XuSEh1TEqbUxoQ0s3:22 a=EUspDBNiAAAA:8 a=PcYcMbZi39MCwOMHHM8A:9 a=QEXdDO2ut3YA:10 a=dawVfQjAaf238kedN5IG:22 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzIyMDEzNCBTYWx0ZWRfX9HSKCCvyI9v4 UKD5BUPHtBHbefxuGV+Gsw63PMKY/2nB0ugZPOlUlvRWix/tiAQi7ROOOwo/A/XukGEIEckr0PY 1Y4w1//Euamh13GTzVWvyTsFDSFbfMUretmJS5DdSgND+wR8Lw2T+kcJFcYkToAydX8ecZfW2P1 M1S47TEKs47DhMa+rW0lPa/fUZd+8Kmoduvt1nVYaMI2+RovkxvKiAmuR/4ePq4AjgzWMXld5QL m28UcHvhicH+nDDcTKKN8TroHzrDPGNPxVf1I5MuKvcrvoA2HJDbA9j2iDJpR3JDYqiOhX2NHM+ EkhuGmdJlMuOTtzeA4NGEot65OI0Dyo6a6ZTjHpuMvT807/OSuZhaOkxvbRl4RSa7jZJfBz/m81 rRMV92fl4E4yn7AVokMrp0EyyRvF5lZalwtkGMamPEdY/6cDQt6+xWHuM2Gx4vJBF/4+1Yzznet pO1ojQJJhjkaEjqi5Ww== X-Proofpoint-ORIG-GUID: ng-L4YMK6Sdy-MbQLuSdY9D0aZjhxkh- X-Proofpoint-Spam-Info: AW1haW4tMjYwNzIyMDEzNCBTYWx0ZWRfX0qUTEe8KlyTM Es8WolNUFZUR00CICr2YnZ6P2xK+uToxqb7SqPIFJD8nmxQiyivFLxozLx94oqau8A+nAg/Hp1R EZOzXsYiDGryOjfoZZ+5jtFajGvZXxM= X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-07-22_04,2026-07-22_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 bulkscore=0 spamscore=0 clxscore=1015 impostorscore=0 lowpriorityscore=0 priorityscore=1501 malwarescore=0 phishscore=0 adultscore=0 suspectscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607220134 Runtime PM has to be enabled before creating the PHY, since phy_create() only enables runtime PM on the PHY device if it is already enabled on this parent device. This opens a small window where the device can be runtime suspended after pm_runtime_enable() and before the later pm_runtime_forbid(), causing an unnecessary suspend/resume cycle while the PHY is not yet registered. Take a runtime PM usage reference with pm_runtime_get_noresume() before enabling runtime PM and release it once the PHY has been created to prevent the device from being runtime suspended during that window. This also makes the probe path safe independently of pm_runtime_forbid(), which is a good preparation for potentially dropping the forbid() call in the future and letting runtime PM be enabled by default. Reviewed-by: Abel Vesa Reviewed-by: Dmitry Baryshkov Signed-off-by: Loic Poulain --- drivers/phy/qualcomm/phy-qcom-qmp-usb-legacy.c | 24 +++++++++++++++++++---= -- 1 file changed, 19 insertions(+), 5 deletions(-) diff --git a/drivers/phy/qualcomm/phy-qcom-qmp-usb-legacy.c b/drivers/phy/q= ualcomm/phy-qcom-qmp-usb-legacy.c index fc490589c8e4888770807a60170905a1c7610421..c5160cb89207950361e96edd47a= 0d15ba590d1bb 100644 --- a/drivers/phy/qualcomm/phy-qcom-qmp-usb-legacy.c +++ b/drivers/phy/qualcomm/phy-qcom-qmp-usb-legacy.c @@ -1285,10 +1285,16 @@ static int qmp_usb_legacy_probe(struct platform_dev= ice *pdev) if (ret) goto err_node_put; =20 + /* + * Enable runtime PM before creating the PHY, phy_create() only enables + * it on the PHY device if already enabled on the parent. Hold a usage + * reference so callbacks cannot run before qmp->phy is assigned. + */ + pm_runtime_get_noresume(dev); pm_runtime_set_active(dev); ret =3D devm_pm_runtime_enable(dev); if (ret) - goto err_node_put; + goto err_pm_put; /* * Prevent runtime pm from being ON by default. Users can enable * it using power/control in sysfs. @@ -1297,23 +1303,31 @@ static int qmp_usb_legacy_probe(struct platform_dev= ice *pdev) =20 ret =3D phy_pipe_clk_register(qmp, np); if (ret) - goto err_node_put; + goto err_pm_put; =20 qmp->phy =3D devm_phy_create(dev, np, &qmp_usb_legacy_phy_ops); if (IS_ERR(qmp->phy)) { ret =3D PTR_ERR(qmp->phy); dev_err(dev, "failed to create PHY: %d\n", ret); - goto err_node_put; + goto err_pm_put; } =20 phy_set_drvdata(qmp->phy, qmp); =20 + phy_provider =3D devm_of_phy_provider_register(dev, of_phy_simple_xlate); + if (IS_ERR(phy_provider)) { + ret =3D PTR_ERR(phy_provider); + goto err_pm_put; + } + of_node_put(np); =20 - phy_provider =3D devm_of_phy_provider_register(dev, of_phy_simple_xlate); + pm_runtime_put(dev); =20 - return PTR_ERR_OR_ZERO(phy_provider); + return 0; =20 +err_pm_put: + pm_runtime_put_noidle(dev); err_node_put: of_node_put(np); return ret; --=20 2.34.1 From nobody Fri Jul 24 22:54:58 2026 Received: from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com [205.220.180.131]) (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 40FE0357D05 for ; Wed, 22 Jul 2026 13:45:30 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.180.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784727932; cv=none; b=gbLYEpgK2u3qpzKG93xozGdl2Vkg1+krsqGDwpi61sb9jQ2J4KidMvuSWiX9UCkzbF2mZ8Zcqb/7jAQ7nDsxCtZ4XOPJwEUmf+sOovdy2ZM4IMin/h0dixKmqnXDglxmmeNcG7899VlJ+ydjHcR22vb8qPXiwapw5dmBCYDf07M= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784727932; c=relaxed/simple; bh=96oek73EEHpVilZpkgDTZ+JL8kRU8jBNVSIJAzbuxbQ=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=ceZp2dHReesLkrF6+6bkqb7kpvF+MqZYFNoIaQve1jX4kOrbTUIxJ0C0yJSmBjdRJH8FbwLyXd/GkRWYoIL3GKP0hE7eGD/zrzLm8HA3raDxpkDltxvxySRw7Wk2d7GITcL6W1jDlMywgcGzBsDq8+xbdl1IuT+AfDieOaAY9qw= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=cODaShmP; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=Oik+38n4; arc=none smtp.client-ip=205.220.180.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="cODaShmP"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="Oik+38n4" Received: from pps.filterd (m0279871.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 66MDWXFT1027202 for ; Wed, 22 Jul 2026 13:45:29 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= zn8YobeKzJmI2eL3M+DT+dtbtruKgWpxef+/c+xHz1w=; b=cODaShmPdCJx+gMV 8m+M1ORMyrE+w6Xd+G/s0Ta+atd9JE5UX8cR1O8/kE4QyEhg4u3cqftcem5OojE5 qwWiqEjSHw2Z70Bz/xO9Ghuv/SXu8G7KRSaYJqsRu4lWP5Epk7D6I8VuU+YvSJlP Vtc7XCbIzCH5ecXU3CRKrp8Qi0w1CTzhdBXx7lzriVuBYQOop6vslTuWibuYDTLt 7znHW7fYMhxnw7Ib033/ohF/qyFbiZH+XYKW2rX7Wq2n22tM4+cLbjpNIK2GFXVK dkIl0RzDnYcT6qwXMBEMoZD2t2wZ0a0+4iuVF6gjrNV3CILjjdfbcr1KmrUyW9sH aOTgCg== Received: from mail-qt1-f200.google.com (mail-qt1-f200.google.com [209.85.160.200]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4fjt79994v-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Wed, 22 Jul 2026 13:45:28 +0000 (GMT) Received: by mail-qt1-f200.google.com with SMTP id d75a77b69052e-5174a236220so233848721cf.3 for ; Wed, 22 Jul 2026 06:45:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1784727928; x=1785332728; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=zn8YobeKzJmI2eL3M+DT+dtbtruKgWpxef+/c+xHz1w=; b=Oik+38n4xK3Cvz65lmWC+9K38TMUNGFj/yfOFwRLGhi/W9+GX+gMmgU8vRfOvjeVYm KAwIY6LiSCZ7wTyB9ypQ45B7IkHi2nu+a6nh7Q6ZUdQWhq1zJJiQSrWJNfLoakzIK2AU QTc/wNkVTnyiX6WZ/E5WIKBb9G5G9lfepqwAYaCUd01LUZawispS5sOuj26Z3T6dApyc 0VITYOTkClaUR7njGy3xH8wY3hvO3wpOnh2A5bWPm4qki+9U46vGrDU5bEF9B+UCN7Vs Xtnxo/3YALc3iMOZZGwckmMlmM7qB9p6/8Hffu4MTYd39+yhqj95SKZeM9dP7kixsvln CMHg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1784727928; x=1785332728; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=zn8YobeKzJmI2eL3M+DT+dtbtruKgWpxef+/c+xHz1w=; b=bWy+5Z3g2rQ8ZF3HVzQepiuyV2GZEOQt1jc9rVDnyM387KUsixdOg9AP8jgzHrAPIX 6p55gD/uebtqs6OMHW6OIzcdfbNGefPwY+jj4rdnmNBF1ggv87H2Dba/FuBMiIbCUg9o icFqyLJYYP7AKknWrYBrnngtixNz5YPp4NmS/AcSgWJwkioVpiVMxFArY8EOxvIngZJJ jDWTO3TvrLo2QPUIuZlC1ANZI9/qywIWWOgOOgCg9dFL5exhCspZBb9cfkYU6ME0D+71 HkRbE4fQi9E8KR0dXEQokDtqyMqf2sMJ6AVp6FLlRJYy4bTyx794RL1pG2xK9jw+8We8 GC8g== X-Forwarded-Encrypted: i=1; AHgh+RrjAAxe50krYAFOKuLJl4qKeJkQtKyagUrwiQBiN3Id7SjXfNArvQqXhXoQZoBPsD8HO48qvA9Iv0qfB5g=@vger.kernel.org X-Gm-Message-State: AOJu0Yy96xNEMdGqz8Y11MkLA3dD/smRkOxCyV3GFIuWEHWLhM5nAcUj /zpfSxj+5AmeQ7M80M7vo52hUhVgxxdthJYjSIqB0fi3GpdAKvfAdOOAlsS1m9Y2bhnvCEGysaO Lx0RUKONTFbl2k6PAMHp8bqJPg9pvCfXmCLM7/yNbf5qXDpvn+xFiH1TRn2APkfptnX4= X-Gm-Gg: AR+sD13eVVltpJtdClnCa9EsiQQrFH71A+FGkuV9+yPADa6boMbSw5cWPkMj2NViasi cXTDRNvkszmw4IOS+CuRtAsjRKANn2DF9KMjwCZDFFDyUuE2Od9s+n/b6Hn1jnBArOiL/WfPXcv V99TNEKypNBH45dXp607pL8kmAxVKWovZLGmK2wogp9H0O7qh5rMhK0r6JM1eyE70EouNearAsj C5yiKUuTIHDQabfEhbqy6aBWEoh1Eb/WPWMTe/L+Nh0d+trhTOqsK9CTuPKgNV3UImhYtWirH3R UK94PzArx9hyerLNXIOmj5cBDqv6PfgW7NyNXZx7pSfMchVd0spyVg0blXg1y1LhPcfFmNyj/d7 E0xCrIWXDMQBhOI/uGf0MigPQdtdMdkBuE+2Aoxv53vJOi62me+T9tY0b107bkMdXOolw61H5VQ V2BuEMxgsAT2PVVcQDx/ZHdpjMqGkN65p63Pabpu9VD8Ai+orl4g== X-Received: by 2002:a05:622a:1313:b0:51c:1e69:bcc9 with SMTP id d75a77b69052e-5213c013f36mr221287091cf.12.1784727928100; Wed, 22 Jul 2026 06:45:28 -0700 (PDT) X-Received: by 2002:a05:622a:1313:b0:51c:1e69:bcc9 with SMTP id d75a77b69052e-5213c013f36mr221286431cf.12.1784727927389; Wed, 22 Jul 2026 06:45:27 -0700 (PDT) Received: from QCOM-eG0v1AUPpu.na.qualcomm.com ([2a01:e0a:830:450:48e:a2cc:6c4:c92a]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-c1c32ac8c3esm111874366b.23.2026.07.22.06.45.25 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 22 Jul 2026 06:45:26 -0700 (PDT) From: Loic Poulain Date: Wed, 22 Jul 2026 15:45:18 +0200 Subject: [PATCH v6 5/7] phy: qcom: snps-femto-v2: Fix possible NULL-deref on early runtime suspend 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: <20260722-qcom-usb-phy-fix-null-v6-5-534f7e61b9a6@oss.qualcomm.com> References: <20260722-qcom-usb-phy-fix-null-v6-0-534f7e61b9a6@oss.qualcomm.com> In-Reply-To: <20260722-qcom-usb-phy-fix-null-v6-0-534f7e61b9a6@oss.qualcomm.com> To: Vinod Koul , Neil Armstrong , Dmitry Baryshkov , Wesley Cheng Cc: linux-arm-msm@vger.kernel.org, linux-phy@lists.infradead.org, linux-kernel@vger.kernel.org, Dmitry Baryshkov , Konrad Dybcio , Abel Vesa , Loic Poulain X-Mailer: b4 0.14.2 X-Authority-Analysis: v=2.4 cv=Sr6gLvO0 c=1 sm=1 tr=0 ts=6a60c978 cx=c_pps a=JbAStetqSzwMeJznSMzCyw==:117 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=RAioF0-LDSMA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=3WHJM1ZQz_JShphwDgj5:22 a=EUspDBNiAAAA:8 a=yoX6jHX73kXkGH752t0A:9 a=QEXdDO2ut3YA:10 a=uxP6HrT_eTzRwkO_Te1X:22 X-Proofpoint-ORIG-GUID: W87_vEgNczN8kRqmB8-roU7mBjJE1kES X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzIyMDEzNCBTYWx0ZWRfX/YZUP5+cV5qU 3Scns1CfASPoRdoipr7M3sM6+gxOXXbSAVmEMFmkpGnjE9ugCsjfqnh8E6xx3JPNwYzmFGwhIRg N5r11YVYuHB6PeA6dq1AGZYxztSonZbEz6UpRgK0FNhutBJLlpEAz3KtM3j2/HIN3d7sGRQAIql WXIECq95zUYVOrstz1+yRj2WB9Gd7P6uW55YQam9JOhx0Ydfc5EiiE7OgWosiiirQKVnsra4LWQ TAxeO2myS/OjKoynYcmUri8508cnXk58GfgRnZHUb/vIDTIlddYOoayTkPDgFzTjE/3RDbGc//M mWuqHJ4QeUzFL61jetgh1JvAzNrvMF+wyxEljtRd8oBfOzi4cV0184kXX70bak4sqtGFoTpwmol 8S2IJ6FXSy+rwbM6V5DKy7pIpcungof2XN6WKP3mJT5My4i222+gPgVeKRbwJvYlq5RBzA6AjWv 9n/sUU//GGv1KJ7fj8g== X-Proofpoint-GUID: W87_vEgNczN8kRqmB8-roU7mBjJE1kES X-Proofpoint-Spam-Info: AW1haW4tMjYwNzIyMDEzNCBTYWx0ZWRfXxlTzMAI4yaI6 l6OmGGYvyEeZhqMppEFugD0WT4PGFgy0b0V4Qm0UG8lkHVMu36+2hq+YeyY1crVbJfCZZSA/68H f6TVz9sTdEB0IHhJBR89pYW0lIXwyOk= X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-07-22_04,2026-07-22_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 malwarescore=0 suspectscore=0 spamscore=0 lowpriorityscore=0 bulkscore=0 adultscore=0 clxscore=1015 impostorscore=0 phishscore=0 priorityscore=1501 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607220134 Runtime PM must be enabled before creating the PHY, since phy_create() only enables runtime PM on the PHY device if it is already enabled on this parent device. However, the runtime PM callbacks dereference the hsphy instance, which is not yet ready, leaving a window where a suspend callback may trigger a NULL pointer dereference. Take a runtime PM usage reference with pm_runtime_get_noresume() before enabling runtime PM and release it once the PHY has been created, so that no runtime suspend can run before the PHY is ready. This also prevents a short window where an unnecessary runtime suspend can occur. Use the devres-managed version to ensure PM runtime is symmetrically disabled during driver removal for proper cleanup. Fixes: 0d75f508a9d5 ("phy: qcom-snps: Add runtime suspend and resume handle= rs") Reviewed-by: Dmitry Baryshkov Reviewed-by: Konrad Dybcio Reviewed-by: Abel Vesa Signed-off-by: Loic Poulain --- drivers/phy/qualcomm/phy-qcom-snps-femto-v2.c | 26 ++++++++++++++++++++---= --- 1 file changed, 20 insertions(+), 6 deletions(-) diff --git a/drivers/phy/qualcomm/phy-qcom-snps-femto-v2.c b/drivers/phy/qu= alcomm/phy-qcom-snps-femto-v2.c index eb0b0f61d98e03963bf92e5c822334f52636abe7..980ad1fb1e2e3cb6ab0b29df12e= c8278ab1ceafd 100644 --- a/drivers/phy/qualcomm/phy-qcom-snps-femto-v2.c +++ b/drivers/phy/qualcomm/phy-qcom-snps-femto-v2.c @@ -599,8 +599,18 @@ static int qcom_snps_hsphy_probe(struct platform_devic= e *pdev) return dev_err_probe(dev, ret, "failed to get regulator supplies\n"); =20 + /* + * Enable runtime PM before creating the PHY, phy_create() only enables + * it on the PHY device if already enabled on the parent. Hold a usage + * reference so callbacks cannot run before the PHY is ready. + */ + pm_runtime_get_noresume(dev); pm_runtime_set_active(dev); - pm_runtime_enable(dev); + ret =3D devm_pm_runtime_enable(dev); + if (ret) { + pm_runtime_put_noidle(dev); + return ret; + } /* * Prevent runtime pm from being ON by default. Users can enable * it using power/control in sysfs. @@ -611,6 +621,7 @@ static int qcom_snps_hsphy_probe(struct platform_device= *pdev) if (IS_ERR(generic_phy)) { ret =3D PTR_ERR(generic_phy); dev_err(dev, "failed to create phy, %d\n", ret); + pm_runtime_put_noidle(dev); return ret; } hsphy->phy =3D generic_phy; @@ -620,12 +631,15 @@ static int qcom_snps_hsphy_probe(struct platform_devi= ce *pdev) qcom_snps_hsphy_read_override_param_seq(dev); =20 phy_provider =3D devm_of_phy_provider_register(dev, of_phy_simple_xlate); - if (!IS_ERR(phy_provider)) - dev_dbg(dev, "Registered Qcom-SNPS HS phy\n"); - else - pm_runtime_disable(dev); + if (IS_ERR(phy_provider)) { + pm_runtime_put_noidle(dev); + return PTR_ERR(phy_provider); + } =20 - return PTR_ERR_OR_ZERO(phy_provider); + dev_dbg(dev, "Registered Qcom-SNPS HS phy\n"); + pm_runtime_put(dev); + + return 0; } =20 static struct platform_driver qcom_snps_hsphy_driver =3D { --=20 2.34.1 From nobody Fri Jul 24 22:54:58 2026 Received: from mx0a-0031df01.pphosted.com (mx0a-0031df01.pphosted.com [205.220.168.131]) (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 3647935AC10 for ; Wed, 22 Jul 2026 13:45:31 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.168.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784727932; cv=none; b=se/K5xUG4wJw3TNT5Sz6EdG4qKVggGLum/BNb334dqhWEqM4JGimPjqXUIiEue6urgbKBsqVtlwUG1vsFca9oCR/6GbXu476NncwvPBMVqEXwClQpbdizbiDHj1KHhhfCpNBt1AZRjNpNzWtuTyN7/ZJxZ99PIXADudouZw/wQw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784727932; c=relaxed/simple; bh=zZDqgw4VzJAzmG7YtMnZTQarZCvmksmgM7S409DtG6w=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=I4edL6AdSPwM2ZWkAo1CQqdLPFLQ1YaP8c4mYd2btT1Qbyf/gSwjPzUY0j+MBP0lOL4TfFeYSRspC0bafdqNY54pMKoOudWV1jIMJi9pcrNsKKUwF27KNNAuVpGCGEY+ed0+mMAhkJHsRXlfjyCtkaKfguJwk9TP9qsnSzdnTco= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=N/4ecvij; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=TZSoST0Z; arc=none smtp.client-ip=205.220.168.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="N/4ecvij"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="TZSoST0Z" Received: from pps.filterd (m0279862.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 66MDWwbJ756023 for ; Wed, 22 Jul 2026 13:45:30 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= 6iMnf9ZiLsaVZv778rMtqnmi/YEJiiDpTZUI+w1LHek=; b=N/4ecvij8MH+edJl FMogbeBC483ekT8tWXH6SxdPlMXDNzJ01r6QktTQBf8uOdCWyAQrhHlhXU8NASML viMSUzfB7VTMMbkXS6ZVtGOqr45I2KOhxVR6eQZZHs6SCbPA7J3iHjWGRFG/kfXj MqJn7I4IOtAfMGgBxlukvZtBdJqjbGiUGR/ANH3+I1HoIIHcXJaCptzrj5DXyGVw 2324Pc1t0VdfJP+jvJbvx69xn5ssaS2OE12E7fm+v9ZpmDpsmjUzQ7qwYwN4UsZh 0l6fk2zN9vKbc7/DLlRYApH33Dh1rbgT/QlRAM1a8KEmaCKva/WFqoSQgLAH/fFF xZE5sA== Received: from mail-qt1-f197.google.com (mail-qt1-f197.google.com [209.85.160.197]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4fjnu4td8a-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Wed, 22 Jul 2026 13:45:30 +0000 (GMT) Received: by mail-qt1-f197.google.com with SMTP id d75a77b69052e-51c19493ac2so32892911cf.1 for ; Wed, 22 Jul 2026 06:45:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1784727929; x=1785332729; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=6iMnf9ZiLsaVZv778rMtqnmi/YEJiiDpTZUI+w1LHek=; b=TZSoST0ZuBKFAC2kQ9ukBhyfK+5WVKwy1gufWpSX5gUrSXk+fLjx5ex0y2aM0kS/1T hcXADPgGFZc7/n4L5qvMHnqwgjfARzD7QrI81W2tENBQfrFKS2DIyHQ1q5sati+F0hUX UHrnBlK3vCOCZNpE4SIZf4Rd5oIDQdkxrZvpP9bq1Q6bSpOGcIWvtdm0/DizAlQFL7zP eqSk8YjC7kJ7C/cZMdxzeKzV3MjfwmC2eQYWkdnXC8J8NzEdyD4EXV3yG/ljqbSsoEbr JNDTOyfJBJWkpxtuB0aiv7ogm9tIRANVgG1Q7e20yWCVVgMy6I6Hfwg9sEK0khsSh0Qf onZw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1784727929; x=1785332729; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=6iMnf9ZiLsaVZv778rMtqnmi/YEJiiDpTZUI+w1LHek=; b=oVTZJNU9S4fGfe8H69Dn40Zg1KJNUBkfMiJ3f0bLVoeMsq9Fi/fA3e704mIXwjgT2O ZKzNkTUAeLj00hN11AXOSAPZcN/tffCya6cXzhrpPGFQVGkE1fwLiQ2VWaIxBPUDYb7L TUdL8KzD5hEhFcJSlBiI4I8VZVywjqBHjQvhrzxdzouT6uzOthqTOpWyt08stKf6jc7E lLG6Mm674IrAAyFVdCZ4/G8Luj1tTW3ejGeXlGy6Nb/38ectMrAo2S8Fm8xP+0kDQEUI 08GQMLrakWCMxkz2tiNfPq03y4g7j82ZHoOGKkwoNNVnuzLeUs99X/T9uaDdrYH4svXw NJOQ== X-Forwarded-Encrypted: i=1; AHgh+RqEOqE+Ll5m9RkHjPe6s9G4vQzyvdjIFC/bLKfrp7ghChxD0KNgFd9i1FIqWW085auS9SIjwEKXHzwwrF4=@vger.kernel.org X-Gm-Message-State: AOJu0Yw+uL5O9WbUQtahL4xnPVhv49fl8VuRRjdPcvFEbTqRQtwxc+7F CneWcKpA3sEUlwycBB+mUmHtl7RwP4EZo31jcbPwpFJrJ6xZ17HtgBwEK9n1drPQSNSmuBAdyJ2 4qP7oQEoYfq/4EP42/BxidWaQhBAtDk3cbzbMYpespqvSFpjZnTauPUbCMAvvSeUFTsw= X-Gm-Gg: AR+sD13QzcZViL1yjrBuZMu0Uscr3UC9apjnuh9lT36dJMIIBATebq7ebTc+xqJpQsQ yuNKsqs11IkizHmSYvgH73m1v1rQqBhFhEEJX7wFyFeYsvjaa4mUfmAu6seQX372Y9eYzcabCao Co5SA+FtSNUU7q++r3iKN7iGI/vTIJ9Wd/HT1af8B8nzXIWBOJgLD+aRgmvM/9qlJthkcBaZtp0 oBM4rVkAxkXCS1rBm7KicJQRhRzYiRffkZxRXny7ufjhxI7tQ6buX2yx0/BTid5ZFDBFWoCeEwt LTJ1hiscfC/Nl6R1x+NJ9TlJFFN0q/D5pR2z8fKac0VKD0XBA0AJCCeCrCoVs1zSU7kvRcubIzk T0/1jduhDMLmn6E8mLNm0dn6wwV5S5NNuOjd9oo2lPBWodpZGuP5CKGGyTkYaC0wwW46ijhoRQ+ BWBTYUpL0vok2OX4MiQM05vj2WxxRHWH1yS2UF/isJmwrWQdlilQ== X-Received: by 2002:a05:622a:1dc3:b0:528:15e:d1d1 with SMTP id d75a77b69052e-528015edfdfmr24753281cf.16.1784727929371; Wed, 22 Jul 2026 06:45:29 -0700 (PDT) X-Received: by 2002:a05:622a:1dc3:b0:528:15e:d1d1 with SMTP id d75a77b69052e-528015edfdfmr24752971cf.16.1784727928886; Wed, 22 Jul 2026 06:45:28 -0700 (PDT) Received: from QCOM-eG0v1AUPpu.na.qualcomm.com ([2a01:e0a:830:450:48e:a2cc:6c4:c92a]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-c1c32ac8c3esm111874366b.23.2026.07.22.06.45.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 22 Jul 2026 06:45:28 -0700 (PDT) From: Loic Poulain Date: Wed, 22 Jul 2026 15:45:19 +0200 Subject: [PATCH v6 6/7] phy: qcom: qmp-usb: Fix possible NULL-deref on early runtime suspend 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: <20260722-qcom-usb-phy-fix-null-v6-6-534f7e61b9a6@oss.qualcomm.com> References: <20260722-qcom-usb-phy-fix-null-v6-0-534f7e61b9a6@oss.qualcomm.com> In-Reply-To: <20260722-qcom-usb-phy-fix-null-v6-0-534f7e61b9a6@oss.qualcomm.com> To: Vinod Koul , Neil Armstrong , Dmitry Baryshkov , Wesley Cheng Cc: linux-arm-msm@vger.kernel.org, linux-phy@lists.infradead.org, linux-kernel@vger.kernel.org, Loic Poulain X-Mailer: b4 0.14.2 X-Proofpoint-GUID: ZSmPADCXLvJgnY9LnWwrEV-t8Tc2Rmiy X-Authority-Analysis: v=2.4 cv=KLhqylFo c=1 sm=1 tr=0 ts=6a60c97a cx=c_pps a=EVbN6Ke/fEF3bsl7X48z0g==:117 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=RAioF0-LDSMA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=_K5XuSEh1TEqbUxoQ0s3:22 a=EUspDBNiAAAA:8 a=QCvEx_dtP_Vb2dzgXhUA:9 a=QEXdDO2ut3YA:10 a=a_PwQJl-kcHnX1M80qC6:22 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzIyMDEzNCBTYWx0ZWRfX/SVq6HhM60c0 V5D25UEXxseAKqqvK/SU2Y4lc4qIHrA82uvydp/PEA3IwJ0YIv2ZzMKmrw9CjItbbV0gJNs4roF ixQUp9Afis//X+WprV4gg96UlwXC5oQlYxz0S+E5abmGTmADWcVoLCVeixRRY79zm3D07s+c/ug 02I0woTDjDf97qxFwPb5kKcQKNmdK2namEOXpLNEKGnX/WvVW3cDqjL7UdRRpfYDnUfr4FXfOry Uniyeffpi1U+XW2SWUxnEYs8mzGWvPtpE+zmaKl/FmsA4oZGpiJy3wXr6F1mpNluxfc/gz+WH4x n5mWkgKBF/OxVZyjT0PdJT7zUb5zGnfz2ujBA+CtNq/hOQAZN2sdjnemSUjDDyqY74i+w8r3QkO K/KnTkV+4IkNJSwcjCEBbjzf0sDpP6TWUB+wM98T/VtBVJv++Jv6C7oWX0RRWqqLgXEpvtREN7z eg1GRiv5LFOHoZf5Dfg== X-Proofpoint-ORIG-GUID: ZSmPADCXLvJgnY9LnWwrEV-t8Tc2Rmiy X-Proofpoint-Spam-Info: AW1haW4tMjYwNzIyMDEzNCBTYWx0ZWRfXx+piFEyWvEpE jR4CUBFyRpEMqDzjeILAsrlIpW9ObdSUYLNyxM0uCrwtBKKl337Dx2l8FjRTg8j6yLQRdKNJg+j IhK0EaQ0U6XcyG/7uQYRkyVQzjVf1Wg= X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-07-22_04,2026-07-22_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 bulkscore=0 spamscore=0 clxscore=1015 impostorscore=0 lowpriorityscore=0 priorityscore=1501 malwarescore=0 phishscore=0 adultscore=0 suspectscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607220134 There is a small window where the runtime suspend callback may run after pm_runtime_enable() and before pm_runtime_forbid(). In this case, a crash occurs because runtime suspend/resume dereferences qmp->phy pointer, which is not yet initialized: `if (!qmp->phy->init_count) {` This can also happen if user re-enables runtime-pm via the sysfs attribute before qmp phy is initialized. Similarly to other qcom phy drivers, introduce a qmp->phy_initialized variable that can be used to avoid relying on the possibly uninitialized phy pointer. Fixes: e464a3180a43 ("phy: qcom-qmp-usb: split off the legacy USB+dp_com su= pport") Signed-off-by: Loic Poulain --- drivers/phy/qualcomm/phy-qcom-qmp-usb.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/drivers/phy/qualcomm/phy-qcom-qmp-usb.c b/drivers/phy/qualcomm= /phy-qcom-qmp-usb.c index c5507168e1354bdec8381ca5ca1ba2bfd9dbc87b..bb905c437a01e3b898b7259abe3= e49df4756fc5b 100644 --- a/drivers/phy/qualcomm/phy-qcom-qmp-usb.c +++ b/drivers/phy/qualcomm/phy-qcom-qmp-usb.c @@ -1434,6 +1434,8 @@ struct qmp_usb { =20 enum phy_mode mode; =20 + bool phy_initialized; + struct phy *phy; =20 struct clk_fixed_rate pipe_clk_fixed; @@ -2009,6 +2011,7 @@ static int qmp_usb_power_off(struct phy *phy) =20 static int qmp_usb_enable(struct phy *phy) { + struct qmp_usb *qmp =3D phy_get_drvdata(phy); int ret; =20 ret =3D qmp_usb_init(phy); @@ -2018,14 +2021,19 @@ static int qmp_usb_enable(struct phy *phy) ret =3D qmp_usb_power_on(phy); if (ret) qmp_usb_exit(phy); + else + qmp->phy_initialized =3D true; =20 return ret; } =20 static int qmp_usb_disable(struct phy *phy) { + struct qmp_usb *qmp =3D phy_get_drvdata(phy); int ret; =20 + qmp->phy_initialized =3D false; + ret =3D qmp_usb_power_off(phy); if (ret) return ret; @@ -2101,7 +2109,7 @@ static int __maybe_unused qmp_usb_runtime_suspend(str= uct device *dev) =20 dev_vdbg(dev, "Suspending QMP phy, mode:%d\n", qmp->mode); =20 - if (!qmp->phy->init_count) { + if (!qmp->phy_initialized) { dev_vdbg(dev, "PHY not initialized, bailing out\n"); return 0; } @@ -2121,7 +2129,7 @@ static int __maybe_unused qmp_usb_runtime_resume(stru= ct device *dev) =20 dev_vdbg(dev, "Resuming QMP phy, mode:%d\n", qmp->mode); =20 - if (!qmp->phy->init_count) { + if (!qmp->phy_initialized) { dev_vdbg(dev, "PHY not initialized, bailing out\n"); return 0; } --=20 2.34.1 From nobody Fri Jul 24 22:54:58 2026 Received: from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com [205.220.180.131]) (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 918C235F170 for ; Wed, 22 Jul 2026 13:45:33 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.180.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784727935; cv=none; b=jLgpAZm/1e7pZgEqjBOgS3Oax9JYyiOcuGMCbTK5QLzgYsbRwIotUcvGOZomA7yWlGamoZhjCGieOdfXXm/f0P/FKI4sc7fnKkeBhOYMp+6/Cvois1Kk5IiaO1ucGsipgv2OrPkL06J2XIRmhlLckfPqAlBLAOpPWk/+CTR3hSs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784727935; c=relaxed/simple; bh=auASHDRv0pcx5O/KPtg+3uP0S+HjwSkPmOudIwJImvU=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=QcpEewZbcER8QsDIcGBKUFypAIx4kFi/OUgTKph1qpqKaVoG+PmW2IoCLvFK1f71x7qLF5qvSVVgmTmd9+8Q6Fd6kbjd6SUu7NFm7ncO8G9D1hBkaTor+0LjvNo7D817dsx/WyT9GOgf1JRL4QzNCVaVGCDZ/ZL96xFgLZyVpJY= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=ZF7AS5I9; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=CNQI+KNi; arc=none smtp.client-ip=205.220.180.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="ZF7AS5I9"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="CNQI+KNi" Received: from pps.filterd (m0279868.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 66MDWR9Q891383 for ; Wed, 22 Jul 2026 13:45:32 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= BYEpALra3wQvxDTz/+9CDY4cEEc59ITruLKAOEg7+3E=; b=ZF7AS5I9BrH4Z8U5 8VCfSpgav/8iZDnQ6PJmG+PcnjGyYu4tZuGnQDZTyWKW+rFoG1WFyjcAmVMYaU6R dgY0LzUX+Qp2EnzlxLCyrzOWV5KDtaQcqdzmBciRVB6vK03feG+AxLlBG3+Dr+Yw nEK6E/ugQCt0swgP5J55plFd5MKoV7zgryybbTVJfF4IAuXM7ENtdcb0+upl3pGi 7Yp4TO8GIMIfBu4Q+tJkpLWfX0XWN45XOv5K55FZIirkSVlMmKb15aoW2Jmw+oMk SObfAYJmjd7McgN9xjMz+bghHf7vFra5C2VvLpb6jwJkR/JIIgMAQ76C6J1jvBN6 3+6IsA== Received: from mail-qt1-f200.google.com (mail-qt1-f200.google.com [209.85.160.200]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4fjxm103qm-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Wed, 22 Jul 2026 13:45:32 +0000 (GMT) Received: by mail-qt1-f200.google.com with SMTP id d75a77b69052e-51ebdfceddcso158494461cf.3 for ; Wed, 22 Jul 2026 06:45:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1784727931; x=1785332731; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=BYEpALra3wQvxDTz/+9CDY4cEEc59ITruLKAOEg7+3E=; b=CNQI+KNipvphlBDiLEJl2MDPMhHT07hznf/3yAcIBQssvbIdrPWhknhTdsahk7n71P gFEH/P5EaV5QQLw9EYu5XEcIs4jEkOoq5n1TmEVhCoSRlSqTXIUN0mOpGBGGjn9CEhz5 78vDEqQS+IOT8mIGZ+AJyUG1lvm3WhvuI0Jhhl+QzXXOvNjTHgsilFgBOaWDbHZx/Q58 eg7nkiirWmqJfha36a16dexhRUDK9N6QTJ/uHA6f13PH/1V0z37RHvB3m4NTLJgQBzCY U/SRzwJlnr1kl/xG0/9fJlMLg7GkP749vjaU8cUWcW7/Ku5xM4K7UApwbUTYiQO4AiqN g87A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1784727931; x=1785332731; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=BYEpALra3wQvxDTz/+9CDY4cEEc59ITruLKAOEg7+3E=; b=tClTEigqF0iN4dRkozPIIDf/WbWOibR8i9/AnAQ0eGvrFGH8+Ma24zpEs4ibROCAmf qPi9kKrnTZHzpEIuZJAybXzwV8C1WxR+WVcdom/y+tSSEsqGGamyeI+roHS+qv+xRjqV 7WzfbsTugKu0Q1xHEp+UvlWRMtgtA5AmHgIHjgtE5NMxUuE3WL4R+SYh2WSESpeEQrHy 8VoxxdNPFQwWTrbnoF6hAqNB571GqJ5kfNQ1ltxkN+fZF8x90rYYhR9HHNT3OTDi9oQ6 RHP/mfn2UerzjanmQ9ltBsEKe8MDOxFd7wRMjGfWR6OgQe3UtSEYIGSHmyjQ9JzzrtEC A3Iw== X-Forwarded-Encrypted: i=1; AHgh+RrVD/oeDBOT8IbQgTf6zacDMenkLukoQNU4FkYhrbUQSAO0qc7wNSgNezN2VzAYqJMpdFKhyQO9qtQmLsM=@vger.kernel.org X-Gm-Message-State: AOJu0Yzb0wHzHcV/BQS2nAI82zWP7t4Lv6o2+6qKk0rmRWKBsqjhXfmW 48rj3esUaoTKIBMzEYOykr4FOFuZ5uAo/7RHZXTwT/PshiqK4vdvj8TAOPZoXDM5b3pzqVFElOo aNnWu7BbR0wvfjt9GoL5kxEAuWN5k3IqHlvattWpwYfyqyEk+SqmdUt1qtbaoKBQGpn8= X-Gm-Gg: AR+sD12nEZ3gH4o3BKHqg6bm3Pe8Jql6l/y3wofC3bluXByjLyJqEt3i46Rqk1JJzY6 TvvgIOC40jD8MYny+d3QIGr+FfFrQTr50wCwTHXBQ9Ig/zT996575v+RMP2o7CKoqz7BZ4d7R/U 6JCp9BWDBzF+IcCwA2Ji0+5OqoTyaSMCj4YgEspPX9BHjRTvmCZJv3jpcgqNzqUZSxMfzag/DrI YWYri6CqTuhXtRD576SLkWZ6iWZTvEng5WhOgIWpxHAZjx57gVyohZONB/3B/ykqHK8V9uWANn6 lumBxAkI7jQE/0qYDH3PPK1vV6BH+cK4U9exeW2ktwW8NkFrYLM/gpFrdeCb9IYEsUGoDVyaXpy BY9TkjJYjYb2EIRcDRX2tWfmK1xdsQyVJlBRcWKnOcO7w16PQx8eho1jt/XRzKskNBV3JVHkCNC AUfzs/TlKG4JhWRlA2X8GNjtXjt9AXnUIAyA0iUNBnowvWB4ggNg== X-Received: by 2002:a05:622a:302:b0:51c:7b12:600b with SMTP id d75a77b69052e-5213e889af0mr216086431cf.87.1784727931384; Wed, 22 Jul 2026 06:45:31 -0700 (PDT) X-Received: by 2002:a05:622a:302:b0:51c:7b12:600b with SMTP id d75a77b69052e-5213e889af0mr216085861cf.87.1784727930749; Wed, 22 Jul 2026 06:45:30 -0700 (PDT) Received: from QCOM-eG0v1AUPpu.na.qualcomm.com ([2a01:e0a:830:450:48e:a2cc:6c4:c92a]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-c1c32ac8c3esm111874366b.23.2026.07.22.06.45.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 22 Jul 2026 06:45:29 -0700 (PDT) From: Loic Poulain Date: Wed, 22 Jul 2026 15:45:20 +0200 Subject: [PATCH v6 7/7] phy: qcom: qmp-usb: Prevent unnecessary PM runtime suspend at boot 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: <20260722-qcom-usb-phy-fix-null-v6-7-534f7e61b9a6@oss.qualcomm.com> References: <20260722-qcom-usb-phy-fix-null-v6-0-534f7e61b9a6@oss.qualcomm.com> In-Reply-To: <20260722-qcom-usb-phy-fix-null-v6-0-534f7e61b9a6@oss.qualcomm.com> To: Vinod Koul , Neil Armstrong , Dmitry Baryshkov , Wesley Cheng Cc: linux-arm-msm@vger.kernel.org, linux-phy@lists.infradead.org, linux-kernel@vger.kernel.org, Loic Poulain X-Mailer: b4 0.14.2 X-Proofpoint-Spam-Info: AW1haW4tMjYwNzIyMDEzNCBTYWx0ZWRfXyGdTpTmklluX /P53lBQxm0+tzpxchq05fK21rEhWWdF1tcbnSHFaCIslwFIYAUmXiB8lItxa0+AtEGFZ2S6r253 UFPBmEeRLC6kckOci0/BAKuP1xlz6D8= X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzIyMDEzNCBTYWx0ZWRfX/NudIMHylnnu HQT4cBx3f0CF7FHE7Jn4hpJs9rHFHFSJy9gG6BGv63XfE73MxteK2cBeyX03jRTuZmtWYSrrUwG 4nYcMHYPy7ekj/VEU97+/oE5fbF73nno87Dlf2b24IQS2m+vrPp2W3KUtOSDZtPNxZxhLEQqIBT OjYjucadA/s18ay6f7el9ZzrzmwrDHpH8PXCIU6cn66Sx7nhfdrP39jxnbtSTCqMtHpmfv4UUTA dNfxBHcyBIEW7h8CF9Vp2ox1Cy9YnHrOzJNxFW3AKu+V/1GcJrCKw/fxE/Ec39AVEt/PJFBXb0s wj7NbQY7itY+HtSmnJtlwetcIKxc5GzDHRD0yUPQViJl01EsuvC3pbhJS3GDBtuzKlhJE4bgzmr 4WOz5Z78uDrLJpogVJ0lE3osoUtaFIn+EV4+bA+c1+1cIkLUgQ3bvAhzybHft3cqJowndi+Rhgp gkFe13iiGgBuiR2NaQw== X-Authority-Analysis: v=2.4 cv=Rsv16imK c=1 sm=1 tr=0 ts=6a60c97c cx=c_pps a=JbAStetqSzwMeJznSMzCyw==:117 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=RAioF0-LDSMA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=ZpdpYltYx_vBUK5n70dp:22 a=EUspDBNiAAAA:8 a=PcYcMbZi39MCwOMHHM8A:9 a=QEXdDO2ut3YA:10 a=uxP6HrT_eTzRwkO_Te1X:22 X-Proofpoint-GUID: BaMpUC7_8n3XMl09ZS8TkFmzqEejd5Gu X-Proofpoint-ORIG-GUID: BaMpUC7_8n3XMl09ZS8TkFmzqEejd5Gu X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-07-22_04,2026-07-22_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 bulkscore=0 phishscore=0 spamscore=0 impostorscore=0 malwarescore=0 adultscore=0 lowpriorityscore=0 suspectscore=0 clxscore=1015 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607220134 Runtime PM has to be enabled before creating the PHY, since phy_create() only enables runtime PM on the PHY device if it is already enabled on this parent device. This opens a small window where the device can be runtime suspended after pm_runtime_enable() and before the later pm_runtime_forbid(), causing an unnecessary suspend/resume cycle while the PHY is not yet registered. Take a runtime PM usage reference with pm_runtime_get_noresume() before enabling runtime PM and release it once the PHY has been created to prevent the device from being runtime suspended during that window. This also makes the probe path safe independently of pm_runtime_forbid(), which is a good preparation for potentially dropping the forbid() call in the future and letting runtime PM be enabled by default. Signed-off-by: Loic Poulain --- drivers/phy/qualcomm/phy-qcom-qmp-usb.c | 24 +++++++++++++++++++----- 1 file changed, 19 insertions(+), 5 deletions(-) diff --git a/drivers/phy/qualcomm/phy-qcom-qmp-usb.c b/drivers/phy/qualcomm= /phy-qcom-qmp-usb.c index bb905c437a01e3b898b7259abe3e49df4756fc5b..b0790bcf0bc86459d0658ea1290= 888273c4ff391 100644 --- a/drivers/phy/qualcomm/phy-qcom-qmp-usb.c +++ b/drivers/phy/qualcomm/phy-qcom-qmp-usb.c @@ -2419,10 +2419,16 @@ static int qmp_usb_probe(struct platform_device *pd= ev) if (ret) goto err_node_put; =20 + /* + * Enable runtime PM before creating the PHY, phy_create() only enables + * it on the PHY device if already enabled on the parent. Hold a usage + * reference so callbacks cannot run before qmp->phy is assigned. + */ + pm_runtime_get_noresume(dev); pm_runtime_set_active(dev); ret =3D devm_pm_runtime_enable(dev); if (ret) - goto err_node_put; + goto err_pm_put; /* * Prevent runtime pm from being ON by default. Users can enable * it using power/control in sysfs. @@ -2431,23 +2437,31 @@ static int qmp_usb_probe(struct platform_device *pd= ev) =20 ret =3D phy_pipe_clk_register(qmp, np); if (ret) - goto err_node_put; + goto err_pm_put; =20 qmp->phy =3D devm_phy_create(dev, np, &qmp_usb_phy_ops); if (IS_ERR(qmp->phy)) { ret =3D PTR_ERR(qmp->phy); dev_err(dev, "failed to create PHY: %d\n", ret); - goto err_node_put; + goto err_pm_put; } =20 phy_set_drvdata(qmp->phy, qmp); =20 + phy_provider =3D devm_of_phy_provider_register(dev, of_phy_simple_xlate); + if (IS_ERR(phy_provider)) { + ret =3D PTR_ERR(phy_provider); + goto err_pm_put; + } + of_node_put(np); =20 - phy_provider =3D devm_of_phy_provider_register(dev, of_phy_simple_xlate); + pm_runtime_put(dev); =20 - return PTR_ERR_OR_ZERO(phy_provider); + return 0; =20 +err_pm_put: + pm_runtime_put_noidle(dev); err_node_put: of_node_put(np); return ret; --=20 2.34.1