• Sai Gurrappadi's avatar
    cpufreq: Fix GOV_LIMITS handling for the userspace governor · e43e94c1
    Sai Gurrappadi authored
    Currently, the userspace governor only updates frequency on GOV_LIMITS
    if policy->cur falls outside policy->{min/max}. However, it is also
    necessary to update current frequency on GOV_LIMITS to match the user
    requested value if it can be achieved within the new policy->{max/min}.
    
    This was previously the behaviour in the governor until commit d1922f02
    ("cpufreq: Simplify userspace governor") which incorrectly assumed that
    policy->cur == user requested frequency via scaling_setspeed. This won't
    be true if the user requested frequency falls outside policy->{min/max}.
    Ex: a temporary thermal cap throttled the user requested frequency.
    
    Fix this by storing the user requested frequency in a seperate variable.
    The governor will then try to achieve this request on every GOV_LIMITS
    change.
    
    Fixes: d1922f02 (cpufreq: Simplify userspace governor)
    Signed-off-by: default avatarSai Gurrappadi <sgurrappadi@nvidia.com>
    Acked-by: default avatarViresh Kumar <viresh.kumar@linaro.org>
    Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
    e43e94c1
cpufreq_userspace.c 3.88 KB