Re: [PATCH 2/3] thermal/drivers/tegra: Remove get_trend function

From: Dmitry Osipenko
Date: Tue Jun 28 2022 - 07:46:24 EST


On 6/28/22 11:41, Daniel Lezcano wrote:
>
> Thierry, Dmitry,
>
> are fine with this patch?

Seems should be good. I couldn't test it using recent the linux-next
because of a lockup in LM90 driver. There were quite a lot of changes in
LM90 recently, adding Guenter.

INFO: task kworker/3:1:44 blocked for more than 61 seconds.
Not tainted 5.19.0-rc4-next-20220627-00012-g08b697b94b8a #2
"echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
task:kworker/3:1 state:D stack: 0 pid: 44 ppid: 2
flags:0x00000000
Workqueue: events_freezable_power_ thermal_zone_device_check
Backtrace:
__schedule from schedule+0x60/0xcc
r10:c0fead70 r9:c2854c94 r8:df9a1dac r7:c2814b40 r6:00000002 r5:c1883020
r4:c2814b40
schedule from schedule_preempt_disabled+0x28/0x38
r5:c1883020 r4:c2814b40
schedule_preempt_disabled from __mutex_lock.constprop.0+0x1e0/0x9ac
r5:c1883020 r4:c2854c90
__mutex_lock.constprop.0 from __mutex_lock_slowpath+0x1c/0x20
r10:00000000 r9:c1882ae0 r8:c2854c90 r7:c2854c40 r6:00000001 r5:00000001
r4:c2854c90
__mutex_lock_slowpath from mutex_lock+0x60/0x64
mutex_lock from lm90_read+0x40/0x3d4
r5:00000001 r4:c2854e08
lm90_read from hwmon_thermal_get_temp+0x58/0x8c
r9:c1882ae0 r8:c2814b40 r7:de6aee00 r6:c1db1660 r5:c0af7940 r4:df9a1eb8
hwmon_thermal_get_temp from of_thermal_get_temp+0x38/0x44
r5:df9a1eb8 r4:c1db1400
of_thermal_get_temp from thermal_zone_get_temp+0x58/0x78
thermal_zone_get_temp from thermal_zone_device_update.part.0+0x4c/0x450
r7:de6aee00 r6:c1db1400 r5:00000000 r4:c1db1400
thermal_zone_device_update.part.0 from thermal_zone_device_check+0x58/0x5c
r10:00000000 r9:c1882ae0 r8:c2814b40 r7:de6aee00 r6:c1db1400 r5:c1db1660
r4:00000001
thermal_zone_device_check from process_one_work+0x21c/0x530
r7:de6aee00 r6:de6ab600 r5:c2802c00 r4:c1db167c
process_one_work from worker_thread+0x19c/0x5cc
r10:00000008 r9:c2814b40 r8:c1703d40 r7:de6ab61c r6:c2802c18 r5:de6ab600
r4:c2802c00
worker_thread from kthread+0x100/0x120
r10:00000000 r9:df895e80 r8:c285e3c0 r7:c2802c00 r6:c014cf84 r5:c285e300
r4:c2814b40
kthread from ret_from_fork+0x14/0x2c
Exception stack(0xdf9a1fb0 to 0xdf9a1ff8)

> On 16/06/2022 22:25, Daniel Lezcano wrote:
>> The get_trend function does already what the generic framework does.
>>
>> Remove it.
>>
>> Signed-off-by: Daniel Lezcano <daniel.lezcano@xxxxxxxxxx>
>> ---
>>   drivers/thermal/tegra/soctherm.c | 32 --------------------------------
>>   1 file changed, 32 deletions(-)
>>
>> diff --git a/drivers/thermal/tegra/soctherm.c
>> b/drivers/thermal/tegra/soctherm.c
>> index 210325f92559..825eab526619 100644
>> --- a/drivers/thermal/tegra/soctherm.c
>> +++ b/drivers/thermal/tegra/soctherm.c
>> @@ -633,37 +633,6 @@ static int tegra_thermctl_set_trip_temp(void
>> *data, int trip, int temp)
>>       return 0;
>>   }
>>   -static int tegra_thermctl_get_trend(void *data, int trip,
>> -                    enum thermal_trend *trend)
>> -{
>> -    struct tegra_thermctl_zone *zone = data;
>> -    struct thermal_zone_device *tz = zone->tz;
>> -    int trip_temp, temp, last_temp, ret;
>> -
>> -    if (!tz)
>> -        return -EINVAL;
>> -
>> -    ret = tz->ops->get_trip_temp(zone->tz, trip, &trip_temp);
>> -    if (ret)
>> -        return ret;
>> -
>> -    temp = READ_ONCE(tz->temperature);
>> -    last_temp = READ_ONCE(tz->last_temperature);
>> -
>> -    if (temp > trip_temp) {
>> -        if (temp >= last_temp)
>> -            *trend = THERMAL_TREND_RAISING;
>> -        else
>> -            *trend = THERMAL_TREND_STABLE;
>> -    } else if (temp < trip_temp) {
>> -        *trend = THERMAL_TREND_DROPPING;
>> -    } else {
>> -        *trend = THERMAL_TREND_STABLE;
>> -    }
>> -
>> -    return 0;
>> -}
>> -
>>   static void thermal_irq_enable(struct tegra_thermctl_zone *zn)
>>   {
>>       u32 r;
>> @@ -716,7 +685,6 @@ static int tegra_thermctl_set_trips(void *data,
>> int lo, int hi)
>>   static const struct thermal_zone_of_device_ops tegra_of_thermal_ops = {
>>       .get_temp = tegra_thermctl_get_temp,
>>       .set_trip_temp = tegra_thermctl_set_trip_temp,
>> -    .get_trend = tegra_thermctl_get_trend,
>>       .set_trips = tegra_thermctl_set_trips,
>>   };
>>  
>
>