From: "Rafael J. Wysocki" <rjw@rjwysocki.net>
To: Linux PM <linux-pm@vger.kernel.org>
Cc: LKML <linux-kernel@vger.kernel.org>,
Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>,
Zhang Rui <rui.zhang@intel.com>,
Daniel Lezcano <daniel.lezcano@linaro.org>
Subject: [PATCH v1 4/7] thermal: intel: intel_soc_dts_iosf: Change initialization ordering
Date: Thu, 10 Aug 2023 21:13:25 +0200 [thread overview]
Message-ID: <13337847.uLZWGnKmhe@kreacher> (raw)
In-Reply-To: <5713357.DvuYhMxLoT@kreacher>
From: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
The initial configuration of trip points in intel_soc_dts_iosf_init()
takes place after registering the sensor thermal zones which is
potentially problematic, because it may race with the setting of trip
point temperatures via sysfs, as there is no synchronization between it
and sys_set_trip_temp().
To address this, change the initialization ordering so that the trip
points are configured prior to the registration of thermal zones.
Accordingly, change the cleanup ordering in intel_soc_dts_iosf_exit()
to remove the thermal zones before resetting the trip points.
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
---
drivers/thermal/intel/intel_soc_dts_iosf.c | 25 ++++++++++++++++---------
1 file changed, 16 insertions(+), 9 deletions(-)
Index: linux-pm/drivers/thermal/intel/intel_soc_dts_iosf.c
===================================================================
--- linux-pm.orig/drivers/thermal/intel/intel_soc_dts_iosf.c
+++ linux-pm/drivers/thermal/intel/intel_soc_dts_iosf.c
@@ -398,30 +398,37 @@ struct intel_soc_dts_sensors *intel_soc_
for (i = 0; i < SOC_MAX_DTS_SENSORS; ++i) {
sensors->soc_dts[i].sensors = sensors;
- ret = add_dts_thermal_zone(i, &sensors->soc_dts[i],
- read_only_trip_count);
- if (ret)
- goto err_free;
- }
- for (i = 0; i < SOC_MAX_DTS_SENSORS; ++i) {
ret = configure_trip(&sensors->soc_dts[i], 0,
THERMAL_TRIP_PASSIVE, 0);
if (ret)
- goto err_remove_zone;
+ goto err_reset_trips;
ret = configure_trip(&sensors->soc_dts[i], 1,
THERMAL_TRIP_PASSIVE, 0);
if (ret)
+ goto err_reset_trips;
+ }
+
+ for (i = 0; i < SOC_MAX_DTS_SENSORS; ++i) {
+ ret = add_dts_thermal_zone(i, &sensors->soc_dts[i],
+ read_only_trip_count);
+ if (ret)
goto err_remove_zone;
}
return sensors;
+
err_remove_zone:
for (i = 0; i < SOC_MAX_DTS_SENSORS; ++i)
remove_dts_thermal_zone(&sensors->soc_dts[i]);
-err_free:
+err_reset_trips:
+ for (i = 0; i < SOC_MAX_DTS_SENSORS; i++) {
+ configure_trip(&sensors->soc_dts[i], 0, 0, 0);
+ configure_trip(&sensors->soc_dts[i], 1, 0, 0);
+ }
+
kfree(sensors);
return ERR_PTR(ret);
}
@@ -432,9 +439,9 @@ void intel_soc_dts_iosf_exit(struct inte
int i;
for (i = 0; i < SOC_MAX_DTS_SENSORS; ++i) {
+ remove_dts_thermal_zone(&sensors->soc_dts[i]);
configure_trip(&sensors->soc_dts[i], 0, 0, 0);
configure_trip(&sensors->soc_dts[i], 1, 0, 0);
- remove_dts_thermal_zone(&sensors->soc_dts[i]);
}
kfree(sensors);
}
next prev parent reply other threads:[~2023-08-10 19:17 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-08-10 19:08 [PATCH v1 0/7] thermal: intel: intel_soc_dts_iosf: Cleanups, fixes and usage of generic trips Rafael J. Wysocki
2023-08-10 19:09 ` [PATCH v1 1/7] thermal: intel: intel_soc_dts_iosf: Always assume notification support Rafael J. Wysocki
2023-08-10 19:11 ` [PATCH v1 2/7] thermal: intel: intel_soc_dts_iosf: Untangle update_trip_temp() Rafael J. Wysocki
2023-08-10 19:12 ` [PATCH v1 3/7] thermal: intel: intel_soc_dts_iosf: Pass sensors to update_trip_temp() Rafael J. Wysocki
2023-08-10 19:13 ` Rafael J. Wysocki [this message]
2023-08-10 19:14 ` [PATCH v1 5/7] thermal: intel: intel_soc_dts_iosf: Add helper for resetting trip points Rafael J. Wysocki
2023-08-10 19:16 ` [PATCH v1 6/7] thermal: intel: intel_soc_dts_iosf: Rework critical trip setup Rafael J. Wysocki
2023-08-10 19:17 ` [PATCH v1 7/7] thermal: intel: intel_soc_dts_iosf: Use struct thermal_trip Rafael J. Wysocki
2023-08-11 0:00 ` [PATCH v1 0/7] thermal: intel: intel_soc_dts_iosf: Cleanups, fixes and usage of generic trips srinivas pandruvada
2023-08-11 7:59 ` Zhang, Rui
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=13337847.uLZWGnKmhe@kreacher \
--to=rjw@rjwysocki.net \
--cc=daniel.lezcano@linaro.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pm@vger.kernel.org \
--cc=rui.zhang@intel.com \
--cc=srinivas.pandruvada@linux.intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox