Re: [RFC PATCH] thermal/core: Fix trip point crossing events ordering

From: Rafael J. Wysocki
Date: Wed Mar 06 2024 - 10:41:36 EST


On Wed, Mar 6, 2024 at 2:16 PM Daniel Lezcano <daniel.lezcano@xxxxxxxxxx> wrote:
>
> On 06/03/2024 13:53, Rafael J. Wysocki wrote:
> > On Wed, Mar 6, 2024 at 1:43 PM Daniel Lezcano <daniel.lezcano@xxxxxxxxxx> wrote:
> >>
> >> On 06/03/2024 13:02, Rafael J. Wysocki wrote:
> >>
> >> [ ... ]
> >>
> >>>> +#define for_each_trip_reverse(__tz, __trip) \
> >>>> + for (__trip = &__tz->trips[__tz->num_trips - 1]; __trip >= __tz->trips ; __trip--)
> >>>> +
> >>>> void __thermal_zone_set_trips(struct thermal_zone_device *tz);
> >>>> int thermal_zone_trip_id(const struct thermal_zone_device *tz,
> >>>> const struct thermal_trip *trip);
> >>>> --
> >>>
> >>> Generally speaking, this is a matter of getting alignment on the
> >>> expectations between the kernel and user space.
> >>>
> >>> It looks like user space expects to get the notifications in the order
> >>> of either growing or falling temperatures, depending on the direction
> >>> of the temperature change. Ordering the trips in the kernel is not
> >>> practical, but the notifications can be ordered in principle. Is this
> >>> what you'd like to do?
> >>
> >> Yes
> >>
> >>> Or can user space be bothered with recognizing that it may get the
> >>> notifications for different trips out of order?
> >>
> >> IMO it is a bad information if the trip points events are coming
> >> unordered. The temperature signal is a time related measurements, the
> >> userspace should receive thermal information from this signal in the
> >> right order. It sounds strange to track the temperature signal in the
> >> kernel, then scramble the information, pass it to the userspace and
> >> except it to apply some kind of logic to unscramble it.
> >
> > So the notifications can be ordered before sending them out, as long
> > as they are produced by a single __thermal_zone_device_update() call.
> >
> > I guess you also would like the thermal_debug_tz_trip_up/down() calls
> > to be ordered, wouldn't you?
>
> Right

I have an idea how to do this, but it is based on a couple of patches
that I've been working on in the meantime.

Let me post these patches first and then I'll send a prototype patch
addressing this on top of them.