• Pan Xinhui's avatar
    cpufreq: Correct a freq check in cpufreq_set_policy() · fba9573b
    Pan Xinhui authored
    This check was originally added by commit 9c9a43ed
    return error when failing to set minfreq").It attempt to return an error
    on obviously incorrect limits when we echo xxx >.../scaling_max,min_freq
    Actually we just need check if new_policy->min > new_policy->max.
    Because at least one of max/min is copied from cpufreq_get_policy().
    For example, when we echo xxx > .../scaling_min_freq, new_policy is
    copied from policy in cpufreq_get_policy. new_policy->max is same with
    policy->max. new_policy->min is set to a new value.
    Let me explain it in deduction method, first statement in if ():
    new_policy->min > policy->max
    policy->max == new_policy->max
    ==> new_policy->min > new_policy->max
    second statement in if():
    new_policy->max < policy->min
    policy->max < policy->min
    ==>new_policy->min > new_policy->max (induction method)
    So we have proved that we only need check if new_policy->min >
    After apply this patch, we can also modify ->min and ->max at same time
    if new freq range is very much different from current freq range. For
    example, if current freq range is 480000-960000, then we want to set
    this range to 1120000-2240000, we would fail in the past because
    new_policy->min > policy->max. As long as the cpufreq range is valid, we
    has no reason to reject the user. So correct the check to avoid such
    Signed-off-by: default avatarPan Xinhui <xinhuix.pan@intel.com>
    Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>