linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v2 1/3] thermal/core: Precompute the delays from msecs to jiffies
@ 2020-12-16 22:03 Daniel Lezcano
  2020-12-16 22:03 ` [PATCH v2 2/3] thermal/core: Use precomputed jiffies for the polling Daniel Lezcano
                   ` (3 more replies)
  0 siblings, 4 replies; 13+ messages in thread
From: Daniel Lezcano @ 2020-12-16 22:03 UTC (permalink / raw)
  To: daniel.lezcano, rui.zhang
  Cc: amitk, linux-kernel, linux-pm, Thara Gopinath, Lukasz Luba

The delays are stored in ms units and when the polling function is
called this delay is converted into jiffies at each call.

Instead of doing the conversion again and again, compute the jiffies
at init time and use the value directly when setting the polling.

Cc: Thara Gopinath <thara.gopinath@linaro.org>
Signed-off-by: Daniel Lezcano <daniel.lezcano@linaro.org>
Reviewed-by: Lukasz Luba <lukasz.luba@arm.com>
---
 drivers/thermal/thermal_core.c    | 3 +++
 drivers/thermal/thermal_core.h    | 1 +
 drivers/thermal/thermal_helpers.c | 7 +++++++
 include/linux/thermal.h           | 7 +++++++
 4 files changed, 18 insertions(+)

diff --git a/drivers/thermal/thermal_core.c b/drivers/thermal/thermal_core.c
index bcc2ea4f5482..2c41d4a0923f 100644
--- a/drivers/thermal/thermal_core.c
+++ b/drivers/thermal/thermal_core.c
@@ -1315,6 +1315,9 @@ thermal_zone_device_register(const char *type, int trips, int mask,
 	tz->passive_delay = passive_delay;
 	tz->polling_delay = polling_delay;
 
+	thermal_set_delay_jiffies(&tz->passive_delay_jiffies, passive_delay);
+	thermal_set_delay_jiffies(&tz->polling_delay_jiffies, polling_delay);
+
 	/* sys I/F */
 	/* Add nodes that are always present via .groups */
 	result = thermal_zone_create_device_groups(tz, mask);
diff --git a/drivers/thermal/thermal_core.h b/drivers/thermal/thermal_core.h
index e50c6b2909fe..90f9a80c8b23 100644
--- a/drivers/thermal/thermal_core.h
+++ b/drivers/thermal/thermal_core.h
@@ -123,6 +123,7 @@ int thermal_build_list_of_policies(char *buf);
 
 /* Helpers */
 void thermal_zone_set_trips(struct thermal_zone_device *tz);
+void thermal_set_delay_jiffies(unsigned long *delay_jiffies, int delay_ms);
 
 /* sysfs I/F */
 int thermal_zone_create_device_groups(struct thermal_zone_device *, int);
diff --git a/drivers/thermal/thermal_helpers.c b/drivers/thermal/thermal_helpers.c
index c94bc824e5d3..7f50f412e02a 100644
--- a/drivers/thermal/thermal_helpers.c
+++ b/drivers/thermal/thermal_helpers.c
@@ -175,6 +175,13 @@ void thermal_zone_set_trips(struct thermal_zone_device *tz)
 	mutex_unlock(&tz->lock);
 }
 
+void thermal_set_delay_jiffies(unsigned long *delay_jiffies, int delay_ms)
+{
+	*delay_jiffies = msecs_to_jiffies(delay_ms);
+	if (delay_ms > 1000)
+		*delay_jiffies = round_jiffies(*delay_jiffies);
+}
+
 static void thermal_cdev_set_cur_state(struct thermal_cooling_device *cdev,
 				       int target)
 {
diff --git a/include/linux/thermal.h b/include/linux/thermal.h
index 060a2160add4..d1b82c70de69 100644
--- a/include/linux/thermal.h
+++ b/include/linux/thermal.h
@@ -117,9 +117,14 @@ struct thermal_cooling_device {
  * @trips_disabled;	bitmap for disabled trips
  * @passive_delay:	number of milliseconds to wait between polls when
  *			performing passive cooling.
+ * @passive_delay_jiffies: number of jiffies to wait between polls when
+ *			performing passive cooling.
  * @polling_delay:	number of milliseconds to wait between polls when
  *			checking whether trip points have been crossed (0 for
  *			interrupt driven systems)
+ * @polling_delay_jiffies: number of jiffies to wait between polls when
+ *			checking whether trip points have been crossed (0 for
+ *			interrupt driven systems)
  * @temperature:	current temperature.  This is only for core code,
  *			drivers should use thermal_zone_get_temp() to get the
  *			current temperature
@@ -155,6 +160,8 @@ struct thermal_zone_device {
 	void *devdata;
 	int trips;
 	unsigned long trips_disabled;	/* bitmap for disabled trips */
+	unsigned long passive_delay_jiffies;
+	unsigned long polling_delay_jiffies;
 	int passive_delay;
 	int polling_delay;
 	int temperature;
-- 
2.25.1


^ permalink raw reply related	[flat|nested] 13+ messages in thread

* [PATCH v2 2/3] thermal/core: Use precomputed jiffies for the polling
  2020-12-16 22:03 [PATCH v2 1/3] thermal/core: Precompute the delays from msecs to jiffies Daniel Lezcano
@ 2020-12-16 22:03 ` Daniel Lezcano
  2020-12-18 15:06   ` Thara Gopinath
  2020-12-16 22:03 ` [PATCH v2 3/3] thermal/core: Remove ms based delay fields Daniel Lezcano
                   ` (2 subsequent siblings)
  3 siblings, 1 reply; 13+ messages in thread
From: Daniel Lezcano @ 2020-12-16 22:03 UTC (permalink / raw)
  To: daniel.lezcano, rui.zhang
  Cc: amitk, linux-kernel, linux-pm, Thara Gopinath, Lukasz Luba

The delays are also stored in jiffies based unit. Use them instead of
the ms.

Cc: Thara Gopinath <thara.gopinath@linaro.org>
Signed-off-by: Daniel Lezcano <daniel.lezcano@linaro.org>
Reviewed-by: Lukasz Luba <lukasz.luba@arm.com>
---
 drivers/thermal/thermal_core.c | 15 +++++----------
 1 file changed, 5 insertions(+), 10 deletions(-)

diff --git a/drivers/thermal/thermal_core.c b/drivers/thermal/thermal_core.c
index 2c41d4a0923f..d96c515af3cb 100644
--- a/drivers/thermal/thermal_core.c
+++ b/drivers/thermal/thermal_core.c
@@ -289,16 +289,11 @@ static int __init thermal_register_governors(void)
  * - Critical trip point will cause a system shutdown.
  */
 static void thermal_zone_device_set_polling(struct thermal_zone_device *tz,
-					    int delay)
+					    unsigned long delay)
 {
-	if (delay > 1000)
+	if (delay)
 		mod_delayed_work(system_freezable_power_efficient_wq,
-				 &tz->poll_queue,
-				 round_jiffies(msecs_to_jiffies(delay)));
-	else if (delay)
-		mod_delayed_work(system_freezable_power_efficient_wq,
-				 &tz->poll_queue,
-				 msecs_to_jiffies(delay));
+				 &tz->poll_queue, delay);
 	else
 		cancel_delayed_work(&tz->poll_queue);
 }
@@ -317,9 +312,9 @@ static void monitor_thermal_zone(struct thermal_zone_device *tz)
 	mutex_lock(&tz->lock);
 
 	if (!stop && tz->passive)
-		thermal_zone_device_set_polling(tz, tz->passive_delay);
+		thermal_zone_device_set_polling(tz, tz->passive_delay_jiffies);
 	else if (!stop && tz->polling_delay)
-		thermal_zone_device_set_polling(tz, tz->polling_delay);
+		thermal_zone_device_set_polling(tz, tz->polling_delay_jiffies);
 	else
 		thermal_zone_device_set_polling(tz, 0);
 
-- 
2.25.1


^ permalink raw reply related	[flat|nested] 13+ messages in thread

* [PATCH v2 3/3] thermal/core: Remove ms based delay fields
  2020-12-16 22:03 [PATCH v2 1/3] thermal/core: Precompute the delays from msecs to jiffies Daniel Lezcano
  2020-12-16 22:03 ` [PATCH v2 2/3] thermal/core: Use precomputed jiffies for the polling Daniel Lezcano
@ 2020-12-16 22:03 ` Daniel Lezcano
  2020-12-17  0:02   ` kernel test robot
                     ` (3 more replies)
  2020-12-16 22:35 ` Peter Kästle
  2020-12-18 15:05 ` [PATCH v2 1/3] thermal/core: Precompute the delays from msecs to jiffies Thara Gopinath
  3 siblings, 4 replies; 13+ messages in thread
From: Daniel Lezcano @ 2020-12-16 22:03 UTC (permalink / raw)
  To: daniel.lezcano, rui.zhang
  Cc: amitk, linux-kernel, linux-pm, Thara Gopinath, Lukasz Luba,
	Peter Kaestle, Hans de Goede, Mark Gross, Support Opensource,
	Eduardo Valentin, Keerthy,
	open list:ACER ASPIRE ONE TEMPERATURE AND FAN DRIVER,
	open list:TI BANDGAP AND THERMAL DRIVER

The code does no longer use the ms unit based fields to set the
delays as they are replaced by the jiffies.

Remove them and replace their user to use the jiffies version instead.

Cc: Thara Gopinath <thara.gopinath@linaro.org>
Signed-off-by: Daniel Lezcano <daniel.lezcano@linaro.org>
Reviewed-by: Lukasz Luba <lukasz.luba@arm.com>
---
 drivers/platform/x86/acerhdf.c                     | 3 ++-
 drivers/thermal/da9062-thermal.c                   | 4 ++--
 drivers/thermal/gov_power_allocator.c              | 2 +-
 drivers/thermal/thermal_core.c                     | 4 +---
 drivers/thermal/ti-soc-thermal/ti-thermal-common.c | 6 ++++--
 include/linux/thermal.h                            | 7 -------
 6 files changed, 10 insertions(+), 16 deletions(-)

diff --git a/drivers/platform/x86/acerhdf.c b/drivers/platform/x86/acerhdf.c
index b6aa6e5514f4..6b8b3ab8db48 100644
--- a/drivers/platform/x86/acerhdf.c
+++ b/drivers/platform/x86/acerhdf.c
@@ -336,7 +336,8 @@ static void acerhdf_check_param(struct thermal_zone_device *thermal)
 			pr_notice("interval changed to: %d\n", interval);
 
 		if (thermal)
-			thermal->polling_delay = interval*1000;
+			thermal->polling_delay_jiffies =
+				round_jiffies(msecs_to_jiffies(interval * 1000));
 
 		prev_interval = interval;
 	}
