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

From: Rafael J. Wysocki
Date: Wed Mar 06 2024 - 07:53:50 EST


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?