From mboxrd@z Thu Jan 1 00:00:00 1970 Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.remote-ip=205.220.168.131 ARC-Seal: i=1; d=subspace.kernel.org; s=arc20261015; a=rsa-sha256; cv=none; t=1792573087; b=4HqWCZXtgVEjzwwhCVVBhkYnSxTii73K9TizdZCj2HCFFgvYdKxCYnVhaove4p9B5doo 9b6N+CopcHA/QWVZMKJK5sq5JnX9d5T8d43nP9yw4Oj/9XA8jGMFn6EDAe5VW/9FVvXZO LQACtyWjP5TGnTXTWlPo9XRnizb5Rxe4IQ3951NY7W9WfdiPaO3vxjTFhIlFTpqE4kFem ig981ufbyQTCWh6UI7NGJHLJKY2Ztgs9wXxtqVJE0EP40FUdBfinBYZMWjLgi31tmC8Lq DkF/E+zw10KaHBZxZUM9Tl/ihMwjNGT27z8NDt9WrmYsoKaNwtrMieR49bjYob5VV3g== ARC-Message-Signature: i=1; d=subspace.kernel.org; s=arc20261015; a=rsa-sha256; c=relaxed/relaxed; t=1792573087; h=DMARC-Filter:Received:DKIM-Signature:Received:Received: DKIM-Signature:X-Google-DKIM-Signature:X-Forwarded-Encrypted: X-Gm-Message-State:X-Gm-Gg:X-Received:X-Received:Received:From:To:Cc: Subject:Date:Message-ID:X-Mailer:MIME-Version: Content-Transfer-Encoding:X-Proofpoint-ORIG-GUID:X-Proofpoint-GUID: X-Proofpoint-Spam-Info:X-Authority-Analysis: X-Proofpoint-Spam-Details-Enc:X-Proofpoint-Virus-Version: X-Proofpoint-Spam-Details; bh=8ZFiJaYV0wG6Mf8urSzwz9QKuDKvIUO3FJOEVgQm81M=; b=0Oh5n4JibxEjuweylZGR1g/dL0FZKjQYf9TXJrf9dqvLb5EJnz83Xfrzbn5D2lR3cdLf Yty+/AmPZLgkNdU7PuG+nEFazEcoG3/nm068U9tEKwoHda+TjXfLhJ8s+BVR+bOGG/U3m kBNExmst4JbQ8+XDUkr0AjXIroIYL0wynf8CZXXqo5dkNq3L1tNmyOyW1xMMSP0QipIjG akmqdPhJbWp9RkBfmi6Triq26NZgsFJjRu8A+obpcOxcw0xM+QGOcsUTU6LMJJxUHMaL2 uWQAXjdqwm2s4rCimQ4vpeVBj5HKl0/jXLpD2/yuVfjAFEPsQpZfAUDnju0f6ij8AuQ== ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass header.d=qualcomm.com header.i=@qualcomm.com header.a=rsa-sha256 header.s=qcppdkim1 header.b=CoR3xyfE; dkim=pass header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.a=rsa-sha256 header.s=google header.b="Btpq/Qni"; arc=none smtp.remote-ip=205.220.168.131 Received: from mx0a-0031df01.pphosted.com (mx0a-0031df01.pphosted.com [205.220.168.131]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (prime256v1) server-digest SHA256) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id BAD3D606A32C for ; Wed, 21 Oct 2026 08:58:06 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.2 smtp.subspace.kernel.org BAD3D606A32C 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, unprotected) header.d=qualcomm.com header.i=@qualcomm.com header.a=rsa-sha256 header.s=qcppdkim1 header.b=CoR3xyfE; dkim=pass (2048-bit key, unprotected) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.a=rsa-sha256 header.s=google header.b=Btpq/Qni Received: from pps.filterd (m0279865.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 69L5j0Lw756369 for ; Wed, 21 Oct 2026 08:58:06 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:date:from:message-id:mime-version :subject:to; s=qcppdkim1; bh=8ZFiJaYV0wG6Mf8urSzwz9QKuDKvIUO3FJO EVgQm81M=; b=CoR3xyfEu/ZkX8lBFWZsJc1CI1EhZQ9n1eGN2bLpbYsmOOso8mk TRtxnonqfH5tAsozA+q7oP52VLzCz/x1MSGscPLd91EeIJq5D0xz4+uxhz5EdITK ZeMCHK8f4/mLKOhzbsDEa6kymlWDAnsgbpORkACvj+6AjlKOhwd4hKy0Ee7dy/Br 5HOMreQMKqx9d9+nhGhjkSX77JsTC30hM/lcAfELw0KszxdeDPBEprLcDmAKU11N 4d0d+r4huzDHGXnT4QChxCQFdMOnlvjElkvhgR/6xLkCqwbDuQmbaGpNAu7qzD0Q tnm6CTmybe+c7BY53S6AuixLwsuGwdpIBZg== Received: from mail-qk1-f199.google.com (mail-qk1-f199.google.com [209.85.222.199]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4heda4u3rr-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Wed, 21 Oct 2026 08:58:05 +0000 (GMT) Received: by mail-qk1-f199.google.com with SMTP id af79cd13be357-93f559420f3so52744685a.0 for ; Wed, 21 Oct 2026 01:58:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1792573085; x=1793177885; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to:content-type; bh=8ZFiJaYV0wG6Mf8urSzwz9QKuDKvIUO3FJOEVgQm81M=; b=Btpq/QnidTLcffDDuN9vZ3iIlJtkYpb5OWffy6LG2WFYqGYstPkBf3HgjjFOJe6Tp9 T0uJXtlytLsX9LK106hLbCjHaU7WmsbN0ya3fhINVyPIEEc3DSUaRFqpeIcRGylJCIS4 KQU6X53P8Lh2KyVKKPSeaYQ8o+RHl5h0gNmLDkBENU0bqLkQ78oKx805CV+gNhxIsnfn DbPehWyoqqstkwUMaoXcMemv+BbRoi4Mp9K2CDfzH/qlEH3f43nXX/xMOnku9oZ4Wc7e /2wFGpmR2udxkidO3yO5fMAx6uzDPPydNniDFn6WqKiloN/mchyFZJ5/lA6ksuLOTMnM fsUQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1792573085; x=1793177885; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to:content-type; bh=8ZFiJaYV0wG6Mf8urSzwz9QKuDKvIUO3FJOEVgQm81M=; b=Lji1VoKskph7U7mALt4tV5wPDb8HWUr+fykH9t0UbPNoar4gqsRQmMSk1AIG6YzKGt kPPjWFcA1QdsohjtnSYqMrCwR2KWmRFgXe/XRbI4f6FI1Jo3qCC4rZyZzrTqTIAQVTwJ bpVHpc8AtdoHYSxjuZhC5eM9XG3aOWvXcL7MesRwpL8IBgkQv0Wo5vyPdnFR66PDZ454 4tnfl9dSgzBEkosGeTWby9mIgcXTnIPxEyFKRLXkOvTMjyvdPU9v+6Q+CI6zUSqwr1fa wDnqMRpNlZfqaJ0Ui6ahTXdGmEtb2QF+kiUQbEQzMQ8F8GMiQBaYRBp0SbhmH2Wtg1Wu Ifiw== X-Forwarded-Encrypted: i=1; AKwUvBwpHXlRE6kX/2XYCTdXjiUUnm22IA3QJ+/nmDr/djodp2YQAnRBqIeabq8NxoiZOvBTT/0dtgy24Lbf5qo=@vger.kernel.org X-Gm-Message-State: AFq9FYI2Z7M3N2URHGhVAY4be2slY2nmjjt9qrtG3ZWFXppJdXwuEQhn OpAEmXx4Gutp4JGjCA5LsW84oGq396HrI18RQNspY4WVShi0Y3ihmpX6EHlcHc+szc3+CPmuTab eSU8I6zskmpPkV/fc3/TiXOuLInbV/Xv+Ximb+VSlaFQ5ym3G5INpbQioxlAbxd72dPg= X-Gm-Gg: AYBFou1WsVIV108/H+UEvPsnp+ZnWAB/Hy84EFq2HzT3qKr0TYMf9We6KB8lC3odM4J ar9z08fNEUTLmjZMFiur9LQrdM6QK9ATD8LSU0lvwPV5Ys/tmzNQ1QeeVk2QALhEKTW7NnTh7Xd hmiBuNtPE7VoWbciPWQmYpyVOc21aHU4dvKgQsuviTWiNiEovc9zW/oPcveu8Vuf2i15Bm21tah I7UhFd50aLS5TJQXXrPxP6lArqymmDaH6a6pi6UB0i/d/FxBk5Jzw50wzZBUZ9bYvl7ctDcUNpJ zhjljSH4pPFysJU5W8FUAnDC7SE1rDvIdZVxuoNaCYNW57xq98M49W4aV143pwVpyHwIdc69G5t ejHzvg8TB4U/gf9c8y6RDapPqmA== X-Received: by 2002:a05:620a:17ac:b0:93f:2cf4:e6dd with SMTP id af79cd13be357-93f57f935abmr306339785a.51.1792573084541; Wed, 21 Oct 2026 01:58:04 -0700 (PDT) X-Received: by 2002:a05:620a:17ac:b0:93f:2cf4:e6dd with SMTP id af79cd13be357-93f57f935abmr306336985a.51.1792573084055; Wed, 21 Oct 2026 01:58:04 -0700 (PDT) Received: from mai.box.freepro.com ([2a05:6e02:1041:c10:8d9e:b00d:491:1503]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-48e258424bcsm4058401f8f.55.2026.10.21.01.58.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 21 Oct 2026 01:58:02 -0700 (PDT) From: Daniel Lezcano To: daniel.lezcano@oss.qualcomm.com Cc: andersson@kernel.org, Rajendra Nayak , Amit Kucheria , Thara Gopinath , "Rafael J. Wysocki" , Daniel Lezcano , Zhang Rui , Lukasz Luba , linux-pm@vger.kernel.org (open list:QUALCOMM TSENS THERMAL DRIVER), linux-arm-msm@vger.kernel.org (open list:QUALCOMM TSENS THERMAL DRIVER), linux-kernel@vger.kernel.org (open list) Subject: [PATCH 1/3] thermal/drivers/qcom/tsens: Release parent resources on probe failure Date: Wed, 21 Oct 2026 10:57:46 +0200 Message-ID: <20261021085749.3786101-1-daniel.lezcano@oss.qualcomm.com> X-Mailer: git-send-email 2.43.0 X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Post: List-Help: List-Subscribe: List-Unsubscribe: List-Owner: Precedence: list MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Proofpoint-ORIG-GUID: Imnfd_E_k1JEkWiGUFKp4-1GCBJlbsDD X-Proofpoint-GUID: Imnfd_E_k1JEkWiGUFKp4-1GCBJlbsDD X-Proofpoint-Spam-Info: AW1haW4tMjYxMDIxMDAzNSBTYWx0ZWRfX4AOBVpXwwZMD lQJ6FGa6NKttnnABgxEVry67sk+ODndH8z7B/j3U+YHrSW4G5mf7VVaN19TTOvWo6tUEWjKejRN 1xH4qsRu7ARR0CGjWpQUK11ZgopYxSQ= X-Authority-Analysis: v=2.4 cv=R7aWitRX c=1 sm=1 tr=0 ts=6ad87e9d cx=c_pps a=HLyN3IcIa5EE8TELMZ618Q==:117 a=xqWC_Br6kY4A:10 a=660iZSQnnn4A:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=Um2Pa8k9VHT-vaBCBUpS:22 a=c92rfblmAAAA:8 a=EUspDBNiAAAA:8 a=uMi6mabLCCkMMC-zsVUA:9 a=bTQJ7kPSJx9SKPbeHEYW:22 a=GvGzcOZaWPEFPQC_NcjD:22 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYxMDIxMDAzNSBTYWx0ZWRfXzeQzhAdXEgjK uPl8wTCf+isr4OniBjFLYd4KWsljbXHcWBqcIY+gD30ldso+F8olcPaLCQjWq4f8RQhyUaV4KMA q0XuoVsPyvFICKsJs3PYxQ4gddQOlmr2oiBa5AqpbYV3qJ78LW3TD+KqoERgh3atszEBrMv1dHW ZdQMvnbJ+CYagVrsum9bYsroj6cdqcZ2wZxgtjBq/QHIoYGZKpbrTibSSCcumj27R3cMBHXqRzK D7gJ8huMnG6Kfo7l6QI5FE7F7dhgff9TZQj8eLd4ICaLbQHk1N4NqZv8cPPTaPCnXYOxymphk7q OTyF+/4gkBrh1IICo41RprpxOwV+B6z4K4yEyqYCyyS7qEerRiQiJYK8ytrsA/CO2xdxolMdwx8 i9PXH0mdmLEJ7YosDI2wRWFZQDAv+MpnrThUp3VLKKgio1sQgS16RiHQPWKRYlYFMqFm2IcHsxX PUC6EbwiX7gEBo5Kjzg== X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-10-21_02,2026-10-19_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 malwarescore=0 adultscore=0 priorityscore=1501 lowpriorityscore=0 clxscore=1015 impostorscore=0 bulkscore=0 spamscore=0 suspectscore=0 phishscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2610190000 definitions=main-2610210035 On legacy MSM8960/APQ8064 device trees without a separate TSENS child node, the Global Clock Controller (GCC) driver creates a qcom-tsens platform device without an OF node. TSENS consequently uses the parent device for firmware lookups and managed resource allocations. If probing fails, including calibration returning -EPROBE_DEFER, the driver core releases only the child device's managed resources. Allocations attached to the parent remain, accumulating across repeated probe attempts. Wrap the parent-bound allocations in a devres group and register a cleanup action on the TSENS child. This releases the resources on probe failure and unbind while preserving legacy firmware lookups. Keep the group handling in a probe wrapper so the existing initialization path remains self-contained. Fixes: 9066073c6c27 ("thermal: qcom: tsens: Add a skeletal TSENS drivers") Closes: https://sashiko.dev/#/bug/linux-7dc6dad0-c471-47ca-b493-8402752cf13a Signed-off-by: Daniel Lezcano Cc: Rajendra Nayak --- drivers/thermal/qcom/tsens.c | 37 +++++++++++++++++++++++++++++++++++- 1 file changed, 36 insertions(+), 1 deletion(-) diff --git a/drivers/thermal/qcom/tsens.c b/drivers/thermal/qcom/tsens.c index b5ec70201e2f..4f69ce4976d9 100644 --- a/drivers/thermal/qcom/tsens.c +++ b/drivers/thermal/qcom/tsens.c @@ -1374,7 +1374,7 @@ static int tsens_register(struct tsens_priv *priv) return ret; } -static int tsens_probe(struct platform_device *pdev) +static int tsens_probe_common(struct platform_device *pdev) { int ret, i; struct device *dev; @@ -1452,6 +1452,41 @@ static int tsens_probe(struct platform_device *pdev) return ret; } +static void tsens_release_resources(void *data) +{ + struct device *dev = data; + + devres_release_group(dev->parent, dev); +} + +static int tsens_probe(struct platform_device *pdev) +{ + struct device *dev = &pdev->dev; + int ret; + + /* + * DT-backed devices own their managed resources directly. Legacy devices + * created by the Global Clock Controller (GCC) driver have no OF node and + * use the parent's firmware data and managed resources instead. Group + * those resources so the child releases them on probe failure or unbind. + */ + if (dev->of_node) + return tsens_probe_common(pdev); + + /* Tie resources allocated on the parent to the TSENS lifetime. */ + if (!devres_open_group(dev->parent, dev, GFP_KERNEL)) + return -ENOMEM; + + ret = devm_add_action_or_reset(dev, tsens_release_resources, dev); + if (ret) + return ret; + + ret = tsens_probe_common(pdev); + devres_close_group(dev->parent, dev); + + return ret; +} + static void tsens_remove(struct platform_device *pdev) { struct tsens_priv *priv = platform_get_drvdata(pdev); -- 2.43.0