Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1341359 > unrolled thread

[RFC][PATCH] thermal: add sysfs_notify on some attributes

Started bySrikar Srimath Tirumala <srikars@nvidia.com>
First post2016-02-24 05:20 +0100
Last post2016-02-26 01:30 +0100
Articles 3 — 2 participants

Back to article view | Back to linux.kernel


Contents

  [RFC][PATCH] thermal: add sysfs_notify on some attributes Srikar Srimath Tirumala <srikars@nvidia.com> - 2016-02-24 05:20 +0100
    Re: [RFC][PATCH] thermal: add sysfs_notify on some attributes "Pandruvada, Srinivas" <srinivas.pandruvada@intel.com> - 2016-02-24 21:30 +0100
      Re: [RFC][PATCH] thermal: add sysfs_notify on some attributes Srikar Srimath Tirumala <srikars@nvidia.com> - 2016-02-26 01:30 +0100

#1341359 — [RFC][PATCH] thermal: add sysfs_notify on some attributes

FromSrikar Srimath Tirumala <srikars@nvidia.com>
Date2016-02-24 05:20 +0100
Subject[RFC][PATCH] thermal: add sysfs_notify on some attributes
Message-ID<r5z5G-7tx-57@gated-at.bofh.it>
Add a sysfs_notify on thermal_zone*/temp and cooling_device*/
cur_state whenever a passive or critical trip is triggered.

This change allows usermode apps to register itself to get notified,
when certain thermal conditions occur and reduce their workload.
This workload throttling can reduce\prevent throttling of hardware
clocks while allowing some other critical apps to run longer reliably.

Signed-off-by: Srikar Srimath Tirumala <srikars@nvidia.com>
---
 drivers/thermal/thermal_core.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/drivers/thermal/thermal_core.c b/drivers/thermal/thermal_core.c
index a0a8fd1..d8d257d 100644
--- a/drivers/thermal/thermal_core.c
+++ b/drivers/thermal/thermal_core.c
@@ -567,6 +567,8 @@ void thermal_zone_device_update(struct thermal_zone_device *tz)
 
 	for (count = 0; count < tz->trips; count++)
 		handle_thermal_trip(tz, count);
+
+	sysfs_notify(&tz->device.kobj, NULL, "temp");
 }
 EXPORT_SYMBOL_GPL(thermal_zone_device_update);
 
@@ -1638,6 +1640,7 @@ void thermal_cdev_update(struct thermal_cooling_device *cdev)
 	cdev->updated = true;
 	trace_cdev_update(cdev, target);
 	dev_dbg(&cdev->device, "set to state %lu\n", target);
+	sysfs_notify(&cdev->device.kobj, NULL, "cur_state");
 }
 EXPORT_SYMBOL(thermal_cdev_update);
 
-- 
2.1.4

[toc] | [next] | [standalone]


#1342425

From"Pandruvada, Srinivas" <srinivas.pandruvada@intel.com>
Date2016-02-24 21:30 +0100
Message-ID<r5Oen-1hM-21@gated-at.bofh.it>
In reply to#1341359
On Tue, 2016-02-23 at 20:11 -0800, Srikar Srimath Tirumala wrote:
> Add a sysfs_notify on thermal_zone*/temp and cooling_device*/
> cur_state whenever a passive or critical trip is triggered.
> 
> This change allows usermode apps to register itself to get notified,
> when certain thermal conditions occur and reduce their workload.
> This workload throttling can reduce\prevent throttling of hardware
> clocks while allowing some other critical apps to run longer
> reliably.
> Signed-off-by: Srikar Srimath Tirumala <srikars@nvidia.com>
> ---
>  drivers/thermal/thermal_core.c | 3 +++
>  1 file changed, 3 insertions(+)
> 
> diff --git a/drivers/thermal/thermal_core.c
> b/drivers/thermal/thermal_core.c
> index a0a8fd1..d8d257d 100644
> --- a/drivers/thermal/thermal_core.c
> +++ b/drivers/thermal/thermal_core.c
> @@ -567,6 +567,8 @@ void thermal_zone_device_update(struct
> thermal_zone_device *tz)
>  
>  	for (count = 0; count < tz->trips; count++)
>  		handle_thermal_trip(tz, count);
> +
> +	sysfs_notify(&tz->device.kobj, NULL, "temp");
When user space governor is used this will result in two notifications
to user space.
Also you want when a trip is violated. For some driver there will be
too many calls from irq thread, so you may want in handle_thermal_trip
when a trip is violated.

