[v2,3/3] thermal/core: Remove ms based delay fields
diff mbox series

Message ID 20201216220337.839878-3-daniel.lezcano@linaro.org
State Accepted
Commit b39d2dd5b5ed08d15711aefd5afd72bd87387c64
Headers show
Series
  • [v2,1/3] thermal/core: Precompute the delays from msecs to jiffies
Related show

Commit Message

Daniel Lezcano Dec. 16, 2020, 10:03 p.m. UTC
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(-)

Comments

Peter Kästle Dec. 16, 2020, 10:35 p.m. UTC | #1
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
kernel test robot Dec. 17, 2020, 12:02 a.m. UTC | #2
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
kernel test robot Dec. 17, 2020, 12:24 a.m. UTC | #3
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
Daniel Lezcano Dec. 17, 2020, 6 a.m. UTC | #4
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
Hans de Goede Dec. 17, 2020, 6:32 p.m. UTC | #5
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;
>
Daniel Lezcano Dec. 17, 2020, 7:25 p.m. UTC | #6
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!
Adam Thomson Dec. 18, 2020, 10:16 a.m. UTC | #7
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>
Daniel Lezcano Dec. 18, 2020, 10:45 a.m. UTC | #8
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 !

Patch
diff mbox series

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;