From nobody Tue Dec 2 02:21:37 2025 Received: from mout.gmx.net (mout.gmx.net [212.227.17.21]) (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 F386F296BB8; Thu, 20 Nov 2025 03:41:31 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=212.227.17.21 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763610094; cv=none; b=ih781U7NJhGDEnDn7gNHZdoBme2JqlDuBpPWai3ZRsEkVBi4kANUC2O7jNZqCXBQ/MJI13sHcHsjCqt0V0UggEqhJS47lJYnRMBmXG1h6XlSjkj7/WtHwKObimYIxUK4NuKm6FI7FrlKZpawQq4k1V551p2CU3SqkG4Q3jpI3Pg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763610094; c=relaxed/simple; bh=jn04GkM15A35t0ds3HF5RSmlhWyQILvmqLxZ6Cs4qZo=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=WvoPvhQwl1gxBZRmCgp1amON9l34LSelm1Bx+KX6aFgFGNoFxsDIKhqo5FPVOnuNMA5LYxk8Ek558d7vSkgyIJUxUGzC5s9ekQkEnXxzyzfP4E7LQMQWvZrL5l+uJlBrtwIrq4apVyN+lkv++qFdwbFfjGkrPAakGRoGvIkRkas= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=gmx.de; spf=pass smtp.mailfrom=gmx.de; dkim=pass (2048-bit key) header.d=gmx.de header.i=w_armin@gmx.de header.b=QI/Fub52; arc=none smtp.client-ip=212.227.17.21 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=gmx.de Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmx.de Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmx.de header.i=w_armin@gmx.de header.b="QI/Fub52" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.de; s=s31663417; t=1763610082; x=1764214882; i=w_armin@gmx.de; bh=w2Nfv//wKfgQYjOWaBmhUaOG3ji2GxiPpvMEXNJkovk=; h=X-UI-Sender-Class:From:Date:Subject:MIME-Version:Content-Type: Content-Transfer-Encoding:Message-Id:References:In-Reply-To:To:Cc: cc:content-transfer-encoding:content-type:date:from:message-id: mime-version:reply-to:subject:to; b=QI/Fub525wDohQgrQZJy5ZGp8vcwn40gJOPbT3X67Wz3mcytu+sSkKm+/liAXaF/ ze5WJNam4JEBz9EvtkmEzVyuR57mBKFa9Jqt1l7RuJOJaqTil8BSmZQm2pK/X1nXE haJGM77SqXmQY7+kQVVFyy8y0wqfCsnSmnLuWJUOVJotxqk3p0intCgNvuDa5Ju6e Yt/pILqQOXJIspRJxtrPtGdM37tHWRemFt/RMkc6/8kmbqqg1dSse/LkXsZ31awVL YEDEvZYeHzsDif/aKGKSFsZiQ53dxNiF3ripIR4vdnr6GBhiZfrbvMXp6iQYit5JP eQhthGQgTH/PDrHChA== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a Received: from [127.0.0.1] ([93.202.247.91]) by mail.gmx.net (mrgmx104 [212.227.17.168]) with ESMTPSA (Nemesis) id 1MMXUN-1vcDTi2rZ9-00LXG9; Thu, 20 Nov 2025 04:41:21 +0100 From: Armin Wolf Date: Thu, 20 Nov 2025 04:41:11 +0100 Subject: [PATCH RFC RESEND 1/8] thermal: core: Allow setting the parent device of cooling devices 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: <20251120-thermal-device-v1-1-bbdad594d57a@gmx.de> References: <20251120-thermal-device-v1-0-bbdad594d57a@gmx.de> In-Reply-To: <20251120-thermal-device-v1-0-bbdad594d57a@gmx.de> To: "Rafael J. Wysocki" , Daniel Lezcano , Zhang Rui , Lukasz Luba , Len Brown , Jonathan Corbet , Ido Schimmel , Petr Machata Cc: linux-pm@vger.kernel.org, linux-kernel@vger.kernel.org, etnaviv@lists.freedesktop.org, dri-devel@lists.freedesktop.org, linux-tegra@vger.kernel.org, linux-acpi@vger.kernel.org, linux-doc@vger.kernel.org, netdev@vger.kernel.org, linux-wireless@vger.kernel.org, ath10k@lists.infradead.org, ath11k@lists.infradead.org, linux-arm-kernel@lists.infradead.org, linux-mediatek@lists.infradead.org, platform-driver-x86@vger.kernel.org, linux-pci@vger.kernel.org, imx@lists.linux.dev, linux-renesas-soc@vger.kernel.org X-Mailer: b4 0.14.3 X-Provags-ID: V03:K1:DWBT/C9r0u0GJbnfM2x6xD+VPAcKYxVi3FSehphoX9P+PP9QP40 H1l/LJwjFLMySZKWql7wwYEqHZyDutpIpBTgGBKEh2J88LfH30owsDkDNqR6bHSrBuTRbf6 Kl+PZlhIRv/dziKbjlpllqBNeLTfwcmKKbnRw5NROE93Ahsf+EfgRcHUnCNUJXv4F+hTDU4 HyxqaIXpHJbzFhFdy/jiA== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:ysKf264By68=;oa9a8ZuzYONRxmuvwwbz4iIX39i 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 /UEweJKU= Currently, cooling devices have no parent device, potentially causing issues with suspend ordering and making it impossible for consumers (thermal zones and userspace appications) to associate a given cooling device with its parent device. Extend __thermal_cooling_device_register() to also accept a parent device pointer. For now only devm_thermal_of_cooling_device_register() uses this, as the other wrapper functions need to be extended first. Signed-off-by: Armin Wolf --- drivers/thermal/thermal_core.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/drivers/thermal/thermal_core.c b/drivers/thermal/thermal_core.c index 17ca5c082643..c8b720194b44 100644 --- a/drivers/thermal/thermal_core.c +++ b/drivers/thermal/thermal_core.c @@ -1040,6 +1040,7 @@ static void thermal_cooling_device_init_complete(stru= ct thermal_cooling_device * =20 /** * __thermal_cooling_device_register() - register a new thermal cooling de= vice + * @parent: parent device pointer. * @np: a pointer to a device tree node. * @type: the thermal cooling device type. * @devdata: device private data. @@ -1055,7 +1056,7 @@ static void thermal_cooling_device_init_complete(stru= ct thermal_cooling_device * * ERR_PTR. Caller must check return value with IS_ERR*() helpers. */ static struct thermal_cooling_device * -__thermal_cooling_device_register(struct device_node *np, +__thermal_cooling_device_register(struct device *parent, struct device_nod= e *np, const char *type, void *devdata, const struct thermal_cooling_device_ops *ops) { @@ -1092,6 +1093,7 @@ __thermal_cooling_device_register(struct device_node = *np, cdev->ops =3D ops; cdev->updated =3D false; cdev->device.class =3D thermal_class; + cdev->device.parent =3D parent; cdev->devdata =3D devdata; =20 ret =3D cdev->ops->get_max_state(cdev, &cdev->max_state); @@ -1158,7 +1160,7 @@ struct thermal_cooling_device * thermal_cooling_device_register(const char *type, void *devdata, const struct thermal_cooling_device_ops *ops) { - return __thermal_cooling_device_register(NULL, type, devdata, ops); + return __thermal_cooling_device_register(NULL, NULL, type, devdata, ops); } EXPORT_SYMBOL_GPL(thermal_cooling_device_register); =20 @@ -1182,7 +1184,7 @@ thermal_of_cooling_device_register(struct device_node= *np, const char *type, void *devdata, const struct thermal_cooling_device_ops *ops) { - return __thermal_cooling_device_register(np, type, devdata, ops); + return __thermal_cooling_device_register(NULL, np, type, devdata, ops); } EXPORT_SYMBOL_GPL(thermal_of_cooling_device_register); =20 @@ -1222,7 +1224,7 @@ devm_thermal_of_cooling_device_register(struct device= *dev, if (!ptr) return ERR_PTR(-ENOMEM); =20 - tcd =3D __thermal_cooling_device_register(np, type, devdata, ops); + tcd =3D __thermal_cooling_device_register(dev, np, type, devdata, ops); if (IS_ERR(tcd)) { devres_free(ptr); return tcd; --=20 2.39.5 From nobody Tue Dec 2 02:21:37 2025 Received: from mout.gmx.net (mout.gmx.net [212.227.17.20]) (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 5EA2430CD89; Thu, 20 Nov 2025 03:41:42 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=212.227.17.20 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763610106; cv=none; b=mMOB6zgwO39fb2t4zN2cOi1jCnmlt8xRFhSkV15Ap4QEepfjwxICBmsqd1vTFMS33WQ1sScC7FcWDEwBl5GtpKnKoVHZj8Tu1n6CzPZ8De83lMmUryKB17sz5BeNT8jJS36RyyCCYZ8QIyBcCReNjYHPpiy3wv8y4szoST/7rWo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763610106; c=relaxed/simple; bh=9k3gvC/4TJFm13xLHAY4L5eptI+IpktBfSnJrspslQ4=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Y0dB997+6RiEb1vKZ7Bm0QbhIEFcUkfJyfOneFi3ZgmG22B9SvcDJjXBm9KH/RnkvQ+wPoBYudybGBuJJ3i/dWRmMYBIw/2ceYT3yeA1TMLDa1qS6MSkjNouN35O3UcQDqllbFsZjVyqCRgwrRWiaQuU2cp8n+0GDJtCdO7Lrc0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=gmx.de; spf=pass smtp.mailfrom=gmx.de; dkim=pass (2048-bit key) header.d=gmx.de header.i=w_armin@gmx.de header.b=X9pVvnxi; arc=none smtp.client-ip=212.227.17.20 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=gmx.de Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmx.de Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmx.de header.i=w_armin@gmx.de header.b="X9pVvnxi" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.de; s=s31663417; t=1763610085; x=1764214885; i=w_armin@gmx.de; bh=1witJch5Wm69t8Vr/6mBWOY4SkAhtm8qmFrRdc/aq+w=; h=X-UI-Sender-Class:From:Date:Subject:MIME-Version:Content-Type: Content-Transfer-Encoding:Message-Id:References:In-Reply-To:To:Cc: cc:content-transfer-encoding:content-type:date:from:message-id: mime-version:reply-to:subject:to; b=X9pVvnxirBKz8nOlzOnP4OsU3v7iXjlLxvIXyWrM1B8TKyZj5s1HgRHg+VuhJdxf LQKhOxg8BpS5wiKWiccUKT2bjrgmlL+XzFa24qwSJ07ZDtPzgnlisTro6NtOdN5xG 8vJhyn4DX898exMMpbVA3h8+e5az1qJIFPjvWkfEWmb2PibnwH81VitCtX86bt9Ak 4rgqoK12stYOp1WES3bcFZLo6QhPxoWCrUfW0gdbLU9WGP5OjvV6N5i0dB+nqsaLS WUc9Zeh76xLfKS40PQi4cyrkfsd1nM8lK6R3bFRloWEj4jKhwL/3tfHQp/vkFnPRR NrrwJeg7KbIsZ4epJQ== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a Received: from [127.0.0.1] ([93.202.247.91]) by mail.gmx.net (mrgmx104 [212.227.17.168]) with ESMTPSA (Nemesis) id 1N0X8u-1w7ARs3RMi-00yykY; Thu, 20 Nov 2025 04:41:25 +0100 From: Armin Wolf Date: Thu, 20 Nov 2025 04:41:12 +0100 Subject: [PATCH RFC RESEND 2/8] thermal: core: Set parent device in thermal_of_cooling_device_register() 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: <20251120-thermal-device-v1-2-bbdad594d57a@gmx.de> References: <20251120-thermal-device-v1-0-bbdad594d57a@gmx.de> In-Reply-To: <20251120-thermal-device-v1-0-bbdad594d57a@gmx.de> To: "Rafael J. Wysocki" , Daniel Lezcano , Zhang Rui , Lukasz Luba , Len Brown , Jonathan Corbet , Ido Schimmel , Petr Machata Cc: linux-pm@vger.kernel.org, linux-kernel@vger.kernel.org, etnaviv@lists.freedesktop.org, dri-devel@lists.freedesktop.org, linux-tegra@vger.kernel.org, linux-acpi@vger.kernel.org, linux-doc@vger.kernel.org, netdev@vger.kernel.org, linux-wireless@vger.kernel.org, ath10k@lists.infradead.org, ath11k@lists.infradead.org, linux-arm-kernel@lists.infradead.org, linux-mediatek@lists.infradead.org, platform-driver-x86@vger.kernel.org, linux-pci@vger.kernel.org, imx@lists.linux.dev, linux-renesas-soc@vger.kernel.org X-Mailer: b4 0.14.3 X-Provags-ID: V03:K1:1UoEphsgIh0DCvIypBaBlMhDf5nKXxN9NtIAzorZM9NWMj0e1ly JN5L37/wn6iTs/R/JMaMfzdoKjKVEcjUtmQb2Cycd09YxOVvi7b0bTrR3ilr5tAqfIw5n4t skj67CtahQ9TyHpW37iM1LpwujivRVFE3BT+J0XOO96wfmml3QOzFsB1zr0dO5Nl+rZ8vR/ fiTIYNzTYIjCnjJKT7mgg== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:TgAPfcCBj4Q=;vDaC4acoIO1HUTjjIuuCj6Sunet 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 Z+VgQgaw= Extend thermal_of_cooling_device_register() to allow users to specify the parent device of the cooling device to be created. Signed-off-by: Armin Wolf --- drivers/gpu/drm/etnaviv/etnaviv_gpu.c | 4 ++-- drivers/thermal/cpufreq_cooling.c | 2 +- drivers/thermal/cpuidle_cooling.c | 2 +- drivers/thermal/devfreq_cooling.c | 2 +- drivers/thermal/tegra/soctherm.c | 5 ++--- drivers/thermal/thermal_core.c | 5 +++-- include/linux/thermal.h | 9 ++++----- 7 files changed, 14 insertions(+), 15 deletions(-) diff --git a/drivers/gpu/drm/etnaviv/etnaviv_gpu.c b/drivers/gpu/drm/etnavi= v/etnaviv_gpu.c index cf0d9049bcf1..f2c98e46a1c6 100644 --- a/drivers/gpu/drm/etnaviv/etnaviv_gpu.c +++ b/drivers/gpu/drm/etnaviv/etnaviv_gpu.c @@ -1778,8 +1778,8 @@ static int etnaviv_gpu_bind(struct device *dev, struc= t device *master, int ret; =20 if (IS_ENABLED(CONFIG_DRM_ETNAVIV_THERMAL)) { - gpu->cooling =3D thermal_of_cooling_device_register(dev->of_node, - (char *)dev_name(dev), gpu, &cooling_ops); + gpu->cooling =3D thermal_of_cooling_device_register(dev, dev->of_node, d= ev_name(dev), + gpu, &cooling_ops); if (IS_ERR(gpu->cooling)) return PTR_ERR(gpu->cooling); } diff --git a/drivers/thermal/cpufreq_cooling.c b/drivers/thermal/cpufreq_co= oling.c index 6b7ab1814c12..af9250c44da7 100644 --- a/drivers/thermal/cpufreq_cooling.c +++ b/drivers/thermal/cpufreq_cooling.c @@ -593,7 +593,7 @@ __cpufreq_cooling_register(struct device_node *np, if (!name) goto remove_qos_req; =20 - cdev =3D thermal_of_cooling_device_register(np, name, cpufreq_cdev, + cdev =3D thermal_of_cooling_device_register(dev, np, name, cpufreq_cdev, cooling_ops); kfree(name); =20 diff --git a/drivers/thermal/cpuidle_cooling.c b/drivers/thermal/cpuidle_co= oling.c index f678c1281862..520c89a36d90 100644 --- a/drivers/thermal/cpuidle_cooling.c +++ b/drivers/thermal/cpuidle_cooling.c @@ -207,7 +207,7 @@ static int __cpuidle_cooling_register(struct device_nod= e *np, goto out_unregister; } =20 - cdev =3D thermal_of_cooling_device_register(np, name, idle_cdev, + cdev =3D thermal_of_cooling_device_register(dev, np, name, idle_cdev, &cpuidle_cooling_ops); if (IS_ERR(cdev)) { ret =3D PTR_ERR(cdev); diff --git a/drivers/thermal/devfreq_cooling.c b/drivers/thermal/devfreq_co= oling.c index 8fd7cf1932cd..d91695ed0f26 100644 --- a/drivers/thermal/devfreq_cooling.c +++ b/drivers/thermal/devfreq_cooling.c @@ -454,7 +454,7 @@ of_devfreq_cooling_register_power(struct device_node *n= p, struct devfreq *df, if (!name) goto remove_qos_req; =20 - cdev =3D thermal_of_cooling_device_register(np, name, dfc, ops); + cdev =3D thermal_of_cooling_device_register(dev, np, name, dfc, ops); kfree(name); =20 if (IS_ERR(cdev)) { diff --git a/drivers/thermal/tegra/soctherm.c b/drivers/thermal/tegra/socth= erm.c index 5d26b52beaba..4f43da123be4 100644 --- a/drivers/thermal/tegra/soctherm.c +++ b/drivers/thermal/tegra/soctherm.c @@ -1700,9 +1700,8 @@ static void soctherm_init_hw_throt_cdev(struct platfo= rm_device *pdev) stc->init =3D true; } else { =20 - tcd =3D thermal_of_cooling_device_register(np_stcc, - (char *)name, ts, - &throt_cooling_ops); + tcd =3D thermal_of_cooling_device_register(dev, np_stcc, name, ts, + &throt_cooling_ops); if (IS_ERR_OR_NULL(tcd)) { dev_err(dev, "throttle-cfg: %s: failed to register cooling device\n", diff --git a/drivers/thermal/thermal_core.c b/drivers/thermal/thermal_core.c index c8b720194b44..5d752e712cc0 100644 --- a/drivers/thermal/thermal_core.c +++ b/drivers/thermal/thermal_core.c @@ -1166,6 +1166,7 @@ EXPORT_SYMBOL_GPL(thermal_cooling_device_register); =20 /** * thermal_of_cooling_device_register() - register an OF thermal cooling d= evice + * @parent: parent device pointer. * @np: a pointer to a device tree node. * @type: the thermal cooling device type. * @devdata: device private data. @@ -1180,11 +1181,11 @@ EXPORT_SYMBOL_GPL(thermal_cooling_device_register); * ERR_PTR. Caller must check return value with IS_ERR*() helpers. */ struct thermal_cooling_device * -thermal_of_cooling_device_register(struct device_node *np, +thermal_of_cooling_device_register(struct device *parent, struct device_no= de *np, const char *type, void *devdata, const struct thermal_cooling_device_ops *ops) { - return __thermal_cooling_device_register(NULL, np, type, devdata, ops); + return __thermal_cooling_device_register(parent, np, type, devdata, ops); } EXPORT_SYMBOL_GPL(thermal_of_cooling_device_register); =20 diff --git a/include/linux/thermal.h b/include/linux/thermal.h index 0b5ed6821080..fa53d12173ce 100644 --- a/include/linux/thermal.h +++ b/include/linux/thermal.h @@ -253,8 +253,8 @@ void thermal_zone_device_update(struct thermal_zone_dev= ice *, struct thermal_cooling_device *thermal_cooling_device_register(const char = *, void *, const struct thermal_cooling_device_ops *); struct thermal_cooling_device * -thermal_of_cooling_device_register(struct device_node *np, const char *, v= oid *, - const struct thermal_cooling_device_ops *); +thermal_of_cooling_device_register(struct device *parent, struct device_no= de *np, const char *type, + void *devdata, const struct thermal_cooling_device_ops *); struct thermal_cooling_device * devm_thermal_of_cooling_device_register(struct device *dev, struct device_node *np, @@ -302,9 +302,8 @@ thermal_cooling_device_register(const char *type, void = *devdata, const struct thermal_cooling_device_ops *ops) { return ERR_PTR(-ENODEV); } static inline struct thermal_cooling_device * -thermal_of_cooling_device_register(struct device_node *np, - const char *type, void *devdata, - const struct thermal_cooling_device_ops *ops) +thermal_of_cooling_device_register(struct device *parent, struct device_no= de *np, const char *type, + void *devdata, const struct thermal_cooling_device_ops *ops) { return ERR_PTR(-ENODEV); } static inline struct thermal_cooling_device * devm_thermal_of_cooling_device_register(struct device *dev, --=20 2.39.5 From nobody Tue Dec 2 02:21:37 2025 Received: from mout.gmx.net (mout.gmx.net [212.227.17.22]) (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 875EB2FE59D; Thu, 20 Nov 2025 03:41:40 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=212.227.17.22 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763610102; cv=none; b=Gvi/89ZpWFJqjmiCh86tXCLM+3pusnaWwf78pWOQjpOfIixLy3AlYFcf9mkmttK3B/4BS4x3eHTjoOBroV7unzzrw0wDQabT44V4+t1vmAhkfWGW4R8zramv3CclQxfZ9dU6jJBgZXtP7H2uPlW1jzPK1HYD0YYdlVuDiV+ROpQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763610102; c=relaxed/simple; bh=6loHyEaeMv3gumdYQyO6TUKabvYbZ86nco/F9hoRSvQ=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=eZnzi7fqut+JCSDjPBJFPrOkLFgqQ09lTWXbkUqqfc1fKzvPM4K+3SDENNt6geb0+Uj77b4/1Kv1lkaYQ/NFSx1bhe/agswWMKIzo/3dSueb3OqVWu4ts5ma8HniDlMrE4+G5kiIEqE3l39K6hFIKmKHeeTStjfB8uwY4Z75nAs= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=gmx.de; spf=pass smtp.mailfrom=gmx.de; dkim=pass (2048-bit key) header.d=gmx.de header.i=w_armin@gmx.de header.b=Th3qEvxj; arc=none smtp.client-ip=212.227.17.22 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=gmx.de Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmx.de Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmx.de header.i=w_armin@gmx.de header.b="Th3qEvxj" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.de; s=s31663417; t=1763610088; x=1764214888; i=w_armin@gmx.de; bh=eaVKqe10jzGoKFaLYje3vU37/s2NKQBvZXfmlKCsGAc=; h=X-UI-Sender-Class:From:Date:Subject:MIME-Version:Content-Type: Content-Transfer-Encoding:Message-Id:References:In-Reply-To:To:Cc: cc:content-transfer-encoding:content-type:date:from:message-id: mime-version:reply-to:subject:to; b=Th3qEvxjewQqwXU/xhaHf5Ll1f8Vp8hBfOK6ybKV+U8vWmZTNhjyZWr/LYz6vWOd jJjt15/HvTqKN6IR11Yflx/J2I6FDe4kvKwSv8+gd4uDm4wVJAejJsA4myAmpJnxy fWZk8pFU0UBuZv4PWCkd06l/35/0b7QxK/QVqRNjBwmesQvAdg3uCvFzYsc4vjOTW T+LHsCiFrnKYsWhUwxubAI9QsLGdpMHXIcIJhap7ed6KuDbLwSB6ixBPaXFAlia6l 8cy8vL1bGxsmAtiECsWBbXs7EoZrplOJZJ4l+JmgAFeOVC8+GKA6qGLFnRDtdluH7 wjWZyc4ZexuDePU9zw== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a Received: from [127.0.0.1] ([93.202.247.91]) by mail.gmx.net (mrgmx104 [212.227.17.168]) with ESMTPSA (Nemesis) id 1N4QsY-1wJpsv3tLC-013yhI; Thu, 20 Nov 2025 04:41:28 +0100 From: Armin Wolf Date: Thu, 20 Nov 2025 04:41:13 +0100 Subject: [PATCH RFC RESEND 3/8] ACPI: processor: Stop creating "device" sysfs link 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: <20251120-thermal-device-v1-3-bbdad594d57a@gmx.de> References: <20251120-thermal-device-v1-0-bbdad594d57a@gmx.de> In-Reply-To: <20251120-thermal-device-v1-0-bbdad594d57a@gmx.de> To: "Rafael J. Wysocki" , Daniel Lezcano , Zhang Rui , Lukasz Luba , Len Brown , Jonathan Corbet , Ido Schimmel , Petr Machata Cc: linux-pm@vger.kernel.org, linux-kernel@vger.kernel.org, etnaviv@lists.freedesktop.org, dri-devel@lists.freedesktop.org, linux-tegra@vger.kernel.org, linux-acpi@vger.kernel.org, linux-doc@vger.kernel.org, netdev@vger.kernel.org, linux-wireless@vger.kernel.org, ath10k@lists.infradead.org, ath11k@lists.infradead.org, linux-arm-kernel@lists.infradead.org, linux-mediatek@lists.infradead.org, platform-driver-x86@vger.kernel.org, linux-pci@vger.kernel.org, imx@lists.linux.dev, linux-renesas-soc@vger.kernel.org X-Mailer: b4 0.14.3 X-Provags-ID: V03:K1:SWQ7IvrI1KL+iiz0txNAGiZfu9T4bhUbIqbVkWpgAXS65gy5YI/ YpmPXK4L/gpxGPYeuwRV/AIKDjUHbK87+XzAxo1gN/fgEBjKLM4pE4OD69RumNUFc9r8kcI sxvQmo7/wJKWnUEvF6ubDkMCaTYLJdRy5Q29YlNoxLRgJglIdMJPUVl0vGHV4OUHhy84V/E TQhrWPU3+/kbcnUkEmkqA== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:HjK8xIrgeAI=;j9mCg/IYDC1FMwnexbAW9LuTo8N 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 The thermal core will soon automatically create sysfs links between the cooling device and its parent device. Stop manually creating the "device" sysfs link between the cooling device and the parent device to avoid a name collision. The "thermal_cooling" sysfs link however stays for backwards compatibility, as it does not suffer from a name collision. Signed-off-by: Armin Wolf --- drivers/acpi/processor_thermal.c | 13 +------------ 1 file changed, 1 insertion(+), 12 deletions(-) diff --git a/drivers/acpi/processor_thermal.c b/drivers/acpi/processor_ther= mal.c index c7b1dc5687ec..1ff10321eac5 100644 --- a/drivers/acpi/processor_thermal.c +++ b/drivers/acpi/processor_thermal.c @@ -323,6 +323,7 @@ int acpi_processor_thermal_init(struct acpi_processor *= pr, dev_dbg(&device->dev, "registered as cooling_device%d\n", pr->cdev->id); =20 + /* For backwards compatibility */ result =3D sysfs_create_link(&device->dev.kobj, &pr->cdev->device.kobj, "thermal_cooling"); @@ -332,19 +333,8 @@ int acpi_processor_thermal_init(struct acpi_processor = *pr, goto err_thermal_unregister; } =20 - result =3D sysfs_create_link(&pr->cdev->device.kobj, - &device->dev.kobj, - "device"); - if (result) { - dev_err(&pr->cdev->device, - "Failed to create sysfs link 'device'\n"); - goto err_remove_sysfs_thermal; - } - return 0; =20 -err_remove_sysfs_thermal: - sysfs_remove_link(&device->dev.kobj, "thermal_cooling"); err_thermal_unregister: thermal_cooling_device_unregister(pr->cdev); =20 @@ -356,7 +346,6 @@ void acpi_processor_thermal_exit(struct acpi_processor = *pr, { if (pr->cdev) { sysfs_remove_link(&device->dev.kobj, "thermal_cooling"); - sysfs_remove_link(&pr->cdev->device.kobj, "device"); thermal_cooling_device_unregister(pr->cdev); pr->cdev =3D NULL; } --=20 2.39.5 From nobody Tue Dec 2 02:21:37 2025 Received: from mout.gmx.net (mout.gmx.net [212.227.17.22]) (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 4EE862FD7B2; Thu, 20 Nov 2025 03:41:35 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=212.227.17.22 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763610098; cv=none; b=V/N5cKL0p9vzdDfQ3oqpqp/7nCy/r+tbUeUlVX+W3I/AdQP5HIPuBoYSVnr9fS8hMmtk6vTT/M6RTQxhTv3wHOxFi47r9IBmw+h+vGHyWcbjbS4g35Wtm06XxdtjNNRB3c3Rnc+8Latn+XvROIum6/OKqsucD9hhCJe7gVOLKxc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763610098; c=relaxed/simple; bh=pmRPsjMjjKbCVXPuAqgUTDC+CNUHKKc5hTP/TrnkF2I=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=sUEXs/gH/nz/Gv8DXi/kmTQxmoFKyrIDcJLKUz0kWdQACylHnqdUTJLa2D6YUS7kNmwdF1mMehBnz+TvcWZtb7mReh7CSI2ec9NGXHEJBfYp3kUF1+Y6AChpUcGKt7gXog2N+hKjXxFQrMkyIOguFw9V5iHErotRo1CuGiUyeUk= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=gmx.de; spf=pass smtp.mailfrom=gmx.de; dkim=pass (2048-bit key) header.d=gmx.de header.i=w_armin@gmx.de header.b=EOn+R5//; arc=none smtp.client-ip=212.227.17.22 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=gmx.de Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmx.de Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmx.de header.i=w_armin@gmx.de header.b="EOn+R5//" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.de; s=s31663417; t=1763610091; x=1764214891; i=w_armin@gmx.de; bh=ga4ZSQNtXRGTyPFXPVELIcbloWPa75MxGJnVt/55XyM=; h=X-UI-Sender-Class:From:Date:Subject:MIME-Version:Content-Type: Content-Transfer-Encoding:Message-Id:References:In-Reply-To:To:Cc: cc:content-transfer-encoding:content-type:date:from:message-id: mime-version:reply-to:subject:to; b=EOn+R5//M8SghF1pxoBl4DF1CshAsb7kfXSfuIYPEW07lqhiGNKjZtxM9ZYhG6yJ 2tHra962kVeqwQzuHIwGcXVSlm8/+Fjyi9E5jhRunDBT1J24Gh3CffGdHZuAoSOR6 sq77XokmIGYOBEdZoR+SUwfBvYvh/GjyGlB0pMAjB1bO/x6Qh/lu9ETDtOFPcFRgf HmdnJAhj0IPn8/MCFWRbNJ2v+V8fb+mGB1cbhqHshqcVBj/A+LiVrzBgIwA9zlg7K /o8mwI3zviWydIjsJqb7tJpYQ1Xe3yY6xptL+XI1I89WbfO7qZb6PSzoIaY6meFR1 33EpS+vx9pFqqpWMPw== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a Received: from [127.0.0.1] ([93.202.247.91]) by mail.gmx.net (mrgmx104 [212.227.17.168]) with ESMTPSA (Nemesis) id 1N8XU1-1wHNaF32GX-016RXf; Thu, 20 Nov 2025 04:41:30 +0100 From: Armin Wolf Date: Thu, 20 Nov 2025 04:41:14 +0100 Subject: [PATCH RFC RESEND 4/8] ACPI: fan: Stop creating "device" sysfs link 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: <20251120-thermal-device-v1-4-bbdad594d57a@gmx.de> References: <20251120-thermal-device-v1-0-bbdad594d57a@gmx.de> In-Reply-To: <20251120-thermal-device-v1-0-bbdad594d57a@gmx.de> To: "Rafael J. Wysocki" , Daniel Lezcano , Zhang Rui , Lukasz Luba , Len Brown , Jonathan Corbet , Ido Schimmel , Petr Machata Cc: linux-pm@vger.kernel.org, linux-kernel@vger.kernel.org, etnaviv@lists.freedesktop.org, dri-devel@lists.freedesktop.org, linux-tegra@vger.kernel.org, linux-acpi@vger.kernel.org, linux-doc@vger.kernel.org, netdev@vger.kernel.org, linux-wireless@vger.kernel.org, ath10k@lists.infradead.org, ath11k@lists.infradead.org, linux-arm-kernel@lists.infradead.org, linux-mediatek@lists.infradead.org, platform-driver-x86@vger.kernel.org, linux-pci@vger.kernel.org, imx@lists.linux.dev, linux-renesas-soc@vger.kernel.org X-Mailer: b4 0.14.3 X-Provags-ID: V03:K1:jOw+sOFfjscZyERSR8LzbJHICCC7AMyDna5FT0LSbS+jIdyVL9K MzSry+XzMAir58qYJuVEU+4AiucvOmjmRB3fD/7bZWzLRzarwie1hgHP3AemzO71AEf5133 pe1hwkxzb8eIptCxkdIcnA2g82gEn+d8vrwIa5O926wNciQYczMQqd/EjI2RpgLUCbrWliF KKGdbgQp5Pood0pe4Bcdw== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:xQIYqpfOuu0=;VNlgRbY/LUzaCfnN32pudHsVbyW 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 bjSlw1Se/lXD7ycgWyb2zc97FlOq7 The thermal core will soon automatically create sysfs links between the cooling device and its parent device. Stop manually creating the "device" sysfs link between the cooling device and the parent device to avoid a name collision. The "thermal_cooling" sysfs link however stays for backwards compatibility, as it does not suffer from a name collision. Signed-off-by: Armin Wolf --- drivers/acpi/fan_core.c | 12 +----------- 1 file changed, 1 insertion(+), 11 deletions(-) diff --git a/drivers/acpi/fan_core.c b/drivers/acpi/fan_core.c index fb08b8549ed7..2ca3e347f15c 100644 --- a/drivers/acpi/fan_core.c +++ b/drivers/acpi/fan_core.c @@ -594,6 +594,7 @@ static int acpi_fan_probe(struct platform_device *pdev) dev_dbg(&pdev->dev, "registered as cooling_device%d\n", cdev->id); =20 fan->cdev =3D cdev; + /* For backwards compatibility */ result =3D sysfs_create_link(&pdev->dev.kobj, &cdev->device.kobj, "thermal_cooling"); @@ -602,18 +603,8 @@ static int acpi_fan_probe(struct platform_device *pdev) goto err_unregister; } =20 - result =3D sysfs_create_link(&cdev->device.kobj, - &pdev->dev.kobj, - "device"); - if (result) { - dev_err(&pdev->dev, "Failed to create sysfs link 'device'\n"); - goto err_remove_link; - } - return 0; =20 -err_remove_link: - sysfs_remove_link(&pdev->dev.kobj, "thermal_cooling"); err_unregister: thermal_cooling_device_unregister(cdev); err_end: @@ -633,7 +624,6 @@ static void acpi_fan_remove(struct platform_device *pde= v) acpi_fan_delete_attributes(device); } sysfs_remove_link(&pdev->dev.kobj, "thermal_cooling"); - sysfs_remove_link(&fan->cdev->device.kobj, "device"); thermal_cooling_device_unregister(fan->cdev); } =20 --=20 2.39.5 From nobody Tue Dec 2 02:21:37 2025 Received: from mout.gmx.net (mout.gmx.net [212.227.17.22]) (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 45F0E31985C; Thu, 20 Nov 2025 03:41:46 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=212.227.17.22 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763610110; cv=none; b=rHGxmoOtMevzhXqH+Dc08zr9eEHYAC1BcuT7pGamHx7W5+W5HJ/rYnMGhB88Ak/V3BjtbDMBCzY0w1gebAFotNccJ6k1n2KZ3cWF2nNorCM89HycqlEoVts9JiKvl2iFYE64FcKKglXF5OHvtpwAxdcrGdbczhM2iK521JAKW44= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763610110; c=relaxed/simple; bh=T8ly4/8lwmoJEDRfOwNTNPK+/VW3nFnii1+LEgTYuFA=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=KxtvI+tbXicUzB9kGxLpECnohvkaA/Dm9AXiHUqeJs12xKZLVvMeMGrBQOmC0q752eQfqEKkNK8bIZ+FHo0myqLRi9Ea9y5r7VaxMAF0VKdR/BPK0BZa1sfZ1/lIq9Nu8sHq60ZiUCvDOdi7U0P45fAWMJwbTT7xk3PaJjIR1ZY= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=gmx.de; spf=pass smtp.mailfrom=gmx.de; dkim=pass (2048-bit key) header.d=gmx.de header.i=w_armin@gmx.de header.b=KDjFyoj2; arc=none smtp.client-ip=212.227.17.22 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=gmx.de Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmx.de Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmx.de header.i=w_armin@gmx.de header.b="KDjFyoj2" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.de; s=s31663417; t=1763610094; x=1764214894; i=w_armin@gmx.de; bh=VnJc1wVkPejXYKABp7/OWh15nFmTDlawkMw9JltKC9I=; h=X-UI-Sender-Class:From:Date:Subject:MIME-Version:Content-Type: Content-Transfer-Encoding:Message-Id:References:In-Reply-To:To:Cc: cc:content-transfer-encoding:content-type:date:from:message-id: mime-version:reply-to:subject:to; b=KDjFyoj2r6cemWtMfOQJugnRt914OA553U08WJKAp7nWLB/3BfCDM+UKubnrCbgX 3ZYu9MKaX2DtntYQcxhfXm3KQEJmII30u3dks0AJUY6JHDNB6V23/5VZe1Cg7BIBE LP2dA05nAwEo8JBORhirvSFAWg6rezhE3/HpsXEgwbm8YPbn2FX0x9Kigc2WL4rOA Q1pBbXTwNkoOLZvwbOlYI8tSvWuOf45JmI56RE6qx4K+Nmyzr+Do/i1sBFred00m+ +cTwU/r0j0hDxqFgCVg7K+X5tMA8SHKMlEGvrqI8WSxpNpeuJgLgDgqGdN2T1V0xK /Y/CSQiqyb10Pow9oQ== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a Received: from [127.0.0.1] ([93.202.247.91]) by mail.gmx.net (mrgmx104 [212.227.17.168]) with ESMTPSA (Nemesis) id 1MF3DM-1vOAb73RvM-00DWVW; Thu, 20 Nov 2025 04:41:34 +0100 From: Armin Wolf Date: Thu, 20 Nov 2025 04:41:15 +0100 Subject: [PATCH RFC RESEND 5/8] ACPI: video: Stop creating "device" sysfs link 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: <20251120-thermal-device-v1-5-bbdad594d57a@gmx.de> References: <20251120-thermal-device-v1-0-bbdad594d57a@gmx.de> In-Reply-To: <20251120-thermal-device-v1-0-bbdad594d57a@gmx.de> To: "Rafael J. Wysocki" , Daniel Lezcano , Zhang Rui , Lukasz Luba , Len Brown , Jonathan Corbet , Ido Schimmel , Petr Machata Cc: linux-pm@vger.kernel.org, linux-kernel@vger.kernel.org, etnaviv@lists.freedesktop.org, dri-devel@lists.freedesktop.org, linux-tegra@vger.kernel.org, linux-acpi@vger.kernel.org, linux-doc@vger.kernel.org, netdev@vger.kernel.org, linux-wireless@vger.kernel.org, ath10k@lists.infradead.org, ath11k@lists.infradead.org, linux-arm-kernel@lists.infradead.org, linux-mediatek@lists.infradead.org, platform-driver-x86@vger.kernel.org, linux-pci@vger.kernel.org, imx@lists.linux.dev, linux-renesas-soc@vger.kernel.org X-Mailer: b4 0.14.3 X-Provags-ID: V03:K1:D1QCdFWiMAVc69sXgpBcLxZTEqSCMtApo9gaoIgtrkYwIsaC54H 5XPcDCLC39HGgKUC0oyhvvs0DtBjmapqZH4CJu7OrXg8kd0fUQMgOm7exWuMcG3o2xs2Hsl QF4MN/6LvWvdHWz/9nR9kAvpxLcLBAoBxKWF8ddzX6U5M10Gx/gOb4+u8PWW05NSyER5cJA ok+pjHrA/djPtZYYbjpMg== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:68WoUg+dG98=;uduIoWxBGOyxwRLWZfB3GJ44X9x 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 Ya56k2tc= The thermal core will soon automatically create sysfs links between the cooling device and its parent device. Stop manually creating the "device" sysfs link between the cooling device and the parent device to avoid a name collision. The "thermal_cooling" sysfs link however stays for backwards compatibility, as it does not suffer from a name collision. Signed-off-by: Armin Wolf --- drivers/acpi/acpi_video.c | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/drivers/acpi/acpi_video.c b/drivers/acpi/acpi_video.c index be8e7e18abca..658e11745523 100644 --- a/drivers/acpi/acpi_video.c +++ b/drivers/acpi/acpi_video.c @@ -1774,16 +1774,12 @@ static void acpi_video_dev_register_backlight(struc= t acpi_video_device *device) =20 dev_info(&device->dev->dev, "registered as cooling_device%d\n", device->cooling_dev->id); + /* For backwards compatibility */ result =3D sysfs_create_link(&device->dev->dev.kobj, &device->cooling_dev->device.kobj, "thermal_cooling"); if (result) pr_info("sysfs link creation failed\n"); - - result =3D sysfs_create_link(&device->cooling_dev->device.kobj, - &device->dev->dev.kobj, "device"); - if (result) - pr_info("Reverse sysfs link creation failed\n"); } =20 static void acpi_video_run_bcl_for_osi(struct acpi_video_bus *video) @@ -1852,7 +1848,6 @@ static void acpi_video_dev_unregister_backlight(struc= t acpi_video_device *device } if (device->cooling_dev) { sysfs_remove_link(&device->dev->dev.kobj, "thermal_cooling"); - sysfs_remove_link(&device->cooling_dev->device.kobj, "device"); thermal_cooling_device_unregister(device->cooling_dev); device->cooling_dev =3D NULL; } --=20 2.39.5 From nobody Tue Dec 2 02:21:37 2025 Received: from mout.gmx.net (mout.gmx.net [212.227.17.22]) (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 2C0F73093A7; Thu, 20 Nov 2025 03:41:38 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=212.227.17.22 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763610102; cv=none; b=EkjXAsgSDb6pigVMFJKnSPvomIinG9jhYGg0dxKX60yL9lTiyO3dqnbdNHGvp5OsSOoHjeKIZF337VyS7lQmJuxEzCM0g2fGJx15e/+yoZroSTU1zk2ThJGDkBgG+gY6fodcYyEeWbBQDQPBpjiaNSJyHMC/OZmkB01V2RYS7nI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763610102; c=relaxed/simple; bh=g3eMEoN8Q0WX3yAGcoSA+a4Z/MFKpjfEmuhn68vfiKo=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Q6LR9SliQZdOjAe3LcGnLObAp6uSUBiYpRPzPdw5j/xnTMk+vqU7L0AtQzQPjEp0iakMOX7Wcjj6JdcfNG5x7JMPg+JGYkR+A5aZTC1NJKg6OtxCcC0OmgH/qnHAVro7XkuAHFjQw+5NdVU6TFoCZF8kMluSkRoahyt9inIlldI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=gmx.de; spf=pass smtp.mailfrom=gmx.de; dkim=pass (2048-bit key) header.d=gmx.de header.i=w_armin@gmx.de header.b=aKRIWuba; arc=none smtp.client-ip=212.227.17.22 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=gmx.de Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmx.de Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmx.de header.i=w_armin@gmx.de header.b="aKRIWuba" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.de; s=s31663417; t=1763610097; x=1764214897; i=w_armin@gmx.de; bh=2kOZ2qGDbUtlfM0lfAWL+CuCYcvOT4XDmaR4zoAjfg0=; h=X-UI-Sender-Class:From:Date:Subject:MIME-Version:Content-Type: Content-Transfer-Encoding:Message-Id:References:In-Reply-To:To:Cc: cc:content-transfer-encoding:content-type:date:from:message-id: mime-version:reply-to:subject:to; b=aKRIWuba0IAdSUR2MXvDkorv86Y1ma2GufVCsqO7RDi044SaUcUeLfJRCsvWhOJZ 8lZCCPrDPiIwpKYFe92yZ7cl+oQBk5PdsXE9QtVfJHT6fY/4WyTWm3RVh9+1pvNYT XOTtdu+Py5bMANyXWChVUNV/XOqyhDY6rkxskQXa4PJMhZ4HXSdcmbwKt8z6pWvDw AOqOqQglEo0n2sNgSc13QNRZNO8l0YSQyF5TE8XSk/gx3MT4ZSL/gSh0NODa1+a94 b4HGwJ9JmaVnftC4QqsZpRQ7DpGBZEyNTe2pZUU+7gAYi2dJyimmLuWgp/RsZCQk6 MgBVjHxoIbwuoDuL8Q== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a Received: from [127.0.0.1] ([93.202.247.91]) by mail.gmx.net (mrgmx104 [212.227.17.168]) with ESMTPSA (Nemesis) id 1MHXFx-1vQeUz3w9p-00FRNj; Thu, 20 Nov 2025 04:41:37 +0100 From: Armin Wolf Date: Thu, 20 Nov 2025 04:41:16 +0100 Subject: [PATCH RFC RESEND 6/8] thermal: core: Set parent device in thermal_cooling_device_register() 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: <20251120-thermal-device-v1-6-bbdad594d57a@gmx.de> References: <20251120-thermal-device-v1-0-bbdad594d57a@gmx.de> In-Reply-To: <20251120-thermal-device-v1-0-bbdad594d57a@gmx.de> To: "Rafael J. Wysocki" , Daniel Lezcano , Zhang Rui , Lukasz Luba , Len Brown , Jonathan Corbet , Ido Schimmel , Petr Machata Cc: linux-pm@vger.kernel.org, linux-kernel@vger.kernel.org, etnaviv@lists.freedesktop.org, dri-devel@lists.freedesktop.org, linux-tegra@vger.kernel.org, linux-acpi@vger.kernel.org, linux-doc@vger.kernel.org, netdev@vger.kernel.org, linux-wireless@vger.kernel.org, ath10k@lists.infradead.org, ath11k@lists.infradead.org, linux-arm-kernel@lists.infradead.org, linux-mediatek@lists.infradead.org, platform-driver-x86@vger.kernel.org, linux-pci@vger.kernel.org, imx@lists.linux.dev, linux-renesas-soc@vger.kernel.org X-Mailer: b4 0.14.3 X-Provags-ID: V03:K1:4cIbWlrQp5RG0n2sdwfhJ6mqPNnFdfuw6wKcvDWlILFAv7qB4Kk KqQuPEi4WwVoI3o132IYI+euD43CiKKHwCpQCZNpS6bMVqqmIv2AW0/pM3zKghPVVUzAlVw QhugDQFsCGPrviBIOLioCsXA6xffXkGkUjh/U4M/vLy/p/zKDgcqUYeENmR7spTp54/Q6Uc nFlDNc2B7nUFaUiFctdJA== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:P3U7megnmYM=;50+IRZ/J8/lMb44LA+JADkKOOMq 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 D+g+ND8CQLykQNoG4g8heDLsFQhGM Extend thermal_cooling_device_register() to allow users to specify the parent device of the cooling device to be created. Signed-off-by: Armin Wolf --- Documentation/driver-api/thermal/sysfs-api.rst | 5 ++++- drivers/acpi/acpi_video.c | 2 +- drivers/acpi/fan_core.c | 4 ++-- drivers/acpi/processor_thermal.c | 2 +- drivers/net/ethernet/mellanox/mlxsw/core_thermal.c | 2 +- drivers/net/wireless/ath/ath10k/thermal.c | 2 +- drivers/net/wireless/ath/ath11k/thermal.c | 2 +- drivers/net/wireless/intel/iwlwifi/mld/thermal.c | 4 +--- drivers/net/wireless/intel/iwlwifi/mvm/tt.c | 2 +- drivers/net/wireless/mediatek/mt76/mt7915/init.c | 2 +- drivers/net/wireless/mediatek/mt76/mt7996/init.c | 2 +- drivers/platform/x86/acerhdf.c | 2 +- drivers/thermal/intel/int340x_thermal/int3403_thermal.c | 4 ++-- drivers/thermal/intel/int340x_thermal/int3406_thermal.c | 2 +- drivers/thermal/intel/intel_powerclamp.c | 2 +- drivers/thermal/intel/intel_tcc_cooling.c | 2 +- drivers/thermal/pcie_cooling.c | 2 +- drivers/thermal/thermal_core.c | 5 +++-- include/linux/thermal.h | 9 +++++---- 19 files changed, 30 insertions(+), 27 deletions(-) diff --git a/Documentation/driver-api/thermal/sysfs-api.rst b/Documentation= /driver-api/thermal/sysfs-api.rst index f73de211bdce..cf242cd16f2e 100644 --- a/Documentation/driver-api/thermal/sysfs-api.rst +++ b/Documentation/driver-api/thermal/sysfs-api.rst @@ -215,13 +215,16 @@ temperature) and throttle appropriate devices. :: =20 struct thermal_cooling_device - *thermal_cooling_device_register(char *name, + *thermal_cooling_device_register(struct device *parent, char *name, void *devdata, struct thermal_cooling_device_ops *) =20 This interface function adds a new thermal cooling device (fan/process= or/...) to /sys/class/thermal/ folder as `cooling_device[0-*]`. It tries to bi= nd itself to all the thermal zone devices registered at the same time. =20 + parent: + parent device pointer. + name: the cooling device name. devdata: diff --git a/drivers/acpi/acpi_video.c b/drivers/acpi/acpi_video.c index 658e11745523..eae1ff9805b1 100644 --- a/drivers/acpi/acpi_video.c +++ b/drivers/acpi/acpi_video.c @@ -1759,7 +1759,7 @@ static void acpi_video_dev_register_backlight(struct = acpi_video_device *device) device->backlight->props.brightness =3D acpi_video_get_brightness(device->backlight); =20 - device->cooling_dev =3D thermal_cooling_device_register("LCD", device, + device->cooling_dev =3D thermal_cooling_device_register(parent, "LCD", de= vice, &video_cooling_ops); if (IS_ERR(device->cooling_dev)) { /* diff --git a/drivers/acpi/fan_core.c b/drivers/acpi/fan_core.c index 2ca3e347f15c..7ebf2529fbfd 100644 --- a/drivers/acpi/fan_core.c +++ b/drivers/acpi/fan_core.c @@ -584,8 +584,8 @@ static int acpi_fan_probe(struct platform_device *pdev) else name =3D acpi_device_bid(device); =20 - cdev =3D thermal_cooling_device_register(name, device, - &fan_cooling_ops); + cdev =3D thermal_cooling_device_register(&pdev->dev, name, device, + &fan_cooling_ops); if (IS_ERR(cdev)) { result =3D PTR_ERR(cdev); goto err_end; diff --git a/drivers/acpi/processor_thermal.c b/drivers/acpi/processor_ther= mal.c index 1ff10321eac5..a7307f5d137f 100644 --- a/drivers/acpi/processor_thermal.c +++ b/drivers/acpi/processor_thermal.c @@ -313,7 +313,7 @@ int acpi_processor_thermal_init(struct acpi_processor *= pr, { int result =3D 0; =20 - pr->cdev =3D thermal_cooling_device_register("Processor", device, + pr->cdev =3D thermal_cooling_device_register(&device->dev, "Processor", d= evice, &processor_cooling_ops); if (IS_ERR(pr->cdev)) { result =3D PTR_ERR(pr->cdev); diff --git a/drivers/net/ethernet/mellanox/mlxsw/core_thermal.c b/drivers/n= et/ethernet/mellanox/mlxsw/core_thermal.c index eac9a14a6058..1117d59b74fd 100644 --- a/drivers/net/ethernet/mellanox/mlxsw/core_thermal.c +++ b/drivers/net/ethernet/mellanox/mlxsw/core_thermal.c @@ -693,7 +693,7 @@ int mlxsw_thermal_init(struct mlxsw_core *core, mlxsw_cdev =3D &thermal->cdevs[i]; mlxsw_cdev->thermal =3D thermal; mlxsw_cdev->idx =3D i; - cdev =3D thermal_cooling_device_register("mlxsw_fan", + cdev =3D thermal_cooling_device_register(dev, "mlxsw_fan", mlxsw_cdev, &mlxsw_cooling_ops); if (IS_ERR(cdev)) { diff --git a/drivers/net/wireless/ath/ath10k/thermal.c b/drivers/net/wirele= ss/ath/ath10k/thermal.c index 8b15ec07b107..16eb41b928ba 100644 --- a/drivers/net/wireless/ath/ath10k/thermal.c +++ b/drivers/net/wireless/ath/ath10k/thermal.c @@ -161,7 +161,7 @@ int ath10k_thermal_register(struct ath10k *ar) if (!test_bit(WMI_SERVICE_THERM_THROT, ar->wmi.svc_map)) return 0; =20 - cdev =3D thermal_cooling_device_register("ath10k_thermal", ar, + cdev =3D thermal_cooling_device_register(ar->dev, "ath10k_thermal", ar, &ath10k_thermal_ops); =20 if (IS_ERR(cdev)) { diff --git a/drivers/net/wireless/ath/ath11k/thermal.c b/drivers/net/wirele= ss/ath/ath11k/thermal.c index 18d6eab5cce3..363697ce8641 100644 --- a/drivers/net/wireless/ath/ath11k/thermal.c +++ b/drivers/net/wireless/ath/ath11k/thermal.c @@ -172,7 +172,7 @@ int ath11k_thermal_register(struct ath11k_base *ab) if (!ar) continue; =20 - cdev =3D thermal_cooling_device_register("ath11k_thermal", ar, + cdev =3D thermal_cooling_device_register(&ar->hw->wiphy->dev, "ath11k_th= ermal", ar, &ath11k_thermal_ops); =20 if (IS_ERR(cdev)) { diff --git a/drivers/net/wireless/intel/iwlwifi/mld/thermal.c b/drivers/net= /wireless/intel/iwlwifi/mld/thermal.c index f8a8c35066be..9e56e6e80ab7 100644 --- a/drivers/net/wireless/intel/iwlwifi/mld/thermal.c +++ b/drivers/net/wireless/intel/iwlwifi/mld/thermal.c @@ -366,9 +366,7 @@ static void iwl_mld_cooling_device_register(struct iwl_= mld *mld) BUILD_BUG_ON(ARRAY_SIZE(name) >=3D THERMAL_NAME_LENGTH); =20 mld->cooling_dev.cdev =3D - thermal_cooling_device_register(name, - mld, - &tcooling_ops); + thermal_cooling_device_register(mld->dev, name, mld, &tcooling_ops); =20 if (IS_ERR(mld->cooling_dev.cdev)) { IWL_DEBUG_TEMP(mld, diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/tt.c b/drivers/net/wire= less/intel/iwlwifi/mvm/tt.c index 53bab21ebae2..b184f08230b9 100644 --- a/drivers/net/wireless/intel/iwlwifi/mvm/tt.c +++ b/drivers/net/wireless/intel/iwlwifi/mvm/tt.c @@ -744,7 +744,7 @@ static void iwl_mvm_cooling_device_register(struct iwl_= mvm *mvm) BUILD_BUG_ON(ARRAY_SIZE(name) >=3D THERMAL_NAME_LENGTH); =20 mvm->cooling_dev.cdev =3D - thermal_cooling_device_register(name, + thermal_cooling_device_register(mvm->dev, name, mvm, &tcooling_ops); =20 diff --git a/drivers/net/wireless/mediatek/mt76/mt7915/init.c b/drivers/net= /wireless/mediatek/mt76/mt7915/init.c index 5ea8b46e092e..cb08bb36f6e2 100644 --- a/drivers/net/wireless/mediatek/mt76/mt7915/init.c +++ b/drivers/net/wireless/mediatek/mt76/mt7915/init.c @@ -200,7 +200,7 @@ static int mt7915_thermal_init(struct mt7915_phy *phy) if (!name) return -ENOMEM; =20 - cdev =3D thermal_cooling_device_register(name, phy, &mt7915_thermal_ops); + cdev =3D thermal_cooling_device_register(&wiphy->dev, name, phy, &mt7915_= thermal_ops); if (!IS_ERR(cdev)) { if (sysfs_create_link(&wiphy->dev.kobj, &cdev->device.kobj, "cooling_device") < 0) diff --git a/drivers/net/wireless/mediatek/mt76/mt7996/init.c b/drivers/net= /wireless/mediatek/mt76/mt7996/init.c index 5e95a36b42d1..bb6e55d79d0e 100644 --- a/drivers/net/wireless/mediatek/mt76/mt7996/init.c +++ b/drivers/net/wireless/mediatek/mt76/mt7996/init.c @@ -249,7 +249,7 @@ static int mt7996_thermal_init(struct mt7996_phy *phy) =20 snprintf(cname, sizeof(cname), "cooling_device%d", phy->mt76->band_idx); =20 - cdev =3D thermal_cooling_device_register(name, phy, &mt7996_thermal_ops); + cdev =3D thermal_cooling_device_register(&wiphy->dev, name, phy, &mt7996_= thermal_ops); if (!IS_ERR(cdev)) { if (sysfs_create_link(&wiphy->dev.kobj, &cdev->device.kobj, cname) < 0) diff --git a/drivers/platform/x86/acerhdf.c b/drivers/platform/x86/acerhdf.c index 5ce5ad3efe69..c74937d475e5 100644 --- a/drivers/platform/x86/acerhdf.c +++ b/drivers/platform/x86/acerhdf.c @@ -650,7 +650,7 @@ static int __init acerhdf_register_thermal(void) { int ret; =20 - cl_dev =3D thermal_cooling_device_register("acerhdf-fan", NULL, + cl_dev =3D thermal_cooling_device_register(NULL, "acerhdf-fan", NULL, &acerhdf_cooling_ops); =20 if (IS_ERR(cl_dev)) diff --git a/drivers/thermal/intel/int340x_thermal/int3403_thermal.c b/driv= ers/thermal/intel/int340x_thermal/int3403_thermal.c index 264c9bc8e645..08d9e91f01cb 100644 --- a/drivers/thermal/intel/int340x_thermal/int3403_thermal.c +++ b/drivers/thermal/intel/int340x_thermal/int3403_thermal.c @@ -178,8 +178,8 @@ static int int3403_cdev_add(struct int3403_priv *priv) priv->priv =3D obj; obj->max_state =3D p->package.count - 1; obj->cdev =3D - thermal_cooling_device_register(acpi_device_bid(priv->adev), - priv, &int3403_cooling_ops); + thermal_cooling_device_register(&priv->adev->dev, acpi_device_bid(priv->= adev), + priv, &int3403_cooling_ops); if (IS_ERR(obj->cdev)) result =3D PTR_ERR(obj->cdev); =20 diff --git a/drivers/thermal/intel/int340x_thermal/int3406_thermal.c b/driv= ers/thermal/intel/int340x_thermal/int3406_thermal.c index e21fcbccf4ba..e458add39a88 100644 --- a/drivers/thermal/intel/int340x_thermal/int3406_thermal.c +++ b/drivers/thermal/intel/int340x_thermal/int3406_thermal.c @@ -157,7 +157,7 @@ static int int3406_thermal_probe(struct platform_device= *pdev) =20 int3406_thermal_get_limit(d); =20 - d->cooling_dev =3D thermal_cooling_device_register(acpi_device_bid(adev), + d->cooling_dev =3D thermal_cooling_device_register(&pdev->dev, acpi_devic= e_bid(adev), d, &video_cooling_ops); if (IS_ERR(d->cooling_dev)) goto err; diff --git a/drivers/thermal/intel/intel_powerclamp.c b/drivers/thermal/int= el/intel_powerclamp.c index 9a4cec000910..a8f798bf459f 100644 --- a/drivers/thermal/intel/intel_powerclamp.c +++ b/drivers/thermal/intel/intel_powerclamp.c @@ -779,7 +779,7 @@ static int __init powerclamp_init(void) /* set default limit, maybe adjusted during runtime based on feedback */ window_size =3D 2; =20 - cooling_dev =3D thermal_cooling_device_register("intel_powerclamp", NULL, + cooling_dev =3D thermal_cooling_device_register(NULL, "intel_powerclamp",= NULL, &powerclamp_cooling_ops); if (IS_ERR(cooling_dev)) return -ENODEV; diff --git a/drivers/thermal/intel/intel_tcc_cooling.c b/drivers/thermal/in= tel/intel_tcc_cooling.c index f352ecafbedf..a0ead0fb1fbe 100644 --- a/drivers/thermal/intel/intel_tcc_cooling.c +++ b/drivers/thermal/intel/intel_tcc_cooling.c @@ -101,7 +101,7 @@ static int __init tcc_cooling_init(void) pr_info("Programmable TCC Offset detected\n"); =20 tcc_cdev =3D - thermal_cooling_device_register("TCC Offset", NULL, + thermal_cooling_device_register(NULL, "TCC Offset", NULL, &tcc_cooling_ops); if (IS_ERR(tcc_cdev)) { ret =3D PTR_ERR(tcc_cdev); diff --git a/drivers/thermal/pcie_cooling.c b/drivers/thermal/pcie_cooling.c index a876d64f1582..4d37f7f9d108 100644 --- a/drivers/thermal/pcie_cooling.c +++ b/drivers/thermal/pcie_cooling.c @@ -61,7 +61,7 @@ struct thermal_cooling_device *pcie_cooling_device_regist= er(struct pci_dev *port if (!name) return ERR_PTR(-ENOMEM); =20 - return thermal_cooling_device_register(name, port, &pcie_cooling_ops); + return thermal_cooling_device_register(&port->dev, name, port, &pcie_cool= ing_ops); } =20 void pcie_cooling_device_unregister(struct thermal_cooling_device *cdev) diff --git a/drivers/thermal/thermal_core.c b/drivers/thermal/thermal_core.c index 5d752e712cc0..92e51d2e4535 100644 --- a/drivers/thermal/thermal_core.c +++ b/drivers/thermal/thermal_core.c @@ -1145,6 +1145,7 @@ __thermal_cooling_device_register(struct device *pare= nt, struct device_node *np, =20 /** * thermal_cooling_device_register() - register a new thermal cooling devi= ce + * @parent: parent device pointer. * @type: the thermal cooling device type. * @devdata: device private data. * @ops: standard thermal cooling devices callbacks. @@ -1157,10 +1158,10 @@ __thermal_cooling_device_register(struct device *pa= rent, struct device_node *np, * ERR_PTR. Caller must check return value with IS_ERR*() helpers. */ struct thermal_cooling_device * -thermal_cooling_device_register(const char *type, void *devdata, +thermal_cooling_device_register(struct device *parent, const char *type, v= oid *devdata, const struct thermal_cooling_device_ops *ops) { - return __thermal_cooling_device_register(NULL, NULL, type, devdata, ops); + return __thermal_cooling_device_register(parent, NULL, type, devdata, ops= ); } EXPORT_SYMBOL_GPL(thermal_cooling_device_register); =20 diff --git a/include/linux/thermal.h b/include/linux/thermal.h index fa53d12173ce..29a608bf5f80 100644 --- a/include/linux/thermal.h +++ b/include/linux/thermal.h @@ -250,8 +250,9 @@ struct device *thermal_zone_device(struct thermal_zone_= device *tzd); void thermal_zone_device_update(struct thermal_zone_device *, enum thermal_notify_event); =20 -struct thermal_cooling_device *thermal_cooling_device_register(const char = *, - void *, const struct thermal_cooling_device_ops *); +struct thermal_cooling_device * +thermal_cooling_device_register(struct device *parent, const char *type, v= oid *drvdata, + const struct thermal_cooling_device_ops *ops); struct thermal_cooling_device * thermal_of_cooling_device_register(struct device *parent, struct device_no= de *np, const char *type, void *devdata, const struct thermal_cooling_device_ops *); @@ -298,8 +299,8 @@ static inline void thermal_zone_device_update(struct th= ermal_zone_device *tz, { } =20 static inline struct thermal_cooling_device * -thermal_cooling_device_register(const char *type, void *devdata, - const struct thermal_cooling_device_ops *ops) +thermal_cooling_device_register(struct device *parent, const char *type, v= oid *devdata, + const struct thermal_cooling_device_ops *ops) { return ERR_PTR(-ENODEV); } static inline struct thermal_cooling_device * thermal_of_cooling_device_register(struct device *parent, struct device_no= de *np, const char *type, --=20 2.39.5 From nobody Tue Dec 2 02:21:37 2025 Received: from mout.gmx.net (mout.gmx.net [212.227.17.21]) (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 478F130CD86; Thu, 20 Nov 2025 03:41:42 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=212.227.17.21 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763610105; cv=none; b=r2o6dyjV3uKQjnKbhxPsqG5+9oNSqtvQmNSo2+laKyRYQtPxEJqhw8pZ/pOvLfPULrSRd0wI4WF2LwFo7ky4Mvv3RITo9KADZD22zdz2TFNjbORM5z7pWtAMyK6yvr+f8JUkGAmJw7mVvBTFybRUEEnQgPE8iTWjCeAQ2Tj1qa4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763610105; c=relaxed/simple; bh=WZaahb7WFVNd4tuJrYf9E4biVshn06ntyshaQkWtya4=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=pUo4azcv0Km5qf9Z6K30PzVKc9SlbVgrRSfkphbtfNIh88lte4NJNuPRyJc/JQmbQ2G2sDnrHCkq8GIpJITmd11C2ZDUU6JHAEPNjrZr8VtdnCHkPQo2UVI3WklbWardUXh5eiVIAsjn9ESxHHnPvuY5hqYPOd77MjC2W31uYMM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=gmx.de; spf=pass smtp.mailfrom=gmx.de; dkim=pass (2048-bit key) header.d=gmx.de header.i=w_armin@gmx.de header.b=Idh70jWi; arc=none smtp.client-ip=212.227.17.21 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=gmx.de Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmx.de Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmx.de header.i=w_armin@gmx.de header.b="Idh70jWi" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.de; s=s31663417; t=1763610100; x=1764214900; i=w_armin@gmx.de; bh=pFfE5rqjVgwE8wDghOzJXBN7RtoFvEZyfhpDnHJr1d0=; h=X-UI-Sender-Class:From:Date:Subject:MIME-Version:Content-Type: Content-Transfer-Encoding:Message-Id:References:In-Reply-To:To:Cc: cc:content-transfer-encoding:content-type:date:from:message-id: mime-version:reply-to:subject:to; b=Idh70jWiiPkbKHH0XoOecfXJmknT6hNE5449G+V3LMyn4IRRcNEannq6lrlhcShJ cArZjYgMPKzJXjhgfofSOFTDw/fwNkPC2GB+5+FjsocA52JFjReCNbPvBfwtsK1VZ TXc+V8CucfA+mugTvPczrYnU8jd7zXGkmbc8l/xYj7QULX5b6ivfR4H+wzGiAx690 PvOZHF4ao3vUNdGa1DADB8pBFK4bvvOVMyvWzc2eu/l6jtv9jfQ9fPjy1cao0nell h9W03I2ahNZU23viBlh3D8CF0cSJp/ZElfabqrC12Jd99CRWcmDuA8OPVZjifnmlx ElDm13OIvb8KxWl8WQ== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a Received: from [127.0.0.1] ([93.202.247.91]) by mail.gmx.net (mrgmx104 [212.227.17.168]) with ESMTPSA (Nemesis) id 1MzQgC-1w8GuJ49qq-00xsos; Thu, 20 Nov 2025 04:41:40 +0100 From: Armin Wolf Date: Thu, 20 Nov 2025 04:41:17 +0100 Subject: [PATCH RFC RESEND 7/8] ACPI: thermal: Stop creating "device" sysfs link 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: <20251120-thermal-device-v1-7-bbdad594d57a@gmx.de> References: <20251120-thermal-device-v1-0-bbdad594d57a@gmx.de> In-Reply-To: <20251120-thermal-device-v1-0-bbdad594d57a@gmx.de> To: "Rafael J. Wysocki" , Daniel Lezcano , Zhang Rui , Lukasz Luba , Len Brown , Jonathan Corbet , Ido Schimmel , Petr Machata Cc: linux-pm@vger.kernel.org, linux-kernel@vger.kernel.org, etnaviv@lists.freedesktop.org, dri-devel@lists.freedesktop.org, linux-tegra@vger.kernel.org, linux-acpi@vger.kernel.org, linux-doc@vger.kernel.org, netdev@vger.kernel.org, linux-wireless@vger.kernel.org, ath10k@lists.infradead.org, ath11k@lists.infradead.org, linux-arm-kernel@lists.infradead.org, linux-mediatek@lists.infradead.org, platform-driver-x86@vger.kernel.org, linux-pci@vger.kernel.org, imx@lists.linux.dev, linux-renesas-soc@vger.kernel.org X-Mailer: b4 0.14.3 X-Provags-ID: V03:K1:bKjOl416ZBvt0J4Z1ff2/VOM4YUuBr4pjrnuYziG/rC6UM9Bjrb iCAyo+RKmQkcq6atgUTHWnC+hoUqvDNqaFpc2OPzy5pIPPW4oHJPk1sK76vauvunauWsJI/ rZWHUfcw+kkV+yp+4FePUCajckmPJ0U3pwygCJBQNPEV/qhghQjiEQylyxzO3A0H4gakZ/Q lbLGd8IWeIkZr7osImDhg== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:ZkUHQOrPw+U=;A3N6syoy2tdKzKe+2NJGnSYIA5n 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 9Mg1StAM= The thermal core will soon automatically create sysfs links between the thermal zone device and its parent device. Stop manually creating the "device" sysfs link between the thermal zone device and the parent device to avoid a name collision. The "thermal_zone" sysfs link however stays for backwards compatibility, as it does not suffer from a name collision. Signed-off-by: Armin Wolf --- drivers/acpi/thermal.c | 17 ++--------------- 1 file changed, 2 insertions(+), 15 deletions(-) diff --git a/drivers/acpi/thermal.c b/drivers/acpi/thermal.c index a511f9ea0267..99ad67bbd764 100644 --- a/drivers/acpi/thermal.c +++ b/drivers/acpi/thermal.c @@ -592,27 +592,14 @@ static const struct thermal_zone_device_ops acpi_ther= mal_zone_ops =3D { static int acpi_thermal_zone_sysfs_add(struct acpi_thermal *tz) { struct device *tzdev =3D thermal_zone_device(tz->thermal_zone); - int ret; =20 - ret =3D sysfs_create_link(&tz->device->dev.kobj, - &tzdev->kobj, "thermal_zone"); - if (ret) - return ret; - - ret =3D sysfs_create_link(&tzdev->kobj, - &tz->device->dev.kobj, "device"); - if (ret) - sysfs_remove_link(&tz->device->dev.kobj, "thermal_zone"); - - return ret; + /* For backwards compatibility */ + return sysfs_create_link(&tz->device->dev.kobj, &tzdev->kobj, "thermal_zo= ne"); } =20 static void acpi_thermal_zone_sysfs_remove(struct acpi_thermal *tz) { - struct device *tzdev =3D thermal_zone_device(tz->thermal_zone); - sysfs_remove_link(&tz->device->dev.kobj, "thermal_zone"); - sysfs_remove_link(&tzdev->kobj, "device"); } =20 static int acpi_thermal_register_thermal_zone(struct acpi_thermal *tz, --=20 2.39.5 From nobody Tue Dec 2 02:21:37 2025 Received: from mout.gmx.net (mout.gmx.net [212.227.17.20]) (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 71A52217F29; Thu, 20 Nov 2025 03:42:16 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=212.227.17.20 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763610139; cv=none; b=Z4ydEBYgvJZGm/PIP9+4uDmW+XTeqTLQUwVKWk1Ox5N8CzvmK8o8P8QZ8YaFX3p+8U3BOpXN+fRspUTQ1xZZbKVo8lTLj3J5UrPztL7c7Zu3oUig32eTdstJWZoxsd4xonDy7X9uYdMfYbeaTgYByB6pLOdlMEVZawTW4/bZls8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763610139; c=relaxed/simple; bh=oDZXT4sv1K0W1YpV7lschRL0Y5czBdVRkSfBLa1GSU4=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=alPLxqbra4MmRP626GNLxQRsKmeWkGqm71MAJypjDNfBW+HQOclc4hlEQGc9HBQfebPU682NOzoppK9qqt1qRmevk1i7a5EkEWIaQm3BmpNGn4mmn2dMD9y+4Go5kBAa0PgCT/dxYjE8gU939G1AiqPKjOJcI+b3v39c9aRuQCE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=gmx.de; spf=pass smtp.mailfrom=gmx.de; dkim=pass (2048-bit key) header.d=gmx.de header.i=w_armin@gmx.de header.b=Fn+QVfxa; arc=none smtp.client-ip=212.227.17.20 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=gmx.de Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmx.de Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmx.de header.i=w_armin@gmx.de header.b="Fn+QVfxa" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.de; s=s31663417; t=1763610103; x=1764214903; i=w_armin@gmx.de; bh=yGCAfufdk5uS0AxJlXQPTK96nfX3x9IiOUSTFIkZ/is=; h=X-UI-Sender-Class:From:Date:Subject:MIME-Version:Content-Type: Content-Transfer-Encoding:Message-Id:References:In-Reply-To:To:Cc: cc:content-transfer-encoding:content-type:date:from:message-id: mime-version:reply-to:subject:to; b=Fn+QVfxaSd0iv80J/t3/nHz27I4UZwNn/U8ZC4n7U53UXfe6mivDKKOhlfkOmgU5 kgRauhVnYUVO4DvkYlaeaaST5QdgH9gBgq5HI8FkCbn8rwB7pbo+rAX0nrSM8VO8i 0630u+KDujYVAtPnXhJ9kBRV3uPE/16oaWSQPsZsSqjEc+jYRZXbQsu6ke6hcooL/ 3q78rGoz1CXC5hCz3F75IQNumahYNZtk1y9z6f6LegSibcTox8sBJ1/Ir2R5lH/iY LPEKdA+esjJQNPXPZjwOc/UUo80AHXuuh2t0qaswri+onvVodEaAVl0bNeGH75Lnf A2AYMzyB3p+S2yHn8Q== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a Received: from [127.0.0.1] ([93.202.247.91]) by mail.gmx.net (mrgmx104 [212.227.17.168]) with ESMTPSA (Nemesis) id 1MpDNf-1vvqqv49BH-00oEAf; Thu, 20 Nov 2025 04:41:43 +0100 From: Armin Wolf Date: Thu, 20 Nov 2025 04:41:18 +0100 Subject: [PATCH RFC RESEND 8/8] thermal: core: Allow setting the parent device of thermal zone devices 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: <20251120-thermal-device-v1-8-bbdad594d57a@gmx.de> References: <20251120-thermal-device-v1-0-bbdad594d57a@gmx.de> In-Reply-To: <20251120-thermal-device-v1-0-bbdad594d57a@gmx.de> To: "Rafael J. Wysocki" , Daniel Lezcano , Zhang Rui , Lukasz Luba , Len Brown , Jonathan Corbet , Ido Schimmel , Petr Machata Cc: linux-pm@vger.kernel.org, linux-kernel@vger.kernel.org, etnaviv@lists.freedesktop.org, dri-devel@lists.freedesktop.org, linux-tegra@vger.kernel.org, linux-acpi@vger.kernel.org, linux-doc@vger.kernel.org, netdev@vger.kernel.org, linux-wireless@vger.kernel.org, ath10k@lists.infradead.org, ath11k@lists.infradead.org, linux-arm-kernel@lists.infradead.org, linux-mediatek@lists.infradead.org, platform-driver-x86@vger.kernel.org, linux-pci@vger.kernel.org, imx@lists.linux.dev, linux-renesas-soc@vger.kernel.org X-Mailer: b4 0.14.3 X-Provags-ID: V03:K1:R29awBHW0pqrjeABaMJFeDeacollc6WnJKGlNk9Wna3omHYXCjn m61RHMalT6Lb2k4YAfSPR7ytFyN0UtIL90dS+nXkcN4L3ICEvRK9gpAPBEyzklGXl/Lz2DD bg0fadpRxNvgexXTaEqozYWxR36WENOxDYp6KdPE4bWpFRrS270/z3yY1fChEG4kRsCNEH+ sM5FUlwuIXR0Xxm961Frg== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:i5pXje0rV6w=;1Ujnq5tb+zNr7M3rsTtP+kZayRV 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 Thermal zone devices currently have no parent device, potentially causing issues with suspend ordering and making it impossible for user space appications to associate a given thermal zone device with its parent device. Extend the functions used to register thermal zone devices to also accept a parent device pointer. Also update all users of those functions to provide a parent device pointer if available. Signed-off-by: Armin Wolf --- Documentation/driver-api/thermal/sysfs-api.rst | 5 ++- drivers/acpi/thermal.c | 16 +++++--- drivers/net/ethernet/chelsio/cxgb4/cxgb4_thermal.c | 4 +- drivers/net/ethernet/mellanox/mlxsw/core_thermal.c | 45 +++++++++++-------= ---- drivers/net/wireless/intel/iwlwifi/mld/thermal.c | 2 +- drivers/net/wireless/intel/iwlwifi/mvm/tt.c | 10 ++--- drivers/platform/x86/acerhdf.c | 2 +- drivers/power/supply/power_supply_core.c | 4 +- drivers/thermal/armada_thermal.c | 2 +- drivers/thermal/da9062-thermal.c | 2 +- drivers/thermal/dove_thermal.c | 2 +- drivers/thermal/imx_thermal.c | 2 +- .../intel/int340x_thermal/int3400_thermal.c | 2 +- .../intel/int340x_thermal/int340x_thermal_zone.c | 13 +++---- .../int340x_thermal/processor_thermal_device_pci.c | 7 ++-- drivers/thermal/intel/intel_pch_thermal.c | 2 +- drivers/thermal/intel/intel_quark_dts_thermal.c | 2 +- drivers/thermal/intel/intel_soc_dts_iosf.c | 2 +- drivers/thermal/intel/x86_pkg_temp_thermal.c | 6 +-- drivers/thermal/kirkwood_thermal.c | 2 +- drivers/thermal/renesas/rcar_thermal.c | 10 +++-- drivers/thermal/spear_thermal.c | 2 +- drivers/thermal/testing/zone.c | 2 +- drivers/thermal/thermal_core.c | 7 +++- drivers/thermal/thermal_of.c | 9 +++-- include/linux/thermal.h | 4 ++ 26 files changed, 92 insertions(+), 74 deletions(-) diff --git a/Documentation/driver-api/thermal/sysfs-api.rst b/Documentation= /driver-api/thermal/sysfs-api.rst index cf242cd16f2e..0a29bc949ef3 100644 --- a/Documentation/driver-api/thermal/sysfs-api.rst +++ b/Documentation/driver-api/thermal/sysfs-api.rst @@ -37,7 +37,8 @@ temperature) and throttle appropriate devices. :: =20 struct thermal_zone_device * - thermal_zone_device_register_with_trips(const char *type, + thermal_zone_device_register_with_trips(struct device *parent, + const char *type, const struct thermal_trip *trips, int num_trips, void *devdata, const struct thermal_zone_device_ops *ops, @@ -49,6 +50,8 @@ temperature) and throttle appropriate devices. /sys/class/thermal folder as `thermal_zone[0-*]`. It tries to bind all= the thermal cooling devices registered to it at the same time. =20 + parent: + parent device pointer. type: the thermal zone type. trips: diff --git a/drivers/acpi/thermal.c b/drivers/acpi/thermal.c index 99ad67bbd764..483e28ce0d67 100644 --- a/drivers/acpi/thermal.c +++ b/drivers/acpi/thermal.c @@ -607,16 +607,20 @@ static int acpi_thermal_register_thermal_zone(struct = acpi_thermal *tz, unsigned int trip_count, int passive_delay) { + unsigned int polling_delay =3D tz->polling_frequency * 100; int result; =20 if (trip_count) - tz->thermal_zone =3D thermal_zone_device_register_with_trips( - "acpitz", trip_table, trip_count, tz, - &acpi_thermal_zone_ops, NULL, passive_delay, - tz->polling_frequency * 100); + tz->thermal_zone =3D thermal_zone_device_register_with_trips(&tz->device= ->dev, + "acpitz", trip_table, + trip_count, tz, + &acpi_thermal_zone_ops, + NULL, passive_delay, + polling_delay); else - tz->thermal_zone =3D thermal_tripless_zone_device_register( - "acpitz", tz, &acpi_thermal_zone_ops, NULL); + tz->thermal_zone =3D thermal_tripless_zone_device_register(&tz->device->= dev, "acpitz", + tz, &acpi_thermal_zone_ops, + NULL); =20 if (IS_ERR(tz->thermal_zone)) return PTR_ERR(tz->thermal_zone); diff --git a/drivers/net/ethernet/chelsio/cxgb4/cxgb4_thermal.c b/drivers/n= et/ethernet/chelsio/cxgb4/cxgb4_thermal.c index 7bab8da8f6e6..05a1ec7df7a5 100644 --- a/drivers/net/ethernet/chelsio/cxgb4/cxgb4_thermal.c +++ b/drivers/net/ethernet/chelsio/cxgb4/cxgb4_thermal.c @@ -59,8 +59,8 @@ int cxgb4_thermal_init(struct adapter *adap) } =20 snprintf(ch_tz_name, sizeof(ch_tz_name), "cxgb4_%s", adap->name); - ch_thermal->tzdev =3D thermal_zone_device_register_with_trips(ch_tz_name,= &trip, num_trip, - adap, + ch_thermal->tzdev =3D thermal_zone_device_register_with_trips(adap->pdev_= dev, ch_tz_name, + &trip, num_trip, adap, &cxgb4_thermal_ops, NULL, 0, 0); if (IS_ERR(ch_thermal->tzdev)) { diff --git a/drivers/net/ethernet/mellanox/mlxsw/core_thermal.c b/drivers/n= et/ethernet/mellanox/mlxsw/core_thermal.c index 1117d59b74fd..a1b1e9e8dd3d 100644 --- a/drivers/net/ethernet/mellanox/mlxsw/core_thermal.c +++ b/drivers/net/ethernet/mellanox/mlxsw/core_thermal.c @@ -349,6 +349,8 @@ static const struct thermal_cooling_device_ops mlxsw_co= oling_ops =3D { static int mlxsw_thermal_module_tz_init(struct mlxsw_thermal_module *module_tz) { + unsigned int polling_delay =3D module_tz->parent->polling_delay; + struct device *dev =3D module_tz->parent->bus_info->dev; char tz_name[40]; int err; =20 @@ -358,14 +360,12 @@ mlxsw_thermal_module_tz_init(struct mlxsw_thermal_mod= ule *module_tz) else snprintf(tz_name, sizeof(tz_name), "mlxsw-module%d", module_tz->module + 1); - module_tz->tzdev =3D thermal_zone_device_register_with_trips(tz_name, - module_tz->trips, - MLXSW_THERMAL_NUM_TRIPS, - module_tz, - &mlxsw_thermal_module_ops, - &mlxsw_thermal_params, - 0, - module_tz->parent->polling_delay); + module_tz->tzdev =3D thermal_zone_device_register_with_trips(dev, tz_name= , module_tz->trips, + MLXSW_THERMAL_NUM_TRIPS, + module_tz, + &mlxsw_thermal_module_ops, + &mlxsw_thermal_params, 0, + polling_delay); if (IS_ERR(module_tz->tzdev)) { err =3D PTR_ERR(module_tz->tzdev); return err; @@ -466,6 +466,8 @@ mlxsw_thermal_modules_fini(struct mlxsw_thermal *therma= l, static int mlxsw_thermal_gearbox_tz_init(struct mlxsw_thermal_module *gearbox_tz) { + unsigned int polling_delay =3D gearbox_tz->parent->polling_delay; + struct device *dev =3D gearbox_tz->parent->bus_info->dev; char tz_name[40]; int ret; =20 @@ -475,13 +477,13 @@ mlxsw_thermal_gearbox_tz_init(struct mlxsw_thermal_mo= dule *gearbox_tz) else snprintf(tz_name, sizeof(tz_name), "mlxsw-gearbox%d", gearbox_tz->module + 1); - gearbox_tz->tzdev =3D thermal_zone_device_register_with_trips(tz_name, - gearbox_tz->trips, - MLXSW_THERMAL_NUM_TRIPS, - gearbox_tz, - &mlxsw_thermal_gearbox_ops, - &mlxsw_thermal_params, 0, - gearbox_tz->parent->polling_delay); + gearbox_tz->tzdev =3D thermal_zone_device_register_with_trips(dev, tz_nam= e, + gearbox_tz->trips, + MLXSW_THERMAL_NUM_TRIPS, + gearbox_tz, + &mlxsw_thermal_gearbox_ops, + &mlxsw_thermal_params, 0, + polling_delay); if (IS_ERR(gearbox_tz->tzdev)) return PTR_ERR(gearbox_tz->tzdev); =20 @@ -709,13 +711,12 @@ int mlxsw_thermal_init(struct mlxsw_core *core, MLXSW_THERMAL_SLOW_POLL_INT : MLXSW_THERMAL_POLL_INT; =20 - thermal->tzdev =3D thermal_zone_device_register_with_trips("mlxsw", - thermal->trips, - MLXSW_THERMAL_NUM_TRIPS, - thermal, - &mlxsw_thermal_ops, - &mlxsw_thermal_params, 0, - thermal->polling_delay); + thermal->tzdev =3D thermal_zone_device_register_with_trips(dev, "mlxsw", + thermal->trips, + MLXSW_THERMAL_NUM_TRIPS, + thermal, &mlxsw_thermal_ops, + &mlxsw_thermal_params, 0, + thermal->polling_delay); if (IS_ERR(thermal->tzdev)) { err =3D PTR_ERR(thermal->tzdev); dev_err(dev, "Failed to register thermal zone\n"); diff --git a/drivers/net/wireless/intel/iwlwifi/mld/thermal.c b/drivers/net= /wireless/intel/iwlwifi/mld/thermal.c index 9e56e6e80ab7..56a0022d33db 100644 --- a/drivers/net/wireless/intel/iwlwifi/mld/thermal.c +++ b/drivers/net/wireless/intel/iwlwifi/mld/thermal.c @@ -256,7 +256,7 @@ static void iwl_mld_thermal_zone_register(struct iwl_ml= d *mld) =20 sprintf(name, "iwlwifi_%u", atomic_inc_return(&counter) & 0xFF); mld->tzone =3D - thermal_zone_device_register_with_trips(name, trips, + thermal_zone_device_register_with_trips(mld->dev, name, trips, IWL_MAX_DTS_TRIPS, mld, &tzone_ops, NULL, 0, 0); diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/tt.c b/drivers/net/wire= less/intel/iwlwifi/mvm/tt.c index b184f08230b9..e4777b815976 100644 --- a/drivers/net/wireless/intel/iwlwifi/mvm/tt.c +++ b/drivers/net/wireless/intel/iwlwifi/mvm/tt.c @@ -672,11 +672,11 @@ static void iwl_mvm_thermal_zone_register(struct iwl_= mvm *mvm) mvm->tz_device.trips[i].type =3D THERMAL_TRIP_PASSIVE; mvm->tz_device.trips[i].flags =3D THERMAL_TRIP_FLAG_RW_TEMP; } - mvm->tz_device.tzone =3D thermal_zone_device_register_with_trips(name, - mvm->tz_device.trips, - IWL_MAX_DTS_TRIPS, - mvm, &tzone_ops, - NULL, 0, 0); + mvm->tz_device.tzone =3D thermal_zone_device_register_with_trips(mvm->dev= , name, + mvm->tz_device.trips, + IWL_MAX_DTS_TRIPS, + mvm, &tzone_ops, + NULL, 0, 0); if (IS_ERR(mvm->tz_device.tzone)) { IWL_DEBUG_TEMP(mvm, "Failed to register to thermal zone (err =3D %ld)\n", diff --git a/drivers/platform/x86/acerhdf.c b/drivers/platform/x86/acerhdf.c index c74937d475e5..abdb5749c169 100644 --- a/drivers/platform/x86/acerhdf.c +++ b/drivers/platform/x86/acerhdf.c @@ -656,7 +656,7 @@ static int __init acerhdf_register_thermal(void) if (IS_ERR(cl_dev)) return -EINVAL; =20 - thz_dev =3D thermal_zone_device_register_with_trips("acerhdf", trips, ARR= AY_SIZE(trips), + thz_dev =3D thermal_zone_device_register_with_trips(NULL, "acerhdf", trip= s, ARRAY_SIZE(trips), NULL, &acerhdf_dev_ops, &acerhdf_zone_params, 0, (kernelmode) ? interval*1000 : 0); diff --git a/drivers/power/supply/power_supply_core.c b/drivers/power/suppl= y/power_supply_core.c index 9a28381e2607..cbc4bed17efa 100644 --- a/drivers/power/supply/power_supply_core.c +++ b/drivers/power/supply/power_supply_core.c @@ -1531,8 +1531,8 @@ static int psy_register_thermal(struct power_supply *= psy) struct thermal_zone_params tzp =3D { .no_hwmon =3D IS_ENABLED(CONFIG_POWER_SUPPLY_HWMON) }; - psy->tzd =3D thermal_tripless_zone_device_register(psy->desc->name, - psy, &psy_tzd_ops, &tzp); + psy->tzd =3D thermal_tripless_zone_device_register(&psy->dev, psy->desc-= >name, psy, + &psy_tzd_ops, &tzp); if (IS_ERR(psy->tzd)) return PTR_ERR(psy->tzd); ret =3D thermal_zone_device_enable(psy->tzd); diff --git a/drivers/thermal/armada_thermal.c b/drivers/thermal/armada_ther= mal.c index c2fbdb534f61..fc60b0bab627 100644 --- a/drivers/thermal/armada_thermal.c +++ b/drivers/thermal/armada_thermal.c @@ -871,7 +871,7 @@ static int armada_thermal_probe(struct platform_device = *pdev) /* Wait the sensors to be valid */ armada_wait_sensor_validity(priv); =20 - tz =3D thermal_tripless_zone_device_register(priv->zone_name, + tz =3D thermal_tripless_zone_device_register(&pdev->dev, priv->zone_name, priv, &legacy_ops, NULL); if (IS_ERR(tz)) { diff --git a/drivers/thermal/da9062-thermal.c b/drivers/thermal/da9062-ther= mal.c index a8d4b766ba21..c5368c2b53b9 100644 --- a/drivers/thermal/da9062-thermal.c +++ b/drivers/thermal/da9062-thermal.c @@ -196,7 +196,7 @@ static int da9062_thermal_probe(struct platform_device = *pdev) INIT_DELAYED_WORK(&thermal->work, da9062_thermal_poll_on); mutex_init(&thermal->lock); =20 - thermal->zone =3D thermal_zone_device_register_with_trips(thermal->config= ->name, + thermal->zone =3D thermal_zone_device_register_with_trips(&pdev->dev, the= rmal->config->name, trips, ARRAY_SIZE(trips), thermal, &da9062_thermal_ops, NULL, pp_tmp, 0); diff --git a/drivers/thermal/dove_thermal.c b/drivers/thermal/dove_thermal.c index 723bc72f0626..101c6109b04a 100644 --- a/drivers/thermal/dove_thermal.c +++ b/drivers/thermal/dove_thermal.c @@ -139,7 +139,7 @@ static int dove_thermal_probe(struct platform_device *p= dev) return ret; } =20 - thermal =3D thermal_tripless_zone_device_register("dove_thermal", priv, + thermal =3D thermal_tripless_zone_device_register(&pdev->dev, "dove_therm= al", priv, &ops, NULL); if (IS_ERR(thermal)) { dev_err(&pdev->dev, diff --git a/drivers/thermal/imx_thermal.c b/drivers/thermal/imx_thermal.c index 38c993d1bcb3..043e80756017 100644 --- a/drivers/thermal/imx_thermal.c +++ b/drivers/thermal/imx_thermal.c @@ -679,7 +679,7 @@ static int imx_thermal_probe(struct platform_device *pd= ev) goto legacy_cleanup; } =20 - data->tz =3D thermal_zone_device_register_with_trips("imx_thermal_zone", + data->tz =3D thermal_zone_device_register_with_trips(dev, "imx_thermal_zo= ne", trips, ARRAY_SIZE(trips), data, diff --git a/drivers/thermal/intel/int340x_thermal/int3400_thermal.c b/driv= ers/thermal/intel/int340x_thermal/int3400_thermal.c index 41d3bc3ed8a2..ed21da8f0a47 100644 --- a/drivers/thermal/intel/int340x_thermal/int3400_thermal.c +++ b/drivers/thermal/intel/int340x_thermal/int3400_thermal.c @@ -594,7 +594,7 @@ static int int3400_thermal_probe(struct platform_device= *pdev) =20 evaluate_odvp(priv); =20 - priv->thermal =3D thermal_tripless_zone_device_register("INT3400 Thermal"= , priv, + priv->thermal =3D thermal_tripless_zone_device_register(&pdev->dev, "INT3= 400 Thermal", priv, &int3400_thermal_ops, &int3400_thermal_params); if (IS_ERR(priv->thermal)) { diff --git a/drivers/thermal/intel/int340x_thermal/int340x_thermal_zone.c b= /drivers/thermal/intel/int340x_thermal/int340x_thermal_zone.c index 3d9efe69d562..3adccb7fc157 100644 --- a/drivers/thermal/intel/int340x_thermal/int340x_thermal_zone.c +++ b/drivers/thermal/intel/int340x_thermal/int340x_thermal_zone.c @@ -160,13 +160,12 @@ struct int34x_thermal_zone *int340x_thermal_zone_add(= struct acpi_device *adev, =20 int34x_zone->lpat_table =3D acpi_lpat_get_conversion_table(adev->handle); =20 - int34x_zone->zone =3D thermal_zone_device_register_with_trips( - acpi_device_bid(adev), - zone_trips, trip_cnt, - int34x_zone, - &zone_ops, - &int340x_thermal_params, - 0, 0); + int34x_zone->zone =3D thermal_zone_device_register_with_trips(&adev->dev, + acpi_device_bid(adev), + zone_trips, trip_cnt, + int34x_zone, &zone_ops, + &int340x_thermal_params, + 0, 0); kfree(zone_trips); =20 if (IS_ERR(int34x_zone->zone)) { diff --git a/drivers/thermal/intel/int340x_thermal/processor_thermal_device= _pci.c b/drivers/thermal/intel/int340x_thermal/processor_thermal_device_pci= .c index 0d4dcc66e097..2b3116e23fa1 100644 --- a/drivers/thermal/intel/int340x_thermal/processor_thermal_device_pci.c +++ b/drivers/thermal/intel/int340x_thermal/processor_thermal_device_pci.c @@ -371,10 +371,9 @@ static int proc_thermal_pci_probe(struct pci_dev *pdev= , const struct pci_device_ =20 psv_trip.temperature =3D get_trip_temp(pci_info); =20 - pci_info->tzone =3D thermal_zone_device_register_with_trips("TCPU_PCI", &= psv_trip, - 1, pci_info, - &tzone_ops, - &tzone_params, 0, 0); + pci_info->tzone =3D thermal_zone_device_register_with_trips(&pdev->dev, "= TCPU_PCI", &psv_trip, + 1, pci_info, &tzone_ops, + &tzone_params, 0, 0); if (IS_ERR(pci_info->tzone)) { ret =3D PTR_ERR(pci_info->tzone); goto err_del_legacy; diff --git a/drivers/thermal/intel/intel_pch_thermal.c b/drivers/thermal/in= tel/intel_pch_thermal.c index fc326985796c..754527b2b09a 100644 --- a/drivers/thermal/intel/intel_pch_thermal.c +++ b/drivers/thermal/intel/intel_pch_thermal.c @@ -235,7 +235,7 @@ static int intel_pch_thermal_probe(struct pci_dev *pdev, =20 nr_trips +=3D pch_wpt_add_acpi_psv_trip(ptd, &ptd_trips[nr_trips]); =20 - ptd->tzd =3D thermal_zone_device_register_with_trips(board_names[board_id= ], + ptd->tzd =3D thermal_zone_device_register_with_trips(&pdev->dev, board_na= mes[board_id], ptd_trips, nr_trips, ptd, &tzd_ops, NULL, 0, 0); diff --git a/drivers/thermal/intel/intel_quark_dts_thermal.c b/drivers/ther= mal/intel/intel_quark_dts_thermal.c index 89498eb29a89..d8d38b6ed452 100644 --- a/drivers/thermal/intel/intel_quark_dts_thermal.c +++ b/drivers/thermal/intel/intel_quark_dts_thermal.c @@ -376,7 +376,7 @@ static struct soc_sensor_entry *alloc_soc_dts(void) trips[QRK_DTS_ID_TP_HOT].temperature =3D get_trip_temp(QRK_DTS_ID_TP_HOT); trips[QRK_DTS_ID_TP_HOT].type =3D THERMAL_TRIP_HOT; =20 - aux_entry->tzone =3D thermal_zone_device_register_with_trips("quark_dts", + aux_entry->tzone =3D thermal_zone_device_register_with_trips(NULL, "quark= _dts", trips, QRK_MAX_DTS_TRIPS, aux_entry, diff --git a/drivers/thermal/intel/intel_soc_dts_iosf.c b/drivers/thermal/i= ntel/intel_soc_dts_iosf.c index ea87439fe7a9..74638dac75e6 100644 --- a/drivers/thermal/intel/intel_soc_dts_iosf.c +++ b/drivers/thermal/intel/intel_soc_dts_iosf.c @@ -230,7 +230,7 @@ static int add_dts_thermal_zone(int id, struct intel_so= c_dts_sensor_entry *dts, } } snprintf(name, sizeof(name), "soc_dts%d", id); - dts->tzone =3D thermal_zone_device_register_with_trips(name, trips, + dts->tzone =3D thermal_zone_device_register_with_trips(NULL, name, trips, SOC_MAX_DTS_TRIPS, dts, &tzone_ops, NULL, 0, 0); diff --git a/drivers/thermal/intel/x86_pkg_temp_thermal.c b/drivers/thermal= /intel/x86_pkg_temp_thermal.c index 3fc679b6f11b..807126dc4bea 100644 --- a/drivers/thermal/intel/x86_pkg_temp_thermal.c +++ b/drivers/thermal/intel/x86_pkg_temp_thermal.c @@ -342,9 +342,9 @@ static int pkg_temp_thermal_device_add(unsigned int cpu) =20 INIT_DELAYED_WORK(&zonedev->work, pkg_temp_thermal_threshold_work_fn); zonedev->cpu =3D cpu; - zonedev->tzone =3D thermal_zone_device_register_with_trips("x86_pkg_temp", - trips, thres_count, - zonedev, &tzone_ops, &pkg_temp_tz_params, 0, 0); + zonedev->tzone =3D thermal_zone_device_register_with_trips(NULL, "x86_pkg= _temp", trips, + thres_count, zonedev, &tzone_ops, + &pkg_temp_tz_params, 0, 0); if (IS_ERR(zonedev->tzone)) { err =3D PTR_ERR(zonedev->tzone); goto out_kfree_zonedev; diff --git a/drivers/thermal/kirkwood_thermal.c b/drivers/thermal/kirkwood_= thermal.c index 4619e090f756..4827ad2bdb49 100644 --- a/drivers/thermal/kirkwood_thermal.c +++ b/drivers/thermal/kirkwood_thermal.c @@ -71,7 +71,7 @@ static int kirkwood_thermal_probe(struct platform_device = *pdev) if (IS_ERR(priv->sensor)) return PTR_ERR(priv->sensor); =20 - thermal =3D thermal_tripless_zone_device_register("kirkwood_thermal", + thermal =3D thermal_tripless_zone_device_register(&pdev->dev, "kirkwood_t= hermal", priv, &ops, NULL); if (IS_ERR(thermal)) { dev_err(&pdev->dev, diff --git a/drivers/thermal/renesas/rcar_thermal.c b/drivers/thermal/renes= as/rcar_thermal.c index fdd7afdc4ff6..3d228e4c7b09 100644 --- a/drivers/thermal/renesas/rcar_thermal.c +++ b/drivers/thermal/renesas/rcar_thermal.c @@ -488,10 +488,12 @@ static int rcar_thermal_probe(struct platform_device = *pdev) dev, i, priv, &rcar_thermal_zone_ops); } else { - priv->zone =3D thermal_zone_device_register_with_trips( - "rcar_thermal", trips, ARRAY_SIZE(trips), priv, - &rcar_thermal_zone_ops, NULL, 0, - idle); + priv->zone =3D thermal_zone_device_register_with_trips(dev, "rcar_therm= al", + trips, + ARRAY_SIZE(trips), + priv, + &rcar_thermal_zone_ops, + NULL, 0, idle); =20 ret =3D thermal_zone_device_enable(priv->zone); if (ret) { diff --git a/drivers/thermal/spear_thermal.c b/drivers/thermal/spear_therma= l.c index 603dadcd3df5..c5bba9d600d4 100644 --- a/drivers/thermal/spear_thermal.c +++ b/drivers/thermal/spear_thermal.c @@ -122,7 +122,7 @@ static int spear_thermal_probe(struct platform_device *= pdev) stdev->flags =3D val; writel_relaxed(stdev->flags, stdev->thermal_base); =20 - spear_thermal =3D thermal_tripless_zone_device_register("spear_thermal", + spear_thermal =3D thermal_tripless_zone_device_register(&pdev->dev, "spea= r_thermal", stdev, &ops, NULL); if (IS_ERR(spear_thermal)) { dev_err(&pdev->dev, "thermal zone device is NULL\n"); diff --git a/drivers/thermal/testing/zone.c b/drivers/thermal/testing/zone.c index c12c405225bb..5a7e9969582e 100644 --- a/drivers/thermal/testing/zone.c +++ b/drivers/thermal/testing/zone.c @@ -402,7 +402,7 @@ static int tt_zone_register_tz(struct tt_thermal_zone *= tt_zone) =20 tt_zone->tz_temp =3D tt_zone->temp; =20 - tz =3D thermal_zone_device_register_with_trips("test_tz", trips, i, tt_zo= ne, + tz =3D thermal_zone_device_register_with_trips(NULL, "test_tz", trips, i,= tt_zone, &tt_zone_ops, NULL, 0, 0); if (IS_ERR(tz)) return PTR_ERR(tz); diff --git a/drivers/thermal/thermal_core.c b/drivers/thermal/thermal_core.c index 92e51d2e4535..9d8499999579 100644 --- a/drivers/thermal/thermal_core.c +++ b/drivers/thermal/thermal_core.c @@ -1475,6 +1475,7 @@ static void thermal_zone_init_complete(struct thermal= _zone_device *tz) =20 /** * thermal_zone_device_register_with_trips() - register a new thermal zone= device + * @parent: parent device pointer * @type: the thermal zone device type * @trips: a pointer to an array of thermal trips * @num_trips: the number of trip points the thermal zone support @@ -1498,7 +1499,7 @@ static void thermal_zone_init_complete(struct thermal= _zone_device *tz) * IS_ERR*() helpers. */ struct thermal_zone_device * -thermal_zone_device_register_with_trips(const char *type, +thermal_zone_device_register_with_trips(struct device *parent, const char = *type, const struct thermal_trip *trips, int num_trips, void *devdata, const struct thermal_zone_device_ops *ops, @@ -1576,6 +1577,7 @@ thermal_zone_device_register_with_trips(const char *t= ype, tz->ops.critical =3D thermal_zone_device_critical; =20 tz->device.class =3D thermal_class; + tz->device.parent =3D parent; tz->devdata =3D devdata; tz->num_trips =3D num_trips; for_each_trip_desc(tz, td) { @@ -1651,12 +1653,13 @@ thermal_zone_device_register_with_trips(const char = *type, EXPORT_SYMBOL_GPL(thermal_zone_device_register_with_trips); =20 struct thermal_zone_device *thermal_tripless_zone_device_register( + struct device *parent, const char *type, void *devdata, const struct thermal_zone_device_ops *ops, const struct thermal_zone_params *tzp) { - return thermal_zone_device_register_with_trips(type, NULL, 0, devdata, + return thermal_zone_device_register_with_trips(parent, type, NULL, 0, dev= data, ops, tzp, 0, 0); } EXPORT_SYMBOL_GPL(thermal_tripless_zone_device_register); diff --git a/drivers/thermal/thermal_of.c b/drivers/thermal/thermal_of.c index 1a51a4d240ff..e3359ca20d77 100644 --- a/drivers/thermal/thermal_of.c +++ b/drivers/thermal/thermal_of.c @@ -354,6 +354,7 @@ static void thermal_of_zone_unregister(struct thermal_z= one_device *tz) * zone properties and registers new thermal zone with those * properties. * + * @parent: parent device pointer * @sensor: A device node pointer corresponding to the sensor in the devic= e tree * @id: An integer as sensor identifier * @data: A private data to be stored in the thermal zone dedicated privat= e area @@ -364,7 +365,9 @@ static void thermal_of_zone_unregister(struct thermal_z= one_device *tz) * - ENOMEM: if one structure can not be allocated * - Other negative errors are returned by the underlying called functions */ -static struct thermal_zone_device *thermal_of_zone_register(struct device_= node *sensor, int id, void *data, +static struct thermal_zone_device *thermal_of_zone_register(struct device = *parent, + struct device_node *sensor, + int id, void *data, const struct thermal_zone_device_ops *ops) { struct thermal_zone_device_ops of_ops =3D *ops; @@ -412,7 +415,7 @@ static struct thermal_zone_device *thermal_of_zone_regi= ster(struct device_node * of_ops.critical =3D thermal_zone_device_critical_shutdown; } =20 - tz =3D thermal_zone_device_register_with_trips(np->name, trips, ntrips, + tz =3D thermal_zone_device_register_with_trips(parent, np->name, trips, n= trips, data, &of_ops, &tzp, pdelay, delay); if (IS_ERR(tz)) { @@ -478,7 +481,7 @@ struct thermal_zone_device *devm_thermal_of_zone_regist= er(struct device *dev, in if (!ptr) return ERR_PTR(-ENOMEM); =20 - tzd =3D thermal_of_zone_register(dev->of_node, sensor_id, data, ops); + tzd =3D thermal_of_zone_register(dev, dev->of_node, sensor_id, data, ops); if (IS_ERR(tzd)) { devres_free(ptr); return tzd; diff --git a/include/linux/thermal.h b/include/linux/thermal.h index 29a608bf5f80..0c5a91313bd5 100644 --- a/include/linux/thermal.h +++ b/include/linux/thermal.h @@ -226,6 +226,7 @@ int thermal_zone_get_crit_temp(struct thermal_zone_devi= ce *tz, int *temp); =20 #ifdef CONFIG_THERMAL struct thermal_zone_device *thermal_zone_device_register_with_trips( + struct device *parent, const char *type, const struct thermal_trip *trips, int num_trips, void *devdata, @@ -235,6 +236,7 @@ struct thermal_zone_device *thermal_zone_device_registe= r_with_trips( unsigned int polling_delay); =20 struct thermal_zone_device *thermal_tripless_zone_device_register( + struct device *parent, const char *type, void *devdata, const struct thermal_zone_device_ops *ops, @@ -276,6 +278,7 @@ int thermal_zone_device_disable(struct thermal_zone_dev= ice *tz); void thermal_zone_device_critical(struct thermal_zone_device *tz); #else static inline struct thermal_zone_device *thermal_zone_device_register_wit= h_trips( + struct device *parent, const char *type, const struct thermal_trip *trips, int num_trips, void *devdata, @@ -285,6 +288,7 @@ static inline struct thermal_zone_device *thermal_zone_= device_register_with_trip { return ERR_PTR(-ENODEV); } =20 static inline struct thermal_zone_device *thermal_tripless_zone_device_reg= ister( + struct device *parent, const char *type, void *devdata, struct thermal_zone_device_ops *ops, --=20 2.39.5