• Rafael J. Wysocki's avatar
    cpufreq: schedutil: Always call driver if CPUFREQ_NEED_UPDATE_LIMITS is set · d1e7c299
    Rafael J. Wysocki authored
    Because sugov_update_next_freq() may skip a frequency update even if
    the need_freq_update flag has been set for the policy at hand, policy
    limits updates may not take effect as expected.
    
    For example, if the intel_pstate driver operates in the passive mode
    with HWP enabled, it needs to update the HWP min and max limits when
    the policy min and max limits change, respectively, but that may not
    happen if the target frequency does not change along with the limit
    at hand.  In particular, if the policy min is changed first, causing
    the target frequency to be adjusted to it, and the policy max limit
    is changed later to the same value, the HWP max limit will not be
    updated to follow it as expected, because the target frequency is
    still equal to the policy min limit and it will not change until
    that limit is updated.
    
    To address this issue, modify get_next_freq() to let the driver
    callback run if the CPUFREQ_NEED_UPDATE_LIMITS cpufreq driver flag
    is set regardless of whether or not the new frequency to set is
    equal to the previous one.
    
    Fixes: f6ebbcf0 ("cpufreq: intel_pstate: Implement passive mode with HWP enabled")
    Reported-by: default avatarZhang Rui <rui.zhang@intel.com>
    Tested-by: default avatarZhang Rui <rui.zhang@intel.com>
    Cc: 5.9+ <stable@vger.kernel.org> # 5.9+: 1c534352 cpufreq: Introduce CPUFREQ_NEED_UPDATE_LIMITS ...
    Cc: 5.9+ <stable@vger.kernel.org> # 5.9+: a62f68f5 cpufreq: Introduce cpufreq_driver_test_flags()
    Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
    Acked-by: default avatarViresh Kumar <viresh.kumar@linaro.org>
    Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
    d1e7c299
cpufreq_schedutil.c 25.8 KB