diff --git a/drivers/thermal/da9062-thermal.c b/drivers/thermal/da9062-thermal.c
index 4d74994f160a..180edec34e07 100644
--- a/drivers/thermal/da9062-thermal.c
+++ b/drivers/thermal/da9062-thermal.c
@@ -95,7 +95,7 @@ static void da9062_thermal_poll_on(struct work_struct *work)
 		thermal_zone_device_update(thermal->zone,
 					   THERMAL_EVENT_UNSPECIFIED);
 
-		delay = msecs_to_jiffies(thermal->zone->passive_delay);
+		delay = thermal->zone->passive_delay_jiffies;
 		queue_delayed_work(system_freezable_wq, &thermal->work, delay);
 		return;
 	}
@@ -245,7 +245,7 @@ static int da9062_thermal_probe(struct platform_device *pdev)
 
 	dev_dbg(&pdev->dev,
 		"TJUNC temperature polling period set at %d ms\n",
-		thermal->zone->passive_delay);
+		jiffies_to_msecs(thermal->zone->passive_delay_jiffies));
 
 	ret = platform_get_irq_byname(pdev, "THERMAL");
 	if (ret < 0) {
diff --git a/drivers/thermal/gov_power_allocator.c b/drivers/thermal/gov_power_allocator.c
index 7a4170a0b51f..f8c3d1e40b86 100644
--- a/drivers/thermal/gov_power_allocator.c
+++ b/drivers/thermal/gov_power_allocator.c
@@ -258,7 +258,7 @@ static u32 pid_controller(struct thermal_zone_device *tz,
 	 * power being applied, slowing down the controller)
 	 */
 	d = mul_frac(tz->tzp->k_d, err - params->prev_err);
-	d = div_frac(d, tz->passive_delay);
+	d = div_frac(d, jiffies_to_msecs(tz->passive_delay_jiffies));
 	params->prev_err = err;
 
 	power_range = p + i + d;
diff --git a/drivers/thermal/thermal_core.c b/drivers/thermal/thermal_core.c
index d96c515af3cb..b2615449b18f 100644
--- a/drivers/thermal/thermal_core.c
+++ b/drivers/thermal/thermal_core.c
@@ -313,7 +313,7 @@ static void monitor_thermal_zone(struct thermal_zone_device *tz)
 
 	if (!stop && tz->passive)
 		thermal_zone_device_set_polling(tz, tz->passive_delay_jiffies);
-	else if (!stop && tz->polling_delay)
+	else if (!stop && tz->polling_delay_jiffies)
 		thermal_zone_device_set_polling(tz, tz->polling_delay_jiffies);
 	else
 		thermal_zone_device_set_polling(tz, 0);
@@ -1307,8 +1307,6 @@ thermal_zone_device_register(const char *type, int trips, int mask,
 	tz->device.class = &thermal_class;
 	tz->devdata = devdata;
 	tz->trips = trips;
-	tz->passive_delay = passive_delay;
-	tz->polling_delay = polling_delay;
 
 	thermal_set_delay_jiffies(&tz->passive_delay_jiffies, passive_delay);
 	thermal_set_delay_jiffies(&tz->polling_delay_jiffies, polling_delay);
diff --git a/drivers/thermal/ti-soc-thermal/ti-thermal-common.c b/drivers/thermal/ti-soc-thermal/ti-thermal-common.c
index 2ce4b19f312a..f84375865c97 100644
--- a/drivers/thermal/ti-soc-thermal/ti-thermal-common.c
+++ b/drivers/thermal/ti-soc-thermal/ti-thermal-common.c
@@ -166,6 +166,7 @@ int ti_thermal_expose_sensor(struct ti_bandgap *bgp, int id,
 			     char *domain)
 {
 	struct ti_thermal_data *data;
+	int interval;
 
 	data = ti_bandgap_get_sensor_data(bgp, id);
 
@@ -183,9 +184,10 @@ int ti_thermal_expose_sensor(struct ti_bandgap *bgp, int id,
 		return PTR_ERR(data->ti_thermal);
 	}
 
+	interval = jiffies_to_msecs(data->ti_thermal->polling_delay_jiffies);
+
 	ti_bandgap_set_sensor_data(bgp, id, data);
-	ti_bandgap_write_update_interval(bgp, data->sensor_id,
-					data->ti_thermal->polling_delay);
+	ti_bandgap_write_update_interval(bgp, data->sensor_id, interval);
 
 	return 0;
 }
diff --git a/include/linux/thermal.h b/include/linux/thermal.h
index d1b82c70de69..1e686404951b 100644
--- a/include/linux/thermal.h
+++ b/include/linux/thermal.h
@@ -115,13 +115,8 @@ struct thermal_cooling_device {
  * @devdata:	private pointer for device private data
  * @trips:	number of trip points the thermal zone supports
  * @trips_disabled;	bitmap for disabled trips
- * @passive_delay:	number of milliseconds to wait between polls when
- *			performing passive cooling.
  * @passive_delay_jiffies: number of jiffies to wait between polls when
  *			performing passive cooling.
- * @polling_delay:	number of milliseconds to wait between polls when
- *			checking whether trip points have been crossed (0 for
- *			interrupt driven systems)
  * @polling_delay_jiffies: number of jiffies to wait between polls when
  *			checking whether trip points have been crossed (0 for
  *			interrupt driven systems)
@@ -162,8 +157,6 @@ struct thermal_zone_device {
 	unsigned long trips_disabled;	/* bitmap for disabled trips */
 	unsigned long passive_delay_jiffies;
 	unsigned long polling_delay_jiffies;
-	int passive_delay;
-	int polling_delay;
 	int temperature;
 	int last_temperature;
 	int emul_temperature;
-- 
2.25.1


^ permalink raw reply related	[flat|nested] 13+ messages in thread

* Re: [PATCH v2 3/3] thermal/core: Remove ms based delay fields
  2020-12-16 22:03 [PATCH v2 1/3] thermal/core: Precompute the delays from msecs to jiffies Daniel Lezcano
  2020-12-16 22:03 ` [PATCH v2 2/3] thermal/core: Use precomputed jiffies for the polling Daniel Lezcano
  2020-12-16 22:03 ` [PATCH v2 3/3] thermal/core: Remove ms based delay fields Daniel Lezcano
@ 2020-12-16 22:35 ` Peter Kästle
  2020-12-17  6:00   ` Daniel Lezcano
  2020-12-18 15:05 ` [PATCH v2 1/3] thermal/core: Precompute the delays from msecs to jiffies Thara Gopinath
  3 siblings, 1 reply; 13+ messages in thread
From: Peter Kästle @ 2020-12-16 22:35 UTC (permalink / raw)
  To: Daniel Lezcano, rui.zhang
  Cc: amitk, linux-kernel, linux-pm, Thara Gopinath, Lukasz Luba,
	Hans de Goede, Mark Gross, Support Opensource, Eduardo Valentin,
	Keerthy, platform-driver-x86, linux-omap

16. Dezember 2020 23:04, "Daniel Lezcano" <daniel.lezcano@linaro.org> schrieb:

> The code does no longer use the ms unit based fields to set the
> delays as they are replaced by the jiffies.
> 
> Remove them and replace their user to use the jiffies version instead.
> 
> Cc: Thara Gopinath <thara.gopinath@linaro.org>
> Signed-off-by: Daniel Lezcano <daniel.lezcano@linaro.org>
> Reviewed-by: Lukasz Luba <lukasz.luba@arm.com>
> ---
> drivers/platform/x86/acerhdf.c | 3 ++-

Reviewed-by: Peter Kästle <peter@piie.net>


> drivers/thermal/da9062-thermal.c | 4 ++--
> drivers/thermal/gov_power_allocator.c | 2 +-
> drivers/thermal/thermal_core.c | 4 +---
> drivers/thermal/ti-soc-thermal/ti-thermal-common.c | 6 ++++--
> include/linux/thermal.h | 7 -------
> 6 files changed, 10 insertions(+), 16 deletions(-)
> 
> diff --git a/drivers/platform/x86/acerhdf.c b/drivers/platform/x86/acerhdf.c
> index b6aa6e5514f4..6b8b3ab8db48 100644
> --- a/drivers/platform/x86/acerhdf.c
> +++ b/drivers/platform/x86/acerhdf.c
> @@ -336,7 +336,8 @@ static void acerhdf_check_param(struct thermal_zone_device *thermal)
> pr_notice("interval changed to: %d\n", interval);
> 
> if (thermal)
> - thermal->polling_delay = interval*1000;
> + thermal->polling_delay_jiffies =
> + round_jiffies(msecs_to_jiffies(interval * 1000));
> 
> prev_interval = interval;
> }
> diff --git a/drivers/thermal/da9062-thermal.c b/drivers/thermal/da9062-thermal.c
> index 4d74994f160a..180edec34e07 100644
> --- a/drivers/thermal/da9062-thermal.c
> +++ b/drivers/thermal/da9062-thermal.c
> @@ -95,7 +95,7 @@ static void da9062_thermal_poll_on(struct work_struct *work)
> thermal_zone_device_update(thermal->zone,
> THERMAL_EVENT_UNSPECIFIED);
> 
> - delay = msecs_to_jiffies(thermal->zone->passive_delay);
> + delay = thermal->zone->passive_delay_jiffies;
> queue_delayed_work(system_freezable_wq, &thermal->work, delay);
> return;
> }
> @@ -245,7 +245,7 @@ static int da9062_thermal_probe(struct platform_device *pdev)
> 
> dev_dbg(&pdev->dev,
> "TJUNC temperature polling period set at %d ms\n",
> - thermal->zone->passive_delay);
> + jiffies_to_msecs(thermal->zone->passive_delay_jiffies));
> 
> ret = platform_get_irq_byname(pdev, "THERMAL");
> if (ret < 0) {
> diff --git a/drivers/thermal/gov_power_allocator.c b/drivers/thermal/gov_power_allocator.c
> index 7a4170a0b51f..f8c3d1e40b86 100644
> --- a/drivers/thermal/gov_power_allocator.c
> +++ b/drivers/thermal/gov_power_allocator.c
> @@ -258,7 +258,7 @@ static u32 pid_controller(struct thermal_zone_device *tz,
> * power being applied, slowing down the controller)
> */
> d = mul_frac(tz->tzp->k_d, err - params->prev_err);
> - d = div_frac(d, tz->passive_delay);
> + d = div_frac(d, jiffies_to_msecs(tz->passive_delay_jiffies));
> params->prev_err = err;
> 
> power_range = p + i + d;
> diff --git a/drivers/thermal/thermal_core.c b/drivers/thermal/thermal_core.c
> index d96c515af3cb..b2615449b18f 100644
> --- a/drivers/thermal/thermal_core.c
> +++ b/drivers/thermal/thermal_core.c
> @@ -313,7 +313,7 @@ static void monitor_thermal_zone(struct thermal_zone_device *tz)
> 
> if (!stop && tz->passive)
> thermal_zone_device_set_polling(tz, tz->passive_delay_jiffies);
> - else if (!stop && tz->polling_delay)
> + else if (!stop && tz->polling_delay_jiffies)
> thermal_zone_device_set_polling(tz, tz->polling_delay_jiffies);
> else
> thermal_zone_device_set_polling(tz, 0);
> @@ -1307,8 +1307,6 @@ thermal_zone_device_register(const char *type, int trips, int mask,
> tz->device.class = &thermal_class;
> tz->devdata = devdata;
> tz->trips = trips;
> - tz->passive_delay = passive_delay;
> - tz->polling_delay = polling_delay;
> 
> thermal_set_delay_jiffies(&tz->passive_delay_jiffies, passive_delay);
> thermal_set_delay_jiffies(&tz->polling_delay_jiffies, polling_delay);
> diff --git a/drivers/thermal/ti-soc-thermal/ti-thermal-common.c
> b/drivers/thermal/ti-soc-thermal/ti-thermal-common.c
> index 2ce4b19f312a..f84375865c97 100644
> --- a/drivers/thermal/ti-soc-thermal/ti-thermal-common.c
> +++ b/drivers/thermal/ti-soc-thermal/ti-thermal-common.c
> @@ -166,6 +166,7 @@ int ti_thermal_expose_sensor(struct ti_bandgap *bgp, int id,
> char *domain)
> {
> struct ti_thermal_data *data;
> + int interval;
> 
> data = ti_bandgap_get_sensor_data(bgp, id);
> 
> @@ -183,9 +184,10 @@ int ti_thermal_expose_sensor(struct ti_bandgap *bgp, int id,
> return PTR_ERR(data->ti_thermal);
> }
> 
> + interval = jiffies_to_msecs(data->ti_thermal->polling_delay_jiffies);
> +
> ti_bandgap_set_sensor_data(bgp, id, data);
> - ti_bandgap_write_update_interval(bgp, data->sensor_id,
> - data->ti_thermal->polling_delay);
> + ti_bandgap_write_update_interval(bgp, data->sensor_id, interval);
> 
> return 0;
> }
> diff --git a/include/linux/thermal.h b/include/linux/thermal.h
> index d1b82c70de69..1e686404951b 100644
> --- a/include/linux/thermal.h
> +++ b/include/linux/thermal.h
> @@ -115,13 +115,8 @@ struct thermal_cooling_device {
> * @devdata: private pointer for device private data
> * @trips: number of trip points the thermal zone supports
> * @trips_disabled; bitmap for disabled trips
> - * @passive_delay: number of milliseconds to wait between polls when
> - * performing passive cooling.
> * @passive_delay_jiffies: number of jiffies to wait between polls when
> * performing passive cooling.
> - * @polling_delay: number of milliseconds to wait between polls when
> - * checking whether trip points have been crossed (0 for
> - * interrupt driven systems)
> * @polling_delay_jiffies: number of jiffies to wait between polls when
> * checking whether trip points have been crossed (0 for
> * interrupt driven systems)
> @@ -162,8 +157,6 @@ struct thermal_zone_device {
> unsigned long trips_disabled; /* bitmap for disabled trips */
> unsigned long passive_delay_jiffies;
> unsigned long polling_delay_jiffies;
> - int passive_delay;
> - int polling_delay;
> int temperature;
> int last_temperature;
> int emul_temperature;
> -- 
> 2.25.1

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH v2 3/3] thermal/core: Remove ms based delay fields
  2020-12-16 22:03 ` [PATCH v2 3/3] thermal/core: Remove ms based delay fields Daniel Lezcano
@ 2020-12-17  0:02   ` kernel test robot
  2020-12-17  0:24   ` kernel test robot
                     ` (2 subsequent siblings)
  3 siblings, 0 replies; 13+ messages in thread
From: kernel test robot @ 2020-12-17  0:02 UTC (permalink / raw)
  To: Daniel Lezcano, rui.zhang
  Cc: kbuild-all, clang-built-linux, amitk, linux-kernel, linux-pm,
	Thara Gopinath, Lukasz Luba, Peter Kaestle, Hans de Goede,
	Mark Gross

[-- Attachment #1: Type: text/plain, Size: 5108 bytes --]

Hi Daniel,

I love your patch! Yet something to improve:

[auto build test ERROR on linus/master]
[also build test ERROR on next-20201215]
[cannot apply to linux/master thermal/next v5.10]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]

url:    https://github.com/0day-ci/linux/commits/Daniel-Lezcano/thermal-core-Precompute-the-delays-from-msecs-to-jiffies/20201217-060807
base:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git d01e7f10dae29eba0f9ada82b65d24e035d5b2f9
config: powerpc-randconfig-r025-20201217 (attached as .config)
compiler: clang version 12.0.0 (https://github.com/llvm/llvm-project 71601d2ac9954cb59c443cb3ae442cb106df35d4)
reproduce (this is a W=1 build):
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # install powerpc cross compiling tool for clang build
        # apt-get install binutils-powerpc-linux-gnu
        # https://github.com/0day-ci/linux/commit/269c49cd4aa4fe5b05d789faa6b974f4a4c85185
        git remote add linux-review https://github.com/0day-ci/linux
        git fetch --no-tags linux-review Daniel-Lezcano/thermal-core-Precompute-the-delays-from-msecs-to-jiffies/20201217-060807
        git checkout 269c49cd4aa4fe5b05d789faa6b974f4a4c85185
        # save the attached .config to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=powerpc 

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>

All errors (new ones prefixed by >>):

>> drivers/thermal/thermal_sysfs.c:236:12: error: no member named 'passive_delay' in 'struct thermal_zone_device'
                   if (!tz->passive_delay)
                        ~~  ^
   drivers/thermal/thermal_sysfs.c:237:8: error: no member named 'passive_delay' in 'struct thermal_zone_device'
                           tz->passive_delay = 1000;
                           ~~  ^
   drivers/thermal/thermal_sysfs.c:241:7: error: no member named 'passive_delay' in 'struct thermal_zone_device'
                   tz->passive_delay = 0;
                   ~~  ^
   3 errors generated.


vim +236 drivers/thermal/thermal_sysfs.c

a369ee88f7f6059 Eduardo Valentin 2016-11-07  218  
a369ee88f7f6059 Eduardo Valentin 2016-11-07  219  static ssize_t
a369ee88f7f6059 Eduardo Valentin 2016-11-07  220  passive_store(struct device *dev, struct device_attribute *attr,
a369ee88f7f6059 Eduardo Valentin 2016-11-07  221  	      const char *buf, size_t count)
a369ee88f7f6059 Eduardo Valentin 2016-11-07  222  {
a369ee88f7f6059 Eduardo Valentin 2016-11-07  223  	struct thermal_zone_device *tz = to_thermal_zone(dev);
a369ee88f7f6059 Eduardo Valentin 2016-11-07  224  	int state;
a369ee88f7f6059 Eduardo Valentin 2016-11-07  225  
a369ee88f7f6059 Eduardo Valentin 2016-11-07  226  	if (sscanf(buf, "%d\n", &state) != 1)
a369ee88f7f6059 Eduardo Valentin 2016-11-07  227  		return -EINVAL;
a369ee88f7f6059 Eduardo Valentin 2016-11-07  228  
a369ee88f7f6059 Eduardo Valentin 2016-11-07  229  	/* sanity check: values below 1000 millicelcius don't make sense
a369ee88f7f6059 Eduardo Valentin 2016-11-07  230  	 * and can cause the system to go into a thermal heart attack
a369ee88f7f6059 Eduardo Valentin 2016-11-07  231  	 */
a369ee88f7f6059 Eduardo Valentin 2016-11-07  232  	if (state && state < 1000)
a369ee88f7f6059 Eduardo Valentin 2016-11-07  233  		return -EINVAL;
a369ee88f7f6059 Eduardo Valentin 2016-11-07  234  
a369ee88f7f6059 Eduardo Valentin 2016-11-07  235  	if (state && !tz->forced_passive) {
a369ee88f7f6059 Eduardo Valentin 2016-11-07 @236  		if (!tz->passive_delay)
a369ee88f7f6059 Eduardo Valentin 2016-11-07  237  			tz->passive_delay = 1000;
a369ee88f7f6059 Eduardo Valentin 2016-11-07  238  		thermal_zone_device_rebind_exception(tz, "Processor",
a369ee88f7f6059 Eduardo Valentin 2016-11-07  239  						     sizeof("Processor"));
a369ee88f7f6059 Eduardo Valentin 2016-11-07  240  	} else if (!state && tz->forced_passive) {
a369ee88f7f6059 Eduardo Valentin 2016-11-07  241  		tz->passive_delay = 0;
a369ee88f7f6059 Eduardo Valentin 2016-11-07  242  		thermal_zone_device_unbind_exception(tz, "Processor",
a369ee88f7f6059 Eduardo Valentin 2016-11-07  243  						     sizeof("Processor"));
a369ee88f7f6059 Eduardo Valentin 2016-11-07  244  	}
a369ee88f7f6059 Eduardo Valentin 2016-11-07  245  
a369ee88f7f6059 Eduardo Valentin 2016-11-07  246  	tz->forced_passive = state;
a369ee88f7f6059 Eduardo Valentin 2016-11-07  247  
a369ee88f7f6059 Eduardo Valentin 2016-11-07  248  	thermal_zone_device_update(tz, THERMAL_EVENT_UNSPECIFIED);
a369ee88f7f6059 Eduardo Valentin 2016-11-07  249  
a369ee88f7f6059 Eduardo Valentin 2016-11-07  250  	return count;
a369ee88f7f6059 Eduardo Valentin 2016-11-07  251  }
a369ee88f7f6059 Eduardo Valentin 2016-11-07  252  

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org

[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 39507 bytes --]

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH v2 3/3] thermal/core: Remove ms based delay fields
  2020-12-16 22:03 ` [PATCH v2 3/3] thermal/core: Remove ms based delay fields Daniel Lezcano
  2020-12-17  0:02   ` kernel test robot
@ 2020-12-17  0:24   ` kernel test robot
  2020-12-17 18:32   ` Hans de Goede
  2020-12-18 10:16   ` Adam Thomson
  3 siblings, 0 replies; 13+ messages in thread
From: kernel test robot @ 2020-12-17  0:24 UTC (permalink / raw)
  To: Daniel Lezcano, rui.zhang
  Cc: kbuild-all, amitk, linux-kernel, linux-pm, Thara Gopinath,
	Lukasz Luba, Peter Kaestle, Hans de Goede, Mark Gross

[-- Attachment #1: Type: text/plain, Size: 4903 bytes --]

Hi Daniel,

I love your patch! Yet something to improve:

[auto build test ERROR on linus/master]
[also build test ERROR on next-20201215]
[cannot apply to linux/master thermal/next v5.10]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]

url:    https://github.com/0day-ci/linux/commits/Daniel-Lezcano/thermal-core-Precompute-the-delays-from-msecs-to-jiffies/20201217-060807
base:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git d01e7f10dae29eba0f9ada82b65d24e035d5b2f9
config: arc-randconfig-r024-20201217 (attached as .config)
compiler: arc-elf-gcc (GCC) 9.3.0
reproduce (this is a W=1 build):
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # https://github.com/0day-ci/linux/commit/269c49cd4aa4fe5b05d789faa6b974f4a4c85185
        git remote add linux-review https://github.com/0day-ci/linux
        git fetch --no-tags linux-review Daniel-Lezcano/thermal-core-Precompute-the-delays-from-msecs-to-jiffies/20201217-060807
        git checkout 269c49cd4aa4fe5b05d789faa6b974f4a4c85185
        # save the attached .config to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross ARCH=arc 

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>

All errors (new ones prefixed by >>):

   drivers/thermal/thermal_sysfs.c: In function 'passive_store':
>> drivers/thermal/thermal_sysfs.c:236:10: error: 'struct thermal_zone_device' has no member named 'passive_delay'
     236 |   if (!tz->passive_delay)
         |          ^~
   drivers/thermal/thermal_sysfs.c:237:6: error: 'struct thermal_zone_device' has no member named 'passive_delay'
     237 |    tz->passive_delay = 1000;
         |      ^~
   drivers/thermal/thermal_sysfs.c:241:5: error: 'struct thermal_zone_device' has no member named 'passive_delay'
     241 |   tz->passive_delay = 0;
         |     ^~


vim +236 drivers/thermal/thermal_sysfs.c

a369ee88f7f6059 Eduardo Valentin 2016-11-07  218  
a369ee88f7f6059 Eduardo Valentin 2016-11-07  219  static ssize_t
a369ee88f7f6059 Eduardo Valentin 2016-11-07  220  passive_store(struct device *dev, struct device_attribute *attr,
a369ee88f7f6059 Eduardo Valentin 2016-11-07  221  	      const char *buf, size_t count)
a369ee88f7f6059 Eduardo Valentin 2016-11-07  222  {
a369ee88f7f6059 Eduardo Valentin 2016-11-07  223  	struct thermal_zone_device *tz = to_thermal_zone(dev);
a369ee88f7f6059 Eduardo Valentin 2016-11-07  224  	int state;
a369ee88f7f6059 Eduardo Valentin 2016-11-07  225  
a369ee88f7f6059 Eduardo Valentin 2016-11-07  226  	if (sscanf(buf, "%d\n", &state) != 1)
a369ee88f7f6059 Eduardo Valentin 2016-11-07  227  		return -EINVAL;
a369ee88f7f6059 Eduardo Valentin 2016-11-07  228  
a369ee88f7f6059 Eduardo Valentin 2016-11-07  229  	/* sanity check: values below 1000 millicelcius don't make sense
a369ee88f7f6059 Eduardo Valentin 2016-11-07  230  	 * and can cause the system to go into a thermal heart attack
a369ee88f7f6059 Eduardo Valentin 2016-11-07  231  	 */
a369ee88f7f6059 Eduardo Valentin 2016-11-07  232  	if (state && state < 1000)
a369ee88f7f6059 Eduardo Valentin 2016-11-07  233  		return -EINVAL;
a369ee88f7f6059 Eduardo Valentin 2016-11-07  234  
a369ee88f7f6059 Eduardo Valentin 2016-11-07  235  	if (state && !tz->forced_passive) {
a369ee88f7f6059 Eduardo Valentin 2016-11-07 @236  		if (!tz->passive_delay)
a369ee88f7f6059 Eduardo Valentin 2016-11-07  237  			tz->passive_delay = 1000;
a369ee88f7f6059 Eduardo Valentin 2016-11-07  238  		thermal_zone_device_rebind_exception(tz, "Processor",
a369ee88f7f6059 Eduardo Valentin 2016-11-07  239  						     sizeof("Processor"));
a369ee88f7f6059 Eduardo Valentin 2016-11-07  240  	} else if (!state && tz->forced_passive) {
a369ee88f7f6059 Eduardo Valentin 2016-11-07  241  		tz->passive_delay = 0;
a369ee88f7f6059 Eduardo Valentin 2016-11-07  242  		thermal_zone_device_unbind_exception(tz, "Processor",
a369ee88f7f6059 Eduardo Valentin 2016-11-07  243  						     sizeof("Processor"));
a369ee88f7f6059 Eduardo Valentin 2016-11-07  244  	}
a369ee88f7f6059 Eduardo Valentin 2016-11-07  245  
a369ee88f7f6059 Eduardo Valentin 2016-11-07  246  	tz->forced_passive = state;
a369ee88f7f6059 Eduardo Valentin 2016-11-07  247  
a369ee88f7f6059 Eduardo Valentin 2016-11-07  248  	thermal_zone_device_update(tz, THERMAL_EVENT_UNSPECIFIED);
a369ee88f7f6059 Eduardo Valentin 2016-11-07  249  
a369ee88f7f6059 Eduardo Valentin 2016-11-07  250  	return count;
a369ee88f7f6059 Eduardo Valentin 2016-11-07  251  }
a369ee88f7f6059 Eduardo Valentin 2016-11-07  252  

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org

[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 24645 bytes --]

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH v2 3/3] thermal/core: Remove ms based delay fields
  2020-12-16 22:35 ` Peter Kästle
@ 2020-12-17  6:00   ` Daniel Lezcano
  0 siblings, 0 replies; 13+ messages in thread
From: Daniel Lezcano @ 2020-12-17  6:00 UTC (permalink / raw)
  To: Peter Kästle, rui.zhang
  Cc: amitk, linux-kernel, linux-pm, Thara Gopinath, Lukasz Luba,
	Hans de Goede, Mark Gross, Support Opensource, Eduardo Valentin,
	Keerthy, platform-driver-x86, linux-omap

On 16/12/2020 23:35, Peter Kästle wrote:
> 16. Dezember 2020 23:04, "Daniel Lezcano" <daniel.lezcano@linaro.org> schrieb:
> 
>> The code does no longer use the ms unit based fields to set the
>> delays as they are replaced by the jiffies.
>>
>> Remove them and replace their user to use the jiffies version instead.
>>
>> Cc: Thara Gopinath <thara.gopinath@linaro.org>
>> Signed-off-by: Daniel Lezcano <daniel.lezcano@linaro.org>
>> Reviewed-by: Lukasz Luba <lukasz.luba@arm.com>
>> ---
>> drivers/platform/x86/acerhdf.c | 3 ++-
> 
> Reviewed-by: Peter Kästle <peter@piie.net>

Thanks for reviewing

  -- Daniel


-- 
<http://www.linaro.org/> Linaro.org │ Open source software for ARM SoCs

Follow Linaro:  <http://www.facebook.com/pages/Linaro> Facebook |
<http://twitter.com/#!/linaroorg> Twitter |
<http://www.linaro.org/linaro-blog/> Blog

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH v2 3/3] thermal/core: Remove ms based delay fields
  2020-12-16 22:03 ` [PATCH v2 3/3] thermal/core: Remove ms based delay fields Daniel Lezcano
  2020-12-17  0:02   ` kernel test robot
  2020-12-17  0:24   ` kernel test robot
@ 2020-12-17 18:32   ` Hans de Goede
  2020-12-17 19:25     ` Daniel Lezcano
  2020-12-18 10:16   ` Adam Thomson
  3 siblings, 1 reply; 13+ messages in thread
From: Hans de Goede @ 2020-12-17 18:32 UTC (permalink / raw)
  To: Daniel Lezcano, rui.zhang
  Cc: amitk, linux-kernel, linux-pm, Thara Gopinath, Lukasz Luba,
	Peter Kaestle, Mark Gross, Support Opensource, Eduardo Valentin,
	Keerthy, open list:ACER ASPIRE ONE TEMPERATURE AND FAN DRIVER,
	open list:TI BANDGAP AND THERMAL DRIVER

Hi Daniel,

On 12/16/20 11:03 PM, Daniel Lezcano wrote:
> The code does no longer use the ms unit based fields to set the
> delays as they are replaced by the jiffies.
> 
> Remove them and replace their user to use the jiffies version instead.
> 
> Cc: Thara Gopinath <thara.gopinath@linaro.org>
> Signed-off-by: Daniel Lezcano <daniel.lezcano@linaro.org>
> Reviewed-by: Lukasz Luba <lukasz.luba@arm.com>

I assume that you will merge this through the thermal tree,
here is my ack for doing so for the pdx86 bits:

Acked-by: Hans de Goede <hdegoede@redhat.com>

Regards,

Hans

> ---
>  drivers/platform/x86/acerhdf.c                     | 3 ++-
>  drivers/thermal/da9062-thermal.c                   | 4 ++--
>  drivers/thermal/gov_power_allocator.c              | 2 +-
>  drivers/thermal/thermal_core.c                     | 4 +---
>  drivers/thermal/ti-soc-thermal/ti-thermal-common.c | 6 ++++--
>  include/linux/thermal.h                            | 7 -------
>  6 files changed, 10 insertions(+), 16 deletions(-)
> 
> diff --git a/drivers/platform/x86/acerhdf.c b/drivers/platform/x86/acerhdf.c
> index b6aa6e5514f4..6b8b3ab8db48 100644
> --- a/drivers/platform/x86/acerhdf.c
> +++ b/drivers/platform/x86/acerhdf.c
> @@ -336,7 +336,8 @@ static void acerhdf_check_param(struct thermal_zone_device *thermal)
>  			pr_notice("interval changed to: %d\n", interval);
>  
>  		if (thermal)
> -			thermal->polling_delay = interval*1000;
> +			thermal->polling_delay_jiffies =
> +				round_jiffies(msecs_to_jiffies(interval * 1000));
>  
>  		prev_interval = interval;
>  	}
> diff --git a/drivers/thermal/da9062-thermal.c b/drivers/thermal/da9062-thermal.c
> index 4d74994f160a..180edec34e07 100644
> --- a/drivers/thermal/da9062-thermal.c
> +++ b/drivers/thermal/da9062-thermal.c
> @@ -95,7 +95,7 @@ static void da9062_thermal_poll_on(struct work_struct *work)
>  		thermal_zone_device_update(thermal->zone,
>  					   THERMAL_EVENT_UNSPECIFIED);
>  
> -		delay = msecs_to_jiffies(thermal->zone->passive_delay);
> +		delay = thermal->zone->passive_delay_jiffies;
>  		queue_delayed_work(system_freezable_wq, &thermal->work, delay);
>  		return;
>  	}
> @@ -245,7 +245,7 @@ static int da9062_thermal_probe(struct platform_device *pdev)
>  
>  	dev_dbg(&pdev->dev,
>  		"TJUNC temperature polling period set at %d ms\n",
> -		thermal->zone->passive_delay);
> +		jiffies_to_msecs(thermal->zone->passive_delay_jiffies));
>  
>  	ret = platform_get_irq_byname(pdev, "THERMAL");
>  	if (ret < 0) {
> diff --git a/drivers/thermal/gov_power_allocator.c b/drivers/thermal/gov_power_allocator.c
> index 7a4170a0b51f..f8c3d1e40b86 100644
> --- a/drivers/thermal/gov_power_allocator.c
> +++ b/drivers/thermal/gov_power_allocator.c
> @@ -258,7 +258,7 @@ static u32 pid_controller(struct thermal_zone_device *tz,
>  	 * power being applied, slowing down the controller)
>  	 */
>  	d = mul_frac(tz->tzp->k_d, err - params->prev_err);
> -	d = div_frac(d, tz->passive_delay);
> +	d = div_frac(d, jiffies_to_msecs(tz->passive_delay_jiffies));
>  	params->prev_err = err;
>  
>  	power_range = p + i + d;
> diff --git a/drivers/thermal/thermal_core.c b/drivers/thermal/thermal_core.c
> index d96c515af3cb..b2615449b18f 100644
> --- a/drivers/thermal/thermal_core.c
> +++ b/drivers/thermal/thermal_core.c
> @@ -313,7 +313,7 @@ static void monitor_thermal_zone(struct thermal_zone_device *tz)
>  
>  	if (!stop && tz->passive)
>  		thermal_zone_device_set_polling(tz, tz->passive_delay_jiffies);
> -	else if (!stop && tz->polling_delay)
> +	else if (!stop && tz->polling_delay_jiffies)
>  		thermal_zone_device_set_polling(tz, tz->polling_delay_jiffies);
>  	else
>  		thermal_zone_device_set_polling(tz, 0);
> @@ -1307,8 +1307,6 @@ thermal_zone_device_register(const char *type, int trips, int mask,
>  	tz->device.class = &thermal_class;
>  	tz->devdata = devdata;
>  	tz->trips = trips;
> -	tz->passive_delay = passive_delay;
> -	tz->polling_delay = polling_delay;
>  
>  	thermal_set_delay_jiffies(&tz->passive_delay_jiffies, passive_delay);
>  	thermal_set_delay_jiffies(&tz->polling_delay_jiffies, polling_delay);
> diff --git a/drivers/thermal/ti-soc-thermal/ti-thermal-common.c b/drivers/thermal/ti-soc-thermal/ti-thermal-common.c
> index 2ce4b19f312a..f84375865c97 100644
> --- a/drivers/thermal/ti-soc-thermal/ti-thermal-common.c
> +++ b/drivers/thermal/ti-soc-thermal/ti-thermal-common.c
> @@ -166,6 +166,7 @@ int ti_thermal_expose_sensor(struct ti_bandgap *bgp, int id,
>  			     char *domain)
>  {
>  	struct ti_thermal_data *data;
> +	int interval;
>  
>  	data = ti_bandgap_get_sensor_data(bgp, id);
>  
> @@ -183,9 +184,10 @@ int ti_thermal_expose_sensor(struct ti_bandgap *bgp, int id,
>  		return PTR_ERR(data->ti_thermal);
>  	}
>  
> +	interval = jiffies_to_msecs(data->ti_thermal->polling_delay_jiffies);
> +
>  	ti_bandgap_set_sensor_data(bgp, id, data);
> -	ti_bandgap_write_update_interval(bgp, data->sensor_id,
> -					data->ti_thermal->polling_delay);
> +	ti_bandgap_write_update_interval(bgp, data->sensor_id, interval);
>  
>  	return 0;
>  }
> diff --git a/include/linux/thermal.h b/include/linux/thermal.h
> index d1b82c70de69..1e686404951b 100644
> --- a/include/linux/thermal.h
> +++ b/include/linux/thermal.h
> @@ -115,13 +115,8 @@ struct thermal_cooling_device {
>   * @devdata:	private pointer for device private data
>   * @trips:	number of trip points the thermal zone supports
>   * @trips_disabled;	bitmap for disabled trips
> - * @passive_delay:	number of milliseconds to wait between polls when
> - *			performing passive cooling.
>   * @passive_delay_jiffies: number of jiffies to wait between polls when
>   *			performing passive cooling.
> - * @polling_delay:	number of milliseconds to wait between polls when
> - *			checking whether trip points have been crossed (0 for
> - *			interrupt driven systems)
>   * @polling_delay_jiffies: number of jiffies to wait between polls when
>   *			checking whether trip points have been crossed (0 for
>   *			interrupt driven systems)
> @@ -162,8 +157,6 @@ struct thermal_zone_device {
>  	unsigned long trips_disabled;	/* bitmap for disabled trips */
>  	unsigned long passive_delay_jiffies;
>  	unsigned long polling_delay_jiffies;
> -	int passive_delay;
> -	int polling_delay;
>  	int temperature;
>  	int last_temperature;
>  	int emul_temperature;
> 


^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH v2 3/3] thermal/core: Remove ms based delay fields
  2020-12-17 18:32   ` Hans de Goede
@ 2020-12-17 19:25     ` Daniel Lezcano
  0 siblings, 0 replies; 13+ messages in thread
From: Daniel Lezcano @ 2020-12-17 19:25 UTC (permalink / raw)
  To: Hans de Goede, rui.zhang
  Cc: amitk, linux-kernel, linux-pm, Thara Gopinath, Lukasz Luba,
	Peter Kaestle, Mark Gross, Support Opensource, Eduardo Valentin,
	Keerthy, open list:ACER ASPIRE ONE TEMPERATURE AND FAN DRIVER,
	open list:TI BANDGAP AND THERMAL DRIVER

On 17/12/2020 19:32, Hans de Goede wrote:
> Hi Daniel,
> 
> On 12/16/20 11:03 PM, Daniel Lezcano wrote:
>> The code does no longer use the ms unit based fields to set the
>> delays as they are replaced by the jiffies.
>>
>> Remove them and replace their user to use the jiffies version instead.
>>
>> Cc: Thara Gopinath <thara.gopinath@linaro.org>
>> Signed-off-by: Daniel Lezcano <daniel.lezcano@linaro.org>
>> Reviewed-by: Lukasz Luba <lukasz.luba@arm.com>
> 
> I assume that you will merge this through the thermal tree,
> here is my ack for doing so for the pdx86 bits:
> 
> Acked-by: Hans de Goede <hdegoede@redhat.com>

Thanks!


-- 
<http://www.linaro.org/> Linaro.org │ Open source software for ARM SoCs

Follow Linaro:  <http://www.facebook.com/pages/Linaro> Facebook |
<http://twitter.com/#!/linaroorg> Twitter |
<http://www.linaro.org/linaro-blog/> Blog

^ permalink raw reply	[flat|nested] 13+ messages in thread

* RE: [PATCH v2 3/3] thermal/core: Remove ms based delay fields
  2020-12-16 22:03 ` [PATCH v2 3/3] thermal/core: Remove ms based delay fields Daniel Lezcano
                     ` (2 preceding siblings ...)
  2020-12-17 18:32   ` Hans de Goede
@ 2020-12-18 10:16   ` Adam Thomson
  2020-12-18 10:45     ` Daniel Lezcano
  3 siblings, 1 reply; 13+ messages in thread
From: Adam Thomson @ 2020-12-18 10:16 UTC (permalink / raw)
  To: Daniel Lezcano, rui.zhang
  Cc: amitk, linux-kernel, linux-pm, Thara Gopinath, Lukasz Luba,
	Peter Kaestle, Hans de Goede, Mark Gross, Support Opensource,
	Eduardo Valentin, Keerthy,
	open list:ACER ASPIRE ONE TEMPERATURE AND FAN DRIVER,
	open list:TI BANDGAP AND THERMAL DRIVER

On 16 December 2020 22:04, Daniel Lezcano wrote:

> The code does no longer use the ms unit based fields to set the
> delays as they are replaced by the jiffies.
> 
> Remove them and replace their user to use the jiffies version instead.
> 
> Cc: Thara Gopinath <thara.gopinath@linaro.org>
> Signed-off-by: Daniel Lezcano <daniel.lezcano@linaro.org>
> Reviewed-by: Lukasz Luba <lukasz.luba@arm.com>

For DA9062: Reviewed-by: Adam Thomson <Adam.Thomson.Opensource@diasemi.com>

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH v2 3/3] thermal/core: Remove ms based delay fields
  2020-12-18 10:16   ` Adam Thomson
@ 2020-12-18 10:45     ` Daniel Lezcano
  0 siblings, 0 replies; 13+ messages in thread
From: Daniel Lezcano @ 2020-12-18 10:45 UTC (permalink / raw)
  To: Adam Thomson, rui.zhang
  Cc: amitk, linux-kernel, linux-pm, Thara Gopinath, Lukasz Luba,
	Peter Kaestle, Hans de Goede, Mark Gross, Support Opensource,
	Eduardo Valentin, Keerthy,
	open list:ACER ASPIRE ONE TEMPERATURE AND FAN DRIVER,
	open list:TI BANDGAP AND THERMAL DRIVER

On 18/12/2020 11:16, Adam Thomson wrote:
> On 16 December 2020 22:04, Daniel Lezcano wrote:
> 
>> The code does no longer use the ms unit based fields to set the
>> delays as they are replaced by the jiffies.
>>
>> Remove them and replace their user to use the jiffies version instead.
>>
>> Cc: Thara Gopinath <thara.gopinath@linaro.org>
>> Signed-off-by: Daniel Lezcano <daniel.lezcano@linaro.org>
>> Reviewed-by: Lukasz Luba <lukasz.luba@arm.com>
> 
> For DA9062: Reviewed-by: Adam Thomson <Adam.Thomson.Opensource@diasemi.com>

Thanks !


-- 
<http://www.linaro.org/> Linaro.org │ Open source software for ARM SoCs

Follow Linaro:  <http://www.facebook.com/pages/Linaro> Facebook |
<http://twitter.com/#!/linaroorg> Twitter |
<http://www.linaro.org/linaro-blog/> Blog

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH v2 1/3] thermal/core: Precompute the delays from msecs to jiffies
  2020-12-16 22:03 [PATCH v2 1/3] thermal/core: Precompute the delays from msecs to jiffies Daniel Lezcano
                   ` (2 preceding siblings ...)
  2020-12-16 22:35 ` Peter Kästle
@ 2020-12-18 15:05 ` Thara Gopinath
  3 siblings, 0 replies; 13+ messages in thread
From: Thara Gopinath @ 2020-12-18 15:05 UTC (permalink / raw)
  To: Daniel Lezcano, rui.zhang; +Cc: amitk, linux-kernel, linux-pm, Lukasz Luba



On 12/16/20 5:03 PM, Daniel Lezcano wrote:
> The delays are stored in ms units and when the polling function is
> called this delay is converted into jiffies at each call.
> 
> Instead of doing the conversion again and again, compute the jiffies
> at init time and use the value directly when setting the polling.
> 
> Cc: Thara Gopinath <thara.gopinath@linaro.org>
> Signed-off-by: Daniel Lezcano <daniel.lezcano@linaro.org>
> Reviewed-by: Lukasz Luba <lukasz.luba@arm.com>
> ---
>   drivers/thermal/thermal_core.c    | 3 +++
>   drivers/thermal/thermal_core.h    | 1 +
>   drivers/thermal/thermal_helpers.c | 7 +++++++
>   include/linux/thermal.h           | 7 +++++++
>   4 files changed, 18 insertions(+)

Reviewed-by: Thara Gopinath <thara.gopinath@linaro.org>

> 
> diff --git a/drivers/thermal/thermal_core.c b/drivers/thermal/thermal_core.c
> index bcc2ea4f5482..2c41d4a0923f 100644
> --- a/drivers/thermal/thermal_core.c
> +++ b/drivers/thermal/thermal_core.c
> @@ -1315,6 +1315,9 @@ thermal_zone_device_register(const char *type, int trips, int mask,
>   	tz->passive_delay = passive_delay;
>   	tz->polling_delay = polling_delay;
>   
> +	thermal_set_delay_jiffies(&tz->passive_delay_jiffies, passive_delay);
> +	thermal_set_delay_jiffies(&tz->polling_delay_jiffies, polling_delay);
> +
>   	/* sys I/F */
>   	/* Add nodes that are always present via .groups */
>   	result = thermal_zone_create_device_groups(tz, mask);
> diff --git a/drivers/thermal/thermal_core.h b/drivers/thermal/thermal_core.h
> index e50c6b2909fe..90f9a80c8b23 100644
> --- a/drivers/thermal/thermal_core.h
> +++ b/drivers/thermal/thermal_core.h
> @@ -123,6 +123,7 @@ int thermal_build_list_of_policies(char *buf);
>   
>   /* Helpers */
>   void thermal_zone_set_trips(struct thermal_zone_device *tz);
> +void thermal_set_delay_jiffies(unsigned long *delay_jiffies, int delay_ms);
>   
>   /* sysfs I/F */
>   int thermal_zone_create_device_groups(struct thermal_zone_device *, int);
> diff --git a/drivers/thermal/thermal_helpers.c b/drivers/thermal/thermal_helpers.c
> index c94bc824e5d3..7f50f412e02a 100644
> --- a/drivers/thermal/thermal_helpers.c
> +++ b/drivers/thermal/thermal_helpers.c
> @@ -175,6 +175,13 @@ void thermal_zone_set_trips(struct thermal_zone_device *tz)
>   	mutex_unlock(&tz->lock);
>   }
>   
> +void thermal_set_delay_jiffies(unsigned long *delay_jiffies, int delay_ms)
> +{
> +	*delay_jiffies = msecs_to_jiffies(delay_ms);
> +	if (delay_ms > 1000)
> +		*delay_jiffies = round_jiffies(*delay_jiffies);
> +}
> +
>   static void thermal_cdev_set_cur_state(struct thermal_cooling_device *cdev,
>   				       int target)
>   {
> diff --git a/include/linux/thermal.h b/include/linux/thermal.h
> index 060a2160add4..d1b82c70de69 100644
> --- a/include/linux/thermal.h
> +++ b/include/linux/thermal.h
> @@ -117,9 +117,14 @@ struct thermal_cooling_device {
>    * @trips_disabled;	bitmap for disabled trips
>    * @passive_delay:	number of milliseconds to wait between polls when
>    *			performing passive cooling.
> + * @passive_delay_jiffies: number of jiffies to wait between polls when
> + *			performing passive cooling.
>    * @polling_delay:	number of milliseconds to wait between polls when
>    *			checking whether trip points have been crossed (0 for
>    *			interrupt driven systems)
> + * @polling_delay_jiffies: number of jiffies to wait between polls when
> + *			checking whether trip points have been crossed (0 for
> + *			interrupt driven systems)
>    * @temperature:	current temperature.  This is only for core code,
>    *			drivers should use thermal_zone_get_temp() to get the
>    *			current temperature
> @@ -155,6 +160,8 @@ struct thermal_zone_device {
>   	void *devdata;
>   	int trips;
>   	unsigned long trips_disabled;	/* bitmap for disabled trips */
> +	unsigned long passive_delay_jiffies;
> +	unsigned long polling_delay_jiffies;
>   	int passive_delay;
>   	int polling_delay;
>   	int temperature;
> 

-- 
Warm Regards
Thara

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH v2 2/3] thermal/core: Use precomputed jiffies for the polling
  2020-12-16 22:03 ` [PATCH v2 2/3] thermal/core: Use precomputed jiffies for the polling Daniel Lezcano
@ 2020-12-18 15:06   ` Thara Gopinath
  0 siblings, 0 replies; 13+ messages in thread
From: Thara Gopinath @ 2020-12-18 15:06 UTC (permalink / raw)
  To: Daniel Lezcano, rui.zhang; +Cc: amitk, linux-kernel, linux-pm, Lukasz Luba



On 12/16/20 5:03 PM, Daniel Lezcano wrote:
> The delays are also stored in jiffies based unit. Use them instead of
> the ms.
> 
> Cc: Thara Gopinath <thara.gopinath@linaro.org>
> Signed-off-by: Daniel Lezcano <daniel.lezcano@linaro.org>
> Reviewed-by: Lukasz Luba <lukasz.luba@arm.com>
> ---
>   drivers/thermal/thermal_core.c | 15 +++++----------
>   1 file changed, 5 insertions(+), 10 deletions(-)

Reviewed-by: Thara Gopinath <thara.gopinath@linaro.org>

> 
> diff --git a/drivers/thermal/thermal_core.c b/drivers/thermal/thermal_core.c
> index 2c41d4a0923f..d96c515af3cb 100644
> --- a/drivers/thermal/thermal_core.c
> +++ b/drivers/thermal/thermal_core.c
> @@ -289,16 +289,11 @@ static int __init thermal_register_governors(void)
>    * - Critical trip point will cause a system shutdown.
>    */
>   static void thermal_zone_device_set_polling(struct thermal_zone_device *tz,
> -					    int delay)
> +					    unsigned long delay)
>   {
> -	if (delay > 1000)
> +	if (delay)
>   		mod_delayed_work(system_freezable_power_efficient_wq,
> -				 &tz->poll_queue,
> -				 round_jiffies(msecs_to_jiffies(delay)));
> -	else if (delay)
> -		mod_delayed_work(system_freezable_power_efficient_wq,
> -				 &tz->poll_queue,
> -				 msecs_to_jiffies(delay));
> +				 &tz->poll_queue, delay);
>   	else
>   		cancel_delayed_work(&tz->poll_queue);
>   }
> @@ -317,9 +312,9 @@ static void monitor_thermal_zone(struct thermal_zone_device *tz)
>   	mutex_lock(&tz->lock);
>   
>   	if (!stop && tz->passive)
> -		thermal_zone_device_set_polling(tz, tz->passive_delay);
> +		thermal_zone_device_set_polling(tz, tz->passive_delay_jiffies);
>   	else if (!stop && tz->polling_delay)
> -		thermal_zone_device_set_polling(tz, tz->polling_delay);
> +		thermal_zone_device_set_polling(tz, tz->polling_delay_jiffies);
>   	else
>   		thermal_zone_device_set_polling(tz, 0);
>   
> 

-- 
Warm Regards
Thara

^ permalink raw reply	[flat|nested] 13+ messages in thread

end of thread, other threads:[~2020-12-18 15:07 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-12-16 22:03 [PATCH v2 1/3] thermal/core: Precompute the delays from msecs to jiffies Daniel Lezcano
2020-12-16 22:03 ` [PATCH v2 2/3] thermal/core: Use precomputed jiffies for the polling Daniel Lezcano
2020-12-18 15:06   ` Thara Gopinath
2020-12-16 22:03 ` [PATCH v2 3/3] thermal/core: Remove ms based delay fields Daniel Lezcano
2020-12-17  0:02   ` kernel test robot
2020-12-17  0:24   ` kernel test robot
2020-12-17 18:32   ` Hans de Goede
2020-12-17 19:25     ` Daniel Lezcano
2020-12-18 10:16   ` Adam Thomson
2020-12-18 10:45     ` Daniel Lezcano
2020-12-16 22:35 ` Peter Kästle
2020-12-17  6:00   ` Daniel Lezcano
2020-12-18 15:05 ` [PATCH v2 1/3] thermal/core: Precompute the delays from msecs to jiffies Thara Gopinath

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).