• Srinivas Pandruvada's avatar
    cpufreq: intel_pstate: Correct the busy calculation for KNL · 6e34e1f2
    Srinivas Pandruvada authored
    The busy percent calculated for the Knights Landing (KNL) platform
    is 1024 times smaller than the correct busy value.  This causes
    performance to get stuck at the lowest ratio.
    
    The scaling algorithm used for KNL is performance-based, but it still
    looks at the CPU load to set the scaled busy factor to 0 when the
    load is less than 1 percent.  In this case, since the computed load
    is 1024x smaller than it should be, the scaled busy factor will
    always be 0, irrespective of CPU business.
    
    This needs a fix similar to the turbostat one in commit b2b34dfe
    (tools/power turbostat: KNL workaround for %Busy and Avg_MHz).
    
    For this reason, add one more callback to processor-specific
    callbacks to specify an MPERF multiplier represented by a number of
    bit positions to shift the value of that register to the left to
    copmensate for its rate difference with respect to the TSC.  This
    shift value is used during CPU busy calculations.
    
    Fixes: ffb81056 (intel_pstate: Avoid getting stuck in high P-states when idle)
    Reported-and-tested-by: default avatarArtem Bityutskiy <artem.bityutskiy@linux.intel.com>
    Signed-off-by: default avatarSrinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
    Cc: 4.6+ <stable@vger.kernel.org> # 4.6+
    [ rjw: Changelog ]
    Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
    6e34e1f2
intel_pstate.c 64.9 KB