• Rafael J. Wysocki's avatar
    cpufreq: Abort cpufreq_update_current_freq() for cpufreq_suspended set · c9d9c929
    Rafael J. Wysocki authored
    Since governor operations are generally skipped if cpufreq_suspended
    is set, cpufreq_start_governor() should do nothing in that case.
    
    That function is called in the cpufreq_online() path, and may also
    be called from cpufreq_offline() in some cases, which are invoked
    by the nonboot CPUs disabing/enabling code during system suspend
    to RAM and resume.  That happens when all devices have been
    suspended, so if the cpufreq driver relies on things like I2C to
    get the current frequency, it may not be ready to do that then.
    
    To prevent problems from happening for this reason, make
    cpufreq_update_current_freq(), which is the only function invoked
    by cpufreq_start_governor() that doesn't check cpufreq_suspended
    already, return 0 upfront if cpufreq_suspended is set.
    
    Fixes: 3bbf8fe3 (cpufreq: Always update current frequency before startig governor)
    Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
    Acked-by: default avatarViresh Kumar <viresh.kumar@linaro.org>
    c9d9c929
cpufreq.c 62.6 KB