Thanks,
Srinivas
>  }
>  EXPORT_SYMBOL_GPL(thermal_zone_device_update);
>  
> @@ -1638,6 +1640,7 @@ void thermal_cdev_update(struct
> thermal_cooling_device *cdev)
>  	cdev->updated = true;
>  	trace_cdev_update(cdev, target);
>  	dev_dbg(&cdev->device, "set to state %lu\n", target);
> +	sysfs_notify(&cdev->device.kobj, NULL, "cur_state");
>  }
>  EXPORT_SYMBOL(thermal_cdev_update);
>  

[toc] | [prev] | [next] | [standalone]


#1343625

FromSrikar Srimath Tirumala <srikars@nvidia.com>
Date2016-02-26 01:30 +0100
Message-ID<r6esa-3q3-5@gated-at.bofh.it>
In reply to#1342425
On 02/24/2016 12:24 PM, Pandruvada, Srinivas wrote:
> On Tue, 2016-02-23 at 20:11 -0800, Srikar Srimath Tirumala wrote:
>> Add a sysfs_notify on thermal_zone*/temp and cooling_device*/
>> cur_state whenever a passive or critical trip is triggered.
>>
>> This change allows usermode apps to register itself to get notified,
>> when certain thermal conditions occur and reduce their workload.
>> This workload throttling can reduce\prevent throttling of hardware
>> clocks while allowing some other critical apps to run longer
>> reliably.
>> Signed-off-by: Srikar Srimath Tirumala <srikars@nvidia.com>
>> ---
>>   drivers/thermal/thermal_core.c | 3 +++
>>   1 file changed, 3 insertions(+)
>>
>> diff --git a/drivers/thermal/thermal_core.c
>> b/drivers/thermal/thermal_core.c
>> index a0a8fd1..d8d257d 100644
>> --- a/drivers/thermal/thermal_core.c
>> +++ b/drivers/thermal/thermal_core.c
>> @@ -567,6 +567,8 @@ void thermal_zone_device_update(struct
>> thermal_zone_device *tz)
>>
>>   	for (count = 0; count < tz->trips; count++)
>>   		handle_thermal_trip(tz, count);
>> +
>> +	sysfs_notify(&tz->device.kobj, NULL, "temp");
> When user space governor is used this will result in two notifications
> to user space.
Agreed, when the first trip point is violated it would result in two
notifications. But this change was also supposed to address the cooling
cur state change that results from governor throttling after a trip
point is violated. I realize this intent was not communicated well in
the commit message, Patch V2 will fix it.
> Also you want when a trip is violated. For some driver there will be
> too many calls from irq thread, so you may want in handle_thermal_trip
> when a trip is violated.
Agreed, Patch V2 will do the notify only once per thermal zone and only
when there is a trip violation.
>
> Thanks,
> Srinivas
>>   }
>>   EXPORT_SYMBOL_GPL(thermal_zone_device_update);
>>
>> @@ -1638,6 +1640,7 @@ void thermal_cdev_update(struct
>> thermal_cooling_device *cdev)
>>   	cdev->updated = true;
>>   	trace_cdev_update(cdev, target);
>>   	dev_dbg(&cdev->device, "set to state %lu\n", target);
>> +	sysfs_notify(&cdev->device.kobj, NULL, "cur_state");
>>   }
>>   EXPORT_SYMBOL(thermal_cdev_update);
>>
Thanks for your inputs Srinivas, please take a look at Patch V2 that
addresses your comments.
Best Regards
Srikar

[toc] | [prev] | [standalone]


Back to top | Article view | linux.kernel


csiph-web