All of lore.kernel.org
 help / color / mirror / Atom feed
From: Nitin Garg <nitin.garg@nxp.com>
To: Daniel Lezcano <daniel.lezcano@linaro.org>,
	Alexander Stein <alexander.stein@ew.tq-group.com>,
	"Rafael J . Wysocki" <rafael@kernel.org>,
	Amit Kucheria <amitk@kernel.org>, Zhang Rui <rui.zhang@intel.com>,
	Shawn Guo <shawnguo@kernel.org>,
	Sascha Hauer <s.hauer@pengutronix.de>,
	Fabio Estevam <festevam@gmail.com>
Cc: "linux-pm@vger.kernel.org" <linux-pm@vger.kernel.org>,
	"linux-arm-kernel@lists.infradead.org" 
	<linux-arm-kernel@lists.infradead.org>
Subject: RE: [PATCH 2/2] thermal/drivers/thermal_helpers: Adjust output format
Date: Tue, 10 May 2022 22:48:00 +0000	[thread overview]
Message-ID: <AM9PR04MB81964FA6990F9E19F39E2A399AC99@AM9PR04MB8196.eurprd04.prod.outlook.com> (raw)
In-Reply-To: <82d08ff0-41bf-d249-1216-0da3f0cdc5b9@linaro.org>


