• Rafael J. Wysocki's avatar
    thermal: gov_bang_bang: Add .manage() callback · 5f64b4a1
    Rafael J. Wysocki authored
    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: 530c932b ("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: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
    Acked-by: default avatarPeter Kästle <peter@piie.net>
    Reviewed-by: default avatarZhang Rui <rui.zhang@intel.com>
    Link: https://patch.msgid.link/8419356.T7Z3S40VBb@rjwysocki.net
    5f64b4a1
gov_bang_bang.c 3.58 KB