• Rafael J. Wysocki's avatar
    cpufreq: intel_pstate: Drop ->get from intel_pstate structure · 22baebd4
    Rafael J. Wysocki authored
    The ->get callback in the intel_pstate structure was mostly there
    for the scaling_cur_freq sysfs attribute to work, but after commit
    f8475cef (x86: use common aperfmperf_khz_on_cpu() to calculate
    KHz using APERF/MPERF) that attribute uses arch_freq_get_on_cpu()
    provided by the x86 arch code on all processors supported by
    intel_pstate, so it doesn't need the ->get callback from the
    driver any more.
    
    Moreover, the very presence of the ->get callback in the intel_pstate
    structure causes the cpuinfo_cur_freq attribute to be present when
    intel_pstate operates in the active mode, which is bogus, because
    the role of that attribute is to return the current CPU frequency
    as seen by the hardware.  For intel_pstate, though, this is just an
    average frequency and not really current, but computed for the
    previous sampling interval (the actual current frequency may be
    way different at the point this value is obtained by reading from
    cpuinfo_cur_freq), and after commit 82b4e03e (intel_pstate: skip
    scheduler hook when in "performance" mode) the value in
    cpuinfo_cur_freq may be stale or just 0, depending on the driver's
    operation mode.  In fact, however, on the hardware supported by
    intel_pstate there is no way to read the current CPU frequency
    from it, so the cpuinfo_cur_freq attribute should not be present
    at all when this driver is in use.
    
    For this reason, drop intel_pstate_get() and clear the ->get
    callback pointer pointing to it, so that the cpuinfo_cur_freq is
    not present for intel_pstate in the active mode any more.
    
    Fixes: 82b4e03e (intel_pstate: skip scheduler hook when in "performance" mode)
    Reported-by: default avatarHuaisheng Ye <yehs1@lenovo.com>
    Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
    Acked-by: default avatarViresh Kumar <viresh.kumar@linaro.org>
    22baebd4
intel_pstate.c 64.7 KB