On 08/04/2022 13:09, Alexander Stein wrote:
>> Outputs like this where -1 is printed as unsigned is somewhat misleading
>>   thermal thermal_zone1: Trip3[type=0,temp=48000]:trend=4,throttle=1
>>   thermal cooling_device3: cur_state=1
>>   thermal cooling_device3: old_target=-1, target=2
>>   thermal cooling_device3: zone1->target=1
>>   thermal cooling_device3: zone1->target=2
>>   thermal cooling_device3: zone1->target=18446744073709551615
>>   thermal cooling_device3: set to state 2
>> 
>> With THERMAL_NO_TARGET assigning -1 as unsigned it make sense to print
>> the target as signed integer, even if the type is actually unsigned.
>> 
>> Signed-off-by: Alexander Stein <alexander.stein@ew.tq-group.com>
>> ---
>> An alternative would be to change thermal_instance::target from unsigned
>> long to long, but this would entail a lot of API & driver changes as well
>> which looks less intriguing.
>> 
>>   drivers/thermal/thermal_helpers.c | 2 +-
>>   1 file changed, 1 insertion(+), 1 deletion(-)
>> 
>> diff --git a/drivers/thermal/thermal_helpers.c b/drivers/thermal/thermal_helpers.c
>> index 3edd047e144f..0d0da6670267 100644
>> --- a/drivers/thermal/thermal_helpers.c
>> +++ b/drivers/thermal/thermal_helpers.c
>> @@ -199,7 +199,7 @@ void __thermal_cdev_update(struct thermal_cooling_device *cdev)
>>   
>>   	/* Make sure cdev enters the deepest cooling state */
>>   	list_for_each_entry(instance, &cdev->thermal_instances, cdev_node) {
>> -		dev_dbg(&cdev->device, "zone%d->target=%lu\n",
>> +		dev_dbg(&cdev->device, "zone%d->target=%ld\n",
>>   			instance->tz->id, instance->target);
>>   		if (instance->target == THERMAL_NO_TARGET)
>>   			continue;
>
>Actually you pointed out something fuzzy in the target values.
>
>The unsigned long type for the target and THERMAL_NO_TARGET are not 
>compatible.
>
>It would be much simpler to have THERMAL_NO_TARGET = 0 which 
>semantically makes more sense than a negative value.

The compare of unsigned long and negative int is bad idea.
But there is serious problem introduced by "thermal: core: Add notifications call in the framework" patch.
When system resumes from mem suspend first time (this happen only on 1st resume), the thermal notification is sent to drivers with value of 0 (meaning system is no longer hot).
This is due to the fact target is init to 0 and when there is only 1 cooling device; it gets out of the loop (due to continue;) with target still set to 0 and calls thermal_cdev_set_cur_state(cdev, target).
From there thermal_notify_cdev_state_update is called with argument of 0 which notifies drivers with value of 0.

May be "unsigned long target" should be initialized to THERMAL_NO_TARGET instead of 0.

[   29.107048] OOM killer enabled.
[   29.110225] Restarting tasks ... done.
[   29.124816] thermal cooling_device0: zone0->target=18446744073709551615
[   29.138388] GPU0: Hot alarm is canceled. 
[   29.145399] thermal cooling_device0: set to state 0
[   29.198954] PM: suspend exit

-- 
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
https://eur01.safelinks.protection.outlook.com/?url=http%3A%2F%2Flists.infradead.org%2Fmailman%2Flistinfo%2Flinux-arm-kernel&amp;data=04%7C01%7Cnitin.garg%40nxp.com%7C9b8d8247b7a24882faab08da1dea3606%7C686ea1d3bc2b4c6fa92cd99c5c301635%7C0%7C0%7C637855189012474295%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000&amp;sdata=wAyLn2XgePgyZJJH50LC1PL1XHOQ%2BXjCw%2FJeq2qlSfw%3D&amp;reserved=0

WARNING: multiple messages have this Message-ID (diff)
From: Nitin Garg <nitin.garg@nxp.com>
To: Daniel Lezcano <daniel.lezcano@linaro.org>,
	Alexander Stein <alexander.stein@ew.tq-group.com>,
	"Rafael J . Wysocki" <rafael@kernel.org>,
	Amit Kucheria <amitk@kernel.org>, Zhang Rui <rui.zhang@intel.com>,
	Shawn Guo <shawnguo@kernel.org>,
	Sascha Hauer <s.hauer@pengutronix.de>,
	Fabio Estevam <festevam@gmail.com>
Cc: "linux-pm@vger.kernel.org" <linux-pm@vger.kernel.org>,
	"linux-arm-kernel@lists.infradead.org"
	<linux-arm-kernel@lists.infradead.org>
Subject: RE: [PATCH 2/2] thermal/drivers/thermal_helpers: Adjust output format
Date: Tue, 10 May 2022 22:48:00 +0000	[thread overview]
Message-ID: <AM9PR04MB81964FA6990F9E19F39E2A399AC99@AM9PR04MB8196.eurprd04.prod.outlook.com> (raw)
In-Reply-To: <82d08ff0-41bf-d249-1216-0da3f0cdc5b9@linaro.org>


On 08/04/2022 13:09, Alexander Stein wrote:
>> Outputs like this where -1 is printed as unsigned is somewhat misleading
>>   thermal thermal_zone1: Trip3[type=0,temp=48000]:trend=4,throttle=1
>>   thermal cooling_device3: cur_state=1
>>   thermal cooling_device3: old_target=-1, target=2
>>   thermal cooling_device3: zone1->target=1
>>   thermal cooling_device3: zone1->target=2
>>   thermal cooling_device3: zone1->target=18446744073709551615
>>   thermal cooling_device3: set to state 2
>> 
>> With THERMAL_NO_TARGET assigning -1 as unsigned it make sense to print
>> the target as signed integer, even if the type is actually unsigned.
>> 
>> Signed-off-by: Alexander Stein <alexander.stein@ew.tq-group.com>
>> ---
>> An alternative would be to change thermal_instance::target from unsigned
>> long to long, but this would entail a lot of API & driver changes as well
>> which looks less intriguing.
>> 
>>   drivers/thermal/thermal_helpers.c | 2 +-
>>   1 file changed, 1 insertion(+), 1 deletion(-)
>> 
>> diff --git a/drivers/thermal/thermal_helpers.c b/drivers/thermal/thermal_helpers.c
>> index 3edd047e144f..0d0da6670267 100644
>> --- a/drivers/thermal/thermal_helpers.c
>> +++ b/drivers/thermal/thermal_helpers.c
>> @@ -199,7 +199,7 @@ void __thermal_cdev_update(struct thermal_cooling_device *cdev)
>>   
>>   	/* Make sure cdev enters the deepest cooling state */
>>   	list_for_each_entry(instance, &cdev->thermal_instances, cdev_node) {
>> -		dev_dbg(&cdev->device, "zone%d->target=%lu\n",
>> +		dev_dbg(&cdev->device, "zone%d->target=%ld\n",
>>   			instance->tz->id, instance->target);
>>   		if (instance->target == THERMAL_NO_TARGET)
>>   			continue;
>
>Actually you pointed out something fuzzy in the target values.
>
>The unsigned long type for the target and THERMAL_NO_TARGET are not 
>compatible.
>
>It would be much simpler to have THERMAL_NO_TARGET = 0 which 
>semantically makes more sense than a negative value.

The compare of unsigned long and negative int is bad idea.
But there is serious problem introduced by "thermal: core: Add notifications call in the framework" patch.
When system resumes from mem suspend first time (this happen only on 1st resume), the thermal notification is sent to drivers with value of 0 (meaning system is no longer hot).
This is due to the fact target is init to 0 and when there is only 1 cooling device; it gets out of the loop (due to continue;) with target still set to 0 and calls thermal_cdev_set_cur_state(cdev, target).
From there thermal_notify_cdev_state_update is called with argument of 0 which notifies drivers with value of 0.

May be "unsigned long target" should be initialized to THERMAL_NO_TARGET instead of 0.

[   29.107048] OOM killer enabled.
[   29.110225] Restarting tasks ... done.
[   29.124816] thermal cooling_device0: zone0->target=18446744073709551615
[   29.138388] GPU0: Hot alarm is canceled. 
[   29.145399] thermal cooling_device0: set to state 0
[   29.198954] PM: suspend exit

-- 
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
https://eur01.safelinks.protection.outlook.com/?url=http%3A%2F%2Flists.infradead.org%2Fmailman%2Flistinfo%2Flinux-arm-kernel&amp;data=04%7C01%7Cnitin.garg%40nxp.com%7C9b8d8247b7a24882faab08da1dea3606%7C686ea1d3bc2b4c6fa92cd99c5c301635%7C0%7C0%7C637855189012474295%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000&amp;sdata=wAyLn2XgePgyZJJH50LC1PL1XHOQ%2BXjCw%2FJeq2qlSfw%3D&amp;reserved=0

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

  reply	other threads:[~2022-05-10 22:48 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-04-08 11:09 [PATCH 1/2] thermal: imx8mm: Add hwmon support Alexander Stein
2022-04-08 11:09 ` Alexander Stein
2022-04-08 11:09 ` [PATCH 2/2] thermal/drivers/thermal_helpers: Adjust output format Alexander Stein
2022-04-08 11:09   ` Alexander Stein
2022-04-14  7:35   ` Daniel Lezcano
2022-04-14  7:35     ` Daniel Lezcano
2022-05-10 22:48     ` Nitin Garg [this message]
2022-05-10 22:48       ` Nitin Garg
2022-05-11 10:17       ` (EXT) " Alexander Stein
2022-05-11 10:17         ` Alexander Stein

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=AM9PR04MB81964FA6990F9E19F39E2A399AC99@AM9PR04MB8196.eurprd04.prod.outlook.com \
    --to=nitin.garg@nxp.com \
    --cc=alexander.stein@ew.tq-group.com \
    --cc=amitk@kernel.org \
    --cc=daniel.lezcano@linaro.org \
    --cc=festevam@gmail.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-pm@vger.kernel.org \
    --cc=rafael@kernel.org \
    --cc=rui.zhang@intel.com \
    --cc=s.hauer@pengutronix.de \
    --cc=shawnguo@kernel.org \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.