• Chen Yu's avatar
    intel_idle: Fix max_cstate for processor models without C-state tables · 4e0ba557
    Chen Yu authored
    Currently intel_idle driver gets the c-state information from ACPI
    _CST if the processor model is not recognized by it. However the
    c-state in _CST starts with index 1 which is different from the
    index in intel_idle driver's internal c-state table.
    
    While intel_idle_max_cstate_reached() was previously introduced to
    deal with intel_idle driver's internal c-state table, re-using
    this function directly on _CST is incorrect.
    
    Fix this by subtracting 1 from the index when checking max_cstate
    in the _CST case.
    
    For example, append intel_idle.max_cstate=1 in boot command line,
    Before the patch:
    grep . /sys/devices/system/cpu/cpu0/cpuidle/state*/name
    POLL
    After the patch:
    grep . /sys/devices/system/cpu/cpu0/cpuidle/state*/name
    /sys/devices/system/cpu/cpu0/cpuidle/state0/name:POLL
    /sys/devices/system/cpu/cpu0/cpuidle/state1/name:C1_ACPI
    
    Fixes: 18734958 ("intel_idle: Use ACPI _CST for processor models without C-state tables")
    Reported-by: default avatarPengfei Xu <pengfei.xu@intel.com>
    Cc: 5.6+ <stable@vger.kernel.org> # 5.6+
    Signed-off-by: default avatarChen Yu <yu.c.chen@intel.com>
    [ rjw: Changelog edits ]
    Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
    4e0ba557
intel_idle.c 44.3 KB