thermal: gov_bang_bang: Add .manage() callback
authorRafael J. Wysocki <rafael.j.wysocki@intel.com>
Tue, 13 Aug 2024 14:27:33 +0000 (16:27 +0200)
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>
Fri, 16 Aug 2024 11:13:49 +0000 (13:13 +0200)
commit5f64b4a1ab1b0412446d42e1fc2964c2cdb60b27
tree677442c80e1eb9594b1c63063aff407d048e2d69
parent84248e35d9b60e03df7276627e4e91fbaf80f73d
thermal: gov_bang_bang: Add .manage() callback

After recent changes, the Bang-bang governor may not adjust the
initial configuration of cooling devices to the actual situation.

Namely, if a cooling device bound to a certain trip point starts in
the "on" state and the thermal zone temperature is below the threshold
of that trip point, the trip point may never be crossed on the way up
in which case the state of the cooling device will never be adjusted
because the thermal core will never invoke the governor's
.trip_crossed() callback.  [Note that there is no issue if the zone
temperature is at the trip threshold or above it to start with because
.trip_crossed() will be invoked then to indicate the start of thermal
mitigation for the given trip.]

To address this, add a .manage() callback to the Bang-bang governor
and use it to ensure that all of the thermal instances managed by the
governor have been initialized properly and the states of all of the
cooling devices involved have been adjusted to the current zone
temperature as appropriate.

Fixes: 530c932bdf75 ("thermal: gov_bang_bang: Use .trip_crossed() instead of .throttle()")
Link: https://lore.kernel.org/linux-pm/1bfbbae5-42b0-4c7d-9544-e98855715294@piie.net/
Cc: 6.10+ <stable@vger.kernel.org> # 6.10+
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Acked-by: Peter Kästle <peter@piie.net>
Reviewed-by: Zhang Rui <rui.zhang@intel.com>
Link: https://patch.msgid.link/8419356.T7Z3S40VBb@rjwysocki.net
drivers/thermal/gov_bang_bang.c