From: Lukasz Luba <lukasz.luba@arm.com>
To: "Rafael J. Wysocki" <rjw@rjwysocki.net>
Cc: LKML <linux-kernel@vger.kernel.org>,
Linux PM <linux-pm@vger.kernel.org>,
"Rafael J. Wysocki" <rafael@kernel.org>,
Daniel Lezcano <daniel.lezcano@linaro.org>
Subject: Re: [PATCH v2 3/3] thermal/debugfs: Avoid printing zero duration for mitigation events in progress
Date: Thu, 25 Apr 2024 21:54:29 +0100 [thread overview]
Message-ID: <c99f1b95-edad-4a27-8bdf-76164955348f@arm.com> (raw)
In-Reply-To: <7659098.EvYhyI6sBW@kreacher>
On 4/25/24 15:05, Rafael J. Wysocki wrote:
> From: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
>
> If a thermal mitigation event is in progress, its duration value has
> not been updated yet, so 0 will be printed as the event duration by
> tze_seq_show() which is confusing.
>
> Avoid doing that by marking the beginning of the event with the
> KTIME_MIN duration value and making tze_seq_show() compute the current
> event duration on the fly, in which case '>' will be printed instead of
> '=' in the event duration value field.
>
> Similarly, for trip points that have been crossed on the down, mark
> the end of mitigation with the KTIME_MAX timestamp value and make
> tze_seq_show() compute the current duration on the fly for the trip
> points still involved in the mitigation, in which cases the duration
> value printed by it will be prepended with a '>' character.
>
> Fixes: 7ef01f228c9f ("thermal/debugfs: Add thermal debugfs information for mitigation episodes")
> Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
> ---
> drivers/thermal/thermal_debugfs.c | 39 ++++++++++++++++++++++++++++++++------
> 1 file changed, 33 insertions(+), 6 deletions(-)
>
> Index: linux-pm/drivers/thermal/thermal_debugfs.c
> ===================================================================
> --- linux-pm.orig/drivers/thermal/thermal_debugfs.c
> +++ linux-pm/drivers/thermal/thermal_debugfs.c
> @@ -552,6 +552,7 @@ static struct tz_episode *thermal_debugf
>
> INIT_LIST_HEAD(&tze->node);
> tze->timestamp = now;
> + tze->duration = KTIME_MIN;
>
> for (i = 0; i < tz->num_trips; i++) {
> tze->trip_stats[i].min = INT_MAX;
> @@ -680,6 +681,9 @@ void thermal_debug_tz_trip_down(struct t
> tze->trip_stats[trip_id].duration =
> ktime_add(delta, tze->trip_stats[trip_id].duration);
>
> + /* Mark the end of mitigation for this trip point. */
> + tze->trip_stats[trip_id].timestamp = KTIME_MAX;
> +
> /*
> * This event closes the mitigation as we are crossing the
> * last trip point the way down.
> @@ -754,15 +758,25 @@ static int tze_seq_show(struct seq_file
> struct thermal_trip_desc *td;
> struct tz_episode *tze;
> const char *type;
> + u64 duration_ms;
> int trip_id;
> + char c;
>
> tze = list_entry((struct list_head *)v, struct tz_episode, node);
>
> - seq_printf(s, ",-Mitigation at %lluus, duration=%llums\n",
> - ktime_to_us(tze->timestamp),
> - ktime_to_ms(tze->duration));
> + if (tze->duration == KTIME_MIN) {
> + /* Mitigation in progress. */
> + duration_ms = ktime_to_ms(ktime_sub(ktime_get(), tze->timestamp));
> + c = '>';
> + } else {
> + duration_ms = ktime_to_ms(tze->duration);
> + c = '=';
> + }
> +
> + seq_printf(s, ",-Mitigation at %lluus, duration%c%llums\n",
> + ktime_to_us(tze->timestamp), c, duration_ms);
>
> - seq_printf(s, "| trip | type | temp(°mC) | hyst(°mC) | duration | avg(°mC) | min(°mC) | max(°mC) |\n");
> + seq_printf(s, "| trip | type | temp(°mC) | hyst(°mC) | duration | avg(°mC) | min(°mC) | max(°mC) |\n");
So this one more space accounts for the new 'c' symbol in the rows
below that header, for the 'duration' column. Make sense.
>
> for_each_trip_desc(tz, td) {
> const struct thermal_trip *trip = &td->trip;
> @@ -794,12 +808,25 @@ static int tze_seq_show(struct seq_file
> else
> type = "hot";
>
> - seq_printf(s, "| %*d | %*s | %*d | %*d | %*lld | %*d | %*d | %*d |\n",
> + if (trip_stats->timestamp != KTIME_MAX) {
> + /* Mitigation in progress. */
> + ktime_t delta = ktime_sub(ktime_get(),
> + trip_stats->timestamp);
> +
> + delta = ktime_add(delta, trip_stats->duration);
> + duration_ms = ktime_to_ms(delta);
> + c = '>';
> + } else {
> + duration_ms = ktime_to_ms(trip_stats->duration);
> + c = ' ';
> + }
> +
> + seq_printf(s, "| %*d | %*s | %*d | %*d | %c%*lld | %*d | %*d | %*d |\n",
> 4 , trip_id,
> 8, type,
> 9, trip->temperature,
> 9, trip->hysteresis,
> - 10, ktime_to_ms(trip_stats->duration),
> + c, 10, duration_ms,
> 9, trip_stats->avg,
> 9, trip_stats->min,
> 9, trip_stats->max);
>
>
>
>
The comments in code in this particular case helps, since treating
the KTIME_MIN/MAX values might become not obvious after a while.
That LGTM
Reviewed-by: Lukasz Luba <lukasz.luba@arm.com>
next prev parent reply other threads:[~2024-04-25 20:54 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-04-25 14:01 [PATCH v2 0/3] thermal/debugfs: Fix handling of cdev states and mitigation episodes in progress Rafael J. Wysocki
2024-04-25 14:03 ` [PATCH v2 1/3] thermal/debugfs: Create records for cdev states as they get used Rafael J. Wysocki
2024-04-25 19:08 ` Lukasz Luba
2024-04-25 14:04 ` [PATCH v2 2/3] thermal/debugfs: Pass cooling device state to thermal_debug_cdev_add() Rafael J. Wysocki
2024-04-25 20:32 ` Lukasz Luba
2024-04-25 14:05 ` [PATCH v2 3/3] thermal/debugfs: Avoid printing zero duration for mitigation events in progress Rafael J. Wysocki
2024-04-25 20:54 ` Lukasz Luba [this message]
2024-04-25 20:55 ` [PATCH v2 0/3] thermal/debugfs: Fix handling of cdev states and mitigation episodes " Lukasz Luba
2024-04-26 9:55 ` Rafael J. Wysocki
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=c99f1b95-edad-4a27-8bdf-76164955348f@arm.com \
--to=lukasz.luba@arm.com \
--cc=daniel.lezcano@linaro.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pm@vger.kernel.org \
--cc=rafael@kernel.org \
--cc=rjw@rjwysocki.net \
/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.